Skip to content

Commit 94d2a58

Browse files
author
Alan Christie
committed
test: Better pickle file location
1 parent aa392f9 commit 94d2a58

File tree

1 file changed

+41
-37
lines changed

1 file changed

+41
-37
lines changed

tests/api_adapter.py

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,15 @@
2424
"r-workflow-step-00000000-0000-0000-0000-{id:012d}"
2525
)
2626

27-
# Pickle files (representing each 'Table')
28-
_WORKFLOW_PICKLE_FILE: str = "workflow.pickle"
29-
_RUNNING_WORKFLOW_PICKLE_FILE: str = "running-workflow.pickle"
30-
_RUNNING_WORKFLOW_STEP_PICKLE_FILE: str = "running-workflow-step.pickle"
31-
_INSTANCE_PICKLE_FILE: str = "instance.pickle"
32-
_TASK_PICKLE_FILE: str = "task.pickle"
27+
# Pickle files (for each 'Table')
28+
_PICKLE_DIRECTORY: str = "tests/pickle-files"
29+
_WORKFLOW_PICKLE_FILE: str = f"{_PICKLE_DIRECTORY}/workflow.pickle"
30+
_RUNNING_WORKFLOW_PICKLE_FILE: str = f"{_PICKLE_DIRECTORY}/running-workflow.pickle"
31+
_RUNNING_WORKFLOW_STEP_PICKLE_FILE: str = (
32+
f"{_PICKLE_DIRECTORY}/running-workflow-step.pickle"
33+
)
34+
_INSTANCE_PICKLE_FILE: str = f"{_PICKLE_DIRECTORY}/instance.pickle"
35+
_TASK_PICKLE_FILE: str = f"{_PICKLE_DIRECTORY}/task.pickle"
3336

3437

3538
class UnitTestAPIAdapter(APIAdapter):
@@ -46,45 +49,46 @@ class UnitTestAPIAdapter(APIAdapter):
4649
def __init__(self):
4750
super().__init__()
4851
# Safely initialise the pickle files
52+
if not os.path.exists(_PICKLE_DIRECTORY):
53+
os.makedirs(_PICKLE_DIRECTORY)
4954
UnitTestAPIAdapter.mp_lock.acquire()
50-
with open(f"tests/{_WORKFLOW_PICKLE_FILE}", "wb") as pickle_file:
51-
Pickler(pickle_file).dump({})
52-
with open(f"tests/{_RUNNING_WORKFLOW_PICKLE_FILE}", "wb") as pickle_file:
53-
Pickler(pickle_file).dump({})
54-
with open(f"tests/{_RUNNING_WORKFLOW_STEP_PICKLE_FILE}", "wb") as pickle_file:
55-
Pickler(pickle_file).dump({})
56-
with open(f"tests/{_INSTANCE_PICKLE_FILE}", "wb") as pickle_file:
57-
Pickler(pickle_file).dump({})
58-
with open(f"tests/{_TASK_PICKLE_FILE}", "wb") as pickle_file:
59-
Pickler(pickle_file).dump({})
55+
for file in [
56+
_WORKFLOW_PICKLE_FILE,
57+
_RUNNING_WORKFLOW_PICKLE_FILE,
58+
_RUNNING_WORKFLOW_STEP_PICKLE_FILE,
59+
_INSTANCE_PICKLE_FILE,
60+
_TASK_PICKLE_FILE,
61+
]:
62+
with open(file, "wb") as pickle_file:
63+
Pickler(pickle_file).dump({})
6064
UnitTestAPIAdapter.mp_lock.release()
6165

6266
def create_workflow(self, *, workflow_definition: Dict[str, Any]) -> str:
6367
UnitTestAPIAdapter.mp_lock.acquire()
64-
with open(f"tests/{_WORKFLOW_PICKLE_FILE}", "rb") as pickle_file:
68+
with open(_WORKFLOW_PICKLE_FILE, "rb") as pickle_file:
6569
workflow = Unpickler(pickle_file).load()
6670

6771
next_id: int = len(workflow) + 1
6872
workflow_definition_id: str = _WORKFLOW_DEFINITION_ID_FORMAT.format(id=next_id)
6973
workflow[workflow_definition_id] = workflow_definition
7074

71-
with open(f"tests/{_WORKFLOW_PICKLE_FILE}", "wb") as pickle_file:
75+
with open(_WORKFLOW_PICKLE_FILE, "wb") as pickle_file:
7276
Pickler(pickle_file).dump(workflow)
7377
UnitTestAPIAdapter.mp_lock.release()
7478

7579
return {"id": workflow_definition_id}
7680

7781
def get_workflow(self, *, workflow_id: str) -> Dict[str, Any]:
7882
UnitTestAPIAdapter.mp_lock.acquire()
79-
with open(f"tests/{_WORKFLOW_PICKLE_FILE}", "rb") as pickle_file:
83+
with open(_WORKFLOW_PICKLE_FILE, "rb") as pickle_file:
8084
workflow = Unpickler(pickle_file).load()
8185
UnitTestAPIAdapter.mp_lock.release()
8286

