aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_store_state.py130
1 files changed, 129 insertions, 1 deletions
diff --git a/tests/test_store_state.py b/tests/test_store_state.py
index 8b3a728..d4fb733 100644
--- a/tests/test_store_state.py
+++ b/tests/test_store_state.py
@@ -3,6 +3,7 @@ from time import sleep
import pytest
from onaptests.steps.base import BaseStep
+from onaptests.utils.exceptions import OnapTestException
@@ -12,6 +13,10 @@ class TestStep(BaseStep):
def execute(self):
return super().execute()
+ @BaseStep.store_state(cleanup=True)
+ def cleanup(self) -> None:
+ return super().cleanup()
+
@property
def description(self):
return "Test pass step"
@@ -26,7 +31,11 @@ class TestFailStep(BaseStep):
@BaseStep.store_state
def execute(self):
super().execute()
- raise Exception
+ raise OnapTestException
+
+ @BaseStep.store_state(cleanup=True)
+ def cleanup(self) -> None:
+ raise OnapTestException
@property
def description(self):
@@ -68,6 +77,46 @@ class TestStepNoSuperExecute(BaseStep):
return "Test"
+class TestCleanupStepA(BaseStep):
+
+ @BaseStep.store_state
+ def execute(self):
+ return super().execute()
+
+ @BaseStep.store_state(cleanup=True)
+ def cleanup(self):
+ return super().cleanup()
+
+ @property
+ def description(self):
+ return "Test cleanup step A"
+
+ @property
+ def component(self) -> str:
+ return "Test"
+
+
+class TestCleanupStepB(TestCleanupStepA):
+
+ @property
+ def description(self):
+ return "Test cleanup step B"
+
+
+class TestCleanupStepC(TestCleanupStepA):
+
+ @property
+ def description(self):
+ return "Test cleanup step C"
+
+
+class TestCleanupStepD(TestCleanupStepA):
+
+ @property
+ def description(self):
+ return "Test cleanup step D"
+
+
def test_store_state():
ts = TestStep()
ts.execute()
@@ -90,6 +139,63 @@ def test_store_state():
assert rep_s.step_execution_status.value == "PASS"
assert rep_s.step_execution_duration != 0
+ ts = TestStep(cleanup=True)
+ ts.add_step(TestFailStep(cleanup=True))
+ with pytest.raises(Exception):
+ ts.execute()
+ with pytest.raises(Exception):
+ ts.cleanup()
+ assert len(ts.reports_collection.report) == 4
+ cln_rep_f, cln_rep_s, rep_s, rep_f = ts.reports_collection.report
+ assert rep_f.step_description == "[Test] TestFailStep: Test fail step"
+ assert rep_f.step_execution_status.value == "FAIL"
+ assert rep_f.step_execution_duration != 0
+
+ assert rep_s.step_description == "[Test] TestStep: Test pass step"
+ assert rep_s.step_execution_status.value == "NOT EXECUTED"
+ assert rep_s.step_execution_duration != 0
+
+ assert cln_rep_s.step_description == "[Test] TestStep cleanup: Test pass step"
+ assert cln_rep_s.step_execution_status.value == "PASS"
+ assert cln_rep_s.step_execution_duration != 0
+
+ assert cln_rep_f.step_description == "[Test] TestFailStep cleanup: Test fail step"
+ assert cln_rep_f.step_execution_status.value == "FAIL"
+ assert cln_rep_f.step_execution_duration != 0
+
+ ts = TestStep(cleanup=True)
+ tsf = TestFailStep(cleanup=True)
+ tsf.add_step(TestStep(cleanup=True))
+ ts.add_step(tsf)
+ ts.add_step(TestStep(cleanup=True))
+ with pytest.raises(Exception):
+ ts.execute()
+ with pytest.raises(Exception):
+ ts.cleanup()
+
+ assert len(ts.reports_collection.report) == 5
+ cln_2, cln_1, exec_3, exec_2, exec_1 = ts.reports_collection.report
+
+ assert exec_1.step_description == "[Test] TestStep: Test pass step"
+ assert exec_1.step_execution_status.value == "PASS"
+ assert exec_1.step_execution_duration != 0
+
+ assert exec_2.step_description == "[Test] TestFailStep: Test fail step"
+ assert exec_2.step_execution_status.value == "FAIL"
+ assert exec_2.step_execution_duration != 0
+
+ assert exec_3.step_description == "[Test] TestStep: Test pass step"
+ assert exec_3.step_execution_status.value == "NOT EXECUTED"
+ assert exec_3.step_execution_duration != 0
+
+ assert cln_1.step_description == "[Test] TestStep cleanup: Test pass step"
+ assert cln_1.step_execution_status.value == "PASS"
+ assert cln_1.step_execution_duration != 0
+
+ assert cln_2.step_description == "[Test] TestFailStep cleanup: Test fail step"
+ assert cln_2.step_execution_status.value == "FAIL"
+ assert cln_2.step_execution_duration != 0
+
def test_store_state_time_measurement():
@@ -112,3 +218,25 @@ def test_store_state_time_measurement():
assert len(ts.reports_collection.report) == 1
rep = ts.reports_collection.report[0]
assert rep.step_execution_duration < 1
+
+
+def test_store_state_with_cleanup():
+
+ ts = TestCleanupStepA(cleanup=True)
+ ts_b = TestCleanupStepB(cleanup=True)
+ ts_b.add_step(TestCleanupStepC(cleanup=True))
+ ts.add_step(ts_b)
+ ts.add_step(TestCleanupStepD(cleanup=True))
+ ts.execute()
+ ts.cleanup()
+ assert len(ts.reports_collection.report) == 8
+ (rep_cleanup_step_4, rep_cleanup_step_3, rep_cleanup_step_2, rep_cleanup_step_1,
+ rep_exec_step_4, rep_exec_step_3, rep_exec_step_2, rep_exec_step_1) = ts.reports_collection.report
+ assert rep_exec_step_1.step_description == "[Test] TestCleanupStepC: Test cleanup step C"
+ assert rep_exec_step_2.step_description == "[Test] TestCleanupStepB: Test cleanup step B"
+ assert rep_exec_step_3.step_description == "[Test] TestCleanupStepD: Test cleanup step D"
+ assert rep_exec_step_4.step_description == "[Test] TestCleanupStepA: Test cleanup step A"
+ assert rep_cleanup_step_1.step_description == "[Test] TestCleanupStepA cleanup: Test cleanup step A"
+ assert rep_cleanup_step_2.step_description == "[Test] TestCleanupStepB cleanup: Test cleanup step B"
+ assert rep_cleanup_step_3.step_description == "[Test] TestCleanupStepC cleanup: Test cleanup step C"
+ assert rep_cleanup_step_4.step_description == "[Test] TestCleanupStepD cleanup: Test cleanup step D"