Belle II Software development
test-metadata-providers-and-cached-globaltags.py
1
8
9'''
10Test that basf2 runs smoothly if we use globaltags that are not in a local database.
11Test also that the order of the providers does not matter in case we pass non-existing globaltags,
12or globaltags with a non-allowed status (e.g. OPEN).
13'''
14
15import basf2 as b2
16import b2test_utils as b2tu
17
18
19def path_for_test(globaltags, providers):
20 b2.conditions.metadata_providers = providers
21 for globaltag in globaltags:
22 b2.conditions.append_globaltag(globaltag)
23 b2.set_random_seed('114')
24 main = b2.Path()
25 main.add_module('EventInfoSetter')
26 main.add_module('PrintBeamParameters')
27 b2.process(main)
28
29
30if __name__ == '__main__':
31
32 if b2tu.is_cdb_down():
33 b2tu.skip_test('Test currently disabled due to CDB troubles')
34
35 b2tu.configure_logging_for_tests(replace_cdb_provider=False)
36
37 local = '/cvmfs/belle.cern.ch/conditions/database.sqlite'
38 central = 'http://belle2db.sdcc.bnl.gov/b2s/rest/'
39
40 for providers in [[central], [central, local], [local, central]]:
41 # This must pass, no matter what
42 assert (b2tu.run_in_subprocess(target=path_for_test, globaltags=[], providers=providers) == 0)
43 # We append a PUBLISHED globaltag, not cached -> must pass
44 assert (b2tu.run_in_subprocess(target=path_for_test, globaltags=['user_depietro_cdb_test_1'], providers=providers) == 0)
45 # We append a OPEN globaltag, not cached -> must fail
46 assert (b2tu.run_in_subprocess(target=path_for_test, globaltags=['user_depietro_cdb_test_2'], providers=providers) != 0)
47 # We append a INVALID globaltag, not cached -> must fail
48 assert (b2tu.run_in_subprocess(target=path_for_test, globaltags=['user_depietro_cdb_test_3'], providers=providers) != 0)
49 # We append a not existing globaltag -> must fail
50 assert (b2tu.run_in_subprocess(target=path_for_test, globaltags=['114'], providers=providers) != 0)
51 # We append also a OPEN globaltag, not cached -> must fail
52 assert (
53 b2tu.run_in_subprocess(
54 target=path_for_test,
55 globaltags=[
56 'user_depietro_cdb_test_1',
57 'user_depietro_cdb_test_2'],
58 providers=providers) != 0)
59 # We append also a INVALID globaltag, not cached -> must fail
60 assert (
61 b2tu.run_in_subprocess(
62 target=path_for_test,
63 globaltags=[
64 'user_depietro_cdb_test_1',
65 'user_depietro_cdb_test_3'],
66 providers=providers) != 0)
67 # We append a OPEN and a INVALID globaltag, not cached -> must fail
68 assert (
69 b2tu.run_in_subprocess(
70 target=path_for_test,
71 globaltags=[
72 'user_depietro_cdb_test_2',
73 'user_depietro_cdb_test_3'],
74 providers=providers) != 0)
75 # We append also a not existing globaltag -> must fail
76 assert (
77 b2tu.run_in_subprocess(
78 target=path_for_test,
79 globaltags=[
80 'user_depietro_cdb_test_1',
81 '114'],
82 providers=providers) != 0)
83 # We append also a not existing globaltag -> must fail
84 assert (
85 b2tu.run_in_subprocess(
86 target=path_for_test,
87 globaltags=[
88 'user_depietro_cdb_test_2',
89 '114'],
90 providers=providers) != 0)
91 # We append also a not existing globaltag -> must fail
92 assert (
93 b2tu.run_in_subprocess(
94 target=path_for_test,
95 globaltags=[
96 'user_depietro_cdb_test_1',
97 'user_depietro_cdb_test_2',
98 '114'],
99 providers=providers) != 0)
100
101 for providers in [[local]]:
102 # This must pass, no matter what
103 assert (b2tu.run_in_subprocess(target=path_for_test, globaltags=[], providers=providers) == 0)
104 # We append a not-cached globaltag -> must fail
105 assert (b2tu.run_in_subprocess(target=path_for_test, globaltags=['user_depietro_cdb_test_1'], providers=providers) != 0)
106 # We don't test the other cases, they are all equivalent to the previous one