retriable resolve

This commit is contained in:
Victor Shyba 2019-09-16 05:26:32 -03:00 committed by Lex Berezhny
parent 9c5b4e3cc9
commit 4a6af0b938
2 changed files with 9 additions and 1 deletions

View file

@ -1,6 +1,7 @@
import asyncio
import logging
from binascii import unhexlify
from functools import partial
from typing import Tuple, List
from datetime import datetime
@ -60,7 +61,8 @@ class MainNetLedger(BaseLedger):
return outputs.inflate(txs), outputs.offset, outputs.total
async def resolve(self, urls):
txos = (await self._inflate_outputs(self.network.resolve(urls)))[0]
resolve = partial(self.network.retriable_call, self.network.resolve)
txos = (await self._inflate_outputs(resolve(urls)))[0]
assert len(urls) == len(txos), "Mismatch between urls requested for resolve and responses received."
result = {}
for url, txo in zip(urls, txos):

View file

@ -86,6 +86,12 @@ class ResolveCommand(BaseResolveTestCase):
self.assertEqual(claim['name'], 'gibberish')
self.assertNotIn('value', claim)
# resolve retries
await self.conductor.spv_node.stop()
resolving_future = asyncio.ensure_future(self.resolve('foo'))
await self.conductor.spv_node.start(self.conductor.blockchain_node)
self.assertIsNotNone((await resolving_future)['foo']['claim_id'])
async def test_winning_by_effective_amount(self):
# first one remains winner unless something else changes
claim_id1 = self.get_claim_id(