예제 #1
0
def test_query_hit_analysis_lookup_writes(tmp_path: Path):
    'make sure analysis query cache is written to'
    cache_loc_1 = tmp_path / 'cache1'
    cache_loc_2 = tmp_path / 'cache2'

    c1 = Cache(cache_loc_1)
    c1.set_query({'hi': 'there'}, 'dude')
    update_local_query_cache(tmp_path / 'analysis_cache.json')
    assert c1.lookup_query({'hi': 'there'}) == 'dude'

    c2 = Cache(cache_loc_2)
    assert c2.lookup_query({'hi': 'there'}) == 'dude'
예제 #2
0
def test_query_hit_analysis_cache(tmp_path: Path):
    'Make sure the analysis cache is updated'
    cache_loc_1 = tmp_path / 'cache1'
    cache_loc_2 = tmp_path / 'cache2'

    update_local_query_cache(tmp_path / 'analysis_cache.json')

    c1 = Cache(cache_loc_1)
    c1.set_query({'hi': 'there'}, 'dude')

    c2 = Cache(cache_loc_2)
    assert c2.lookup_query({'hi': 'there'}) == 'dude'
예제 #3
0
def test_query_hit_analysis_cache_silent_read(tmp_path: Path):
    'Make sure we read the analysis cache if it happens to be present'
    cache_loc_1 = tmp_path / 'cache1'
    cache_loc_2 = tmp_path / 'cache2'

    update_local_query_cache()

    c1 = Cache(cache_loc_1)
    c1.set_query({'hi': 'there'}, 'dude')

    reset_local_query_cache()

    c2 = Cache(cache_loc_2)
    assert c2.lookup_query({'hi': 'there'}) == 'dude'
예제 #4
0
def test_query_hit_analysis_cache_removed_query_update(tmp_path: Path):
    'If we are updating the query cache, make sure to remove an item'
    cache_loc_1 = tmp_path / 'cache1'
    cache_loc_2 = tmp_path / 'cache2'

    update_local_query_cache()

    c1 = Cache(cache_loc_1)
    c1.set_query({'hi': 'there'}, 'dude')
    c1.remove_query({'hi': 'there'})

    reset_local_query_cache()

    c2 = Cache(cache_loc_2)
    assert c2.lookup_query({'hi': 'there'}) is None
예제 #5
0
def test_query_hit_analysis_cache_removed_query_noupdate(tmp_path: Path):
    'Make sure to forget a query when we are not updating the analysis cache'
    cache_loc_1 = tmp_path / 'cache1'
    cache_loc_2 = tmp_path / 'cache2'
    cache_loc_3 = tmp_path / 'cache3'

    update_local_query_cache()

    c1 = Cache(cache_loc_1)
    c1.set_query({'hi': 'there'}, 'dude')

    reset_local_query_cache()

    c2 = Cache(cache_loc_2)
    c2.remove_query({'hi': 'there'})
    assert c2.lookup_query({'hi': 'there'}) is None

    reset_local_query_cache()

    # Make sure that the json file wasn't modified in this case!
    c3 = Cache(cache_loc_3)
    assert c3.lookup_query({'hi': 'there'}) == 'dude'
예제 #6
0
def test_analysis_cache_set_twice_same(tmp_path: Path):
    'Make sure we cannot set with two different paths'
    update_local_query_cache(tmp_path / 'analysis_cache1.json')
    update_local_query_cache(tmp_path / 'analysis_cache1.json')
예제 #7
0
def test_analysis_cache_set_twice_different_paths(tmp_path: Path):
    'Make sure we cannot set with two different paths'
    update_local_query_cache(tmp_path / 'bogus1' / 'analysis_cache.json')
    with pytest.raises(ServiceXException):
        update_local_query_cache(tmp_path / 'bogus2' / 'analysis_cache.json')