| OLD | NEW |
| 1 """ | 1 """ |
| 2 High-level KVM test utility functions. | 2 High-level KVM test utility functions. |
| 3 | 3 |
| 4 This module is meant to reduce code size by performing common test procedures. | 4 This module is meant to reduce code size by performing common test procedures. |
| 5 Generally, code here should look like test code. | 5 Generally, code here should look like test code. |
| 6 More specifically: | 6 More specifically: |
| 7 - Functions in this module should raise exceptions if things go wrong | 7 - Functions in this module should raise exceptions if things go wrong |
| 8 (unlike functions in kvm_utils.py and kvm_vm.py which report failure via | 8 (unlike functions in kvm_utils.py and kvm_vm.py which report failure via |
| 9 their returned values). | 9 their returned values). |
| 10 - Functions in this module may use logging.info(), in addition to | 10 - Functions in this module may use logging.info(), in addition to |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 | 291 |
| 292 def extract(vm, remote_path, dest_dir="."): | 292 def extract(vm, remote_path, dest_dir="."): |
| 293 """ | 293 """ |
| 294 Extract a .tar.bz2 file on the guest. | 294 Extract a .tar.bz2 file on the guest. |
| 295 | 295 |
| 296 @param vm: VM object | 296 @param vm: VM object |
| 297 @param remote_path: Remote file path | 297 @param remote_path: Remote file path |
| 298 @param dest_dir: Destination dir for the contents | 298 @param dest_dir: Destination dir for the contents |
| 299 """ | 299 """ |
| 300 basename = os.path.basename(remote_path) | 300 basename = os.path.basename(remote_path) |
| 301 logging.info("Extracting %s..." % basename) | 301 logging.info("Extracting %s...", basename) |
| 302 (status, output) = session.get_command_status_output( | 302 (status, output) = session.get_command_status_output( |
| 303 "tar xjvf %s -C %s" % (remote_path, dest_dir)) | 303 "tar xjvf %s -C %s" % (remote_path, dest_dir)) |
| 304 if status != 0: | 304 if status != 0: |
| 305 logging.error("Uncompress output:\n%s" % output) | 305 logging.error("Uncompress output:\n%s" % output) |
| 306 raise error.TestFail("Could not extract % on guest") | 306 raise error.TestFail("Could not extract %s on guest" % basename) |
| 307 | 307 |
| 308 if not os.path.isfile(control_path): | 308 if not os.path.isfile(control_path): |
| 309 raise error.TestError("Invalid path to autotest control file: %s" % | 309 raise error.TestError("Invalid path to autotest control file: %s" % |
| 310 control_path) | 310 control_path) |
| 311 | 311 |
| 312 tarred_autotest_path = "/tmp/autotest.tar.bz2" | 312 tarred_autotest_path = "/tmp/autotest.tar.bz2" |
| 313 tarred_test_path = "/tmp/%s.tar.bz2" % test_name | 313 tarred_test_path = "/tmp/%s.tar.bz2" % test_name |
| 314 | 314 |
| 315 # To avoid problems, let's make the test use the current AUTODIR | 315 # To avoid problems, let's make the test use the current AUTODIR |
| 316 # (autotest client path) location | 316 # (autotest client path) location |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 session.get_command_output("mkdir -p %s" % tests_path) | 349 session.get_command_output("mkdir -p %s" % tests_path) |
| 350 | 350 |
| 351 # Extract <test_name>.tar.bz2 into autotest/tests | 351 # Extract <test_name>.tar.bz2 into autotest/tests |
| 352 extract(vm, tarred_test_path, "/") | 352 extract(vm, tarred_test_path, "/") |
| 353 | 353 |
| 354 if not vm.copy_files_to(control_path, | 354 if not vm.copy_files_to(control_path, |
| 355 os.path.join(autotest_path, 'control')): | 355 os.path.join(autotest_path, 'control')): |
| 356 raise error.TestFail("Could not copy the test control file to guest") | 356 raise error.TestFail("Could not copy the test control file to guest") |
| 357 | 357 |
| 358 # Run the test | 358 # Run the test |
| 359 logging.info("Running test '%s'..." % test_name) | 359 logging.info("Running test '%s'...", test_name) |
| 360 session.get_command_output("cd %s" % autotest_path) | 360 session.get_command_output("cd %s" % autotest_path) |
| 361 session.get_command_output("rm -f control.state") | 361 session.get_command_output("rm -f control.state") |
| 362 session.get_command_output("rm -rf results/*") | 362 session.get_command_output("rm -rf results/*") |
| 363 logging.info("---------------- Test output ----------------") | 363 logging.info("---------------- Test output ----------------") |
| 364 status = session.get_command_status("bin/autotest control", | 364 status = session.get_command_status("bin/autotest control", |
| 365 timeout=timeout, | 365 timeout=timeout, |
| 366 print_func=logging.info) | 366 print_func=logging.info) |
| 367 logging.info("--------------End of test output ------------") | 367 logging.info("------------- End of test output ------------") |
| 368 if status is None: | 368 if status is None: |
| 369 raise error.TestFail("Timeout elapsed while waiting for autotest to " | 369 raise error.TestFail("Timeout elapsed while waiting for autotest to " |
| 370 "complete") | 370 "complete") |
| 371 | 371 |
| 372 # Get the results generated by autotest | 372 # Get the results generated by autotest |
| 373 output = session.get_command_output("cat results/*/status") | 373 output = session.get_command_output("cat results/*/status") |
| 374 results = scan_results.parse_results(output) | 374 results = scan_results.parse_results(output) |
| 375 session.close | 375 session.close |
| 376 | 376 |
| 377 # Copy test results to the local bindir/guest_results | 377 # Copy test results to the local bindir/guest_results |
| (...skipping 17 matching lines...) Expand all Loading... |
| 395 bad_results += [r for r in results if r[1] == "ABORT"] | 395 bad_results += [r for r in results if r[1] == "ABORT"] |
| 396 | 396 |
| 397 # Fail the test if necessary | 397 # Fail the test if necessary |
| 398 if not results: | 398 if not results: |
| 399 raise error.TestFail("Test '%s' did not produce any recognizable " | 399 raise error.TestFail("Test '%s' did not produce any recognizable " |
| 400 "results" % test_name) | 400 "results" % test_name) |
| 401 if bad_results: | 401 if bad_results: |
| 402 result = bad_results[0] | 402 result = bad_results[0] |
| 403 raise error.TestFail("Test '%s' ended with %s (reason: '%s')" | 403 raise error.TestFail("Test '%s' ended with %s (reason: '%s')" |
| 404 % (result[0], result[1], result[3])) | 404 % (result[0], result[1], result[3])) |
| OLD | NEW |