Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    def test_workflow_list_constructor(self):
        with TestAreaContext("ert_workflow_list_test") as work_area:

            ERT_SITE_CONFIG = SiteConfig.getLocation()
            ERT_SHARE_PATH = os.path.dirname(ERT_SITE_CONFIG)

            self.config_dict = {
                ConfigKeys.LOAD_WORKFLOW_JOB: [{
                    ConfigKeys.NAME:
                    "print_uber",
                    ConfigKeys.PATH:
                    os.getcwd() + "/simple_config/workflows/UBER_PRINT",
                }],
                ConfigKeys.LOAD_WORKFLOW: [{
                    ConfigKeys.NAME:
                    "magic_print",
                    ConfigKeys.PATH:
                    os.getcwd() + "/simple_config/workflows/MAGIC_PRINT",
                }],
                ConfigKeys.WORKFLOW_JOB_DIRECTORY: [
                    ERT_SHARE_PATH + "/workflows/jobs/shell",
                    ERT_SHARE_PATH + "/workflows/jobs/internal/config",
                    ERT_SHARE_PATH + "/workflows/jobs/internal-gui/config",
                ],
            }

            work_area.copy_directory(self.case_directory)

            config_file = "simple_config/minimum_config"
            with open(config_file, "a+") as ert_file:
                ert_file.write(
                    "LOAD_WORKFLOW_JOB workflows/UBER_PRINT print_uber\n")
                ert_file.write(
                    "LOAD_WORKFLOW workflows/MAGIC_PRINT magic_print\n")

            os.mkdir("simple_config/workflows")

            with open("simple_config/workflows/MAGIC_PRINT", "w") as f:
                f.write("print_uber\n")
            with open("simple_config/workflows/UBER_PRINT", "w") as f:
                f.write("EXECUTABLE ls\n")

            res_config = ResConfig(config_file)
            list_from_content = res_config.ert_workflow_list
            list_from_dict = ErtWorkflowList(
                subst_list=res_config.subst_config.subst_list,
                config_dict=self.config_dict,
            )
            self.assertEqual(list_from_content, list_from_dict)
Ejemplo n.º 6
0
    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__())
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 def test_invalid_user_config(self):
     with TestAreaContext("void land"):
         with self.assertRaises(IOError):
             SiteConfig("this/is/not/a/file")
Ejemplo n.º 9
0
    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))