def test_constructors(self): with TestAreaContext("site_config_constructor_test") as work_area: work_area.copy_directory(self.snake_case_directory) config_file = "snake_oil/snake_oil.ert" ERT_SITE_CONFIG = SiteConfig.getLocation() ERT_SHARE_PATH = os.path.dirname(ERT_SITE_CONFIG) snake_config_dict = { ConfigKeys.INSTALL_JOB: [ { ConfigKeys.NAME: "SNAKE_OIL_SIMULATOR", ConfigKeys.PATH: os.getcwd() + "/snake_oil/jobs/SNAKE_OIL_SIMULATOR", }, { ConfigKeys.NAME: "SNAKE_OIL_NPV", ConfigKeys.PATH: os.getcwd() + "/snake_oil/jobs/SNAKE_OIL_NPV", }, { ConfigKeys.NAME: "SNAKE_OIL_DIFF", ConfigKeys.PATH: os.getcwd() + "/snake_oil/jobs/SNAKE_OIL_DIFF", }, ], ConfigKeys.INSTALL_JOB_DIRECTORY: [ ERT_SHARE_PATH + "/forward-models/res", ERT_SHARE_PATH + "/forward-models/shell", ERT_SHARE_PATH + "/forward-models/templating", ERT_SHARE_PATH + "/forward-models/old_style", ], ConfigKeys.SETENV: [ { ConfigKeys.NAME: "SILLY_VAR", ConfigKeys.VALUE: "silly-value" }, { ConfigKeys.NAME: "OPTIONAL_VAR", ConfigKeys.VALUE: "optional-value", }, ], ConfigKeys.LICENSE_PATH: "some/random/path", ConfigKeys.UMASK: 18, } site_config_user_file = SiteConfig(user_config_file=config_file) site_config_dict = SiteConfig(config_dict=snake_config_dict) self.assertEqual(site_config_dict, site_config_user_file) with self.assertRaises(ValueError): site_config = SiteConfig(user_config_file=config_file, config_dict=snake_config_dict)
def test_constructors(self): with TestAreaContext("site_config_constructor_test") as work_area: work_area.copy_directory(self.snake_case_directory) config_file = "snake_oil/snake_oil.ert" ERT_SITE_CONFIG = SiteConfig.getLocation() ERT_SHARE_PATH = os.path.dirname(ERT_SITE_CONFIG) snake_config_dict = { "INSTALL_JOB": [ { "NAME": "SNAKE_OIL_SIMULATOR", "PATH": os.getcwd() + "/snake_oil/jobs/SNAKE_OIL_SIMULATOR" }, { "NAME": "SNAKE_OIL_NPV", "PATH": os.getcwd() + "/snake_oil/jobs/SNAKE_OIL_NPV" }, { "NAME": "SNAKE_OIL_DIFF", "PATH": os.getcwd() + "/snake_oil/jobs/SNAKE_OIL_DIFF" } ], "INSTALL_JOB_DIRECTORY": [ ERT_SHARE_PATH + '/forward-models/res', ERT_SHARE_PATH + '/forward-models/shell', ERT_SHARE_PATH + '/forward-models/templating', ERT_SHARE_PATH + '/forward-models/old_style' ], "SETENV": [ { "NAME": "SILLY_VAR", "VALUE": "silly-value" }, { "NAME": "OPTIONAL_VAR", "VALUE": "optional-value" } ], "LICENSE_PATH": "some/random/path", "UMASK": 18 } site_config_user_file = SiteConfig(user_config_file=config_file) site_config_dict = SiteConfig(config_dict=snake_config_dict) self.assertEqual(site_config_dict, site_config_user_file) with self.assertRaises(ValueError): site_config = SiteConfig(user_config_file=config_file, config_dict=snake_config_dict)
def test_init(self): with TestAreaContext("site_config_init_test") as work_area: work_area.copy_directory(self.case_directory) site_config = SiteConfig() self.assertIsNotNone(site_config) self.assertIsNotNone(site_config.config_file) config_file = "simple_config/minimum_config" site_config2 = SiteConfig(user_config_file=config_file) self.assertIsNotNone(site_config2) self.assertEqual(site_config.config_file, site_config2.config_file) self.assertEqual(site_config.__repr__(), site_config2.__repr__())
def _alloc_from_dict(self, config_dict, throw_on_error=True): # treat the default config dir config_dir = os.getcwd() if ConfigKeys.CONFIG_DIRECTORY in config_dict: config_dir = config_dict[ConfigKeys.CONFIG_DIRECTORY] config_dict[ConfigKeys.CONFIG_DIRECTORY] = config_dir subst_config = SubstConfig(config_dict=config_dict) site_config = SiteConfig(config_dict=config_dict) rng_config = RNGConfig(config_dict=config_dict) analysis_config = AnalysisConfig(config_dict=config_dict) ecl_config = EclConfig(config_dict=config_dict) log_config = LogConfig(config_dict=config_dict) queue_config = QueueConfig(config_dict=config_dict) ert_workflow_list = ErtWorkflowList( subst_list=subst_config.subst_list, config_dict=config_dict ) hook_manager = HookManager( workflow_list=ert_workflow_list, config_dict=config_dict ) ert_templates = ErtTemplates( parent_subst=subst_config.subst_list, config_dict=config_dict ) ensemble_config = EnsembleConfig( grid=ecl_config.getGrid(), refcase=ecl_config.getRefcase(), config_dict=config_dict, ) model_config = ModelConfig( data_root=config_dir, joblist=site_config.get_installed_jobs(), last_history_restart=ecl_config.getLastHistoryRestart(), refcase=ecl_config.getRefcase(), config_dict=config_dict, ) return [ subst_config, site_config, rng_config, analysis_config, ert_workflow_list, hook_manager, ert_templates, ecl_config, ensemble_config, model_config, log_config, queue_config, ], config_dir
def _alloc_from_content(self, user_config_file=None, config=None, throw_on_error=True): if user_config_file is not None: # initialize configcontent if user_file provided parser = ConfigParser() config_content = self._alloc_config_content( user_config_file, parser) config_dir = config_content.getValue(ConfigKeys.CONFIG_DIRECTORY) else: config_dir = os.getcwd() config_content = self._build_config_content(config) if self.errors and throw_on_error: raise ValueError("Error loading configuration: " + str(self._errors)) subst_config = SubstConfig(config_content=config_content) site_config = SiteConfig(config_content=config_content) rng_config = RNGConfig(config_content=config_content) analysis_config = AnalysisConfig(config_content=config_content) ecl_config = EclConfig(config_content=config_content) log_config = LogConfig(config_content=config_content) queue_config = QueueConfig(config_content=config_content) ert_workflow_list = ErtWorkflowList(subst_list=subst_config.subst_list, config_content=config_content) hook_manager = HookManager(workflow_list=ert_workflow_list, config_content=config_content) ert_templates = ErtTemplates(parent_subst=subst_config.subst_list, config_content=config_content) ensemble_config = EnsembleConfig(config_content=config_content, grid=ecl_config.getGrid(), refcase=ecl_config.getRefcase()) model_config = ModelConfig( data_root=config_dir, joblist=site_config.get_installed_jobs(), last_history_restart=ecl_config.getLastHistoryRestart(), refcase=ecl_config.getRefcase(), config_content=config_content) return [ subst_config, site_config, rng_config, analysis_config, ert_workflow_list, hook_manager, ert_templates, ecl_config, ensemble_config, model_config, log_config, queue_config ], config_dir
def test_init(self): with TestAreaContext("site_config_init_test") as work_area: work_area.copy_directory(self.case_directory) config_file = "simple_config/minimum_config" site_config = SiteConfig(user_config_file=config_file) self.assertIsNotNone(site_config)
def test_invalid_user_config(self): with TestAreaContext("void land"): with self.assertRaises(IOError): SiteConfig("this/is/not/a/file")
def __init__(self, user_config_file=None, config=None, throw_on_error=True): self._errors, self._failed_keys = None, None self._assert_input(user_config_file, config, throw_on_error) if config is not None: config_content = self._build_config_content(config) elif user_config_file is not None: parser = ConfigParser() config_content = self._alloc_config_content( user_config_file, parser) else: raise ValueError("No config provided") if self.errors and throw_on_error: raise ValueError("Error loading configuration: " + str(self._errors)) config_dir = config_content.getValue(ConfigKeys.CONFIG_DIRECTORY) subst_config = SubstConfig(config_content=config_content) site_config = SiteConfig(config_content=config_content) rng_config = RNGConfig(config_content=config_content) analysis_config = AnalysisConfig(config_content=config_content) ecl_config = EclConfig(config_content=config_content) log_config = LogConfig(config_content=config_content) queue_config = QueueConfig(config_content=config_content) ert_workflow_list = ErtWorkflowList( ert_workflow_list=subst_config.subst_list, config_content=config_content) hook_manager = HookManager(workflow_list=ert_workflow_list, config_content=config_content) ert_templates = ErtTemplates(parent_subst=subst_config.subst_list, config_content=config_content) ensemble_config = EnsembleConfig(config_content=config_content, grid=ecl_config.getGrid(), refcase=ecl_config.getRefcase()) model_config = ModelConfig( config_content=config_content, data_root=config_dir, joblist=site_config.get_installed_jobs(), last_history_restart=ecl_config.getLastHistoryRestart(), sched_file=ecl_config._get_sched_file(), refcase=ecl_config.getRefcase()) configs = [ subst_config, site_config, rng_config, analysis_config, ert_workflow_list, hook_manager, ert_templates, ecl_config, ensemble_config, model_config, log_config, queue_config ] c_ptr = None for conf in configs: conf.convertToCReference(None) c_ptr = self._alloc_full(config_dir, user_config_file, *configs) if c_ptr: super(ResConfig, self).__init__(c_ptr) else: raise ValueError( 'Failed to construct ResConfig instance from %r.' % (user_config_file if user_config_file else config))