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
113 Create useful objects for each test
115 from ROOT
import Belle2
116 from ROOT.Belle2
import TestCalibrationAlgorithm
as TestAlgo
119 self.alg1 = TestAlgo()
121 self.alg2 = TestAlgo()
123 self.col1 = b2.register_module(
'CaTest')
125 self.name =
'TestCalibration'
127 self.example_file1 = Path(
"example1.root")
128 self.example_file2 = Path(
"example2.root")
129 self.example_file1.touch()
130 self.example_file2.touch()
134 Test whether or not calibration is valid with correct setup and if name is stored correctly
142 input_files=self.example_file2.as_posix())
143 self.assertTrue(cal.is_valid()
and cal.name == self.name)
147 Test whether or not calibration is valid with alternative correct setup and if name is stored correctly
149 cal = Calibration(self.name,
'CaTest', self.alg1, input_files=self.example_file1.as_posix())
150 self.assertTrue(cal.is_valid()
and cal.name == self.name)
154 Test that the default options are correctly applied to a calibration
156 defaults = {
"max_iterations": 4}
157 cal1 = Calibration(self.name, collector=self.col1, algorithms=[self.alg1], input_files=self.example_file1.as_posix())
158 cal1._apply_calibration_defaults(defaults)
159 cal2 = Calibration(self.name, collector=self.col1, algorithms=[self.alg1], input_files=self.example_file2.as_posix())
160 self.assertTrue(cal1.max_iterations == 4
and not cal2.max_iterations)
163 self.example_file1.unlink()
164 self.example_file2.unlink()
167class TestCAF(TestCase):
169 UnitTest for configuration and simple running of CAF
174 Create useful objects for each test and the teardown
176 from ROOT
import Belle2
177 from ROOT.Belle2
import TestCalibrationAlgorithm
as TestAlgo
180 self.name1 =
'TestCalibration1'
182 self.name2 =
'TestCalibration2'
184 self.name3 =
'TestCalibration3'
186 col = b2.register_module(
'CaTest')
188 self.example_file1 = Path(
"example1.root")
189 self.example_file1.touch()
191 self.cal1 = Calibration(self.name1, col, alg, self.example_file1.as_posix())
193 self.cal2 = Calibration(self.name2, col, alg, self.example_file1.as_posix())
195 self.cal3 = Calibration(self.name3, col, alg, self.example_file1.as_posix())
197 def test_add_calibration(self):
199 Test that add_calibration function results in correct output
202 fw.add_calibration(self.cal1)
203 fw.add_calibration(self.cal2)
204 self.assertTrue(fw.calibrations[self.name1].name == self.name1
and fw.calibrations[self.name2].name == self.name2)
206 def test_add_dependency_on_itself(self):
208 Test that add_dependency function cannot add itself
210 self.cal1.depends_on(self.cal1)
211 self.assertFalse(self.cal1.dependencies)
213 def test_make_output_dir(self):
215 Test that output_dir directory is created correctly
218 fw.output_dir =
'testCAF_outputdir'
219 fw._make_output_dir()
220 self.assertTrue(os.path.isdir(
'testCAF_outputdir'))
222 def test_config_output_dir(self):
224 Test that config is correctly setting the default output path.
227 self.assertTrue(fw.output_dir ==
'calibration_results')
231 Removes files that were created during these tests
233 self.example_file1.unlink()
234 dirs = glob.glob(
'*testCAF_outputdir')
235 for directory
in dirs:
236 shutil.rmtree(directory)
243if __name__ ==
'__main__':