Belle II Software  release-05-02-19
local_database_file.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 """
5 test parsing of local database files
6 """
7 
8 from basf2 import logging, LogLevel, LogInfo
9 from conditions_db.testing_payloads import parse_testing_payloads_file
10 from b2test_utils import clean_working_directory, run_in_subprocess, configure_logging_for_tests
11 import ROOT
12 
13 ROOT.gInterpreter.Declare("#include <framework/database/TestingPayloadStorage.h>")
14 
15 
16 entries = """
17 dbstore/empty 1 -1,-1,-1,-1
18 dbstore/good 1 0,0,-1,-1
19 dbstore/good_tabs\t1\t0,0,-1,-1
20 dbstore/good_many_spaces 1\t\t\t\t\t\t\t0,1,2,3
21 dbstore/good_with_comment 1 0,1,2,3 # comment
22 dbstore/bad_revision revision 0,0,0,0
23 dbstore/no_revision 0,1,2,3
24 no_package 1 0,0,-1,-1
25 dbstore/no_iov 1
26 dbstore/iov_only_1 1 0
27 dbstore/iov_only_2 1 0,0
28 dbstore/iov_only_3 1 0,0,0
29 dbstore/bad_with_spaces_02 1 0 ,1,2,3
30 dbstore/bad_with_spaces_11 1 0, 1,2,3
31 dbstore/bad_with_spaces_12 1 0,1 ,2,3
32 dbstore/bad_with_spaces_21 1 0,1, 2,3
33 dbstore/bad_with_spaces_22 1 0,1,2 ,3
34 dbstore/bad_with_spaces_31 1 0,1,2, 3
35 dbstore/bad_text_exp1 1 exp1,0,0,0
36 dbstore/bad_text_run1 1 0,run1,0,0
37 dbstore/bad_text_exp2 1 0,0,exp2,0
38 dbstore/bad_text_run2 1 0,0,0,run2
39 #only comment
40  # and with whitespace
41 \t#including tabs
42 """
43 
44 # modify logging to remove the useless module: lines
45 for level in LogLevel.values.values():
46  logging.set_info(level, LogInfo.LEVEL | LogInfo.MESSAGE)
47 
48 logging.enable_summary(False)
49 logging.log_level = LogLevel.DEBUG
50 logging.debug_level = 39
51 evt = ROOT.Belle2.EventMetaData(0, 0, 0)
52 payload = ROOT.Belle2.Conditions.PayloadMetadata("test")
53 
54 with clean_working_directory():
55  configure_logging_for_tests()
56  for i, entry in enumerate(entries.splitlines(True)):
57  print("testing", repr(entry))
58  filename = "database-%02d.txt" % i
59  with open(filename, "w") as f:
60  f.write(entry)
61 
62  # parse in python
63  entries = parse_testing_payloads_file(filename, check_existing=False)
64  if entries:
65  print(entries)
66  # and parse in C++
67  storage = ROOT.Belle2.Conditions.TestingPayloadStorage(filename)
68  run_in_subprocess(evt, payload, target=storage.get)
conditions_db.testing_payloads
Definition: testing_payloads.py:1