Beispiel #1
0
def test_halflife():
    s = Scorer(1)
    a = s.touch('x', 10)
    b = s.touch('y', 1)
    b = s.touch('y', 1)
    b = s.touch('y', 1)
    b = s.touch('y', 1)
    assert b > a
Beispiel #2
0
def test_Scorer():
    s = Scorer(10)

    a = s.touch('x', 10)
    b = s.touch('y', 1)
    assert a > b

    a = s.touch('x')
    b = s.touch('x')
    assert a < b
Beispiel #3
0
def test_scoring(flowmachine_connect):
    """
    Test that score updating algorithm is correct by comparing to cachey as reference implementation
    """
    dl = daily_location("2016-01-01").store().result()
    dl_time = get_compute_time(get_db(), dl.query_id)
    dl_size = get_size_of_table(get_db(), dl.table_name, "cache")
    initial_score = get_score(get_db(), dl.query_id)
    cachey_scorer = Scorer(halflife=1000.0)
    cache_score = cachey_scorer.touch("dl", dl_time / dl_size)
    assert cache_score == pytest.approx(initial_score)

    # Touch again
    new_score = touch_cache(get_db(), dl.query_id)
    updated_cache_score = cachey_scorer.touch("dl")
    assert updated_cache_score == pytest.approx(new_score)

    # Add another unrelated cache record, which should have a higher initial score
    dl_2 = daily_location("2016-01-02").store().result()
    dl_time = get_compute_time(get_db(), dl_2.query_id)
    dl_size = get_size_of_table(get_db(), dl_2.table_name, "cache")
    cache_score = cachey_scorer.touch("dl_2", dl_time / dl_size)
    assert cache_score == pytest.approx(get_score(get_db(), dl_2.query_id))