Skip to content

Commit 61c0f16

Browse files
committed
debug
1 parent 7ed3af2 commit 61c0f16

File tree

3 files changed

+48
-46
lines changed

3 files changed

+48
-46
lines changed

e2e_batch/test_e2e_batch.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
check_ack_file_content,
77
validate_row_count,
88
generate_csv_files,
9-
SeedTestData,
109
TestData,
11-
poll_destination
10+
poll_destination,
11+
DestinationType
1212
)
1313

1414
from constants import (
@@ -23,14 +23,14 @@
2323

2424

2525
seed_datas = [
26-
SeedTestData("Create", "V0V8L", [CREATE]),
27-
SeedTestData("Update", "8HK48", [CREATE, UPDATE]),
28-
SeedTestData("Delete", "8HA94", [CREATE, UPDATE, DELETE]),
29-
SeedTestData("Reinstate", "X26", [CREATE, DELETE, UPDATE]),
30-
SeedTestData("Update-Reinstate", "X8E5B", [CREATE, DELETE, UPDATE, UPDATE]),
31-
SeedTestData("Update-No Create", "YGM41", [UPDATE], success=False),
32-
SeedTestData("Delete-No Create", "YGJ", [DELETE], success=False),
33-
SeedTestData("Create with extended ascii characters in name", "YGA", [CREATE], inject_char=True),
26+
TestData("Create", "V0V8L", [CREATE]),
27+
# TestData("Update", "8HK48", [CREATE, UPDATE]),
28+
# TestData("Delete", "8HA94", [CREATE, UPDATE, DELETE]),
29+
# TestData("Reinstate", "X26", [CREATE, DELETE, UPDATE]),
30+
# TestData("Update-Reinstate", "X8E5B", [CREATE, DELETE, UPDATE, UPDATE]),
31+
# TestData("Update-No Create", "YGM41", [UPDATE], success=False),
32+
# TestData("Delete-No Create", "YGJ", [DELETE], success=False),
33+
# TestData("Create with extended ascii characters in name", "YGA", [CREATE], inject_char=True),
3434
]
3535

3636

@@ -49,30 +49,31 @@ def test_create_success(self):
4949
test.key = key
5050

5151
# dictionary of file name to track whether inf and bus acks have been received
52-
pending = {test.file_name: {"inf": True, "bus": True} for test in test_datas}
52+
pending = {test.file_name: {DestinationType.INF: True, DestinationType.BUS: True} for test in test_datas}
5353

5454
start_time = time.time()
5555
# while there are still pending files, poll for acks and forwarded files
5656
while pending:
5757
for file_name in list(pending.keys()):
5858
test = pending[file_name]
59-
for key in ["inf", "bus"]:
59+
# loop through keys in test (inf and bus)
60+
for key in test.keys():
6061
if test[key]:
61-
inf_key = poll_destination(file_name, check_ack=test.check_ack)
62-
if inf_key:
62+
is_pending = poll_destination(file_name, key)
63+
if is_pending:
6364
test[key] = False
6465
for file_name in list(pending.keys()):
6566
test = pending[file_name]
6667
# if both inf and bus are False, remove from pending
67-
if not test["inf"] and not test["bus"]:
68+
if not test[DestinationType.INF] and not test[DestinationType.BUS]:
6869
del pending[file_name]
6970

7071
# if max_timeout exceeded, break
7172
if (time.time() - start_time) > max_timeout:
7273
break
7374

7475
if pending:
75-
time.sleep(5)
76+
time.sleep(1)
7677

7778
# Now validate all files have been processed correctly
7879
for test in test_datas:

e2e_batch/utils.py

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141
}
4242

4343

