@@ -340,10 +340,10 @@ def postprocess(test, params, env):
"that fail to respond to a remote login request...")
for vm in env.get_all_vms():
if vm.is_alive():
- session = vm.remote_login()
- if session:
+ try:
+ session = vm.remote_login()
session.close()
- else:
+ except kvm_utils.LoginError:
vm.destroy(gracefully=False)
# Kill all kvm_subprocess tail threads
@@ -55,18 +55,32 @@ def wait_for_login(vm, nic_index=0, timeout=240, start=0, step=2, serial=None):
(ssh, rss) one.
@return: A shell session object.
"""
- type = 'remote'
+ end_time = time.time() + timeout
+ session = None
if serial:
type = 'serial'
logging.info("Trying to log into guest %s using serial connection,"
" timeout %ds", vm.name, timeout)
- session = kvm_utils.wait_for(lambda: vm.serial_login(), timeout,
- start, step)
+ time.sleep(start)
+ while time.time() < end_time:
+ try:
+ session = vm.serial_login()
+ break
+ except kvm_utils.LoginError, e:
+ logging.debug(e)
+ time.sleep(step)
else:
+ type = 'remote'
logging.info("Trying to log into guest %s using remote connection,"
" timeout %ds", vm.name, timeout)
- session = kvm_utils.wait_for(lambda: vm.remote_login(
- nic_index=nic_index), timeout, start, step)
+ time.sleep(start)
+ while time.time() < end_time:
+ try:
+ session = vm.remote_login(nic_index=nic_index)
+ break
+ except kvm_utils.LoginError, e:
+ logging.debug(e)
+ time.sleep(step)
if not session:
raise error.TestFail("Could not log into guest %s using %s connection" %
(vm.name, type))
@@ -124,10 +138,9 @@ def reboot(vm, session, method="shell", sleep_before_reset=10, nic_index=0,
# Try logging into the guest until timeout expires
logging.info("Guest is down. Waiting for it to go up again, timeout %ds",
timeout)
- session = kvm_utils.wait_for(lambda: vm.remote_login(nic_index=nic_index),
- timeout, 0, 2)
- if not session:
- raise error.TestFail("Could not log into guest after reboot")
+ # Temporary hack
+ time.sleep(timeout)
+ session = vm.remote_login(nic_index=nic_index)
logging.info("Guest is up again")
return session
@@ -438,7 +451,6 @@ def run_autotest(vm, session, control_path, timeout, outputdir):
@param local_path: Local path.
@param remote_path: Remote path.
"""
- copy = False
local_hash = utils.hash_file(local_path)
basename = os.path.basename(local_path)
output = session.cmd_output("md5sum %s" % remote_path)
@@ -452,14 +464,9 @@ def run_autotest(vm, session, control_path, timeout, outputdir):
# Let's be a little more lenient here and see if it wasn't a
# temporary problem
remote_hash = "0"
-
if remote_hash != local_hash:
logging.debug("Copying %s to guest", basename)
- copy = True
-
- if copy:
- if not vm.copy_files_to(local_path, remote_path):
- raise error.TestFail("Could not copy %s to guest" % local_path)
+ vm.copy_files_to(local_path, remote_path)
def extract(vm, remote_path, dest_dir="."):
@@ -484,9 +491,8 @@ def run_autotest(vm, session, control_path, timeout, outputdir):
guest_results_dir = os.path.join(outputdir, "guest_autotest_results")
if not os.path.exists(guest_results_dir):
os.mkdir(guest_results_dir)
- if not vm.copy_files_from("%s/results/default/*" % autotest_path,
- guest_results_dir):
- logging.error("Could not copy autotest results from guest")
+ vm.copy_files_from("%s/results/default/*" % autotest_path,
+ guest_results_dir)
def get_results_summary():
@@ -536,9 +542,7 @@ def run_autotest(vm, session, control_path, timeout, outputdir):
# Extract autotest.tar.bz2
extract(vm, compressed_autotest_path, "/")
- if not vm.copy_files_to(control_path,
- os.path.join(autotest_path, 'control')):
- raise error.TestFail("Could not copy the test control file to guest")
+ vm.copy_files_to(control_path, os.path.join(autotest_path, 'control'))
# Run the test
logging.info("Running autotest control file %s on guest, timeout %ss",
@@ -519,8 +519,10 @@ def _remote_login(session, username, password, prompt, timeout=10):
@param timeout: The maximal time duration (in seconds) to wait for each
step of the login procedure (i.e. the "Are you sure" prompt, the
password prompt, the shell prompt, etc)
-
- @return: True on success and False otherwise.
+ @raise LoginTimeoutError: If timeout expires
+ @raise LoginAuthenticationError: If authentication fails
+ @raise LoginProcessTerminatedError: If the client terminates during login
+ @raise LoginError: If some other error occurs
"""
password_prompt_count = 0
login_prompt_count = 0
@@ -543,8 +545,7 @@ def _remote_login(session, username, password, prompt, timeout=10):
password_prompt_count += 1
continue
else:
- logging.debug("Got password prompt again")
- return False
+ raise LoginAuthenticationError("Got password prompt twice")
elif match == 2: # "login:"
if login_prompt_count == 0:
logging.debug("Got username prompt; sending '%s'" % username)
@@ -552,27 +553,22 @@ def _remote_login(session, username, password, prompt, timeout=10):
login_prompt_count += 1
continue
else:
- logging.debug("Got username prompt again")
- return False
+ raise LoginAuthenticationError("Got username prompt twice")
elif match == 3: # "Connection closed"
- logging.debug("Got 'Connection closed'")
- return False
+ raise LoginError("Client said 'connection closed'")
elif match == 4: # "Connection refused"
- logging.debug("Got 'Connection refused'")
- return False
+ raise LoginError("Client said 'connection refused'")
elif match == 5: # "Please wait"
logging.debug("Got 'Please wait'")
timeout = 30
continue
elif match == 6: # prompt
logging.debug("Got shell prompt -- logged in")
- return True
+ break
except kvm_subprocess.ExpectTimeoutError, e:
- logging.debug("Timeout elapsed (output so far: %r)" % e.output)
- return False
+ raise LoginTimeoutError(e.output)
except kvm_subprocess.ExpectProcessTerminatedError, e:
- logging.debug("Process terminated (output so far: %r)" % e.output)
- return False
+ raise LoginProcessTerminatedError(e.status, e.output)
def remote_login(client, host, port, username, password, prompt, linesep="\n",
@@ -592,8 +588,9 @@ def remote_login(client, host, port, username, password, prompt, linesep="\n",
@param timeout: The maximal time duration (in seconds) to wait for
each step of the login procedure (i.e. the "Are you sure" prompt
or the password prompt)
-
- @return: ShellSession object on success and None on failure.
+ @raise LoginBadClientError: If an unknown client is requested
+ @raise: Whatever _remote_login() raises
+ @return: A ShellSession object.
"""
if client == "ssh":
cmd = ("ssh -o UserKnownHostsFile=/dev/null "
@@ -604,18 +601,19 @@ def remote_login(client, host, port, username, password, prompt, linesep="\n",
elif client == "nc":
cmd = "nc %s %s" % (host, port)
else:
- logging.error("Unknown remote shell client: %s" % client)
- return
+ raise LoginBadClientError(client)
logging.debug("Trying to login with command '%s'" % cmd)
session = kvm_subprocess.ShellSession(cmd, linesep=linesep, prompt=prompt)
- if _remote_login(session, username, password, prompt, timeout):
- if log_filename:
- session.set_output_func(log_line)
- session.set_output_params((log_filename,))
- return session
- else:
+ try:
+ _remote_login(session, username, password, prompt, timeout)
+ except:
session.close()
+ raise
+ if log_filename:
+ session.set_output_func(log_line)
+ session.set_output_params((log_filename,))
+ return session
def _remote_scp(session, password, transfer_timeout=600, login_timeout=10):
@@ -634,11 +632,15 @@ def _remote_scp(session, password, transfer_timeout=600, login_timeout=10):
@param login_timeout: The maximal time duration (in seconds) to wait for
each step of the login procedure (i.e. the "Are you sure" prompt or
the password prompt)
-
- @return: True if the transfer succeeds and False on failure.
+ @raise SCPAuthenticationError: If authentication fails
+ @raise SCPTransferTimeoutError: If the transfer fails to complete in time
+ @raise SCPTransferFailedError: If the process terminates with a nonzero
+ exit code
+ @raise SCPError: If some other error occurs
"""
password_prompt_count = 0
timeout = login_timeout
+ authentication_done = False
while True:
try:
@@ -655,19 +657,24 @@ def _remote_scp(session, password, transfer_timeout=600, login_timeout=10):
session.sendline(password)
password_prompt_count += 1
timeout = transfer_timeout
+ authentication_done = True
continue
else:
- logging.debug("Got password prompt again")
- return False
+ raise SCPAuthenticationError("Got password prompt twice")
elif match == 2: # "lost connection"
- logging.debug("Got 'lost connection'")
- return False
+ raise SCPError("SCP client said 'lost connection'")
except kvm_subprocess.ExpectTimeoutError, e:
- logging.debug("Timeout expired")
- return False
+ if authentication_done:
+ raise SCPTransferTimeoutError(e.output)
+ else:
+ raise SCPAuthenticationError("Authentication timeout expired "
+ "(output so far: %r)" % e.output)
except kvm_subprocess.ExpectProcessTerminatedError, e:
- logging.debug("SCP process terminated with status %s", e.status)
- return e.status == 0
+ if e.status == 0:
+ logging.debug("SCP process terminated with status 0")
+ break
+ else:
+ raise SCPTransferFailedError(e.status, e.output)
def remote_scp(command, password, log_filename=None, transfer_timeout=600,
@@ -686,24 +693,21 @@ def remote_scp(command, password, log_filename=None, transfer_timeout=600,
@param login_timeout: The maximal time duration (in seconds) to wait for
each step of the login procedure (i.e. the "Are you sure" prompt
or the password prompt)
-
- @return: True if the transfer succeeds and False on failure.
+ @raise: Whatever _remote_scp() raises
"""
logging.debug("Trying to SCP with command '%s', timeout %ss",
command, transfer_timeout)
-
if log_filename:
output_func = log_line
output_params = (log_filename,)
else:
output_func = None
output_params = ()
-
session = kvm_subprocess.Expect(command,
output_func=output_func,
output_params=output_params)
try:
- return _remote_scp(session, password, transfer_timeout, login_timeout)
+ _remote_scp(session, password, transfer_timeout, login_timeout)
finally:
session.close()
@@ -721,13 +725,12 @@ def scp_to_remote(host, port, username, password, local_path, remote_path,
@param log_filename: If specified, log all output to this file
@param timeout: The time duration (in seconds) to wait for the transfer
to complete.
-
- @return: True on success and False on failure.
+ @raise: Whatever remote_scp() raises
"""
command = ("scp -v -o UserKnownHostsFile=/dev/null "
"-o PreferredAuthentications=password -r -P %s %s %s@%s:%s" %
(port, local_path, username, host, remote_path))
- return remote_scp(command, password, log_filename, timeout)
+ remote_scp(command, password, log_filename, timeout)
def scp_from_remote(host, port, username, password, remote_path, local_path,
@@ -743,13 +746,12 @@ def scp_from_remote(host, port, username, password, remote_path, local_path,
@param log_filename: If specified, log all output to this file
@param timeout: The time duration (in seconds) to wait for the transfer
to complete.
-
- @return: True on success and False on failure.
+ @raise: Whatever remote_scp() raises
"""
command = ("scp -v -o UserKnownHostsFile=/dev/null "
"-o PreferredAuthentications=password -r -P %s %s@%s:%s %s" %
(port, username, host, remote_path, local_path))
- return remote_scp(command, password, log_filename, timeout)
+ remote_scp(command, password, log_filename, timeout)
def copy_files_to(address, client, username, password, port, local_path,
@@ -766,22 +768,15 @@ def copy_files_to(address, client, username, password, port, local_path,
@param log_filename: If specified, log all output to this file
@param timeout: The time duration (in seconds) to wait for the transfer to
complete.
-
- @return: True on success and False on failure.
+ @raise: Whatever remote_scp() raises
"""
-
- if not address or not port:
- logging.debug("IP address or port unavailable")
- return None
-
if client == "scp":
- return scp_to_remote(address, port, username, password, local_path,
- remote_path, log_filename, timeout)
+ scp_to_remote(address, port, username, password, local_path,
+ remote_path, log_filename, timeout)
elif client == "rss":
c = rss_file_transfer.FileUploadClient(address, port)
c.upload(local_path, remote_path, timeout)
c.close()
- return True
def copy_files_from(address, client, username, password, port, local_path,
@@ -798,22 +793,15 @@ def copy_files_from(address, client, username, password, port, local_path,
@param log_filename: If specified, log all output to this file
@param timeout: The time duration (in seconds) to wait for the transfer to
complete.
-
- @return: True on success and False on failure.
+ @raise: Whatever remote_scp() raises
"""
-
- if not address or not port:
- logging.debug("IP address or port unavailable")
- return None
-
if client == "scp":
- return scp_from_remote(address, port, username, password, remote_path,
- local_path, log_filename, timeout)
+ scp_from_remote(address, port, username, password, remote_path,
+ local_path, log_filename, timeout)
elif client == "rss":
c = rss_file_transfer.FileDownloadClient(address, port)
c.download(remote_path, local_path, timeout)
c.close()
- return True
# The following are utility functions related to ports.
@@ -794,8 +794,11 @@ class VM:
if gracefully and self.params.get("shutdown_command"):
# Try to destroy with shell command
logging.debug("Trying to shutdown VM with shell command...")
- session = self.remote_login()
- if session:
+ try:
+ session = self.remote_login()
+ except kvm_utils.LoginError, e:
+ logging.debug(e)
+ else:
try:
# Send the shutdown command
session.sendline(self.params.get("shutdown_command"))
@@ -1065,7 +1068,7 @@ class VM:
@param nic_index: The index of the NIC to connect to.
@param timeout: Time (seconds) before giving up logging into the
guest.
- @return: ShellSession object on success and None on failure.
+ @return: A ShellSession object.
"""
username = self.params.get("username", "")
password = self.params.get("password", "")
@@ -1078,16 +1081,13 @@ class VM:
(self.name, kvm_utils.generate_random_string(4)))
if not address or not port:
- logging.debug("IP address or port unavailable")
- return None
+ raise kvm_utils.LoginError("IP address or port unavailable")
session = kvm_utils.remote_login(client, address, port, username,
password, prompt, linesep,
log_filename, timeout)
-
- if session:
- session.set_status_test_command(self.params.get("status_test_"
- "command", ""))
+ session.set_status_test_command(self.params.get("status_test_command",
+ ""))
return session
@@ -1106,13 +1106,11 @@ class VM:
client = self.params.get("file_transfer_client")
address = self.get_address(nic_index)
port = self.get_port(int(self.params.get("file_transfer_port")))
-
log_filename = ("transfer-%s-to-%s-%s.log" %
(self.name, address,
kvm_utils.generate_random_string(4)))
- return kvm_utils.copy_files_to(address, client, username, password,
- port, local_path, remote_path,
- log_filename, timeout)
+ kvm_utils.copy_files_to(address, client, username, password, port,
+ local_path, remote_path, log_filename, timeout)
def copy_files_from(self, remote_path, local_path, nic_index=0, timeout=600):
@@ -1130,12 +1128,12 @@ class VM:
client = self.params.get("file_transfer_client")
address = self.get_address(nic_index)
port = self.get_port(int(self.params.get("file_transfer_port")))
-
log_filename = ("transfer-%s-from-%s-%s.log" %
(self.name, address,
kvm_utils.generate_random_string(4)))
- return kvm_utils.copy_files_from(address, client, username, password,
- port, local_path, remote_path, log_filename, timeout)
+ kvm_utils.copy_files_from(address, client, username, password, port,
+ local_path, remote_path, log_filename,
+ timeout)
def serial_login(self, timeout=10):
@@ -1153,18 +1151,15 @@ class VM:
linesep = eval("'%s'" % self.params.get("shell_linesep", r"\n"))
status_test_command = self.params.get("status_test_command", "")
- if self.serial_console:
- self.serial_console.set_linesep(linesep)
- self.serial_console.set_status_test_command(status_test_command)
- else:
- return None
+ self.serial_console.set_linesep(linesep)
+ self.serial_console.set_status_test_command(status_test_command)
- # Make sure we get a login prompt
+ # Try to get a login prompt
self.serial_console.sendline()
- if kvm_utils._remote_login(self.serial_console, username, password,
- prompt, timeout):
- return self.serial_console
+ kvm_utils._remote_login(self.serial_console, username, password,
+ prompt, timeout)
+ return self.serial_console
def send_key(self, keystr):
@@ -1216,8 +1211,6 @@ class VM:
Get the cpu count of the VM.
"""
session = self.remote_login()
- if not session:
- return None
try:
return int(session.cmd(self.params.get("cpu_chk_cmd")))
finally:
@@ -1232,8 +1225,6 @@ class VM:
self.params.get("mem_chk_cmd") will be used.
"""
session = self.remote_login()
- if not session:
- return None
try:
if not cmd:
cmd = self.params.get("mem_chk_cmd")
@@ -50,12 +50,9 @@ def run_boot_savevm(test, params, env):
if (time.time() > login_expire):
login_expire = time.time() + savevm_login_delay
logging.info("Logging in after loadvm...")
- session = kvm_utils.wait_for(vm.remote_login, 1, 0, 1)
- if not session:
- logging.info("Failed to login")
- else:
- logging.info("Logged in to guest!")
- break
+ session = vm.remote_login()
+ logging.info("Logged in to guest!")
+ break
if (time.time() > end_time):
raise error.TestFail("fail: timeout")
@@ -31,8 +31,7 @@ def run_clock_getres(test, params, env):
vm = kvm_test_utils.get_living_vm(env, params.get("main_vm"))
timeout = int(params.get("login_timeout", 360))
session = kvm_test_utils.wait_for_login(vm, timeout=timeout)
- if not vm.copy_files_to(test_clock, base_dir):
- raise error.TestError("Failed to copy %s to VM" % t_name)
+ vm.copy_files_to(test_clock, base_dir)
session.cmd(os.path.join(base_dir, t_name))
logging.info("PASS: Guest reported appropriate clock resolution")
logging.info("guest's dmesg:")
@@ -124,8 +124,10 @@ def run_ethtool(test, params, env):
return (False, "Tcpdump process wasn't launched")
logging.info("Start to transfer file")
- if not copy_files_fun(filename, filename):
- return (False, "Child process transfer file failed")
+ try:
+ copy_files_fun(filename, filename):
+ except kvm_utils.SCPError, e:
+ return (False, "File transfer failed (%s)" % e)
logging.info("Transfer file completed")
session.cmd("killall tcpdump")
try:
@@ -45,24 +45,20 @@ def run_file_transfer(test, params, env):
logging.info("Transfering file host -> guest, timeout: %ss",
transfer_timeout)
t_begin = time.time()
- success = vm.copy_files_to("%s/a.out" % dir_name, guest_path,
- timeout=transfer_timeout)
+ vm.copy_files_to("%s/a.out" % dir_name, guest_path,
+ timeout=transfer_timeout)
t_end = time.time()
throughput = filesize / (t_end - t_begin)
- if not success:
- raise error.TestFail("Fail to transfer file from host to guest")
logging.info("File transfer host -> guest succeed, "
"estimated throughput: %.2fMB/s", throughput)
logging.info("Transfering file guest -> host, timeout: %ss",
transfer_timeout)
t_begin = time.time()
- success = vm.copy_files_from(guest_path, "%s/c.out" % dir_name,
- timeout=transfer_timeout)
+ vm.copy_files_from(guest_path, "%s/c.out" % dir_name,
+ timeout=transfer_timeout)
t_end = time.time()
throughput = filesize / (t_end - t_begin)
- if not success:
- raise error.TestFail("Fail to transfer file from guest to host")
logging.info("File transfer guest -> host succeed, "
"estimated throughput: %.2fMB/s", throughput)
else:
@@ -55,7 +55,9 @@ def run_guest_s4(test, params, env):
# Log into the resumed VM
relogin_timeout = int(params.get("relogin_timeout", 240))
logging.info("Logging into resumed VM, timeout %s", relogin_timeout)
- session2 = kvm_utils.wait_for(vm.remote_login, relogin_timeout, 0, 2)
+ # Temporary hack
+ time.sleep(relogin_timeout)
+ session2 = vm.remote_login()
if not session2:
raise error.TestFail("Could not log into VM after resuming from "
"suspend to disk")
@@ -249,10 +249,9 @@ def run_ksm_overcommit(test, params, env):
session = lsessions[0]
vm = lvms[0]
for i in range(1, max_alloc):
- lsessions.append(kvm_utils.wait_for(vm.remote_login, 360, 0, 2))
- if not lsessions[i]:
- raise error.TestFail("Could not log into guest %s" %
- vm.name)
+ # Temporary hack
+ time.sleep(360)
+ lsessions.append(vm.remote_login())
session.cmd("swapoff -a", timeout=300)
@@ -553,9 +552,9 @@ def run_ksm_overcommit(test, params, env):
logging.debug("Booting first guest %s", lvms[0].name)
- lsessions.append(kvm_utils.wait_for(lvms[0].remote_login, 360, 0, 2))
- if not lsessions[0]:
- raise error.TestFail("Could not log into first guest")
+ # Temporary hack
+ time.sleep(360)
+ lsessions.append(lvms[0].remote_login())
# Associate vm PID
try:
tmp = open(params.get('pid_' + vm_name), 'r')
@@ -585,10 +584,9 @@ def run_ksm_overcommit(test, params, env):
raise error.TestError("VM %s seems to be dead; Test requires a"
"living VM" % lvms[i].name)
- lsessions.append(kvm_utils.wait_for(lvms[i].remote_login, 360, 0, 2))
- if not lsessions[i]:
- raise error.TestFail("Could not log into guest %s" %
- lvms[i].name)
+ # Temporary hack
+ time.sleep(360)
+ lsessions.append(lvms[i].remote_login())
try:
tmp = open(params.get('pid_' + vm_name), 'r')
params['pid_' + vm_name] = int(tmp.readline())
@@ -606,8 +604,7 @@ def run_ksm_overcommit(test, params, env):
vksmd_src = os.path.join(pwd, "scripts/allocator.py")
dst_dir = "/tmp"
for vm in lvms:
- if not vm.copy_files_to(vksmd_src, dst_dir):
- raise error.TestFail("copy_files_to failed %s" % vm.name)
+ vm.copy_files_to(vksmd_src, dst_dir)
logging.info("Phase 0: PASS")
if params['ksm_mode'] == "parallel":
@@ -53,9 +53,9 @@ def run_migration(test, params, env):
# Log into the guest again
logging.info("Logging into guest after migration...")
- session2 = kvm_utils.wait_for(dest_vm.remote_login, 30, 0, 2)
- if not session2:
- raise error.TestFail("Could not log into guest after migration")
+ # Temporary hack
+ time.sleep(30)
+ session2 = dest_vm.remote_login()
logging.info("Logged in after migration")
# Make sure the background process is still running
@@ -57,9 +57,7 @@ def run_migration_with_file_transfer(test, params, env):
"migration...")
vm = kvm_test_utils.migrate(vm, env, mig_timeout, mig_protocol)
finally:
- # bg.join() returns the value returned by copy_files_to()
- if not bg.join():
- raise error.TestFail("File transfer from host to guest failed")
+ bg.join()
logging.info("Transferring file back from guest to host")
bg = kvm_utils.Thread(kvm_utils.copy_files_from,
@@ -73,8 +71,7 @@ def run_migration_with_file_transfer(test, params, env):
"migration...")
vm = kvm_test_utils.migrate(vm, env, mig_timeout, mig_protocol)
finally:
- if not bg.join():
- raise error.TestFail("File transfer from guest to host failed")
+ bg.join()
# Make sure the returned file is indentical to the original one
orig_hash = client_utils.hash_file(host_path)
@@ -38,10 +38,15 @@ def run_migration_with_reboot(test, params, env):
# Try logging into the guest until timeout expires
logging.info("Guest is down. Waiting for it to go up again, timeout "
"%ds", timeout)
- session = kvm_utils.wait_for(
- lambda: kvm_utils.remote_login(client, address, port, username,
- password, prompt, linesep,
- log_filename), timeout, 0, 2)
+ session = None
+ end_time = time.time() + timeout
+ while time.time() < end_time:
+ try:
+ session = kvm_utils.remote_login(client, address, port,
+ username, password, prompt,
+ linesep, log_filename)
+ except kvm_utils.LoginError, e:
+ logging.debug(e)
if not session:
raise error.TestFail("Could not log into guest after reboot")
logging.info("Guest is up again")
@@ -54,8 +54,7 @@ def run_multicast(test, params, env):
suffix = int(re.findall("\d+", mcast)[-1])
# copy python script to guest for joining guest to multicast groups
mcast_path = os.path.join(test.bindir, "scripts/join_mcast.py")
- if not vm.copy_files_to(mcast_path, "/tmp"):
- raise error.TestError("Fail to copy %s to guest" % mcast_path)
+ vm.copy_files_to(mcast_path, "/tmp")
output = session.cmd_output("python /tmp/join_mcast.py %d %s %d" %
(mgroup_count, prefix, suffix))
@@ -29,8 +29,7 @@ def run_netperf(test, params, env):
session.cmd_output(firewall_flush)
for i in params.get("netperf_files").split():
- if not vm.copy_files_to(os.path.join(netperf_dir, i), "/tmp"):
- raise error.TestError("Could not copy file %s to guest" % i)
+ vm.copy_files_to(os.path.join(netperf_dir, i), "/tmp")
try:
session.cmd(firewall_flush)
@@ -70,8 +70,10 @@ def run_nic_promisc(test, params, env):
utils.run(dd_cmd % (filename, int(size)))
logging.info("Transfer file from host to guest")
- if not vm.copy_files_to(filename, filename):
- logging.error("File transfer failed")
+ try:
+ vm.copy_files_to(filename, filename)
+ except kvm_utils.SCPError, e:
+ logging.error("File transfer failed (%s)", e)
continue
if not compare(filename):
logging.error("Compare file failed")
@@ -83,8 +85,10 @@ def run_nic_promisc(test, params, env):
session.cmd(dd_cmd % (filename, int(size)), timeout=100)
logging.info("Transfer file from guest to host")
- if not vm.copy_files_from(filename, filename):
- logging.error("File transfer failed")
+ try:
+ vm.copy_files_from(filename, filename)
+ except kvm_utils.SCPError, e:
+ logging.error("File transfer failed (%s)", e)
continue
if not compare(filename):
logging.error("Compare file failed")
@@ -33,11 +33,8 @@ def run_nicdriver_unload(test, params, env):
def run(self):
remote_file = '/tmp/' + self.getName()
file_list.append(remote_file)
- ret = vm.copy_files_to(file_name, remote_file, timeout=scp_timeout)
- if ret:
- logging.debug("File %s was transfered successfuly", remote_file)
- else:
- logging.debug("Failed to transfer file %s", remote_file)
+ vm.copy_files_to(file_name, remote_file, timeout=scp_timeout)
+ logging.debug("File %s was transfered successfuly", remote_file)
def compare(origin_file, receive_file):
check_sum1 = utils.hash_file(origin_file, method="md5")
@@ -97,8 +94,7 @@ def run_nicdriver_unload(test, params, env):
raise error.TestFail("Fail to compare (guest) file %s" % f)
logging.info("Test nic function after load/unload")
- if not vm.copy_files_to(file_name, file_name):
- raise error.TestFail("Fail to copy file from host to guest")
+ vm.copy_files_to(file_name, file_name)
if not compare(file_name, file_name):
raise error.TestFail("Test nic function after load/unload fail")
@@ -22,9 +22,7 @@ def run_stress_boot(tests, params, env):
logging.info("Waiting for first guest to be up...")
login_timeout = float(params.get("login_timeout", 240))
- session = kvm_utils.wait_for(vm.remote_login, login_timeout, 0, 2)
- if not session:
- raise error.TestFail("Could not log into first guest")
+ session = kvm_test_utils.wait_for_login(vm, timeout=login_timeout)
num = 2
sessions = [session]
@@ -41,13 +39,10 @@ def run_stress_boot(tests, params, env):
kvm_preprocessing.preprocess_vm(tests, vm_params, env, vm_name)
params['vms'] += " " + vm_name
- curr_vm_session = kvm_utils.wait_for(curr_vm.remote_login,
- login_timeout, 0, 2)
- if not curr_vm_session:
- raise error.TestFail("Could not log into guest #%d" % num)
-
+ # Temporary hack
+ time.sleep(login_timeout)
+ sessions.append(curr_vm.remote_login())
logging.info("Guest #%d boots up successfully" % num)
- sessions.append(curr_vm_session)
# check whether all previous shell sessions are responsive
for i, se in enumerate(sessions):
@@ -88,8 +88,6 @@ def run_timedrift(test, params, env):
logging.info("Starting load on guest...")
for i in range(guest_load_instances):
load_session = vm.remote_login()
- if not load_session:
- raise error.TestFail("Could not log into guest")
# Set output func to None to stop it from being called so we
# can change the callback function and the parameters it takes
# with no problems
@@ -50,9 +50,9 @@ def run_timedrift_with_migration(test, params, env):
vm = kvm_test_utils.migrate(vm, env)
# Log in
logging.info("Logging in after migration...")
- session = kvm_utils.wait_for(vm.remote_login, 30, 0, 2)
- if not session:
- raise error.TestFail("Could not log in after migration")
+ # Temporary hack
+ time.sleep(30)
+ session = vm.remote_login()
logging.info("Logged in after migration")
# Get time after current iteration
(ht1_, gt1_) = kvm_test_utils.get_time(session, time_command,
@@ -1218,8 +1218,7 @@ def run_virtio_console(test, params, env):
pwd = os.path.join(os.environ['AUTODIR'], 'tests/kvm')
vksmd_src = os.path.join(pwd, "scripts/virtio_guest.py")
dst_dir = "/tmp"
- if not vm[0].copy_files_to(vksmd_src, dst_dir):
- raise error.TestFail("copy_files_to failed %s" % vm[0].name)
+ vm[0].copy_files_to(vksmd_src, dst_dir)
# ACTUAL TESTING
# Defines all available consoles; tests udev and sysfs