8387
return {"workflow": workflow[workflow_id]} if workflow_id in workflow else {}
8488

8589
def get_workflow_by_name(self, *, name: str, version: str) -> Dict[str, Any]:
8690
UnitTestAPIAdapter.mp_lock.acquire()
87-
with open(f"tests/{_WORKFLOW_PICKLE_FILE}", "rb") as pickle_file:
91+
with open(_WORKFLOW_PICKLE_FILE, "rb") as pickle_file:
8892
workflow = Unpickler(pickle_file).load()
8993
UnitTestAPIAdapter.mp_lock.release()
9094

@@ -96,15 +100,15 @@ def get_workflow_by_name(self, *, name: str, version: str) -> Dict[str, Any]:
96100

97101
def create_running_workflow(self, *, workflow_id: str) -> str:
98102
UnitTestAPIAdapter.mp_lock.acquire()
99-
with open(f"tests/{_RUNNING_WORKFLOW_PICKLE_FILE}", "rb") as pickle_file:
103+
with open(_RUNNING_WORKFLOW_PICKLE_FILE, "rb") as pickle_file:
100104
running_workflow = Unpickler(pickle_file).load()
101105

102106
next_id: int = len(running_workflow) + 1
103107
running_workflow_id: str = _RUNNING_WORKFLOW_ID_FORMAT.format(id=next_id)
104108
record = {"done": False, "success": False, "workflow": workflow_id}
105109
running_workflow[running_workflow_id] = record
106110

107-
with open(f"tests/{_RUNNING_WORKFLOW_PICKLE_FILE}", "wb") as pickle_file:
111+
with open(_RUNNING_WORKFLOW_PICKLE_FILE, "wb") as pickle_file:
108112
Pickler(pickle_file).dump(running_workflow)
109113
UnitTestAPIAdapter.mp_lock.release()
110114

@@ -114,20 +118,20 @@ def set_running_workflow_done(
114118
self, *, running_workflow_id: str, success: bool
115119
) -> None:
116120
UnitTestAPIAdapter.mp_lock.acquire()
117-
with open(f"tests/{_RUNNING_WORKFLOW_PICKLE_FILE}", "rb") as pickle_file:
121+
with open(_RUNNING_WORKFLOW_PICKLE_FILE, "rb") as pickle_file:
118122
running_workflow = Unpickler(pickle_file).load()
119123

120124
assert running_workflow_id in running_workflow
121125
running_workflow[running_workflow_id]["done"] = True
122126
running_workflow[running_workflow_id]["success"] = success
123127

124-
with open(f"tests/{_RUNNING_WORKFLOW_PICKLE_FILE}", "wb") as pickle_file:
128+
with open(_RUNNING_WORKFLOW_PICKLE_FILE, "wb") as pickle_file:
125129
Pickler(pickle_file).dump(running_workflow)
126130
UnitTestAPIAdapter.mp_lock.release()
127131

128132
def get_running_workflow(self, *, running_workflow_id: str) -> Dict[str, Any]:
129133
UnitTestAPIAdapter.mp_lock.acquire()
130-
with open(f"tests/{_RUNNING_WORKFLOW_PICKLE_FILE}", "rb") as pickle_file:
134+
with open(_RUNNING_WORKFLOW_PICKLE_FILE, "rb") as pickle_file:
131135
running_workflow = Unpickler(pickle_file).load()
132136
UnitTestAPIAdapter.mp_lock.release()
133137

@@ -139,7 +143,7 @@ def create_running_workflow_step(
139143
self, *, running_workflow_id: str, step: str
140144
) -> str:
141145
UnitTestAPIAdapter.mp_lock.acquire()
142-
with open(f"tests/{_RUNNING_WORKFLOW_STEP_PICKLE_FILE}", "rb") as pickle_file:
146+
with open(_RUNNING_WORKFLOW_STEP_PICKLE_FILE, "rb") as pickle_file:
143147
running_workflow_step = Unpickler(pickle_file).load()
144148

145149
next_id: int = len(running_workflow_step) + 1
@@ -154,7 +158,7 @@ def create_running_workflow_step(
154158
}
155159
running_workflow_step[running_workflow_step_id] = record
156160

157-
with open(f"tests/{_RUNNING_WORKFLOW_STEP_PICKLE_FILE}", "wb") as pickle_file:
161+
with open(_RUNNING_WORKFLOW_STEP_PICKLE_FILE, "wb") as pickle_file:
158162
Pickler(pickle_file).dump(running_workflow_step)
159163
UnitTestAPIAdapter.mp_lock.release()
160164

@@ -164,7 +168,7 @@ def get_running_workflow_step(
164168
self, *, running_workflow_step_id: str
165169
) -> Dict[str, Any]:
166170
UnitTestAPIAdapter.mp_lock.acquire()
167-
with open(f"tests/{_RUNNING_WORKFLOW_STEP_PICKLE_FILE}", "rb") as pickle_file:
171+
with open(_RUNNING_WORKFLOW_STEP_PICKLE_FILE, "rb") as pickle_file:
168172
running_workflow_step = Unpickler(pickle_file).load()
169173
UnitTestAPIAdapter.mp_lock.release()
170174

