Code Duplication    Length = 19-25 lines in 2 locations

tests/test_metrics_logger.py 2 locations

@@ 14-38 (lines=25) @@
11
    return Experiment("Test experiment")
12
13
14
def test_log_scalar_metric_with_run(ex):
15
    START = 10
16
    END = 100
17
    STEP_SIZE = 5
18
    messages = {}
19
    @ex.main
20
    def main_function(_run):
21
        # First, make sure the queue is empty:
22
        assert len(ex.current_run._metrics.get_last_metrics()) == 0
23
        for i in range(START, END, STEP_SIZE):
24
            val = i*i
25
            _run.log_scalar("training.loss", val, i)
26
        messages["messages"] = ex.current_run._metrics.get_last_metrics()
27
        """Calling get_last_metrics clears the metrics logger internal queue.
28
        If we don't call it here, it would be called during Sacred heartbeat 
29
        event after the run finishes, and the data we want to test would 
30
        be lost."""
31
    ex.run()
32
    assert ex.current_run is not None
33
    messages = messages["messages"]
34
    assert len(messages) == (END - START)/STEP_SIZE
35
    for i in range(len(messages)-1):
36
        assert messages[i].step < messages[i+1].step
37
        assert messages[i].step == START + i * STEP_SIZE
38
        assert messages[i].timestamp <= messages[i + 1].timestamp
39
40
41
def test_log_scalar_metric_with_ex(ex):
@@ 41-59 (lines=19) @@
38
        assert messages[i].timestamp <= messages[i + 1].timestamp
39
40
41
def test_log_scalar_metric_with_ex(ex):
42
    messages = {}
43
    START = 10
44
    END = 100
45
    STEP_SIZE = 5
46
    @ex.main
47
    def main_function(_run):
48
        for i in range(START, END, STEP_SIZE):
49
            val = i*i
50
            ex.log_scalar("training.loss", val, i)
51
        messages["messages"] = ex.current_run._metrics.get_last_metrics()
52
    ex.run()
53
    assert ex.current_run is not None
54
    messages = messages["messages"]
55
    assert len(messages) == (END - START) / STEP_SIZE
56
    for i in range(len(messages)-1):
57
        assert messages[i].step < messages[i+1].step
58
        assert messages[i].step == START + i * STEP_SIZE
59
        assert messages[i].timestamp <= messages[i + 1].timestamp
60
61
62
def test_log_scalar_metric_with_implicit_step(ex):