Skip to content

Commit 4103ce8

Browse files
committed
Wip
1 parent add8e80 commit 4103ce8

File tree

5 files changed

+151
-140
lines changed

5 files changed

+151
-140
lines changed

e2e_batch/scenarios.json

Lines changed: 0 additions & 97 deletions
This file was deleted.

e2e_batch/scenarios.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
from vax_suppliers import TestPair
2+
from constants import ActionFlag
3+
from utils import BusRowResult, InfResult
4+
from utils import poll_destination
5+
6+
7+
class TestAction:
8+
def __init__(self, action: ActionFlag, unique_id: str = None,
9+
expected_result: BusRowResult = BusRowResult.SUCCESS):
10+
self.action = action
11+
self.unique_id = unique_id
12+
self.expected_result = expected_result
13+
14+
def poll_destination(self, pending: bool) -> bool:
15+
# loop through keys in test (inf and bus)
16+
for ack_key in self.ack_keys.keys():
17+
if not self.ack_keys[ack_key]:
18+
found_ack_key = poll_destination(self.file_name, ack_key)
19+
if found_ack_key:
20+
self.ack_keys[ack_key] = found_ack_key
21+
else:
22+
pending = True
23+
return pending
24+
25+
26+
scenarios = {
27+
"dev": [
28+
{
29+
"name": "Successful Create",
30+
"ods_vax": TestPair.E8HA94_COVID19_CUD,
31+
"expected_result": InfResult.SUCCESS,
32+
"actions": [TestAction(ActionFlag.CREATE)],
33+
"description": "Successful Create"
34+
},
35+
{
36+
"name": "Successful Update",
37+
"description": "Successful Create,Update",
38+
"ods_vax": TestPair.DPSFULL_COVID19_CRUDS,
39+
"expected_result": InfResult.SUCCESS,
40+
"actions": [TestAction(ActionFlag.CREATE), TestAction(ActionFlag.UPDATE)]
41+
},
42+
{
43+
"name": "Successful Delete",
44+
"description": "Successful Create,Update, Delete",
45+
"ods_vax": TestPair.V0V8L_FLU_CRUDS,
46+
"expected_result": InfResult.SUCCESS,
47+
"actions": [TestAction(ActionFlag.CREATE), TestAction(ActionFlag.DELETE_LOGICAL)]
48+
},
49+
{
50+
"name": "Failed Update",
51+
"description": "Failed Update - resource does not exist",
52+
"ods_vax": TestPair.V0V8L_3IN1_CRUDS,
53+
"expected_result": InfResult.FATAL_ERROR,
54+
"actions": [TestAction(ActionFlag.UPDATE, expected_result=BusRowResult.FATAL_ERROR)],
55+
"operation_outcome": "Immunization resource does not exist"
56+
},
57+
{
58+
"name": "Failed Delete",
59+
"description": "Failed Delete - resource does not exist",
60+
"ods_vax": TestPair.X26_MMR_CRUDS,
61+
"expected_result": InfResult.FATAL_ERROR,
62+
"actions": [TestAction(ActionFlag.DELETE_LOGICAL, expected_result=BusRowResult.FATAL_ERROR)],
63+
"operation_outcome": "Immunization resource does not exist"
64+
},
65+
{
66+
"name": "Create with 1252 char",
67+
"description": "Create with 1252 char",
68+
"ods_vax": TestPair.YGA_MENACWY_CRUDS,
69+
"expected_result": InfResult.SUCCESS,
70+
"actions": [TestAction(ActionFlag.CREATE)],
71+
"test_encoding": True
72+
}
73+
],
74+
"ref": []
75+
}

e2e_batch/test_e2e_batch.py

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,25 @@
77
check_inf_file_content,
88
validate_row_count,
99
generate_csv_files_good,
10-
OpMsgs,
11-
TestScenario as Scenario,
10+
# OpMsgs,
11+
TestCase,
1212
DestinationType,
13-
BusRowResult,
13+
# BusRowResult,
1414
cleanup,
15-
check_final_success_action
15+
check_final_success_action,
16+
TestCases,
1617
)
17-
from vax_suppliers import TestPair
18+
# from vax_suppliers import TestPair
1819
from clients import logger
20+
from scenarios import scenarios
1921

