summaryrefslogtreecommitdiffstats
path: root/test/functest/results.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/functest/results.py')
-rw-r--r--test/functest/results.py192
1 files changed, 0 insertions, 192 deletions
diff --git a/test/functest/results.py b/test/functest/results.py
deleted file mode 100644
index 66e399e..0000000
--- a/test/functest/results.py
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (c) 2016 All rights reserved
-# This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-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()
-
-
-class Results(object):
-
- def __init__(self, line_length):
- self.line_length = line_length
- self.test_result = "PASS"
- self.summary = ""
- self.details = []
- self.num_tests = 0
- self.num_tests_failed = 0
-
- def get_ping_status(self,
- 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 "
- "nova boot...")
- return False
- else:
- tab = ("%s" % (" " * 53))
- expected_result = 'can ping' if expected == 'PASS' \
- else 'cannot ping'
- test_case_name = ("'%s' %s '%s'" %
- (vm_source.name,
- expected_result,
- vm_target.name))
- logger.debug("%sPing\n%sfrom '%s' (%s)\n%sto '%s' (%s).\n"
- "%s-->Expected result: %s.\n"
- % (tab, tab, vm_source.name, ip_source,
- tab, vm_target.name, ip_target,
- tab, expected_result))
- while True:
- console_log = vm_source.get_console_output()
- # the console_log is a long string, we want to take
- # the last 4 lines (for example)
- lines = console_log.split('\n')
- last_n_lines = lines[-5:]
- if ("ping %s OK" % ip_target) in last_n_lines:
- msg = ("'%s' can ping '%s'"
- % (vm_source.name, vm_target.name))
- if expected == "PASS":
- logger.debug("[PASS] %s" % msg)
- self.add_success(test_case_name)
- else:
- logger.debug("[FAIL] %s" % msg)
- self.test_result = "FAIL"
- self.add_failure(test_case_name)
- logger.debug("\n%s" % last_n_lines)
- break
- elif ("ping %s KO" % ip_target) in last_n_lines:
- msg = ("'%s' cannot ping '%s'" %
- (vm_source.name, vm_target.name))
- if expected == "FAIL":
- logger.debug("[PASS] %s" % msg)
- self.add_success(test_case_name)
- else:
- logger.debug("[FAIL] %s" % msg)
- self.test_result = "FAIL"
- self.add_failure(test_case_name)
- break
- time.sleep(1)
- timeout -= 1
- if timeout == 0:
- self.test_result = "FAIL"
- logger.debug("[FAIL] Timeout reached for '%s'. "
- "No ping output captured in the console log"
- % vm_source.name)
- self.add_failure(test_case_name)
- break
-
- def add_to_summary(self, num_cols, col1, col2=""):
- if num_cols == 0:
- self.summary += ("+%s+\n" % (col1 * (self.line_length - 2)))
- elif num_cols == 1:
- self.summary += ("| " + col1.ljust(self.line_length - 3) + "|\n")
- elif num_cols == 2:
- self.summary += ("| %s" % col1.ljust(7) + "| ")
- self.summary += (col2.ljust(self.line_length - 12) + "|\n")
- if col1 in ("FAIL", "PASS"):
- self.details.append({col2: col1})
- self.num_tests += 1
- if col1 == "FAIL":
- self.num_tests_failed += 1
-
- 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
- logger.debug("It seems userdata is not supported in "
- "nova boot...")
- return False
- else:
- tab = ("%s" % (" " * 53))
- test_case_name = ("[%s] returns 'I am %s' to '%s'[%s]" %
- (ip_target, expected,
- vm_source.name, ip_source))
- logger.debug("%sSSH\n%sfrom '%s' (%s)\n%sto '%s' (%s).\n"
- "%s-->Expected result: %s.\n"
- % (tab, tab, vm_source.name, ip_source,
- tab, vm_target.name, ip_target,
- tab, expected))
- while True:
- console_log = vm_source.get_console_output()
- # the console_log is a long string, we want to take
- # the last 4 lines (for example)
- lines = console_log.split('\n')
- last_n_lines = lines[-5:]
- if ("%s %s" % (ip_target, expected)) in last_n_lines:
- logger.debug("[PASS] %s" % 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_failure(test_case_name)
- self.test_result = "FAIL"
- break
- time.sleep(1)
- timeout -= 1
- if timeout == 0:
- self.test_result = "FAIL"
- logger.debug("[FAIL] Timeout reached for '%s'."
- " No ping output captured in the console log"
- % vm_source.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."
-
- self.add_to_summary(0, "=")
- logger.info("\n%s" % self.summary)
- if self.test_result == "PASS":
- logger.info(success_message)
- else:
- logger.info(failure_message)
-
- status = "PASS"
- success = 100 - \
- (100 * int(self.num_tests_failed) / int(self.num_tests))
- if success < int(SUCCESS_CRITERIA):
- status = "FAILED"
-
- return {"status": status, "details": self.details}