コード例 #1
0
ファイル: test_cache_group.py プロジェクト: G3niusMind/jussi
async def test_cache_group_cache_jsonrpc_response(
        steemd_requests_and_responses):
    caches = [
        CacheGroupItem(SimpleMaxTTLMemoryCache(), True, True, SpeedTier.FAST),
        CacheGroupItem(SimpleMemoryCache2(), True, True, SpeedTier.FAST),
        CacheGroupItem(SimpleMemoryCache3(), True, True, SpeedTier.FAST),
        CacheGroupItem(SimpleMemoryCache4(), True, True, SpeedTier.FAST)
    ]
    for cache_item in caches:
        await cache_item.cache.clear()

    cache_group = CacheGroup(caches)
    req, resp = steemd_requests_and_responses
    req = JussiJSONRPCRequest.from_request(dummy_request, 0, req)
    resp['jsonrpc'] = '2.0'
    key = jsonrpc_cache_key(req)

    assert await cache_group.get(key) is None
    await cache_group.set('last_irreversible_block_num', 15_000_000)
    await cache_group.cache_jsonrpc_response(req, resp)

    for cache_item in caches:
        assert await cache_item.cache.get(key
                                          ) == resp, f'key:{key} urn:{req.urn}'
    assert await cache_group.get(key) == resp, f'key:{key} urn:{req.urn}'
コード例 #2
0
async def test_cache_group_get_batch_jsonrpc_responses(
        steemd_requests_and_responses):
    caches = [
        SimpleMaxTTLMemoryCache(),
        SimpleMemoryCache2(),
        SimpleMemoryCache3(),
        SimpleMemoryCache4()
    ]
    for cache in caches:
        await cache.clear()

    cache_group = CacheGroup(caches)

    req, resp = steemd_requests_and_responses
    req = JussiJSONRPCRequest.from_request(dummy_request, 0, req)
    resp['jsonrpc'] = '2.0'
    batch_req = [req, req, req]
    batch_resp = [resp, resp, resp]
    key = jsonrpc_cache_key(req)
    assert await cache_group.get(key) is None
    await cache_group.set('last_irreversible_block_num', 15_000_000)
    await cache_group.cache_jsonrpc_response(batch_req, batch_resp)
    assert await cache_group.get(key) == resp
    assert await cache_group.get_batch_jsonrpc_responses(batch_req
                                                         ) == batch_resp
コード例 #3
0
def cache_get_batch(loop, caches, cached, jrpc_batch_req, expected):
    for cache in caches:
        loop.run_until_complete(cache.clear())

    for item in cached:
        if 'id' in cached:
            del cached['id']
        key = jsonrpc_cache_key(item)
        for cache in caches:
            loop.run_until_complete(cache.set(key, item, ttl=None))

    results = loop.run_until_complete(cache_get_batch(caches, jrpc_batch_req))
    assert results == expected
コード例 #4
0
async def test_cache_group_cache_batch_jsonrpc_responses():
    batch_req = [
        jsonrpc_from_request(dummy_request, _id, {
            "id": _id,
            "jsonrpc": "2.0",
            "method": "get_block",
            "params": [_id]
        }) for _id in range(1, 10)
    ]

    batch_resp = [{
        'id': _id,
        "jsonrpc": "2.0",
        'result': {
            "previous": "000003e7c4fd3221cf407efcf7c1730e2ca54b05",
            "timestamp": "2016-03-24T16:55:30",
            "witness": "initminer",
            "transaction_merkle_root":
            "0000000000000000000000000000000000000000",
            "extensions": [],
            "witness_signature":
            "207f15578cac20ac0e8af1ebb8f463106b8849577e21cca9fc60da146d1d95df88072dedc6ffb7f7f44a9185bbf9bf8139a5b4285c9f423843720296a44d428856",
            "transactions": [],
            "block_id": "000003e8b922f4906a45af8e99d86b3511acd7a5",
            "signing_key":
            "STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX",
            "transaction_ids": []
        }
    } for _id in range(1, 10)]

    caches = [
        CacheGroupItem(build_mocked_cache(), True, True, SpeedTier.FAST),
        CacheGroupItem(build_mocked_cache(), True, True, SpeedTier.FAST),
        CacheGroupItem(build_mocked_cache(), True, True, SpeedTier.FAST)
    ]
    cache_group = CacheGroup(caches)

    keys = [jsonrpc_cache_key(req) for req in batch_req]
    await cache_group.set('last_irreversible_block_num', 15_000_000, 180)
    await cache_group.cache_batch_jsonrpc_response(batch_req, batch_resp)

    for i, key in enumerate(keys):
        assert cache_group._memory_cache.gets(key) == batch_resp[i]
        assert await caches[0].cache.get(key) == batch_resp[i]
        assert await caches[1].cache.get(key) == batch_resp[i]
        assert await caches[2].cache.get(key) == batch_resp[i]
        assert await cache_group.get(key) == batch_resp[i]
