16 from ROOT.Belle2
import TestCalibrationAlgorithm
as TestAlgo
18 from caf.framework
import Calibration, CAF
21 from unittest
import TestCase
22 from pathlib
import Path
25 b2.set_log_level(b2.LogLevel.ERROR)
28 class TestCalibrationClass_Configure(
TestCase):
30 UnitTest for configuration of Calibration class
35 Create useful objects for each test
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()
106 class TestCalibrationClass_Args(
TestCase):
108 UnitTest for validity of Calibration class when given arguments of different types
113 Create useful objects for each test
116 self.alg1 = TestAlgo()
118 self.alg2 = TestAlgo()
120 self.col1 = b2.register_module(
'CaTest')
122 self.name =
'TestCalibration'
124 self.example_file1 = Path(
"example1.root")
125 self.example_file2 = Path(
"example2.root")
126 self.example_file1.touch()
127 self.example_file2.touch()
131 Test whether or not calibration is valid with correct setup and if name is stored correctly
139 input_files=self.example_file2.as_posix())
140 self.assertTrue(cal.is_valid()
and cal.name == self.name)
144 Test whether or not calibration is valid with alternative correct setup and if name is stored correctly
146 cal =
Calibration(self.name,
'CaTest', self.alg1, input_files=self.example_file1.as_posix())
147 self.assertTrue(cal.is_valid()
and cal.name == self.name)
151 Test that the default options are correctly applied to a calibration
153 defaults = {
"max_iterations": 4}
154 cal1 =
Calibration(self.name, collector=self.col1, algorithms=[self.alg1], input_files=self.example_file1.as_posix())
155 cal1._apply_calibration_defaults(defaults)
156 cal2 =
Calibration(self.name, collector=self.col1, algorithms=[self.alg1], input_files=self.example_file2.as_posix())
157 self.assertTrue(cal1.max_iterations == 4
and not cal2.max_iterations)
160 self.example_file1.unlink()
161 self.example_file2.unlink()
166 UnitTest for configuration and simple running of CAF
171 Create useful objects for each test and the teardown
174 self.name1 =
'TestCalibration1'
176 self.name2 =
'TestCalibration2'
178 self.name3 =
'TestCalibration3'
180 col = b2.register_module(
'CaTest')
182 self.example_file1 = Path(
"example1.root")
183 self.example_file1.touch()
185 self.cal1 =
Calibration(self.name1, col, alg, self.example_file1.as_posix())
187 self.cal2 =
Calibration(self.name2, col, alg, self.example_file1.as_posix())
189 self.cal3 =
Calibration(self.name3, col, alg, self.example_file1.as_posix())
191 def test_add_calibration(self):
193 Test that add_calibration function results in correct output
196 fw.add_calibration(self.cal1)
197 fw.add_calibration(self.cal2)
198 self.assertTrue(fw.calibrations[self.name1].name == self.name1
and fw.calibrations[self.name2].name == self.name2)
200 def test_add_dependency_on_itself(self):
202 Test that add_dependency function cannot add itself
204 self.cal1.depends_on(self.cal1)
205 self.assertFalse(self.cal1.dependencies)
207 def test_make_output_dir(self):
209 Test that output_dir directory is created correctly
212 fw.output_dir =
'testCAF_outputdir'
213 fw._make_output_dir()
214 self.assertTrue(os.path.isdir(
'testCAF_outputdir'))
216 def test_config_output_dir(self):
218 Test that config is correctly setting the default output path.
221 self.assertTrue(fw.output_dir ==
'calibration_results')
225 Removes files that were created during these tests
227 self.example_file1.unlink()
228 dirs = glob.glob(
'*testCAF_outputdir')
229 for directory
in dirs:
230 shutil.rmtree(directory)
237 if __name__ ==
'__main__':
int main(int argc, char **argv)
Run all tests.