2022

2123
from constants import (
2224
SOURCE_BUCKET,
2325
INPUT_PREFIX,
2426
ACK_BUCKET,
2527
environment,
26-
TestSet,
28+
# TestSet,
2729
)
2830

2931
NEW = "NEW"
@@ -34,16 +36,7 @@
3436
class TestE2EBatch(unittest.TestCase):
3537

3638
def setUp(self):
37-
self.test_data = [
38-
Scenario(TestPair.E8HA94_COVID19_CUD, TestSet.CREATE_OK),
39-
Scenario(TestPair.DPSFULL_COVID19_CRUDS, TestSet.UPDATE_OK),
40-
Scenario(TestPair.V0V8L_FLU_CRUDS, TestSet.DELETE_OK),
41-
Scenario(TestPair.V0V8L_3IN1_CRUDS, TestSet.UPDATE_FAIL, expected=BusRowResult.FATAL_ERROR,
42-
operation_outcome=OpMsgs.IMM_NOT_EXIST),
43-
Scenario(TestPair.X26_MMR_CRUDS, TestSet.DELETE_FAIL, expected=BusRowResult.FATAL_ERROR,
44-
operation_outcome=OpMsgs.IMM_NOT_EXIST),
45-
Scenario(TestPair.YGA_MENACWY_CRUDS, TestSet.CREATE_OK, inject_char=True, name="Create with 1252 char"),
46-
]
39+
self.test_data = TestCases(scenarios["dev"])
4740

4841
def tearDown(self):
4942
cleanup(self.test_data)
@@ -54,7 +47,7 @@ def test_batch_submission(self):
5447
start_time = time.time()
5548
max_timeout = 1200 # seconds
5649

57-
tests: list[Scenario] = generate_csv_files_good(self.test_data)
50+
tests: list[TestCase] = generate_csv_files_good(self.test_data.test_cases)
5851

5952
send_files(tests)
6053

@@ -66,7 +59,7 @@ def test_batch_submission(self):
6659
logger.info(f"Tests Completed. Time: {time.time() - start_time:.1f} seconds")
6760

6861

69-
def send_files(tests: list[Scenario]):
62+
def send_files(tests: list[TestCase]):
7063
start_time = time.time()
7164
for test in tests:
7265
logger.info(f"Upload for Test: {test.name} ")
@@ -75,7 +68,7 @@ def send_files(tests: list[Scenario]):
7568
logger.info(f"Files uploaded. Time: {time.time() - start_time:.1f} seconds")
7669

7770

78-
def poll_for_responses(tests: list[Scenario], max_timeout=1200) -> bool:
71+
def poll_for_responses(tests: list[TestCase], max_timeout=1200) -> bool:
7972
logger.info("Waiting while processing...")
8073
start_time = time.time()
8174
# while there are still pending files, poll for acks and forwarded files
@@ -93,7 +86,7 @@ def poll_for_responses(tests: list[Scenario], max_timeout=1200) -> bool:
9386
return True
9487

9588

96-
def validate_responses(tests: list[Scenario]):
89+
def validate_responses(tests: TestCases):
9790
start_time = time.time()
9891
count = 0
9992
expected_count = len(tests) * 2
@@ -104,7 +97,7 @@ def validate_responses(tests: list[Scenario]):
10497
if test.ack_keys[DestinationType.INF]:
10598
count += 1
10699
inf_ack_content = get_file_content_from_s3(ACK_BUCKET, test.ack_keys[DestinationType.INF])
107-
check_ack_file_content(test.name, inf_ack_content, "Success", None, test.action_sequence.actions)
100+
check_ack_file_content(test.name, inf_ack_content, "Success", None, test.expected_result)
108101
else:
109102
logger.error(f"INF ACK file not found for test: {test.name}")
110103

0 commit comments

Comments
 (0)