diff options
author | Martin Klozik <martinx.klozik@intel.com> | 2017-06-09 07:30:44 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-06-09 07:30:44 +0000 |
commit | 5fe9089057bf23fd7ff312779d928cc9932fd38b (patch) | |
tree | a065807fae088fff9e1089611b37f882eb07d3fb /testcases | |
parent | 80c9f96f5e60ee6a2a93494a0aae82014c2311b6 (diff) | |
parent | de6fc4b670fc42fc96f27f375fbcf7a099629434 (diff) |
Merge "tests: Improvement of step driven testcases"
Diffstat (limited to 'testcases')
-rw-r--r-- | testcases/integration.py | 13 | ||||
-rw-r--r-- | testcases/testcase.py | 37 |
2 files changed, 40 insertions, 10 deletions
diff --git a/testcases/integration.py b/testcases/integration.py index f2a5fecf..f87a8ee2 100644 --- a/testcases/integration.py +++ b/testcases/integration.py @@ -1,4 +1,4 @@ -# Copyright 2015-2016 Intel Corporation. +# Copyright 2015-2017 Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,10 +36,13 @@ class IntegrationTestCase(TestCase): """ Report test results """ if self.test: - results = OrderedDict() - results['status'] = 'OK' if self._step_status['status'] else 'FAILED' - results['details'] = self._step_status['details'] - TestCase.write_result_to_file([results], self._output_file) + tmp_results = OrderedDict() + tmp_results['status'] = 'OK' if self._step_status['status'] else 'FAILED' + tmp_results['details'] = self._step_status['details'] + self._tc_results = [tmp_results] + + super(IntegrationTestCase, self).run_report() + self.step_report_status("Test '{}'".format(self.name), self._step_status['status']) # inform vsperf about testcase failure if not self._step_status['status']: diff --git a/testcases/testcase.py b/testcases/testcase.py index 3a86f77c..17bce38e 100644 --- a/testcases/testcase.py +++ b/testcases/testcase.py @@ -147,7 +147,7 @@ class TestCase(object): self._traffic = functions.check_traffic(self._traffic) # Packet Forwarding mode - self._vswitch_none = S.getValue('VSWITCH').strip().lower() == 'none' + self._vswitch_none = str(S.getValue('VSWITCH')).strip().lower() == 'none' # trafficgen configuration required for tests of tunneling protocols if self.deployment == "op2p": @@ -293,8 +293,31 @@ class TestCase(object): self._logger.debug("Traffic Results:") self._traffic_ctl.print_results() + if self._tc_results is None: self._tc_results = self._append_results(results) - TestCase.write_result_to_file(self._tc_results, self._output_file) + else: + # integration step driven tests have their status and possible + # failure details stored inside self._tc_results + results = self._append_results(results) + if len(self._tc_results) < len(results): + if len(self._tc_results) > 1: + raise RuntimeError('Testcase results do not match:' + 'results: {}\n' + 'trafficgen results: {}\n', + self._tc_results, + results) + else: + tmp_results = copy.deepcopy(self._tc_results[0]) + self._tc_results = [] + for res in results: + tmp_res = copy.deepcopy(tmp_results) + tmp_res.update(res) + self._tc_results.append(tmp_res) + else: + for i, result in enumerate(results): + self._tc_results[i].update(result) + + TestCase.write_result_to_file(self._tc_results, self._output_file) def run(self): """Run the test @@ -445,7 +468,7 @@ class TestCase(object): # hugepages are needed by DPDK and Qemu if not self._hugepages_mounted and \ (self.deployment.count('v') or \ - S.getValue('VSWITCH').lower().count('dpdk') or \ + str(S.getValue('VSWITCH')).lower().count('dpdk') or \ self._vswitch_none or \ self.test and 'vnf' in [step[0][0:3] for step in self.test]): hugepages.mount_hugepages() @@ -472,7 +495,7 @@ class TestCase(object): # get hugepage amounts for each socket on dpdk sock0_mem, sock1_mem = 0, 0 - if S.getValue('VSWITCH').lower().count('dpdk'): + if str(S.getValue('VSWITCH')).lower().count('dpdk'): sock_mem = S.getValue('DPDK_SOCKET_MEM') sock0_mem, sock1_mem = (int(sock_mem[0]) * 1024 / hugepage_size, int(sock_mem[1]) * 1024 / hugepage_size) @@ -744,6 +767,10 @@ class TestCase(object): input(os.linesep + "Step {}: Press Enter to continue with " "the next step...".format(i) + os.linesep + os.linesep) continue + elif step[0] == 'sleep': + self._logger.debug("Sleep %s seconds", step[1]) + time.sleep(int(step[1])) + continue else: self._logger.error("Unsupported test object %s", step[0]) self._step_status = {'status' : False, 'details' : ' '.join(step)} @@ -767,7 +794,7 @@ class TestCase(object): self._step_result[i] = test_method(*step_params) self._logger.debug("Step %s '%s' results '%s'", i, step_log, self._step_result[i]) - time.sleep(5) + time.sleep(S.getValue('TEST_STEP_DELAY')) if self._step_check: step_ok = test_method_check(self._step_result[i], *step_params) except (AssertionError, AttributeError, IndexError) as ex: |