예제 #1
0
 def test_invalid_res_config(self):
     with TestAreaContext("enkf_test") as work_area:
         with self.assertRaises(TypeError):
             work_area.copy_directory(self.case_directory)
             main = EnKFMain(res_config="This is not a ResConfig instance")
예제 #2
0
 def test_site_bootstrap(self):
     with TestAreaContext("enkf_test", store_area=True) as work_area:
         EnKFMain(None)
예제 #3
0
 def test_site_bootstrap(self):
     with TestAreaContext("enkf_test", store_area=True) as work_area:
         with self.assertRaises(ValueError):
             EnKFMain(None)
예제 #4
0
 def test_bootstrap(self):
     with TestAreaContext("enkf_test", store_area=True) as work_area:
         work_area.copy_directory(self.case_directory)
         res_config = ResConfig("simple_config/minimum_config")
         main = EnKFMain(res_config)
         self.assertTrue(main, "Load failed")
예제 #5
0
def test_tracking(
    experiment_folder,
    cmd_line_arguments,
    num_successful,
    num_iters,
    assert_present_in_snapshot,
    tmpdir,
    source_root,
):
    shutil.copytree(
        os.path.join(source_root, "test-data", "local",
                     f"{experiment_folder}"),
        os.path.join(str(tmpdir), f"{experiment_folder}"),
    )

    config_lines = [
        "INSTALL_JOB poly_eval2 POLY_EVAL\n"
        "SIMULATION_JOB poly_eval2\n"
    ]

    with tmpdir.as_cwd():
        with open(f"{experiment_folder}/poly.ert", "a") as fh:
            fh.writelines(config_lines)

        parser = ArgumentParser(prog="test_main")
        parsed = ert_parser(
            parser,
            cmd_line_arguments,
        )
        FeatureToggling.update_from_args(parsed)

        res_config = ResConfig(parsed.config)
        os.chdir(res_config.config_path)
        ert = EnKFMain(res_config, strict=True, verbose=parsed.verbose)
        notifier = ErtCliNotifier(ert, parsed.config)
        with ERT.adapt(notifier):

            model, argument = create_model(parsed)

            ee_config = None
            if FeatureToggling.is_enabled("ensemble-evaluator"):
                ee_config = EvaluatorServerConfig(
                    custom_port_range=range(1024, 65535))
                argument.update({"ee_config": ee_config})

            thread = threading.Thread(
                name="ert_cli_simulation_thread",
                target=model.start_simulations_thread,
                args=(argument, ),
            )
            thread.start()

            tracker = create_tracker(model,
                                     general_interval=1,
                                     detailed_interval=2,
                                     ee_config=ee_config)

            snapshots = {}

            for event in tracker.track():
                if isinstance(event, FullSnapshotEvent):
                    snapshots[event.iteration] = event.snapshot
                if isinstance(event, SnapshotUpdateEvent):
                    if event.partial_snapshot is not None:
                        snapshots[event.iteration].merge(
                            event.partial_snapshot.data())
                if isinstance(event, EndEvent):
                    pass

            assert tracker._progress() == 1.0

            assert len(snapshots) == num_iters
            for iter_, snapshot in snapshots.items():
                successful_reals = list(
                    filter(
                        lambda item: item[1].status == state.
                        REALIZATION_STATE_FINISHED,
                        snapshot.get_reals().items(),
                    ))
                assert len(successful_reals) == num_successful

            for (
                    iter_expression,
                    snapshot_expression,
                    expected,
            ) in assert_present_in_snapshot:
                for i, snapshot in snapshots.items():
                    if re.match(iter_expression, str(i)):
                        check_expression(
                            snapshot.to_dict(),
                            snapshot_expression,
                            expected,
                            f"Snapshot {i} did not match:\n",
                        )
            thread.join()
    FeatureToggling.reset()