Scripts which use 'check.py' are updated to use "utils.py".
---
repos/domain/balloon_memory.py | 2 +-
repos/domain/dump.py | 2 +-
repos/domain/install_linux_check.py | 15 +-
repos/snapshot/file_flag.py | 3 +-
repos/snapshot/flag_check.py | 3 +-
utils/check.py | 392 -----------------------------------
utils/utils.py | 362 ++++++++++++++++++++++++++++++++
7 files changed, 373 insertions(+), 406 deletions(-)
delete mode 100644 utils/check.py
diff --git a/repos/domain/balloon_memory.py b/repos/domain/balloon_memory.py
index f5beae4..fc7383c 100644
--- a/repos/domain/balloon_memory.py
+++ b/repos/domain/balloon_memory.py
@@ -23,7 +23,7 @@ def get_mem_size(ip):
username = 'root'
password = 'redhat'
- current_memory = check.get_remote_memory(ip, username, password)
+ current_memory = utils.get_remote_memory(ip, username, password)
return current_memory
def compare_memory(expect_memory, actual_memory):
diff --git a/repos/domain/dump.py b/repos/domain/dump.py
index 60c5a91..24b2353 100644
--- a/repos/domain/dump.py
+++ b/repos/domain/dump.py
@@ -45,7 +45,7 @@ def check_guest_kernel(*args):
logger.debug("guest ip address: %s" %ipaddr)
- kernel = check.get_remote_kernel(ipaddr, "root", "redhat")
+ kernel = utils.get_remote_kernel(ipaddr, "root", "redhat")
logger.debug("current kernel version: %s" %kernel)
if kernel:
diff --git a/repos/domain/install_linux_check.py b/repos/domain/install_linux_check.py
index c6d2cb3..7a5a9ac 100644
--- a/repos/domain/install_linux_check.py
+++ b/repos/domain/install_linux_check.py
@@ -13,7 +13,6 @@ from libvirt import libvirtError
from src import sharedmod
from utils import utils
-from utils import check
from utils import env_parser
required_params = ('guestname', 'guesttype', 'hdmodel',
'nicmodel',)
@@ -95,9 +94,9 @@ def install_linux_check(params):
# Creat file and read file in guest.
logger.info("check point2: creat and read dirctory/file in guest")
- if check.create_dir(ipaddr, "root", "redhat") == 0:
+ if utils.create_dir(ipaddr, "root", "redhat") == 0:
logger.info("create dir - /tmp/test successfully")
- if check.write_file(ipaddr, "root", "redhat") == 0:
+ if utils.write_file(ipaddr, "root", "redhat") == 0:
logger.info("write and read file: /tmp/test/test.log
successfully")
else:
logger.error("Error: fail to write/read file -
/tmp/test/test.log")
@@ -114,7 +113,7 @@ def install_linux_check(params):
vcpunum_expect = int(utils.get_num_vcpus(domain_name))
logger.info("vcpu number in domain config xml - %s is %s" % \
(domain_name, vcpunum_expect))
- vcpunum_actual = int(check.get_remote_vcpus(ipaddr, "root",
"redhat"))
+ vcpunum_actual = int(utils.get_remote_vcpus(ipaddr, "root",
"redhat"))
logger.info("The actual vcpu number in guest - %s is %s" %
(domain_name, vcpunum_actual))
if vcpunum_expect == vcpunum_actual:
@@ -132,7 +131,7 @@ def install_linux_check(params):
mem_expect = utils.get_size_mem(domain_name)
logger.info("current mem size in domain config xml - %s is %s" %
(domain_name, mem_expect))
- mem_actual = check.get_remote_memory(ipaddr, "root", "redhat")
+ mem_actual = utils.get_remote_memory(ipaddr, "root", "redhat")
logger.info("The actual mem size in guest - %s is %s" %
(domain_name, mem_actual))
diff_range = int(mem_expect) * 0.07
@@ -155,7 +154,7 @@ def install_linux_check(params):
envparser = env_parser.Envparser(envfile)
file_url = envparser.get_value("other", "wget_url")
- if check.run_wget_app(ipaddr, "root", "redhat", file_url, logger)
== 0:
+ if utils.run_wget_app(ipaddr, "root", "redhat", file_url, logger)
== 0:
logger.info("run wget successfully in guest.")
else:
logger.error("Error: fail to run wget in guest")
@@ -166,9 +165,9 @@ def install_linux_check(params):
if 'kvm' in guesttype or 'xenfv' in guesttype:
logger.info("check point6: check nic and blk driver in guest is \
expected as your config:")
- if check.validate_remote_nic_type(ipaddr, "root", "redhat",
+ if utils.validate_remote_nic_type(ipaddr, "root", "redhat",
nic_type, logger) == 0 and \
- check.validate_remote_blk_type(ipaddr, "root", "redhat",
+ utils.validate_remote_blk_type(ipaddr, "root", "redhat",
blk_type, logger) == 0:
logger.info("nic type - %s and blk type - %s check successfully" %
(nic_type, blk_type))
diff --git a/repos/snapshot/file_flag.py b/repos/snapshot/file_flag.py
index 9f1c181..5f8a17e 100644
--- a/repos/snapshot/file_flag.py
+++ b/repos/snapshot/file_flag.py
@@ -11,7 +11,6 @@ from libvirt import libvirtError
from src import sharedmod
from utils import utils
-from utils import check
required_params = ('guestname', 'username', 'password',)
optional_params = ()
@@ -35,7 +34,7 @@ def check_domain_running(conn, guestname, logger):
def make_flag(ipaddr, username, password, logger):
""" enter guest OS, create a file in /tmp folder """
- ret = check.remote_exec_pexpect(ipaddr, username, password, MAKE_FLAG)
+ ret = utils.remote_exec_pexpect(ipaddr, username, password, MAKE_FLAG)
if ret == "TIMEOUT!!!":
logger.error("connecting to guest OS timeout")
return False
diff --git a/repos/snapshot/flag_check.py b/repos/snapshot/flag_check.py
index 9386e2b..3a0f3ec 100644
--- a/repos/snapshot/flag_check.py
+++ b/repos/snapshot/flag_check.py
@@ -10,7 +10,6 @@ from libvirt import libvirtError
from src import sharedmod
from utils import utils
-from utils import check
required_params = ('guestname', 'username', 'password',)
optional_params = ('expectedret')
@@ -69,7 +68,7 @@ def flag_check(params):
logger.info("vm %s failed to get ip address" % guestname)
return 1
- ret = check.remote_exec_pexpect(ipaddr, username, password, FLAG_CHECK)
+ ret = utils.remote_exec_pexpect(ipaddr, username, password, FLAG_CHECK)
if ret == "TIMEOUT!!!":
logger.error("connecting to guest OS timeout")
return 1
diff --git a/utils/check.py b/utils/check.py
deleted file mode 100644
index 1db49e7..0000000
--- a/utils/check.py
+++ /dev/null
@@ -1,392 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2010-2012 Red Hat, Inc.
-#
-# libvirt-test-API is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 2 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranties of
-# TITLE, NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
-# PURPOSE.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <
http://www.gnu.org/licenses/>.
-#
-# Filename: check.py
-# Summary: basic check operation needed by test
-# Description: The module is a tool to help conduct basic
-# check operation on specified host
-
-import os
-import re
-import time
-import string
-import pty
-import commands
-import signal
-import pexpect
-
-def support_virt(self):
- cmd = "cat /proc/cpuinfo | egrep '(vmx|svm)'"
- if commands.getoutput(cmd) is None:
- print 'CPU does not support VT.'
- return False
- else:
- return True
-
-def subproc(a, b):
- subproc_flag = 1
-
-def remote_exec(hostname, username, password, cmd):
- """Remote execution on specified host"""
- pid, fd = pty.fork()
- if pid == 0:
- try:
- os.execv("/usr/bin/ssh", ["/usr/bin/ssh",
"-l",
- username, hostname, cmd])
- except OSError, e:
- print "OSError: " + str(e)
- return -1
- else:
- signal.signal(signal.SIGCHLD, subproc)
- try:
- timeout = 50
- i = 0
- while i <= timeout:
-
- time.sleep(1)
- str = os.read(fd, 10240)
-
- if re.search('(yes\/no)', str):
- os.write(fd, "yes\r")
-
- elif re.search('password:', str):
- os.write(fd, password + "\r")
-
- elif subproc_flag == 1:
- ret = string.strip(str)
- break
- elif i == timeout:
- print "TIMEOUT!!!!"
- return -1
-
- i = i+1
-
- subproc_flag = 0
- return ret
- except Exception, e:
- subproc_flag = 0
- return -1
-
-def remote_exec_pexpect(hostname, username, password, cmd):
- """Remote exec function via pexpect"""
- user_hostname = "%s@%s" % (username, hostname)
- child = pexpect.spawn("/usr/bin/ssh", [user_hostname, cmd],
- timeout = 60, maxread = 2000, logfile = None)
- #child.logfile = sys.stdout
- while True:
- index = child.expect(['(yes\/no)', 'password:', pexpect.EOF,
- pexpect.TIMEOUT])
- if index == 0:
- child.sendline("yes")
- elif index == 1:
- child.sendline(password)
- elif index == 2:
- return string.strip(child.before)
- elif index == 3:
- return "TIMEOUT!!!"
-
-def get_remote_vcpus(hostname, username, password):
- """Get cpu number of specified host"""
- cmd = "cat /proc/cpuinfo | grep processor | wc -l"
- cpunum = -1
- i = 0
- while i < 3:
- i += 1
- cpunum = int(remote_exec(hostname, username, password, cmd))
- if cpunum == -1:
- continue
- else:
- break
- return cpunum
-
-def get_remote_memory(hostname, username, password):
- """Get memory statics of specified host"""
- cmd = "free -m | grep -i mem | awk '{print $2}'"
- memsize = -1
- i = 0
- while i < 3:
- i += 1
- memsize = \
- int(remote_exec_pexpect(hostname, username, password, cmd)) * 1024
- if memsize == -1:
- continue
- else:
- break
- return memsize
-
-def get_remote_kernel(hostname, username, password):
- """Get kernel info of specified host"""
- cmd = "uname -r"
- kernel = None
- i = 0
- while i < 3:
- i += 1
- kernel = remote_exec(hostname, username, password, cmd)
- if kernel:
- break
- else:
- continue
- return kernel
-
-def install_package(package = ''):
- """Install specified package"""
- if package:
- cmd = "rpm -qa " + package
- output = commands.getoutput(cmd)
- pkg = output.split('\n')[0]
- if pkg:
- os.system("yum -y -q update " + package)
- return pkg
- else:
- ret = os.system("yum -y -q install " + package)
- if ret == 0:
- output = commands.getoutput(cmd)
- pkg = output.split('\n')[0]
- if pkg:
- return pkg
- else:
- return "failed to install package"
- else:
- return "please input package name"
-
-def libvirt_version(latest_ver = ''):
- """Get libvirt version info"""
- query_virt_ver = 'rpm -qa|grep libvirt'
- ret = commands.getoutput(query_virt_ver)
- if ret:
- mas_ver = ret.split('-')[-2]
- sec_ver = (ret.split('-')[-1])
- curr_ver = mas_ver + '-' + sec_ver
- if latest_ver != '':
- if curr_ver != latest_ver:
- return (False, curr_ver)
- else:
- return (True, curr_ver)
- else:
- return curr_ver
- else:
- return (False, '')
-
-def create_dir(hostname, username, password):
- """Create new dir"""
- cmd = "mkdir /tmp/test"
- mkdir_ret = remote_exec_pexpect(hostname, username, password, cmd)
- if mkdir_ret == '':
- cmd = "ls -d /tmp/test"
- check_str = remote_exec_pexpect(hostname, username,
- password, cmd)
- if check_str == "/tmp/test":
- return 0
- else:
- print "check_str = ", check_str
- return 1
- else:
- print "mkdir_ret = ", mkdir_ret
- return 1
-
-def write_file(hostname, username, password):
- """Simple test for writting file on specified host"""
- test_string = 'hello word testing'
- cmd = """echo '%s'>/tmp/test/test.log""" %
(test_string)
- write_file_ret = remote_exec_pexpect(hostname, username,
- password, cmd)
- if write_file_ret == '':
- cmd = """grep '%s' /tmp/test/test.log""" %
("hello")
- check_str = remote_exec_pexpect(hostname, username,
- password, cmd)
- if check_str == test_string:
- return 0
- else:
- print "check_str = ", check_str
- return 1
- else:
- print "write_file_ret = ", write_file_ret
- return 1
-
-def run_mount_app(hostname, username, password,
- target_mount, mount_point):
- """Simple test for mount operation on specified
host"""
- cmd = """mount %s %s""" % (target_mount, mount_point)
- mount_ret = remote_exec(hostname, username, password, cmd)
- if mount_ret == '':
- cmd = """df | grep '%s'""" %
(target_mount)
- check_str = remote_exec(hostname, username, password, cmd)
- if check_str != '':
- return 0
- else:
- print "mount check fail"
- return 1
- else:
- print "mount fail"
- return 1
-
-def run_wget_app(hostname, username, password, file_url, logger):
- """Simple test for wget app on specified host"""
- cmd_line = "wget -P /tmp %s -o /tmp/wget.log" % (file_url)
- logger.info("Command: %s" % (cmd_line))
- wget_ret = remote_exec_pexpect(hostname, username,
- password, cmd_line)
- cmd_line = "grep %s %s" % ('100%', '/tmp/wget.log')
- check_ret = remote_exec_pexpect(hostname, username,
- password, cmd_line)
- if check_ret == "":
- logger.info("grep output is nothing")
- return 1
- else:
- if re.search("100%", check_ret):
- logger.info("wget is running successfully")
- logger.info("check_retrun: %s" % (check_ret))
- return 0
- else:
- logger.info("can not find 100% in wget output")
- logger.info("check_retrun: %s" % (check_ret))
- return 1
-
-def validate_remote_nic_type(hostname, username,
- password, nic_type, logger):
- """Validate network interface type on specified
host"""
- nic_type_to_name_dict = {'e1000':
- '82540EM Gigabit Ethernet Controller',
- 'rtl8139':
- 'RTL-8139/8139C/8139C+',
- 'virtio':'Virtio network device'}
- nic_type_to_driver_dict = {'e1000':'e1000',
'rtl8139':'8139cp',
- 'virtio':'virtio_net'}
- nic_name = nic_type_to_name_dict[nic_type]
- nic_driver = nic_type_to_driver_dict[nic_type]
- logger.info("nic_name = %s" % (nic_name))
- logger.info("nic_driver = %s" % (nic_driver))
- lspci_cmd = "lspci"
- lsmod_cmd = "lsmod"
- lspci_cmd_ret = remote_exec_pexpect(hostname, username,
- password, lspci_cmd)
- lsmod_cmd_ret = remote_exec_pexpect(hostname, username,
- password, lsmod_cmd)
- logger.info("------------")
- logger.info("lspci_cmd_ret:\n %s" % (lspci_cmd_ret))
- logger.info("------------")
- logger.info("lsmod_cmd_ret:\n %s" % (lsmod_cmd_ret))
- logger.info("------------")
- if lspci_cmd_ret != "" and lsmod_cmd_ret != "":
- cmd1 = """echo "%s" | grep
'%s'""" % (lspci_cmd_ret, nic_name)
- cmd2 = """echo "%s" | grep
'%s'""" % (lsmod_cmd_ret, nic_driver)
- status1, output1 = commands.getstatusoutput(cmd1)
- status2, output2 = commands.getstatusoutput(cmd2)
- if status1 == 0 and status2 == 0:
- # other nic should not be seen in guest
- nic_type_to_name_dict.pop(nic_type)
- for key in nic_type_to_name_dict.keys():
- logger.info("now try to grep other nic type \
- in lspci output: %s" % key)
- other_name_cmd = """echo '%s' | grep
'%s'""" % \
- (lspci_cmd_ret, nic_type_to_name_dict[key])
- ret, out = commands.getstatusoutput(other_name_cmd)
- if ret == 0:
- logger.info("unspecified nic name is seen in \
- guest's lspci command: \n %s \n" % out)
- return 1
-
- nic_type_to_driver_dict.pop(nic_type)
- for key in nic_type_to_driver_dict.keys():
- logger.info("now try to grep other nic type \
- in lsmod output: %s" % key)
- other_driver_cmd = """echo '%s' | grep
'%s'""" % \
- (lsmod_cmd_ret,
- nic_type_to_driver_dict[key])
- ret1, out1 = commands.getstatusoutput(other_driver_cmd)
- if ret1 == 0:
- logger.info("unspecified nic driver is seen \
- in guest's lsmod command: %s" % out)
- return 1
-
- logger.info("lspci ouput about nic is: \n %s; \n \
- lsmod output about nic is \n %s \n" %
- (output1,output2))
- return 0
- else:
- logger.info("lspci and lsmod and grep fail")
- return 1
- else:
- logger.info("lspci and lsmod return nothing")
- return 1
-
-def validate_remote_blk_type(hostname, username, password,
- blk_type, logger):
- """Validate block device type on specified host"""
- blk_type_to_name_dict = {'ide':'Intel Corporation 82371SB PIIX3
IDE',
- 'virtio':'Virtio block device'}
- blk_type_to_driver_dict = {'ide':'unknow',
'virtio':'virtio_blk'}
- lspci_cmd = "lspci"
- lsmod_cmd = "lsmod"
- lspci_cmd_ret = remote_exec_pexpect(hostname, username,
- password, lspci_cmd)
- lsmod_cmd_ret = remote_exec_pexpect(hostname, username,
- password, lsmod_cmd)
- logger.info("------------")
- logger.info("lspci_cmd_ret:\n %s" % (lspci_cmd_ret))
- logger.info("------------")
- logger.info("lsmod_cmd_ret: \n %s" % (lsmod_cmd_ret))
- logger.info("------------")
- if lspci_cmd_ret != "" and lsmod_cmd_ret != "":
- if blk_type == "virtio":
- blk_name = blk_type_to_name_dict[blk_type]
- blk_driver = blk_type_to_driver_dict[blk_type]
- logger.info("blk_name = %s \n blk_driver = %s" %
- (blk_name, blk_driver))
- cmd1 = """echo "%s" | grep
'%s'""" % (lspci_cmd_ret, blk_name)
- cmd2 = """echo "%s" | grep
'%s'""" % (lsmod_cmd_ret, blk_driver)
- status1, output1 = commands.getstatusoutput(cmd1)
- status2, output2 = commands.getstatusoutput(cmd2)
- if status1 == 0 and status2 == 0:
- logger.info("block device type is virtio")
- return 0
- else:
- return 1
-
- # this check will not check ide type block device
- if blk_type == "ide":
- # virtio block device should not be seen in guest
- blk_type_to_name_dict.pop(blk_type)
- for key in blk_type_to_name_dict.keys():
- logger.info(
- "now try to grep other blk type in lspci output: %s" %
- key)
- other_name_cmd = """echo "%s" | grep
'%s'""" % \
- (lspci_cmd_ret, blk_type_to_name_dict[key])
- ret, out = commands.getstatusoutput(other_name_cmd)
- if ret == 0:
- logger.info("unspecified blk name is seen in guest's \
- lspci command: \n %s \n" % out)
- return 1
- blk_type_to_driver_dict.pop(blk_type)
- for key in blk_type_to_driver_dict.keys():
- logger.info(
- "now try to grep other blk type in lsmod output: %s" %
- key)
- other_driver_cmd = """echo '%s' | grep
'%s'""" % \
- (lsmod_cmd_ret,
- blk_type_to_driver_dict[key])
- ret1, out1 = commands.getstatusoutput(other_driver_cmd)
- if ret1 == 0:
- logger.info("unspecified blk driver is seen \
- in guest's lsmod command: \n %s \n" % out)
- return 1
- logger.info("block device type is ide")
- return 0
- else:
- logger.info("lspci and lsmod return nothing")
- return 1
diff --git a/utils/utils.py b/utils/utils.py
index 124c986..a216fa7 100644
--- a/utils/utils.py
+++ b/utils/utils.py
@@ -427,3 +427,365 @@ def scp_file(hostname, username, password, target_path, file):
return 1
return 0
+
+def support_virt(self):
+ cmd = "cat /proc/cpuinfo | egrep '(vmx|svm)'"
+ if commands.getoutput(cmd) is None:
+ print 'CPU does not support VT.'
+ return False
+ else:
+ return True
+
+def subproc(a, b):
+ subproc_flag = 1
+
+def remote_exec(hostname, username, password, cmd):
+ """Remote execution on specified host"""
+ pid, fd = pty.fork()
+ if pid == 0:
+ try:
+ os.execv("/usr/bin/ssh", ["/usr/bin/ssh",
"-l",
+ username, hostname, cmd])
+ except OSError, e:
+ print "OSError: " + str(e)
+ return -1
+ else:
+ signal.signal(signal.SIGCHLD, subproc)
+ try:
+ timeout = 50
+ i = 0
+ while i <= timeout:
+
+ time.sleep(1)
+ str = os.read(fd, 10240)
+
+ if re.search('(yes\/no)', str):
+ os.write(fd, "yes\r")
+
+ elif re.search('password:', str):
+ os.write(fd, password + "\r")
+
+ elif subproc_flag == 1:
+ ret = string.strip(str)
+ break
+ elif i == timeout:
+ print "TIMEOUT!!!!"
+ return -1
+
+ i = i+1
+
+ subproc_flag = 0
+ return ret
+ except Exception, e:
+ subproc_flag = 0
+ return -1
+
+def remote_exec_pexpect(hostname, username, password, cmd):
+ """Remote exec function via pexpect"""
+ user_hostname = "%s@%s" % (username, hostname)
+ child = pexpect.spawn("/usr/bin/ssh", [user_hostname, cmd],
+ timeout = 60, maxread = 2000, logfile = None)
+ #child.logfile = sys.stdout
+ while True:
+ index = child.expect(['(yes\/no)', 'password:', pexpect.EOF,
+ pexpect.TIMEOUT])
+ if index == 0:
+ child.sendline("yes")
+ elif index == 1:
+ child.sendline(password)
+ elif index == 2:
+ return string.strip(child.before)
+ elif index == 3:
+ return "TIMEOUT!!!"
+
+def get_remote_vcpus(hostname, username, password):
+ """Get cpu number of specified host"""
+ cmd = "cat /proc/cpuinfo | grep processor | wc -l"
+ cpunum = -1
+ i = 0
+ while i < 3:
+ i += 1
+ cpunum = int(remote_exec(hostname, username, password, cmd))
+ if cpunum == -1:
+ continue
+ else:
+ break
+ return cpunum
+
+def get_remote_memory(hostname, username, password):
+ """Get memory statics of specified host"""
+ cmd = "free -m | grep -i mem | awk '{print $2}'"
+ memsize = -1
+ i = 0
+ while i < 3:
+ i += 1
+ memsize = \
+ int(remote_exec_pexpect(hostname, username, password, cmd)) * 1024
+ if memsize == -1:
+ continue
+ else:
+ break
+ return memsize
+
+def get_remote_kernel(hostname, username, password):
+ """Get kernel info of specified host"""
+ cmd = "uname -r"
+ kernel = None
+ i = 0
+ while i < 3:
+ i += 1
+ kernel = remote_exec(hostname, username, password, cmd)
+ if kernel:
+ break
+ else:
+ continue
+ return kernel
+
+def install_package(package = ''):
+ """Install specified package"""
+ if package:
+ cmd = "rpm -qa " + package
+ output = commands.getoutput(cmd)
+ pkg = output.split('\n')[0]
+ if pkg:
+ os.system("yum -y -q update " + package)
+ return pkg
+ else:
+ ret = os.system("yum -y -q install " + package)
+ if ret == 0:
+ output = commands.getoutput(cmd)
+ pkg = output.split('\n')[0]
+ if pkg:
+ return pkg
+ else:
+ return "failed to install package"
+ else:
+ return "please input package name"
+
+def libvirt_version(latest_ver = ''):
+ """Get libvirt version info"""
+ query_virt_ver = 'rpm -qa|grep libvirt'
+ ret = commands.getoutput(query_virt_ver)
+ if ret:
+ mas_ver = ret.split('-')[-2]
+ sec_ver = (ret.split('-')[-1])
+ curr_ver = mas_ver + '-' + sec_ver
+ if latest_ver != '':
+ if curr_ver != latest_ver:
+ return (False, curr_ver)
+ else:
+ return (True, curr_ver)
+ else:
+ return curr_ver
+ else:
+ return (False, '')
+
+def create_dir(hostname, username, password):
+ """Create new dir"""
+ cmd = "mkdir /tmp/test"
+ mkdir_ret = remote_exec_pexpect(hostname, username, password, cmd)
+ if mkdir_ret == '':
+ cmd = "ls -d /tmp/test"
+ check_str = remote_exec_pexpect(hostname, username,
+ password, cmd)
+ if check_str == "/tmp/test":
+ return 0
+ else:
+ print "check_str = ", check_str
+ return 1
+ else:
+ print "mkdir_ret = ", mkdir_ret
+ return 1
+
+def write_file(hostname, username, password):
+ """Simple test for writting file on specified host"""
+ test_string = 'hello word testing'
+ cmd = """echo '%s'>/tmp/test/test.log""" %
(test_string)
+ write_file_ret = remote_exec_pexpect(hostname, username,
+ password, cmd)
+ if write_file_ret == '':
+ cmd = """grep '%s' /tmp/test/test.log""" %
("hello")
+ check_str = remote_exec_pexpect(hostname, username,
+ password, cmd)
+ if check_str == test_string:
+ return 0
+ else:
+ print "check_str = ", check_str
+ return 1
+ else:
+ print "write_file_ret = ", write_file_ret
+ return 1
+
+def run_mount_app(hostname, username, password,
+ target_mount, mount_point):
+ """Simple test for mount operation on specified
host"""
+ cmd = """mount %s %s""" % (target_mount, mount_point)
+ mount_ret = remote_exec(hostname, username, password, cmd)
+ if mount_ret == '':
+ cmd = """df | grep '%s'""" %
(target_mount)
+ check_str = remote_exec(hostname, username, password, cmd)
+ if check_str != '':
+ return 0
+ else:
+ print "mount check fail"
+ return 1
+ else:
+ print "mount fail"
+ return 1
+
+def run_wget_app(hostname, username, password, file_url, logger):
+ """Simple test for wget app on specified host"""
+ cmd_line = "wget -P /tmp %s -o /tmp/wget.log" % (file_url)
+ logger.info("Command: %s" % (cmd_line))
+ wget_ret = remote_exec_pexpect(hostname, username,
+ password, cmd_line)
+ cmd_line = "grep %s %s" % ('100%', '/tmp/wget.log')
+ check_ret = remote_exec_pexpect(hostname, username,
+ password, cmd_line)
+ if check_ret == "":
+ logger.info("grep output is nothing")
+ return 1
+ else:
+ if re.search("100%", check_ret):
+ logger.info("wget is running successfully")
+ logger.info("check_retrun: %s" % (check_ret))
+ return 0
+ else:
+ logger.info("can not find 100% in wget output")
+ logger.info("check_retrun: %s" % (check_ret))
+ return 1
+
+def validate_remote_nic_type(hostname, username,
+ password, nic_type, logger):
+ """Validate network interface type on specified
host"""
+ nic_type_to_name_dict = {'e1000':
+ '82540EM Gigabit Ethernet Controller',
+ 'rtl8139':
+ 'RTL-8139/8139C/8139C+',
+ 'virtio':'Virtio network device'}
+ nic_type_to_driver_dict = {'e1000':'e1000',
'rtl8139':'8139cp',
+ 'virtio':'virtio_net'}
+ nic_name = nic_type_to_name_dict[nic_type]
+ nic_driver = nic_type_to_driver_dict[nic_type]
+ logger.info("nic_name = %s" % (nic_name))
+ logger.info("nic_driver = %s" % (nic_driver))
+ lspci_cmd = "lspci"
+ lsmod_cmd = "lsmod"
+ lspci_cmd_ret = remote_exec_pexpect(hostname, username,
+ password, lspci_cmd)
+ lsmod_cmd_ret = remote_exec_pexpect(hostname, username,
+ password, lsmod_cmd)
+ logger.info("------------")
+ logger.info("lspci_cmd_ret:\n %s" % (lspci_cmd_ret))
+ logger.info("------------")
+ logger.info("lsmod_cmd_ret:\n %s" % (lsmod_cmd_ret))
+ logger.info("------------")
+ if lspci_cmd_ret != "" and lsmod_cmd_ret != "":
+ cmd1 = """echo "%s" | grep
'%s'""" % (lspci_cmd_ret, nic_name)
+ cmd2 = """echo "%s" | grep
'%s'""" % (lsmod_cmd_ret, nic_driver)
+ status1, output1 = commands.getstatusoutput(cmd1)
+ status2, output2 = commands.getstatusoutput(cmd2)
+ if status1 == 0 and status2 == 0:
+ # other nic should not be seen in guest
+ nic_type_to_name_dict.pop(nic_type)
+ for key in nic_type_to_name_dict.keys():
+ logger.info("now try to grep other nic type \
+ in lspci output: %s" % key)
+ other_name_cmd = """echo '%s' | grep
'%s'""" % \
+ (lspci_cmd_ret, nic_type_to_name_dict[key])
+ ret, out = commands.getstatusoutput(other_name_cmd)
+ if ret == 0:
+ logger.info("unspecified nic name is seen in \
+ guest's lspci command: \n %s \n" % out)
+ return 1
+
+ nic_type_to_driver_dict.pop(nic_type)
+ for key in nic_type_to_driver_dict.keys():
+ logger.info("now try to grep other nic type \
+ in lsmod output: %s" % key)
+ other_driver_cmd = """echo '%s' | grep
'%s'""" % \
+ (lsmod_cmd_ret,
+ nic_type_to_driver_dict[key])
+ ret1, out1 = commands.getstatusoutput(other_driver_cmd)
+ if ret1 == 0:
+ logger.info("unspecified nic driver is seen \
+ in guest's lsmod command: %s" % out)
+ return 1
+
+ logger.info("lspci ouput about nic is: \n %s; \n \
+ lsmod output about nic is \n %s \n" %
+ (output1,output2))
+ return 0
+ else:
+ logger.info("lspci and lsmod and grep fail")
+ return 1
+ else:
+ logger.info("lspci and lsmod return nothing")
+ return 1
+
+def validate_remote_blk_type(hostname, username, password,
+ blk_type, logger):
+ """Validate block device type on specified host"""
+ blk_type_to_name_dict = {'ide':'Intel Corporation 82371SB PIIX3
IDE',
+ 'virtio':'Virtio block device'}
+ blk_type_to_driver_dict = {'ide':'unknow',
'virtio':'virtio_blk'}
+ lspci_cmd = "lspci"
+ lsmod_cmd = "lsmod"
+ lspci_cmd_ret = remote_exec_pexpect(hostname, username,
+ password, lspci_cmd)
+ lsmod_cmd_ret = remote_exec_pexpect(hostname, username,
+ password, lsmod_cmd)
+ logger.info("------------")
+ logger.info("lspci_cmd_ret:\n %s" % (lspci_cmd_ret))
+ logger.info("------------")
+ logger.info("lsmod_cmd_ret: \n %s" % (lsmod_cmd_ret))
+ logger.info("------------")
+ if lspci_cmd_ret != "" and lsmod_cmd_ret != "":
+ if blk_type == "virtio":
+ blk_name = blk_type_to_name_dict[blk_type]
+ blk_driver = blk_type_to_driver_dict[blk_type]
+ logger.info("blk_name = %s \n blk_driver = %s" %
+ (blk_name, blk_driver))
+ cmd1 = """echo "%s" | grep
'%s'""" % (lspci_cmd_ret, blk_name)
+ cmd2 = """echo "%s" | grep
'%s'""" % (lsmod_cmd_ret, blk_driver)
+ status1, output1 = commands.getstatusoutput(cmd1)
+ status2, output2 = commands.getstatusoutput(cmd2)
+ if status1 == 0 and status2 == 0:
+ logger.info("block device type is virtio")
+ return 0
+ else:
+ return 1
+
+ # this check will not check ide type block device
+ if blk_type == "ide":
+ # virtio block device should not be seen in guest
+ blk_type_to_name_dict.pop(blk_type)
+ for key in blk_type_to_name_dict.keys():
+ logger.info(
+ "now try to grep other blk type in lspci output: %s" %
+ key)
+ other_name_cmd = """echo "%s" | grep
'%s'""" % \
+ (lspci_cmd_ret, blk_type_to_name_dict[key])
+ ret, out = commands.getstatusoutput(other_name_cmd)
+ if ret == 0:
+ logger.info("unspecified blk name is seen in guest's \
+ lspci command: \n %s \n" % out)
+ return 1
+ blk_type_to_driver_dict.pop(blk_type)
+ for key in blk_type_to_driver_dict.keys():
+ logger.info(
+ "now try to grep other blk type in lsmod output: %s" %
+ key)
+ other_driver_cmd = """echo '%s' | grep
'%s'""" % \
+ (lsmod_cmd_ret,
+ blk_type_to_driver_dict[key])
+ ret1, out1 = commands.getstatusoutput(other_driver_cmd)
+ if ret1 == 0:
+ logger.info("unspecified blk driver is seen \
+ in guest's lsmod command: \n %s \n" % out)
+ return 1
+ logger.info("block device type is ide")
+ return 0
+ else:
+ logger.info("lspci and lsmod return nothing")
+ return 1
--
1.7.7.3