16from caf.framework
import Calibration, CAF
19from unittest
import TestCase
20from pathlib
import Path
23b2.set_log_level(b2.LogLevel.ERROR)
26class TestCalibrationClass_Configure(TestCase):
28 UnitTest for configuration of Calibration
class
33 Create useful objects for each test
35 from ROOT
import Belle2
36 from ROOT.Belle2
import TestCalibrationAlgorithm
as TestAlgo
38 self.alg1 = TestAlgo()
40 self.alg2 = TestAlgo()
42 self.col1 = b2.register_module(
'CaTest')
44 self.example_file1 = Path(
"example1.root")
45 self.example_file2 = Path(
"example2.root")
46 self.example_file1.touch()
47 self.example_file2.touch()
51 Test whether or not calibration
is valid
with incorrect setup.
53 cal = Calibration('TestCalibrationClass_Configure_test1')
54 self.assertFalse(cal.is_valid())
58 Test whether or not calibration
is valid
with incorrect setup.
60 cal = Calibration('TestCalibrationClass_Configure_test2')
61 cal.collector =
'CaTest'
62 self.assertFalse(cal.is_valid())
66 Test whether or not calibration
is valid
with incorrect setup.
68 cal = Calibration('TestCalibrationClass_Configure_test3')
69 cal.collector = self.col1
70 self.assertFalse(cal.is_valid())
74 Test whether or not calibration
is valid
with incorrect setup.
76 cal = Calibration('TestCalibrationClass_Configure_test4')
77 cal.collector = self.col1
78 cal.algorithms = [self.alg1, self.alg2]
79 self.assertFalse(cal.is_valid())
83 Test whether or not calibration
is valid
with correct setup.
85 cal = Calibration('TestCalibrationClass_Configure_test5')
86 cal.collector = self.col1
87 cal.algorithms = [self.alg1, self.alg2]
88 cal.input_files = self.example_file1.as_posix()
89 self.assertTrue(cal.is_valid())
93 Test whether or not calibration
is valid
with alternative correct setup.
95 cal = Calibration('TestCalibrationClass_Configure_test6')
96 cal.collector = self.col1
97 cal.algorithms = [self.alg1, self.alg2]
98 cal.input_files = [self.example_file1.as_posix(), self.example_file2.as_posix()]
99 self.assertTrue(cal.is_valid())
102 self.example_file1.unlink()
103 self.example_file2.unlink()
106class TestCalibrationClass_Args(TestCase):
108 UnitTest for validity of Calibration
class when given arguments of different types
"""
112 Create useful objects for each test
114 from ROOT
import Belle2
115 from ROOT.Belle2
import TestCalibrationAlgorithm
as TestAlgo
118 self.alg1 = TestAlgo()
120 self.alg2 = TestAlgo()
122 self.col1 = b2.register_module(
'CaTest')
124 self.name =
'TestCalibration'
126 self.example_file1 = Path(
"example1.root")
127 self.example_file2 = Path(
"example2.root")
128 self.example_file1.touch()
129 self.example_file2.touch()
133 Test whether or not calibration
is valid
with correct setup
and if name
is stored correctly
141 input_files=self.example_file2.as_posix())
142 self.assertTrue(cal.is_valid() and cal.name == self.name)
146 Test whether or not calibration
is valid
with alternative correct setup
and if name
is stored correctly
148 cal = Calibration(self.name, 'CaTest', self.alg1, input_files=self.example_file1.as_posix())
149 self.assertTrue(cal.is_valid()
and cal.name == self.name)
153 Test that the default options are correctly applied to a calibration
155 defaults = {"max_iterations": 4}
156 cal1 =
Calibration(self.name, collector=self.col1, algorithms=[self.alg1], input_files=self.example_file1.as_posix())
157 cal1._apply_calibration_defaults(defaults)
158 cal2 =
Calibration(self.name, collector=self.col1, algorithms=[self.alg1], input_files=self.example_file2.as_posix())
159 self.assertTrue(cal1.max_iterations == 4
and not cal2.max_iterations)
162 self.example_file1.unlink()
163 self.example_file2.unlink()
166class TestCAF(TestCase):
168 UnitTest for configuration
and simple running of CAF
173 Create useful objects for each test
and the teardown
175 from ROOT
import Belle2
176 from ROOT.Belle2
import TestCalibrationAlgorithm
as TestAlgo
179 self.name1 =
'TestCalibration1'
181 self.name2 =
'TestCalibration2'
183 self.name3 =
'TestCalibration3'
185 col = b2.register_module(
'CaTest')
187 self.example_file1 = Path(
"example1.root")
188 self.example_file1.touch()
190 self.cal1 =
Calibration(self.name1, col, alg, self.example_file1.as_posix())
192 self.cal2 =
Calibration(self.name2, col, alg, self.example_file1.as_posix())
194 self.cal3 =
Calibration(self.name3, col, alg, self.example_file1.as_posix())
196 def test_add_calibration(self):
198 Test that add_calibration function results in correct output
201 fw.add_calibration(self.cal1)
202 fw.add_calibration(self.cal2)
203 self.assertTrue(fw.calibrations[self.name1].name == self.name1 and fw.calibrations[self.name2].name == self.name2)
205 def test_add_dependency_on_itself(self):
207 Test that add_dependency function cannot add itself
209 self.cal1.depends_on(self.cal1)
210 self.assertFalse(self.cal1.dependencies)
212 def test_make_output_dir(self):
214 Test that output_dir directory is created correctly
217 fw.output_dir = 'testCAF_outputdir'
218 fw._make_output_dir()
219 self.assertTrue(os.path.isdir(
'testCAF_outputdir'))
221 def test_config_output_dir(self):
223 Test that config is correctly setting the default output path.
226 self.assertTrue(fw.output_dir == 'calibration_results')
230 Removes files that were created during these tests
232 self.example_file1.unlink()
233 dirs = glob.glob('*testCAF_outputdir')
234 for directory
in dirs:
235 shutil.rmtree(directory)
242if __name__ ==
'__main__':