123
132
Check that we can birth and death properly
125
134
an_output = OutputCppRoot.OutputCppRoot()
126
#self.assertRaises(ErrorHandler.CppError, an_output.birth, '{}')
127
#self.assertRaises(ErrorHandler.CppError, an_output.birth,
128
# '{"output_root_file_name":""}')
129
# for now this does NOT return an exception... needs fixing
135
# for now this does NOT return an exception... looks like it is caught
136
# by the API... set ErrorHandler.on_error to 'raise' and we raise a
137
# std::exception killing the tests (oops)
130
138
an_output.birth(json.dumps({}))
131
an_output.birth(json.dumps({'output_root_file_name':''}))
139
an_output.birth(json.dumps({'output_root_file_name':'',
140
'output_root_file_mode':'one_big_file',
141
'end_of_run_output_root_directory':'tmp'}))
142
an_output.birth(json.dumps({'output_root_file_name':'test.root',
143
'output_root_file_mode':'',
144
'end_of_run_output_root_directory':'tmp'}))
145
an_output.birth(json.dumps({'output_root_file_name':'test.root',
146
'output_root_file_mode':'one',
147
'end_of_run_output_root_directory':'tmp'}))
148
# this is okay (dir can just be '')
149
an_output.birth(json.dumps({'output_root_file_name':'test.root',
150
'output_root_file_mode':'one_big_file',
151
'end_of_run_output_root_directory':''}))
132
152
an_output.birth(self.cards)
133
153
an_output.death()
169
189
self.assertFalse(self._save_event(json.dumps({"":{}})))
170
190
self.assertFalse(self._save_event(''))
172
def __check_job_header(self, json_conf_text, n_entries, entry):
192
def __check_job_header(self, json_conf_text, n_entries, entry, fname=None):
174
194
Check that json_header entry has json_conf_text
176
root_file = ROOT.TFile(self.outfile, "READ") # pylint: disable = E1101
198
root_file = ROOT.TFile(fname, "READ") # pylint: disable = E1101
177
199
job_header = ROOT.MAUS.JobHeaderData() # pylint: disable = E1101
178
200
tree = root_file.Get("JobHeader")
179
201
tree.SetBranchAddress("job_header", job_header)
274
300
self.__check_job_header("output cpp root test 2", 2, 1)
275
301
self.__check_job_footer("1977-04-04T00:00:00.000000", 2, 1)
303
def test_one_file_per_run(self):
305
test_OutputCppRoot.test_one_file_per_run: one_file_per_run option
307
my_output = OutputCppRoot.OutputCppRoot()
308
cards_py = json.loads(self.cards)
309
cards_py["output_root_file_mode"] = "one_file_per_run"
310
self.cards = json.dumps(cards_py)
311
my_output.birth(self.cards)
312
self.test_data["run_number"] = 10
313
self.test_run_header["run_number"] = 10
314
for i in range(3): # pylint: disable = W0612
315
self.assertTrue(my_output.save(
316
json.dumps(self.test_data)
318
for i in range(2): # pylint: disable = W0612
319
self.assertTrue(my_output.save(
320
json.dumps(self.test_run_header)
322
for i in range(3): # pylint: disable = W0612
323
self.assertTrue(my_output.save(
324
json.dumps(self.test_data)
326
self.test_run_header["run_number"] = 9
327
for i in range(3): # pylint: disable = W0612
328
self.assertTrue(my_output.save(
329
json.dumps(self.test_run_header)
331
for i in range(3): # pylint: disable = W0612
332
self.assertTrue(my_output.save(
333
json.dumps(self.test_job_header)
336
self.__check_job_header("output cpp root test", 3, 0,
337
self.outdir+"test_outputCppRoot_0.root")
338
self.__check_run_header(10, 2, 0,
339
self.outdir+"test_outputCppRoot_10.root")
340
self.__check_run_header(9, 3, 0,
341
self.outdir+"test_outputCppRoot_9.root")
343
def test_end_of_run_file_per_run(self):
345
test_OutputCppRoot.test_one_file_per_run: end_of_run_file_per_run option
347
my_output = OutputCppRoot.OutputCppRoot()
348
cards_py = json.loads(self.cards)
349
cards_py["output_root_file_mode"] = "end_of_run_file_per_run"
350
cards_py["output_root_file_name"] = "test_outputCppRoot.root"
351
cards_py["end_of_run_output_root_directory"] = \
352
self.outdir+"/end_of_run/"
353
self.cards = json.dumps(cards_py)
354
my_output.birth(self.cards)
355
self.test_data["run_number"] = 10
356
self.test_run_header["run_number"] = 10
357
for i in range(3): # pylint: disable = W0612
358
self.assertTrue(my_output.save(
359
json.dumps(self.test_data)
361
for i in range(2): # pylint: disable = W0612
362
self.assertTrue(my_output.save(
363
json.dumps(self.test_run_header)
365
for i in range(3): # pylint: disable = W0612
366
self.assertTrue(my_output.save(
367
json.dumps(self.test_data)
369
self.test_run_header["run_number"] = 9
370
for i in range(3): # pylint: disable = W0612
371
self.assertTrue(my_output.save(
372
json.dumps(self.test_run_header)
374
self.assertTrue(my_output.save(
375
json.dumps(self.test_job_footer)
377
self.test_run_footer["run_number"] = 9
378
self.assertTrue(my_output.save(
379
json.dumps(self.test_run_footer)
381
for i in range(3): # pylint: disable = W0612
382
self.assertTrue(my_output.save(
383
json.dumps(self.test_job_header)
386
self.__check_job_header("output cpp root test", 3, 0,
387
self.outdir+"/end_of_run/0/test_outputCppRoot.root")
388
self.__check_run_header(10, 2, 0,
389
self.outdir+"/end_of_run/10/test_outputCppRoot.root")
390
self.__check_run_header(9, 3, 0,
391
self.outdir+"/end_of_run/9/test_outputCppRoot.root")
392
self.__check_job_footer("1977-04-04T00:00:00.000000", 1, 0,
393
self.outdir+"/end_of_run/0/test_outputCppRoot.root")
277
396
if __name__ == "__main__":