Exemple #1
0
def run(script_path, configuration_path, ref_path, args, tags, name):
    """Runs an experiment"""
    setup = ExperimentSetup(name=name,
                            script_path=script_path,
                            configuration_path=configuration_path,
                            args=args,
                            tags=tags,
                            reference_configuration_path=ref_path)
    api.run(setup=setup)
def test_run_experiment_with_error(file_setup, capsys, jikken_db, mocker):
    mocker.patch.object(jikken.api,
                        'setup_database',
                        return_value=setup_database_stub(jikken_db))
    conf_path, script_path, config_json = file_setup
    extra_args = ["--error=True"]
    setup = ExperimentSetup(name="test",
                            configuration_path=conf_path,
                            script_path=script_path,
                            args=extra_args)
    run(setup=setup)
    out, err = capsys.readouterr()
    assert out[-19:] == '\nExperiment Failed\n'
def test_run_experiment_given_script_and_config(file_setup, capsys, jikken_db,
                                                mocker):
    mocker.patch.object(jikken.api,
                        'setup_database',
                        return_value=setup_database_stub(jikken_db))
    conf_path, script_path, config_json = file_setup
    setup = ExperimentSetup(name="test",
                            configuration_path=conf_path,
                            script_path=script_path)
    run(setup=setup)
    out, err = capsys.readouterr()
    expected_output = json.dumps(config_json)
    assert out[2:246] == expected_output
    assert out[-17:] == '\nExperiment Done\n'
def test_run_experiment_with_extra_args(file_setup, capsys, jikken_db, mocker):
    mocker.patch.object(jikken.api,
                        'setup_database',
                        return_value=setup_database_stub(jikken_db))
    conf_path, script_path, config_json = file_setup
    extra_args = ["--var1=1", "--var2=false"]
    setup = ExperimentSetup(name="test",
                            configuration_path=conf_path,
                            script_path=script_path,
                            args=extra_args)
    run(setup=setup)
    out, err = capsys.readouterr()
    expected_output = json.dumps(config_json)
    assert out[2:246] == expected_output
    assert out[-38:-31] == "var1= 1"
    assert out[-29:-18] == "var2= false"
    assert out[-17:] == '\nExperiment Done\n'
def test_run_experiment_and_experiment_is_added_to_database(
        file_setup, jikken_db, capsys, mocker):
    # GIVEN a conf_path and a script_path
    conf_path, script_path, config_json = file_setup
    tags = ["test", 'hi']
    mocker.patch.object(jikken.api,
                        'setup_database',
                        return_value=setup_database_stub(jikken_db))
    # WHEN I run an experiment
    setup = ExperimentSetup(name="test",
                            configuration_path=conf_path,
                            script_path=script_path,
                            tags=tags)
    run(setup=setup)
    # THEN the experiment gets added to the database
    assert jikken_db.count() == 1
    # And the stdout should have added the captured expected_output
    expected_output = json.dumps(config_json)
    exp = jikken_db.list_experiments()[0]
    assert exp['stdout'][2:-3] == expected_output