Skip to content

Commit 16733d3

Browse files
Merge pull request #715 from NHSDigital/features/made14-NRL-1077-perf-test-persistent-envs
[NRL-1077] Adapt perf tests to work with persistent envs
2 parents 5f0f20e + 5942612 commit 16733d3

File tree

3 files changed

+30
-10
lines changed

3 files changed

+30
-10
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ test-smoke-public: check-warn ## Run the smoke tests for the external access poi
126126

127127
test-performance-prepare:
128128
mkdir -p $(DIST_PATH)
129-
poetry run python tests/performance/environment.py setup $(TF_WORKSPACE_NAME)
129+
PYTHONPATH=. poetry run python tests/performance/environment.py setup $(TF_WORKSPACE_NAME)
130130

131131
test-performance: check-warn test-performance-baseline test-performance-stress ## Run the performance tests
132132

@@ -148,7 +148,7 @@ test-performance-output: ## Process outputs from the performance tests
148148
poetry run python tests/performance/process_results.py stress $(DIST_PATH)/consumer-stress.csv
149149

150150
test-performance-cleanup:
151-
poetry run python tests/performance/environment.py cleanup $(TF_WORKSPACE_NAME)
151+
PYTHONPATH=. poetry run python tests/performance/environment.py cleanup $(TF_WORKSPACE_NAME)
152152

153153
lint: check-warn ## Lint the project
154154
SKIP="no-commit-to-branch" pre-commit run --all-files

scripts/are_resources_shared_for_stack.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@
2222
]
2323

2424

25-
def main(stack_name: str):
26-
return "true" if stack_name in persistent_environments else "false"
25+
def uses_shared_resources(stack_name: str) -> bool:
26+
return stack_name in persistent_environments
27+
28+
29+
def main(stack_name) -> str:
30+
return "true" if uses_shared_resources(stack_name) else "false"
2731

2832

2933
if __name__ == "__main__":

tests/performance/environment.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from nrlf.core.dynamodb.repository import DocumentPointer
1111
from nrlf.core.logger import logger
1212
from nrlf.tests.data import load_document_reference
13+
from scripts.are_resources_shared_for_stack import uses_shared_resources
1314

1415
logger.setLevel("ERROR")
1516

@@ -56,20 +57,31 @@ def _generate_records(patient_count: int, documents_per_type: int, ods_code: str
5657
yield _generate_record(nhs_number, pointer_type, ods_code)
5758

5859

60+
def _get_pointers_table_name(stack_name: str):
61+
if uses_shared_resources(stack_name):
62+
env = stack_name.split("-")[0]
63+
pointers_table_name = f"nhsd-nrlf--{env}-pointers-table"
64+
else:
65+
pointers_table_name = f"nhsd-nrlf--{stack_name}-pointers-table"
66+
return pointers_table_name
67+
68+
5969
def setup(
60-
env: str,
70+
stack_name: str,
6171
patient_count: int = 100,
6272
documents_per_type: int = 10,
6373
ods_code: str = "Y05868",
6474
out: str = "tests/performance/reference-data.json",
6575
output_full_pointers: bool = False,
6676
):
67-
print(f"Creating Test Data in environment '{env}'")
77+
pointers_table_name = _get_pointers_table_name(stack_name)
78+
79+
print(f"Creating Test Data for stack '{stack_name}' in '{pointers_table_name}'")
6880

6981
print(f"Patient Count: {patient_count}")
7082
print(f"Documents Per Type: {documents_per_type}")
7183

72-
table = DYNAMODB.Table(f"nhsd-nrlf--{env}-pointers-table")
84+
table = DYNAMODB.Table(pointers_table_name)
7385
documents = {}
7486
nhs_numbers = set()
7587

@@ -95,7 +107,7 @@ def setup(
95107
print(f"Output written to {output_path}")
96108

97109

98-
def cleanup(env: str, input: str = "tests/performance/reference-data.json"):
110+
def cleanup(stack_name: str, input: str = "tests/performance/reference-data.json"):
99111
input_path = pathlib.Path(input)
100112
data = json.loads(input_path.read_text())
101113

@@ -104,8 +116,12 @@ def cleanup(env: str, input: str = "tests/performance/reference-data.json"):
104116
else:
105117
pointer_ids = data["pointer_ids"]
106118

107-
print(f"Cleaning up {len(pointer_ids)} document pointers in environment '{env}'")
108-
table = DYNAMODB.Table(f"nhsd-nrlf--{env}-pointers-table")
119+
pointers_table_name = _get_pointers_table_name(stack_name)
120+
121+
print(
122+
f"Cleaning up {len(pointer_ids)} document pointers for stack '{stack_name}' in '{pointers_table_name}'"
123+
)
124+
table = DYNAMODB.Table(pointers_table_name)
109125
with table.batch_writer() as batch:
110126
for id in pointer_ids:
111127
ods_code, document_id = id.split("-", maxsplit=1)

0 commit comments

Comments
 (0)