@@ -9,8 +9,8 @@ Auxiliary script used to send data between ports on guests.
"""
import threading
from threading import Thread
-import os, time, select, re, random, sys, array
-import fcntl, subprocess, traceback, signal
+import os, select, re, random, sys, array
+import fcntl, traceback, signal
DEBUGPATH = "/sys/kernel/debug"
SYSFSPATH = "/sys/class/virtio-ports/"
@@ -63,7 +63,7 @@ class VirtioGuest:
"""
ports = {}
not_present_msg = "FAIL: There's no virtio-ports dir in debugfs"
- if (not os.path.ismount(DEBUGPATH)):
+ if not os.path.ismount(DEBUGPATH):
os.system('mount -t debugfs none %s' % (DEBUGPATH))
try:
if not os.path.isdir('%s/virtio-ports' % (DEBUGPATH)):
@@ -72,21 +72,20 @@ class VirtioGuest:
print not_present_msg
else:
viop_names = os.listdir('%s/virtio-ports' % (DEBUGPATH))
- if (in_files != None):
+ if in_files is not None:
dev_names = os.listdir('/dev')
rep = re.compile(r"vport[0-9]p[0-9]+")
- dev_names = filter(lambda x: rep.match(x) != None, dev_names)
+ dev_names = filter(lambda x: rep.match(x) is not None, dev_names)
if len(dev_names) != len(in_files):
- print ("FAIL: Not all ports are sucesfully inicailized"+
- " in /dev "+
- "only %d from %d." % (len(dev_names),
- len(in_files)))
+ print ("FAIL: Not all ports were successfully initialized "
+ "in /dev, only %d from %d." % (len(dev_names),
+ len(in_files)))
return
if len(viop_names) != len(in_files):
- print ("FAIL: No all ports are sucesfully inicailized "
- "in debugfs only %d from %d." % (len(viop_names),
- len(in_files)))
+ print ("FAIL: Not all ports were successfuly initialized "
+ "in debugfs, only %d from %d." % (len(viop_names),
+ len(in_files)))
return
for name in viop_names:
@@ -101,35 +100,36 @@ class VirtioGuest:
m = re.match("(\S+): (\S+)", line)
port[m.group(1)] = m.group(2)
- if (port['is_console'] == "yes"):
+ if port['is_console'] == "yes":
port["path"] = "/dev/hvc%s" % (port["console_vtermno"])
# Console works like a serialport
else:
port["path"] = "/dev/%s" % name
- if (not os.path.exists(port['path'])):
+ if not os.path.exists(port['path']):
print "FAIL: %s not exist" % port['path']
sysfspath = SYSFSPATH + name
- if (not os.path.isdir(sysfspath)):
+ if not os.path.isdir(sysfspath):
print "FAIL: %s not exist" % (sysfspath)
info_name = sysfspath + "/name"
port_name = self._readfile(info_name).strip()
- if (port_name != port["name"]):
- print ("FAIL: Port info not match \n%s - %s\n%s - %s" %
+ if port_name != port["name"]:
+ print ("FAIL: Port info does not match "
+ "\n%s - %s\n%s - %s" %
(info_name , port_name,
"%s/virtio-ports/%s" % (DEBUGPATH, name),
port["name"]))
dev_ppath = DEVPATH + port_name
- if not (os.path.exists(dev_ppath)):
- print ("FAIL: Symlink " + dev_ppath + " not exist.")
- if not (os.path.realpath(dev_ppath) != "/dev/name"):
- print ("FAIL: Sumlink " + dev_ppath + " not correct.")
+ if not os.path.exists(dev_ppath):
+ print "FAIL: Symlink %s does not exist." % dev_ppath
+ if not os.path.realpath(dev_ppath) != "/dev/name":
+ print "FAIL: Symlink %s is not correct." % dev_ppath
except AttributeError:
- print ("In file " + open_db_file +
- " are incorrect data\n" + "".join(file).strip())
- print ("FAIL: Fail file data.")
+ print ("Bad data on file %s:\n%s. " %
+ (open_db_file, "".join(file).strip()))
+ print "FAIL: Bad data on file %s." % open_db_file
return
ports[port['name']] = port
@@ -142,10 +142,11 @@ class VirtioGuest:
"""
Check if port /dev/vport0p0 was created.
"""
- if os.path.exists("/dev/vport0p0"):
- print "PASS: Port exist."
+ symlink = "/dev/vport0p0"
+ if os.path.exists(symlink):
+ print "PASS: Symlink %s exists." % symlink
else:
- print "FAIL: Device /dev/vport0p0 not exist."
+ print "FAIL: Symlink %s does not exist." % symlink
def init(self, in_files):
@@ -154,7 +155,7 @@ class VirtioGuest:
"""
self.ports = self._get_port_status(in_files)
- if self.ports == None:
+ if self.ports is None:
return
for item in in_files:
if (item[1] != self.ports[item[0]]["is_console"]):
@@ -507,11 +508,11 @@ class VirtioGuest:
"""
descriptor = None
path = self.ports[file]["path"]
- if path != None:
+ if path is not None:
if path in self.files.keys():
descriptor = self.files[path]
del self.files[path]
- if descriptor != None:
+ if descriptor is not None:
try:
os.close(descriptor)
except Exception, inst:
@@ -745,9 +746,9 @@ def main():
catch = virt.catching_signal()
if catch:
signal.signal(signal.SIGIO, virt)
- elif catch == False:
+ elif catch is False:
signal.signal(signal.SIGIO, signal.SIG_DFL)
- if (catch != None):
+ if catch is not None:
virt.use_config.set()
print "PASS: guest_exit"
@@ -23,10 +23,10 @@ def run_virtio_console(test, params, env):
3) Start loopback test
4) Start performance test
- This test uses an auxiliary script, console_switch.py, that is copied to
- guests. This script has functions to send and write data to virtio console
- ports. Details of each test can be found on the docstrings for the test_*
- functions.
+ This test uses an auxiliary script, virtio_console_guest.py, that is copied
+ to guests. This script has functions to send and write data to virtio
+ console ports. Details of each test can be found on the docstrings for the
+ test_* functions.
@param test: kvm test object
@param params: Dictionary with the test parameters
@@ -79,7 +79,7 @@ def run_virtio_console(test, params, env):
@raise TestError: If collapse of test is fatal raise forward
exception from subtest.
"""
- if args == None:
+ if args is None:
args = []
res = [None, function.func_name, args]
try:
@@ -403,7 +403,7 @@ def run_virtio_console(test, params, env):
if ret[0] and (not self.exitevent.isSet()):
buf = self.port.recv(self.blocklen)
if buf:
- # Compare the recvd data with the control data
+ # Compare the received data with the control data
for ch in buf:
ch_ = self.buffer.popleft()
if not ch == ch_:
@@ -502,12 +502,12 @@ def run_virtio_console(test, params, env):
"""
data = vm_port.read_nonblocking()
match = re.search("BUG:", data, re.MULTILINE)
- if match == None:
+ if match is None:
return None
match = re.search(r"BUG:.*---\[ end trace .* \]---",
data, re.DOTALL |re.MULTILINE)
- if match == None:
+ if match is None:
data += vm_port.read_until_last_line_matches(
["---\[ end trace .* \]---"],timeout)
@@ -541,7 +541,7 @@ def run_virtio_console(test, params, env):
data = "Timeout."
kcrash_data = _search_kernel_crashlog(vm[3])
- if (kcrash_data != None):
+ if kcrash_data is not None:
logging.error(kcrash_data)
vm[4] = True
@@ -581,7 +581,7 @@ def run_virtio_console(test, params, env):
"""
# in LOOP_NONE mode it might stuck in read/write
match, tmp = _on_guest("virt.exit_threads()", vm, 10)
- if match == None:
+ if match is None:
logging.debug("Workaround the stuck thread on guest")
# Thread is stucked in read/write
for send_pt in send_pts:
@@ -621,7 +621,6 @@ def run_virtio_console(test, params, env):
consoles = []
serialports = []
tmp_dir = tempfile.mkdtemp(prefix="virtio-console-", dir="/tmp/")
- #if not params.get('extra_params'):
params['extra_params'] = ''
if not spread:
@@ -643,7 +642,7 @@ def run_virtio_console(test, params, env):
% (i, i, i, pci))
for i in range(no_console, no_console + no_serialport):
- # Spread seroal ports between multiple PCI devices (2 per a dev)
+ # Spread serial ports between multiple PCI devices (2 per each dev)
if not i % 2 and spread:
pci = "virtio-serial-pci%d" % (i / 2)
params['extra_params'] += (" -device virtio-serial-pci,id="
@@ -672,7 +671,7 @@ def run_virtio_console(test, params, env):
def _restore_vm():
"""
- Restore old virtual machine when VM is destroied.
+ Restore old virtual machine when VM is destroyed.
"""
logging.debug("Booting guest %s", params.get("main_vm"))
kvm_preprocessing.preprocess_vm(test, params, env,
@@ -687,12 +686,12 @@ def run_virtio_console(test, params, env):
0, 2)
except (error.TestFail):
kernel_bug = _search_kernel_crashlog(vm.serial_console, 10)
- if kernel_bug != None:
+ if kernel_bug is not None:
logging.error(kernel_bug)
raise
kernel_bug = _search_kernel_crashlog(vm.serial_console, 10)
- if kernel_bug != None:
+ if kernel_bug is not None:
logging.error(kernel_bug)
sserial = kvm_test_utils.wait_for_login(vm, 0,
@@ -869,9 +868,9 @@ def run_virtio_console(test, params, env):
on_guest("virt.recv('%s', 0, 1024, False)" % port.name, vm, 10)
match, tmp = _on_guest("virt.send('%s', 10, True)" % port.name,
vm, 10)
- if match != None:
+ if match is not None:
raise error.TestFail("Write on guest while host disconnected "
- "didn't timed out.\nOutput:\n%s"
+ "didn't time out.\nOutput:\n%s"
% tmp)
port.open()
@@ -897,9 +896,9 @@ def run_virtio_console(test, params, env):
on_guest("virt.clean_port('%s'),1024" % port.name, vm, 10)
match, tmp = _on_guest("virt.send('%s', (1024**3)*3, True, "
"is_static=True)" % port.name, vm, 30)
- if match != None:
+ if match is None:
raise error.TestFail("Write on guest while host disconnected "
- "didn't timed out.\nOutput:\n%s"
+ "didn't time out.\nOutput:\n%s"
% tmp)
time.sleep(20)
@@ -912,8 +911,8 @@ def run_virtio_console(test, params, env):
if (ret[0] != []):
rlen += len(port.sock.recv(((4096))))
elif rlen != (1024**3*3):
- raise error.TestFail("Not all data are received."
- "Only %d from %d" % (rlen, 1024**3*3))
+ raise error.TestFail("Not all data was received,"
+ "only %d from %d" % (rlen, 1024**3*3))
on_guest("print 'PASS: nothing'", vm, 10)
@@ -939,42 +938,41 @@ def run_virtio_console(test, params, env):
loads.start()
try:
- sended1 = 0
+ sent1 = 0
for i in range(1000000):
- sended1 += port.sock.send("a")
- except (socket.timeout):
- logging.info("Send data to closed port timeouted.")
+ sent1 += port.sock.send("a")
+ except socket.timeout:
+ logging.info("Data sending to closed port timed out.")
- logging.info("Sendes bytes to client: %d" % (sended1))
+ logging.info("Bytes sent to client: %d" % (sent1))
logging.info("\n" + loads.get_cpu_status_string()[:-1])
on_guest('echo -n "PASS:"', vm, 10)
-
- logging.info("Open and then close port %s." % (port.name))
+ logging.info("Open and then close port %s" % (port.name))
init_guest(vm, consoles)
- #Test of live and open and close port again.
+ # Test of live and open and close port again
_clean_ports(vm, consoles)
on_guest("virt.close('%s')" % (port.name), vm, 10)
- #With serialport it makes another behavior
+ # With serialport it is a different behavior
on_guest("guest_exit()", vm, 10)
port.sock.settimeout(20.0)
loads.start()
try:
- sended2 = 0
+ sent2 = 0
for i in range(40000):
- sended2 = port.sock.send("a")
- except (socket.timeout):
- logging.info("Send data to closed port timeouted.")
+ sent2 = port.sock.send("a")
+ except socket.timeout:
+ logging.info("Data sending to closed port timed out.")
- logging.info("Sendes bytes to client: %d" % (sended2))
+ logging.info("Bytes sent to client: %d" % (sent2))
logging.info("\n" + loads.get_cpu_status_string()[:-1])
loads.stop()
- if (sended1 != sended2):
- logging.warning("Inconsis behavior first send %d and sec send %d" %
- (sended1, sended2))
+ if (sent1 != sent2):
+ logging.warning("Inconsistent behavior: First sent %d bytes and "
+ "second sent %d bytes" % (sent1, sent2))
port.sock.settimeout(None)
(vm[0], vm[1], vm[3]) = _restore_vm()
@@ -1000,7 +998,7 @@ def run_virtio_console(test, params, env):
if match == 0:
raise error.TestFail("Received data even when non were sent\n"
"Data:\n%s" % tmp)
- elif match != None:
+ elif match is not None:
raise error.TestFail("Unexpected fail\nMatch: %s\nData:\n%s" %
(match, tmp))
port.sock.sendall("1234567890")
@@ -1025,7 +1023,7 @@ def run_virtio_console(test, params, env):
if match == 0:
raise error.TestFail("Received data even when non were sent\n"
"Data:\n%s" % tmp)
- elif match == None:
+ elif match is None:
raise error.TestFail("Timed out, probably in blocking mode\n"
"Data:\n%s" % tmp)
elif match != 1:
@@ -1087,9 +1085,9 @@ def run_virtio_console(test, params, env):
on_guest("virt.clean_port('%s'),1024" % cname, vm, 2)
- def tmax_serail_ports(vm, consoles):
+ def tmax_serial_ports(vm, consoles):
"""
- Test maximim count of ports in guest machine.
+ Test maximum count of ports in guest machine.
@param vm: Target virtual machine [vm, session, tmp_dir, ser_session].
@param consoles: Consoles which should be close before rmmod.
@@ -1107,7 +1105,7 @@ def run_virtio_console(test, params, env):
def tmax_console_ports(vm, consoles):
"""
- Test maximim count of ports in guest machine.
+ Test maximum count of ports in guest machine.
@param vm: Target virtual machine [vm, session, tmp_dir, ser_session].
@param consoles: Consoles which should be close before rmmod.
@@ -1178,7 +1176,7 @@ def run_virtio_console(test, params, env):
def tmigrate_offline(vm, consoles):
"""
- Let the machine migrate. Virtio_concoles should survive this.
+ Let the machine migrate. Virtio_consoles should survive this.
@param vm: Target virtual machine [vm, session, tmp_dir, ser_session].
@param consoles: Consoles which should be close before rmmod.
@@ -1444,14 +1442,14 @@ def run_virtio_console(test, params, env):
# Check if python is still alive
print "CLEANING"
match, tmp = _on_guest("is_alive()", vm, 10)
- if (match == None) or (match != 0):
+ if (match is None) or (match != 0):
logging.error("Python died/is stucked/have remaining threads")
logging.debug(tmp)
try:
if vm[4] == True:
raise error.TestFail("Kernel crash.")
match, tmp = _on_guest("guest_exit()", vm, 10)
- if (match == None) or (match == 0):
+ if (match is None) or (match == 0):
vm[1].close()
vm[1] = kvm_test_utils.wait_for_login(vm[0], 0,
float(params.get("boot_timeout", 5)),
@@ -1487,7 +1485,7 @@ def run_virtio_console(test, params, env):
match = _on_guest("virt.clean_port('%s'),1024" %
cname, vm, 10)[0]
- if (match == None) or (match != 0):
+ if (match is None) or (match != 0):
raise error.TestFail("Virtio-console driver is irrepar"
"ably blocked. Every comd end"
" with sig KILL. Neither the "
@@ -1570,10 +1568,10 @@ def run_virtio_console(test, params, env):
@param params: Test parameters '$console_type:$data;...'
"""
subtest.headline("test_multiport:")
- #Test Loopback
+ # Test Loopback
subtest.do_test(tloopback, [vm, consoles, params[0]])
- #Test Performance
+ # Test Performance
subtest.do_test(tperf, [vm, consoles, params[1]])
@@ -1586,9 +1584,9 @@ def run_virtio_console(test, params, env):
@param consoles: Field of virtio ports with the minimum of 2 items.
"""
subtest.headline("test_destructive:")
- #Test rmmod
- subtest.do_test(trmmod,[vm, consoles])
- subtest.do_test(tmax_serail_ports, [vm, consoles])
+ # Test rmmod
+ subtest.do_test(trmmod, [vm, consoles])
+ subtest.do_test(tmax_serial_ports, [vm, consoles])
subtest.do_test(tmax_console_ports, [vm, consoles])
subtest.do_test(tmax_mix_serial_conosle_port, [vm, consoles])
subtest.do_test(tshutdown, [vm, consoles])
@@ -1604,21 +1602,21 @@ def run_virtio_console(test, params, env):
no_serialports = 0
no_consoles = 0
# consoles required for Smoke test
- if (tsmoke_params.count('serialport')):
+ if tsmoke_params.count('serialport'):
no_serialports = max(2, no_serialports)
- if (tsmoke_params.count('console')):
+ if tsmoke_params.count('console'):
no_consoles = max(2, no_consoles)
# consoles required for Loopback test
for param in tloopback_params.split(';'):
no_serialports = max(no_serialports, param.count('serialport'))
no_consoles = max(no_consoles, param.count('console'))
# consoles required for Performance test
- if (tperf_params.count('serialport')):
+ if tperf_params.count('serialport'):
no_serialports = max(1, no_serialports)
- if (tperf_params.count('console')):
+ if tperf_params.count('console'):
no_consoles = max(1, no_consoles)
- if (no_serialports + no_consoles) == 0:
+ if no_serialports + no_consoles == 0:
raise error.TestFail("No tests defined, probably incorrect "
"configuration in tests_base.cfg")
@@ -1639,13 +1637,13 @@ def run_virtio_console(test, params, env):
init_guest(vm, consoles)
subtest.set_cleanup_func(clean_ports, [vm, consoles])
- #Test Smoke
+ # Test Smoke
test_smoke(subtest, vm, consoles, tsmoke_params)
- #Test multiport functionality and performance.
+ # Test multiport functionality and performance.
test_multiport(subtest, vm, consoles, [tloopback_params, tperf_params])
- #Test destructive test.
+ # Test destructive test.
# Uses stronger clean up function
(_cleanup_func, _cleanup_args) = subtest.get_cleanup_func()
subtest.set_cleanup_func(clean_reload_vm, [vm, consoles])