@@ -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