/ tests / entities / test_run_data.py
test_run_data.py
 1  from mlflow.entities import RunData
 2  
 3  
 4  def _check_metrics(metric_objs, metrics_dict, expected_metrics):
 5      assert {m.key for m in metric_objs} == {m.key for m in expected_metrics}
 6      assert {m.value for m in metric_objs} == {m.value for m in expected_metrics}
 7      assert {m.timestamp for m in metric_objs} == {m.timestamp for m in expected_metrics}
 8      assert {m.step for m in metric_objs} == {m.step for m in expected_metrics}
 9      assert len(metrics_dict) == len(expected_metrics)
10      assert metrics_dict == {m.key: m.value for m in expected_metrics}
11  
12  
13  def _check_params(params_dict, expected_params):
14      assert params_dict == {p.key: p.value for p in expected_params}
15  
16  
17  def _check_tags(tags_dict, expected_tags):
18      assert tags_dict == {t.key: t.value for t in expected_tags}
19  
20  
21  def _check(rd, metrics, params, tags):
22      assert isinstance(rd, RunData)
23      _check_metrics(rd._metric_objs, rd.metrics, metrics)
24      _check_params(rd.params, params)
25      _check_tags(rd.tags, tags)
26  
27  
28  def test_creation_and_hydration(run_data):
29      rd, metrics, params, tags = run_data
30      _check(rd, metrics, params, tags)
31      as_dict = {
32          "metrics": {m.key: m.value for m in metrics},
33          "params": {p.key: p.value for p in params},
34          "tags": {t.key: t.value for t in tags},
35      }
36      assert dict(rd) == as_dict
37      proto = rd.to_proto()
38      rd2 = RunData.from_proto(proto)
39      _check(rd2, metrics, params, tags)