Ejemplo n.º 1
0
def test_load_by_id():
    ds = new_data_set("test-dataset")
    run_id = ds.run_id
    ds.mark_started()
    ds.mark_completed()

    loaded_ds = load_by_id(run_id)
    assert ds.started is True
    assert ds.pristine is False
    assert ds.running is False
    assert loaded_ds.completed is True
    assert loaded_ds.exp_id == 1

    ds = new_data_set("test-dataset-unfinished")
    run_id = ds.run_id

    loaded_ds = load_by_id(run_id)
    assert ds.pristine is True
    assert ds.running is False
    assert ds.started is False
    assert loaded_ds.completed is False
    assert loaded_ds.exp_id == 1

    # let's take a run number that is not in the temporary test database file
    non_existing_run_id = run_id + 1
    with pytest.raises(ValueError,
                       match=f"Run with run_id "
                       f"{non_existing_run_id} does not "
                       f"exist in the database"):
        _ = load_by_id(non_existing_run_id)
Ejemplo n.º 2
0
def test_load_by_id():
    ds = new_data_set("test-dataset")
    run_id = ds.run_id
    ds.mark_complete()

    loaded_ds = load_by_id(run_id)
    assert loaded_ds.completed is True
    assert loaded_ds.exp_id == 1

    ds = new_data_set("test-dataset-unfinished")
    run_id = ds.run_id

    loaded_ds = load_by_id(run_id)
    assert loaded_ds.completed is False
    assert loaded_ds.exp_id == 1
Ejemplo n.º 3
0
def test_experiment_info_in_dataset():
    exp = new_experiment(name="for_loading", sample_name="no_sample")
    ds = new_data_set("my_first_ds")

    assert ds.exp_id == exp.exp_id
    assert ds.exp_name == exp.name
    assert ds.sample_name == exp.sample_name
Ejemplo n.º 4
0
def test_completed_timestamp_for_not_completed_dataset():
    _ = new_experiment(name="for_loading", sample_name="no_sample")
    ds = new_data_set("my_first_ds")

    assert False is ds.completed

    assert None is ds.completed_timestamp_raw

    assert None is ds.completed_timestamp()
Ejemplo n.º 5
0
def test_run_timestamp():
    _ = new_experiment(name="for_loading", sample_name="no_sample")

    t_before_data_set = time.time()
    ds = new_data_set("my_first_ds")
    t_after_data_set = time.time()

    actual_run_timestamp_raw = ds.run_timestamp_raw

    assert t_before_data_set <= actual_run_timestamp_raw <= t_after_data_set
Ejemplo n.º 6
0
    def new_data_set(self, name, specs: SPECS = None, values=None,
                     metadata=None) -> DataSet:
        """ Create a new dataset in this experimetn

        Args:
            name: the name of the new dataset
            specs: list of parameters to create this data_set with
            values: the values to associate with the parameters
            metadata:  the values to associate with the dataset
        """
        return new_data_set(name, self.exp_id, specs, values, metadata)
Ejemplo n.º 7
0
def test_load_by_counter():
    exp = new_experiment(name="for_loading", sample_name="no_sample")
    ds = new_data_set("my_first_ds")

    loaded_ds = load_by_counter(exp.exp_id, 1)

    assert loaded_ds.completed is False

    ds.mark_complete()
    loaded_ds = load_by_counter(exp.exp_id, 1)

    assert loaded_ds.completed is True
Ejemplo n.º 8
0
def test_completed_timestamp_for_not_completed_dataset():
    _ = new_experiment(name="for_loading", sample_name="no_sample")
    ds = new_data_set("my_first_ds")

    assert ds.pristine is True
    assert ds.started is False
    assert ds.running is False
    assert ds.completed is False

    assert ds.completed_timestamp_raw is None

    assert ds.completed_timestamp() is None
Ejemplo n.º 9
0
def test_get_guids_from_run_spec_warns():
    ds = new_data_set("test-dataset")
    run_id = ds.run_id
    ds.mark_started()
    ds.mark_completed()
    expected_guid = ds.guid
    with pytest.warns(
        expected_warning=QCoDeSDeprecationWarning, match="Unused part of private api"
    ):
        loaded_guids = get_guids_from_run_spec(captured_run_id=run_id, conn=ds.conn)
    assert len(loaded_guids) == 1
    assert loaded_guids[0] == expected_guid
Ejemplo n.º 10
0
def test_completed_timestamp():
    _ = new_experiment(name="for_loading", sample_name="no_sample")
    ds = new_data_set("my_first_ds")

    t_before_complete = time.time()
    ds.mark_complete()
    t_after_complete = time.time()

    actual_completed_timestamp_raw = ds.completed_timestamp_raw

    assert t_before_complete \
           <= actual_completed_timestamp_raw \
           <= t_after_complete
