Skip to content

Commit 04296c1

Browse files
committed
Issue #604/#644 more UDPJobFactory+MultiBackendJobManager tests
1 parent 64cafcf commit 04296c1

File tree

1 file changed

+103
-6
lines changed

1 file changed

+103
-6
lines changed

tests/extra/test_job_management.py

Lines changed: 103 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,9 +1135,7 @@ def test_udp_job_manager_basic(self, tmp_path, requests_mock, dummy_backend, job
11351135
)
11361136

11371137
df = pd.DataFrame({"data": [1, 2, 3]})
1138-
job_db = CsvJobDatabase(tmp_path / "jobs.csv")
1139-
# TODO #636 avoid this cumbersome pattern using private _normalize_df API
1140-
job_db.persist(job_manager._normalize_df(df))
1138+
job_db = CsvJobDatabase(tmp_path / "jobs.csv").initialize_from_df(df)
11411139

11421140
stats = job_manager.run_jobs(job_db=job_db, start_job=job_starter)
11431141
assert stats == dirty_equals.IsPartialDict(
@@ -1147,9 +1145,7 @@ def test_udp_job_manager_basic(self, tmp_path, requests_mock, dummy_backend, job
11471145
"job start": 3,
11481146
}
11491147
)
1150-
1151-
result = job_db.read()
1152-
assert set(result.status) == {"finished"}
1148+
assert set(job_db.read().status) == {"finished"}
11531149

11541150
assert dummy_backend.batch_jobs == {
11551151
"job-000": {
@@ -1189,3 +1185,104 @@ def test_udp_job_manager_basic(self, tmp_path, requests_mock, dummy_backend, job
11891185
"status": "finished",
11901186
},
11911187
}
1188+
1189+
@pytest.mark.parametrize(
1190+
["parameter_defaults", "df_data", "expected_arguments"],
1191+
[
1192+
(
1193+
{"increment": 5},
1194+
{"data": [1, 2, 3]},
1195+
{
1196+
"job-000": {"data": 1, "increment": 5},
1197+
"job-001": {"data": 2, "increment": 5},
1198+
"job-002": {"data": 3, "increment": 5},
1199+
},
1200+
),
1201+
(
1202+
None,
1203+
{"data": [1, 2, 3], "increment": [44, 55, 66]},
1204+
{
1205+
"job-000": {"data": 1, "increment": 44},
1206+
"job-001": {"data": 2, "increment": 55},
1207+
"job-002": {"data": 3, "increment": 66},
1208+
},
1209+
),
1210+
(
1211+
{"increment": 5555},
1212+
{"data": [1, 2, 3], "increment": [44, 55, 66]},
1213+
{
1214+
"job-000": {"data": 1, "increment": 44},
1215+
"job-001": {"data": 2, "increment": 55},
1216+
"job-002": {"data": 3, "increment": 66},
1217+
},
1218+
),
1219+
],
1220+
)
1221+
def test_udp_job_manager_parameter_handling(
1222+
self,
1223+
tmp_path,
1224+
requests_mock,
1225+
dummy_backend,
1226+
job_manager,
1227+
sleep_mock,
1228+
parameter_defaults,
1229+
df_data,
1230+
expected_arguments,
1231+
):
1232+
job_starter = UDPJobFactory(
1233+
process_id="increment",
1234+
namespace="https://remote.test/increment.json",
1235+
parameter_defaults=parameter_defaults,
1236+
)
1237+
1238+
df = pd.DataFrame(df_data)
1239+
job_db = CsvJobDatabase(tmp_path / "jobs.csv").initialize_from_df(df)
1240+
1241+
stats = job_manager.run_jobs(job_db=job_db, start_job=job_starter)
1242+
assert stats == dirty_equals.IsPartialDict(
1243+
{
1244+
"sleep": dirty_equals.IsInt(gt=1),
1245+
"start_job call": 3,
1246+
"job start": 3,
1247+
}
1248+
)
1249+
assert set(job_db.read().status) == {"finished"}
1250+
1251+
assert dummy_backend.batch_jobs == {
1252+
"job-000": {
1253+
"job_id": "job-000",
1254+
"pg": {
1255+
"increment1": {
1256+
"process_id": "increment",
1257+
"namespace": "https://remote.test/increment.json",
1258+
"arguments": expected_arguments["job-000"],
1259+
"result": True,
1260+
}
1261+
},
1262+
"status": "finished",
1263+
},
1264+
"job-001": {
1265+
"job_id": "job-001",
1266+
"pg": {
1267+
"increment1": {
1268+
"process_id": "increment",
1269+
"namespace": "https://remote.test/increment.json",
1270+
"arguments": expected_arguments["job-001"],
1271+
"result": True,
1272+
}
1273+
},
1274+
"status": "finished",
1275+
},
1276+
"job-002": {
1277+
"job_id": "job-002",
1278+
"pg": {
1279+
"increment1": {
1280+
"process_id": "increment",
1281+
"namespace": "https://remote.test/increment.json",
1282+
"arguments": expected_arguments["job-002"],
1283+
"result": True,
1284+
}
1285+
},
1286+
"status": "finished",
1287+
},
1288+
}

0 commit comments

Comments
 (0)