diff options
Diffstat (limited to 'test/functest/results.py')
-rw-r--r-- | test/functest/results.py | 50 |
1 files changed, 38 insertions, 12 deletions
diff --git a/test/functest/results.py b/test/functest/results.py index 7c73556..66e399e 100644 --- a/test/functest/results.py +++ b/test/functest/results.py @@ -10,6 +10,7 @@ import time import functest.utils.functest_logger as ft_logger +import functest.utils.functest_utils as ft_utils logger = ft_logger.Logger("sdnvpn-results").getLogger() @@ -25,11 +26,14 @@ class Results(object): self.num_tests_failed = 0 def get_ping_status(self, - vm_source, ip_source, - vm_target, ip_target, + vm_source, + vm_target, expected="PASS", timeout=30): console_log = vm_source.get_console_output() + ip_source = vm_source.networks.itervalues().next()[0] + ip_target = vm_target.networks.itervalues().next()[0] + if "request failed" in console_log: # Normally, cirros displays this message when userdata fails logger.debug("It seems userdata is not supported in " @@ -59,11 +63,11 @@ class Results(object): % (vm_source.name, vm_target.name)) if expected == "PASS": logger.debug("[PASS] %s" % msg) - self.add_to_summary(2, "PASS", test_case_name) + self.add_success(test_case_name) else: logger.debug("[FAIL] %s" % msg) self.test_result = "FAIL" - self.add_to_summary(2, "FAIL", test_case_name) + self.add_failure(test_case_name) logger.debug("\n%s" % last_n_lines) break elif ("ping %s KO" % ip_target) in last_n_lines: @@ -71,11 +75,11 @@ class Results(object): (vm_source.name, vm_target.name)) if expected == "FAIL": logger.debug("[PASS] %s" % msg) - self.add_to_summary(2, "PASS", test_case_name) + self.add_success(test_case_name) else: logger.debug("[FAIL] %s" % msg) self.test_result = "FAIL" - self.add_to_summary(2, "FAIL", test_case_name) + self.add_failure(test_case_name) break time.sleep(1) timeout -= 1 @@ -84,7 +88,7 @@ class Results(object): logger.debug("[FAIL] Timeout reached for '%s'. " "No ping output captured in the console log" % vm_source.name) - self.add_to_summary(2, "FAIL", test_case_name) + self.add_failure(test_case_name) break def add_to_summary(self, num_cols, col1, col2=""): @@ -101,10 +105,22 @@ class Results(object): if col1 == "FAIL": self.num_tests_failed += 1 - def check_ssh_output(self, vm_source, ip_source, - vm_target, ip_target, + def record_action(self, msg): + """Record and log an action and display it in the summary.""" + logger.info(msg) + self.add_to_summary(1, msg) + + def add_failure(self, test): + self.add_to_summary(2, "FAIL", test) + + def add_success(self, test): + self.add_to_summary(2, "PASS", test) + + def check_ssh_output(self, vm_source, vm_target, expected, timeout=30): console_log = vm_source.get_console_output() + ip_source = vm_source.networks.itervalues().next()[0] + ip_target = vm_target.networks.itervalues().next()[0] if "request failed" in console_log: # Normally, cirros displays this message when userdata fails @@ -129,11 +145,11 @@ class Results(object): last_n_lines = lines[-5:] if ("%s %s" % (ip_target, expected)) in last_n_lines: logger.debug("[PASS] %s" % test_case_name) - self.add_to_summary(2, "PASS", test_case_name) + self.add_success(test_case_name) break elif ("%s not reachable" % ip_target) in last_n_lines: logger.debug("[FAIL] %s" % test_case_name) - self.add_to_summary(2, "FAIL", test_case_name) + self.add_failure(test_case_name) self.test_result = "FAIL" break time.sleep(1) @@ -143,9 +159,19 @@ class Results(object): logger.debug("[FAIL] Timeout reached for '%s'." " No ping output captured in the console log" % vm_source.name) - self.add_to_summary(2, "FAIL", test_case_name) + self.add_failure(test_case_name) break + def ping_ip_test(self, address): + ping = "ping %s -c 3" % address + testcase_name = "Ping IP %s" % address + exit_code = ft_utils.execute_command(ping) + + if exit_code != 0: + self.add_failure(testcase_name) + else: + self.add_success(testcase_name) + def compile_summary(self, SUCCESS_CRITERIA): success_message = "All the subtests have passed." failure_message = "One or more subtests have failed." |