コード例 #5
0
async def test_cache_group_get_single_jsonrpc_response(
        steemd_requests_and_responses):
    caches = [
        SimpleMaxTTLMemoryCache(),
        SimpleMemoryCache2(),
        SimpleMemoryCache3(),
        SimpleMemoryCache4()
    ]
    for cache in caches:
        await cache.clear()

    cache_group = CacheGroup(caches)
    req, resp = steemd_requests_and_responses
    resp['jsonrpc'] = '2.0'
    key = jsonrpc_cache_key(req)
    assert await cache_group.get(key) is None
    await cache_group.cache_jsonrpc_response(req, resp, 15_000_000)
    assert await cache_group.get(key) == resp
    assert await cache_group.get_single_jsonrpc_response(req) == resp
    for cache in caches:
        assert await cache.get(key) == resp
コード例 #6
0
async def test_cache_group_get_single_jsonrpc_response(
        steemd_request_and_response):
    caches = [
        CacheGroupItem(build_mocked_cache(), True, True, SpeedTier.FAST),
        CacheGroupItem(build_mocked_cache(), True, True, SpeedTier.FAST),
        CacheGroupItem(build_mocked_cache(), True, True, SpeedTier.FAST)
    ]
    cache_group = CacheGroup(caches)

    cache_group = CacheGroup(caches)
    req, resp = steemd_request_and_response
    req = jsonrpc_from_request(dummy_request, 0, req)
    resp['jsonrpc'] = '2.0'
    key = jsonrpc_cache_key(req)
    assert await cache_group.get(key) is None
    await cache_group.set('last_irreversible_block_num', 15_000_000, 180)
    await cache_group.cache_single_jsonrpc_response(req, resp)
    assert await cache_group.get(key) == resp
    assert await cache_group.get_single_jsonrpc_response(req) == resp
    cache_group._memory_cache.clears()
    assert await cache_group.get_single_jsonrpc_response(req) == resp

    for cache_item in caches:
        assert await cache_item.cache.get(key) == resp
コード例 #7
0
def test_cache_group_x_jussi_cache_key(steemd_requests_and_responses):
    req, resp = steemd_requests_and_responses
    req = JussiJSONRPCRequest.from_request(dummy_request, 0, req)
    batch_req = [req, req, req]
    assert jsonrpc_cache_key(req) == CacheGroup.x_jussi_cache_key(req)
    assert CacheGroup.x_jussi_cache_key(batch_req) == 'batch'
コード例 #8
0
def test_cache_group_x_jussi_cache_key(steemd_requests_and_responses):
    req, resp = steemd_requests_and_responses
    batch_req = [req, req, req]
    assert jsonrpc_cache_key(req) == CacheGroup.x_jussi_cache_key(req)
    assert CacheGroup.x_jussi_cache_key(batch_req) == 'batch'
コード例 #9
0
def test_cache_key(urn_test_requests):
    jsonrpc_request, urn, url, ttl, timeout, jussi_request = urn_test_requests
    result = jsonrpc_cache_key(jussi_request)
    assert result == urn
コード例 #10
0
def test_cache_key(jsonrpc_request, expected):
    result = jsonrpc_cache_key(jsonrpc_request)
    assert result == expected