def test_load_from_file_with_local_overriding_global(self): # The config data in the local and global files is loaded correctly. # The local data will override the global one content = ''' [A] a=1 b=c [B] b=2''' site_path = touch(content=textwrap.dedent(content)) os.environ["OQ_SITE_CFG_PATH"] = site_path content = ''' [A] a=2 d=e [D] c=d-1 d=4''' local_path = touch(content=textwrap.dedent(content)) os.environ["OQ_LOCAL_CFG_PATH"] = local_path config.cfg.cfg.clear() config.cfg._load_from_file() self.assertEqual(["A", "B", "D"], sorted(config.cfg.cfg)) self.assertEqual({"a": "2", "b": "c", "d": "e"}, config.cfg.cfg.get("A")) self.assertEqual({"b": "2"}, config.cfg.cfg.get("B")) self.assertEqual({"c": "d-1", "d": "4"}, config.cfg.cfg.get("D"))
def test_load_from_file_with_local_overriding_global(self): # The config data in the local and global files is loaded correctly. # The local data will override the global one content = ''' [A] a=1 b=c [B] b=2''' site_path = touch(content=textwrap.dedent(content)) os.environ["OQ_SITE_CFG_PATH"] = site_path content = ''' [A] a=2 d=e [D] c=d-1 d=4''' local_path = touch(content=textwrap.dedent(content)) os.environ["OQ_LOCAL_CFG_PATH"] = local_path config.cfg.cfg.clear() config.cfg._load_from_file() self.assertEqual(["A", "B", "D"], sorted(config.cfg.cfg)) self.assertEqual({ "a": "2", "b": "c", "d": "e" }, config.cfg.cfg.get("A")) self.assertEqual({"b": "2"}, config.cfg.cfg.get("B")) self.assertEqual({"c": "d-1", "d": "4"}, config.cfg.cfg.get("D"))
def test_parse_config_with_files(self): temp_dir = tempfile.mkdtemp() site_model_input = helpers.touch(dir=temp_dir, content="foo") job_config = helpers.touch(dir=temp_dir, content=""" [general] calculation_mode = classical [site] site_model_file = %s maximum_distance=0 truncation_level=0 random_seed=0 """ % site_model_input) try: exp_base_path = os.path.dirname(job_config) expected_params = { 'base_path': exp_base_path, 'calculation_mode': 'classical', 'truncation_level': '0', 'random_seed': '0', 'maximum_distance': '0', 'inputs': {'site_model': site_model_input}, } params = engine.parse_config(open(job_config, 'r')) self.assertEqual(expected_params, params) self.assertEqual(['site_model'], params['inputs'].keys()) self.assertEqual([site_model_input], params['inputs'].values()) finally: shutil.rmtree(temp_dir)
def test_load_from_file_with_local_and_global(self): """ The config data in the local and global files is loaded correctly. """ content = ''' [A] a=1 b=c [B] b=2''' site_path = touch(content=textwrap.dedent(content)) os.environ["OQ_SITE_CFG_PATH"] = site_path content = ''' [C] c=3 d=e [D] d=4''' local_path = touch(content=textwrap.dedent(content)) os.environ["OQ_LOCAL_CFG_PATH"] = local_path config.Config().cfg.clear() config.Config()._load_from_file() self.assertEqual(["A", "B", "C", "D"], sorted(config.Config().cfg.keys())) self.assertEqual({"a": "1", "b": "c"}, config.Config().cfg.get("A")) self.assertEqual({"b": "2"}, config.Config().cfg.get("B")) self.assertEqual({"c": "3", "d": "e"}, config.Config().cfg.get("C")) self.assertEqual({"d": "4"}, config.Config().cfg.get("D"))
def test_parse_config_with_sites_csv(self): sites_csv = helpers.touch(content='1.0,2.1\n3.0,4.1\n5.0,6.1') try: source = StringIO.StringIO(""" [general] calculation_mode = classical [geometry] sites_csv = %s [misc] maximum_distance=0 truncation_level=3 random_seed=5 """ % sites_csv) source.name = 'path/to/some/job.ini' exp_base_path = os.path.dirname( os.path.join(os.path.abspath('.'), source.name)) expected_params = { 'base_path': exp_base_path, 'sites': 'MULTIPOINT(1.0 2.1, 3.0 4.1, 5.0 6.1)', 'calculation_mode': 'classical', 'truncation_level': '3', 'random_seed': '5', 'maximum_distance': '0', 'inputs': {}, } params = engine.parse_config(source) self.assertEqual(expected_params, params) finally: os.unlink(sites_csv)
def test_get_with_known_section(self): # get() will correctly return configuration data for known sections content = ''' [E] f=6 g=h''' site_path = touch(content=textwrap.dedent(content)) os.environ["OQ_SITE_CFG_PATH"] = site_path config.cfg.cfg.clear() config.cfg._load_from_file() self.assertEqual({"f": "6", "g": "h"}, config.cfg.get("E"))
def test_get_with_known_section(self): # get() will correctly return configuration data for known sections content = ''' [E] f=6 g=h''' site_path = touch(content=textwrap.dedent(content)) os.environ["OQ_SITE_CFG_PATH"] = site_path config.cfg.cfg.clear() config.cfg._load_from_file() self.assertEqual({"f": "6", "g": "h"}, config.cfg.get("E"))
def test_load_from_file_with_local(self): # The config data in the local file is loaded correctly content = ''' [C] c=3 d=e [D] d=4''' local_path = touch(content=textwrap.dedent(content)) os.environ["OQ_LOCAL_CFG_PATH"] = local_path config.cfg.cfg.clear() config.cfg._load_from_file() self.assertEqual(["C", "D"], sorted(config.cfg.cfg)) self.assertEqual({"c": "3", "d": "e"}, config.cfg.cfg.get("C")) self.assertEqual({"d": "4"}, config.cfg.cfg.get("D"))
def test_load_from_file_with_global(self): # The config data in the global file is loaded correctly content = ''' [A] a=1 b=c [B] b=2''' site_path = touch(content=textwrap.dedent(content)) os.environ["OQ_SITE_CFG_PATH"] = site_path config.cfg.cfg.clear() config.cfg._load_from_file() self.assertEqual(["A", "B"], sorted(config.cfg.cfg)) self.assertEqual({"a": "1", "b": "c"}, config.cfg.cfg.get("A")) self.assertEqual({"b": "2"}, config.cfg.cfg.get("B"))
def test_load_from_file_with_local(self): # The config data in the local file is loaded correctly content = ''' [C] c=3 d=e [D] d=4''' local_path = touch(content=textwrap.dedent(content)) os.environ["OQ_LOCAL_CFG_PATH"] = local_path config.cfg.cfg.clear() config.cfg._load_from_file() self.assertEqual(["C", "D"], sorted(config.cfg.cfg)) self.assertEqual({"c": "3", "d": "e"}, config.cfg.cfg.get("C")) self.assertEqual({"d": "4"}, config.cfg.cfg.get("D"))
def test_load_from_file_with_global(self): # The config data in the global file is loaded correctly content = ''' [A] a=1 b=c [B] b=2''' site_path = touch(content=textwrap.dedent(content)) os.environ["OQ_SITE_CFG_PATH"] = site_path config.cfg.cfg.clear() config.cfg._load_from_file() self.assertEqual(["A", "B"], sorted(config.cfg.cfg)) self.assertEqual({"a": "1", "b": "c"}, config.cfg.cfg.get("A")) self.assertEqual({"b": "2"}, config.cfg.cfg.get("B"))