def construct_from_json(self, json_tree) -> PiraConfiguration: conf = PiraConfiguration() # json_to_canonic can construct lists conf.set_build_directories( util.json_to_canonic(json_tree[_DESC][_DIRS])) conf.populate_build_dict(conf.directories) conf.set_global_flavors( util.json_to_canonic(json_tree[_DESC][_G_FLAVORS])) for glob_flav in conf.get_global_flavors(): conf.set_glob_submitter( util.json_to_canonic( json_tree[_DESC][_G_SUBMITTER][glob_flav]), glob_flav) for build_dir in conf.directories: conf.set_prefix( util.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_PREFIX]), build_dir) conf.set_items( util.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_ITEMS]), build_dir) conf.initialize_item_dict(build_dir, conf.builds[build_dir][_ITEMS]) for item in conf.builds[build_dir][_ITEMS]: conf.set_item_instrument_analysis( util.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_FLAVORS] [_INSTRUMENT_ANALYSIS][item]), build_dir, item) conf.set_item_builders( util.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_BUILDERS][item]), build_dir, item) conf.set_item_args( util.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_RUN][item][_ARGS]), build_dir, item) conf.set_item_runner( util.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_RUN][item][_RUNNER]), build_dir, item) conf.set_item_submitter( util.json_to_canonic(json_tree[_DESC][_BUILDS][build_dir] [_FLAVORS][_RUN][item][_SUBMITTER]), build_dir, item) conf.set_item_batch_script( util.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_FLAVORS][_RUN] [item][_BATCH_SCRIPT]), build_dir, item) conf.set_flavours( util.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_FLAVORS][item]), build_dir) conf.set_item_flavor( util.json_to_canonic( json_tree[_DESC][_BUILDS][build_dir][_FLAVORS][item]), build_dir, item) return conf
class CheckerTestCase(unittest.TestCase): @classmethod def setUp(self): self.config_v1= PiraConfiguration() self.config_v1.set_build_directories([tempdir + '/home/pira/build_dir']) self.config_v1.populate_build_dict(self.config_v1.directories) self.config_v1.set_items(['item1', 'item2'], self.config_v1.directories[0]) self.config_v1.initialize_item_dict(self.config_v1.directories[0], self.config_v1.builds[self.config_v1.directories[0]]['items']) for build_dir in self.config_v1.directories: for item in self.config_v1.builds[build_dir]['items']: self.config_v1.set_item_instrument_analysis(dep_aw_ins_anal[item], build_dir, item) self.config_v1.set_item_builders(tempdir + '/home/pira/build_dir/item1/functors', build_dir, item) self.config_v1.set_item_args([], build_dir, item) self.config_v1.set_item_runner("/" + item + "/runner/functors.dir", build_dir, item) self.config_v2 = PiraConfigurationII() pira_item1 = PiraItem("item1") pira_item1.set_analyzer_dir(tempdir + "/home/pira/build_dir/item1/analyzer") pira_item1.set_cubes_dir(tempdir + "/home/pira/build_dir/item1/cubes") pira_item1.set_flavors(["ct"]) pira_item1.set_functors_base_path(tempdir + "/home/pira/build_dir/item1/functors") pira_item1.set_mode("CT") self.config_v2.add_item(tempdir + "/home/pira/build_dir/item1/",pira_item1) pira_item2 = PiraItem("item2") pira_item2.set_analyzer_dir(tempdir + "/home/pira/build_dir/item2/analyzer") pira_item2.set_cubes_dir(tempdir + "/home/pira/build_dir/item2/cubes") pira_item2.set_flavors([]) pira_item2.set_functors_base_path(tempdir + "/home/pira/build_dir/item2/functors") pira_item2.set_mode("CT") self.config_v2.add_item(tempdir + "/home/pira/build_dir/item2/",pira_item2) self.config_adapter = PiraConfigurationAdapter(self.config_v2) self.create_tempfiles(self) def tearDown(self): self.delete_tempfolders() def create_tempfiles(self): for directory in directories_to_create: U.make_dirs(tempdir + directory) for filepath in functor_files: tempfile = open(tempdir + filepath,'a') tempfile.close() def delete_tempfolders(self): U.remove_dir(tempdir + "/home/pira/") def test_checker_v1_valid_config(self): C.Checker.check_configfile_v1(self.config_v1) def test_checker_v1_general_valid_config(self): C.Checker.check_configfile(self.config_v1,1) def test_checker_v1_dirs_missing(self): for directory in directories_to_create: U.remove_dir(tempdir + directory) with self.assertRaises(PiraConfigurationErrorException): C.Checker.check_configfile_v1(self.config_v1) self.create_tempfiles() def test_checker_v2_valid_config(self): C.Checker.check_configfile_v2(self.config_v2) def test_checker_v2_general_valid_config(self): C.Checker.check_configfile(self.config_v2,2) def test_checker_v2_adapter_valid_config(self): C.Checker.check_configfile_v2(self.config_adapter) def test_checker_v2_functors_missing(self): for file in functor_files: U.remove_file(tempdir + file) with self.assertRaises(PiraConfigurationErrorException): C.Checker.check_configfile_v2(self.config_v2) self.create_tempfiles() def test_checker_v2_dirs_missing(self): for directory in directories_to_create: U.remove_dir(tempdir + directory) with self.assertRaises(PiraConfigurationErrorException): C.Checker.check_configfile_v2(self.config_v2) self.create_tempfiles() def test_check_basic_config_005(self): cl = CL.SimplifiedConfigurationLoader() cfg = cl.load_conf('../inputs/configs/basic_config_005.json') C.Checker.check_configfile_v2(cfg)