44-
class SeedTestData:
44+
class TestData:
45+
4546
def __init__(self, description, vax_ods, actions: list, header="NHS_NUMBER",
4647
success: bool = True, dose_amount=0.5, inject_char=False, version=4,
4748
check_ack=False):
@@ -55,15 +56,7 @@ def __init__(self, description, vax_ods, actions: list, header="NHS_NUMBER",
5556
self.inject_char = inject_char
5657
self.version = version
5758
self.check_ack = check_ack
58-
59-
60-
class TestData:
61-
def __init__(self, file_name, success, description, action):
62-
self.file_name = file_name
63-
self.success = success
64-
self.description = description
65-
self.action = action
66-
self.key = None
59+
self.file_name = None
6760

6861

6962
def generate_csv(dose_amount, action_flag, headers="NHS_NUMBER", same_id=False, version="4",
@@ -197,12 +190,17 @@ def wait_for_ack_file(ack_prefix, input_file_name, timeout=1200):
197190
)
198191

199192

200-
def poll_destination(input_file_name, check_ack: bool = False):
193+
class DestinationType:
194+
INF = ACK_PREFIX
195+
BUS = FORWARDEDFILE_PREFIX
196+
197+
198+
def poll_destination(input_file_name, ack_prefix: DestinationType):
201199
"""Poll the ACK_BUCKET for an ack file that contains the input_file_name as a substring."""
202200

203201
filename_without_ext = input_file_name[:-4] if input_file_name.endswith(".csv") else input_file_name
204202

205-
ack_prefix = ACK_PREFIX if check_ack else FORWARDEDFILE_PREFIX
203+
# ack_prefix = ACK_PREFIX if sub_folder == DestinationType.INF else FORWARDEDFILE_PREFIX
206204

207205
search_pattern = f"{ack_prefix}{filename_without_ext}"
208206
return poll_s3_file_pattern(ack_prefix, search_pattern)
@@ -525,33 +523,25 @@ def verify_final_ack_file(file_key):
525523

526524

527525
def get_file_name(vax_type, ods, version="4"):
528-
dt = datetime.now(timezone.utc)
529-
timestamp = dt.strftime("%Y%m%dT%H%M%S%f")[:-3]
526+
timestamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%S00")
527+
# timestamp = timestamp[:-3]
530528
return f"{vax_type}_Vaccinations_v{version}_{ods}_{timestamp}.csv"
531529

532530

533-
def generate_csv_files(seed_data_list: list[SeedTestData]) -> list[TestData]:
534-
"""Generate CSV files based on a list of SeedTestData instances."""
535-
test_data = []
531+
def generate_csv_files(seed_data_list: list[TestData]) -> list[TestData]:
532+
"""Generate CSV files based on a list of TestData instances."""
536533
for seed_data in seed_data_list:
537-
for action in seed_data.actions:
538-
file_name = generate_csv(
539-
dose_amount=seed_data.dose_amount,
540-
action_flag=action,
541-
headers=seed_data.header,
542-
same_id=seed_data.inject_char,
543-
vax_type=seed_data.vax,
544-
ods=seed_data.ods,
545-
)
546-
test_data.append(TestData(file_name, seed_data.success, seed_data.description, action))
547-
return test_data
534+
file_name = (generate_csv_file(seed_data, actions=seed_data.actions))
535+
seed_data.file_name = file_name
536+
return seed_data_list
548537

549538

550-
def generate_csv_file(seed: SeedTestData, action: str):
539+
def generate_csv_file(seed: TestData, actions: str) -> str:
551540

552541
unique_id = str(uuid.uuid4())
553542
data = []
554-
data.append(create_row(unique_id, seed.dose_amount, action, seed.header))
543+
for action in actions:
544+
data.append(create_row(unique_id, seed.dose_amount, action, seed.header))
555545
df = pd.DataFrame(data)
556546
file_name = get_file_name(seed.vax, seed.ods, seed.version)
557547
df.to_csv(file_name, index=False, sep="|", quoting=csv.QUOTE_MINIMAL)

filenameprocessor/src/file_validation.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,17 @@ def validate_file_key(file_key: str) -> tuple[str, str]:
6060

6161
valid_vaccine_types = get_valid_vaccine_types_from_cache()
6262

63+
# debug the check values
64+
print("SAW ----------- DEBUG -------------")
65+
print(f"vaccine_type: {vaccine_type} ")
66+
print(f"vaccination: {vaccination} ")
67+
print(f"version: {version} ")
68+
print(f"ods_code: {ods_code} ")
69+
print(f"timestamp: {timestamp} ")
70+
print(f"extension: {extension} ")
71+
print(f"supplier: {supplier} ")
72+
print(f"valid_vaccine_types: {valid_vaccine_types} ")
73+
6374
# Validate each file key element
6475
if not (
6576
vaccine_type in valid_vaccine_types

0 commit comments

Comments
 (0)