Ejemplo n.º 11
0
def test_get_run_attributes() -> None:
    name = "test-dataset"
    ds = new_data_set(name)
    ds.mark_started()
    ds.mark_completed()
    ds.add_metadata("foo", "bar")

    loaded_raw_attrs = get_raw_run_attributes(ds.conn, ds.guid)
    assert loaded_raw_attrs is not None

    assert loaded_raw_attrs["run_id"] == ds.run_id
    assert loaded_raw_attrs["counter"] == ds.counter
    assert loaded_raw_attrs["captured_counter"] == ds.captured_counter
    assert loaded_raw_attrs["captured_run_id"] == ds.captured_run_id
    assert loaded_raw_attrs["captured_run_id"] == ds.captured_run_id
    assert loaded_raw_attrs["experiment"] == get_experiment_attributes_by_exp_id(
        ds.conn, ds.exp_id
    )
    assert loaded_raw_attrs["experiment"]["exp_id"] == ds.exp_id
    assert loaded_raw_attrs["experiment"]["name"] == ds.exp_name
    assert loaded_raw_attrs["experiment"]["sample_name"] == ds.sample_name
    assert loaded_raw_attrs["name"] == name
    assert loaded_raw_attrs["run_timestamp"] == ds.run_timestamp_raw
    assert loaded_raw_attrs["completed_timestamp"] == ds.completed_timestamp_raw
    assert loaded_raw_attrs["parent_dataset_links"] == "[]"
    assert "interdependencies" in loaded_raw_attrs["run_description"]
    assert loaded_raw_attrs["snapshot"] is None
    assert loaded_raw_attrs["metadata"] == {"foo": "bar"}

    loaded_attrs = get_run_attributes(ds.conn, ds.guid)
    assert loaded_attrs is not None

    assert loaded_attrs["run_id"] == ds.run_id
    assert loaded_attrs["counter"] == ds.counter
    assert loaded_attrs["captured_counter"] == ds.captured_counter
    assert loaded_attrs["captured_run_id"] == ds.captured_run_id
    assert loaded_attrs["captured_run_id"] == ds.captured_run_id
    assert loaded_attrs["experiment"] == get_experiment_attributes_by_exp_id(
        ds.conn, ds.exp_id
    )
    assert loaded_attrs["experiment"]["exp_id"] == ds.exp_id
    assert loaded_attrs["name"] == name
    assert loaded_attrs["run_timestamp"] == raw_time_to_str_time(ds.run_timestamp_raw)
    assert loaded_attrs["completed_timestamp"] == raw_time_to_str_time(
        ds.completed_timestamp_raw
    )
    assert loaded_attrs["parent_dataset_links"] == []
    assert isinstance(loaded_attrs["run_description"], RunDescriber)
    assert loaded_attrs["snapshot"] is None
    assert loaded_attrs["metadata"] == {"foo": "bar"}
Ejemplo n.º 12
0
    def new_data_set(self, name: str,
                     specs: Optional[SPECS] = None,
                     values: Optional[VALUES] = None,
                     metadata: Optional[Any] = None) -> DataSet:
        """
        Create a new dataset in this experiment

        Args:
            name: the name of the new dataset
            specs: list of parameters (as ParamSpecs) to create this data_set
                with
            values: the values to associate with the parameters
            metadata: the metadata to associate with the dataset
        """
        return new_data_set(name, self.exp_id, specs, values, metadata,
                            conn=self.conn)
Ejemplo n.º 13
0
def test_run_timestamp_with_default_format():
    _ = new_experiment(name="for_loading", sample_name="no_sample")

    t_before_data_set = time.time()
    ds = new_data_set("my_first_ds")
    t_after_data_set = time.time()

    # Note that here we also test the default format of `run_timestamp`
    actual_run_timestamp_raw = time.mktime(
        time.strptime(ds.run_timestamp(), "%Y-%m-%d %H:%M:%S"))

    # Note that because the default format precision is 1 second, we add this
    # second to the right side of the comparison
    t_before_data_set_secs = floor(t_before_data_set)
    t_after_data_set_secs = floor(t_after_data_set)
    assert t_before_data_set_secs \
           <= actual_run_timestamp_raw \
           <= t_after_data_set_secs + 1
Ejemplo n.º 14
0
def dataset(experiment):
    dataset = new_data_set("test-dataset")
    yield dataset
    dataset.conn.close()