@@ -178,22 +182,22 @@ def set_running_workflow_step_done(
178182
self, *, running_workflow_step_id: str, success: bool
179183
) -> None:
180184
UnitTestAPIAdapter.mp_lock.acquire()
181-
with open(f"tests/{_RUNNING_WORKFLOW_STEP_PICKLE_FILE}", "rb") as pickle_file:
185+
with open(_RUNNING_WORKFLOW_STEP_PICKLE_FILE, "rb") as pickle_file:
182186
running_workflow_step = Unpickler(pickle_file).load()
183187

184188
assert running_workflow_step_id in running_workflow_step
185189
running_workflow_step[running_workflow_step_id]["done"] = True
186190
running_workflow_step[running_workflow_step_id]["success"] = success
187191

188-
with open(f"tests/{_RUNNING_WORKFLOW_STEP_PICKLE_FILE}", "wb") as pickle_file:
192+
with open(_RUNNING_WORKFLOW_STEP_PICKLE_FILE, "wb") as pickle_file:
189193
Pickler(pickle_file).dump(running_workflow_step)
190194
UnitTestAPIAdapter.mp_lock.release()
191195

192196
def get_running_workflow_steps(
193197
self, *, running_workflow_id: str
194198
) -> List[Dict[str, Any]]:
195199
UnitTestAPIAdapter.mp_lock.acquire()
196-
with open(f"tests/{_RUNNING_WORKFLOW_STEP_PICKLE_FILE}", "rb") as pickle_file:
200+
with open(_RUNNING_WORKFLOW_STEP_PICKLE_FILE, "rb") as pickle_file:
197201
running_workflow_step = Unpickler(pickle_file).load()
198202
UnitTestAPIAdapter.mp_lock.release()
199203

@@ -206,7 +210,7 @@ def get_running_workflow_steps(
206210

207211
def create_instance(self, *, running_workflow_step_id: str) -> Dict[str, Any]:
208212
UnitTestAPIAdapter.mp_lock.acquire()
209-
with open(f"tests/{_INSTANCE_PICKLE_FILE}", "rb") as pickle_file:
213+
with open(_INSTANCE_PICKLE_FILE, "rb") as pickle_file:
210214
instances = Unpickler(pickle_file).load()
211215

212216
next_id: int = len(instances) + 1
@@ -216,23 +220,23 @@ def create_instance(self, *, running_workflow_step_id: str) -> Dict[str, Any]:
216220
}
217221
instances[instance_id] = record
218222

219-
with open(f"tests/{_INSTANCE_PICKLE_FILE}", "wb") as pickle_file:
223+
with open(_INSTANCE_PICKLE_FILE, "wb") as pickle_file:
220224
Pickler(pickle_file).dump(instances)
221225
UnitTestAPIAdapter.mp_lock.release()
222226

223227
return {"id": instance_id}
224228

225229
def get_instance(self, *, instance_id: str) -> Dict[str, Any]:
226230
UnitTestAPIAdapter.mp_lock.acquire()
227-
with open(f"tests/{_INSTANCE_PICKLE_FILE}", "rb") as pickle_file:
231+
with open(_INSTANCE_PICKLE_FILE, "rb") as pickle_file:
228232
instances = Unpickler(pickle_file).load()
229233
UnitTestAPIAdapter.mp_lock.release()
230234

231235
return {} if instance_id not in instances else instances[instance_id]
232236

233237
def create_task(self, *, instance_id: str) -> Dict[str, Any]:
234238
UnitTestAPIAdapter.mp_lock.acquire()
235-
with open(f"tests/{_TASK_PICKLE_FILE}", "rb") as pickle_file:
239+
with open(_TASK_PICKLE_FILE, "rb") as pickle_file:
236240
tasks = Unpickler(pickle_file).load()
237241

238242
next_id: int = len(tasks) + 1
@@ -243,15 +247,15 @@ def create_task(self, *, instance_id: str) -> Dict[str, Any]:
243247
}
244248
tasks[task_id] = record
245249

246-
with open(f"tests/{_TASK_PICKLE_FILE}", "wb") as pickle_file:
250+
with open(_TASK_PICKLE_FILE, "wb") as pickle_file:
247251
Pickler(pickle_file).dump(tasks)
248252
UnitTestAPIAdapter.mp_lock.release()
249253

250254
return {"id": task_id}
251255

252256
def get_task(self, *, task_id: str) -> Dict[str, Any]:
253257
UnitTestAPIAdapter.mp_lock.acquire()
254-
with open(f"tests/{_TASK_PICKLE_FILE}", "rb") as pickle_file:
258+
with open(_TASK_PICKLE_FILE, "rb") as pickle_file:
255259
tasks = Unpickler(pickle_file).load()
256260
UnitTestAPIAdapter.mp_lock.release()
257261

0 commit comments

Comments
 (0)