コード例 #1
0
    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
コード例 #2
0
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)