add reconnection test

This commit is contained in:
Victor Shyba 2018-10-11 00:07:38 -03:00 committed by Lex Berezhny
parent b999abb9ea
commit 36ad834d43
2 changed files with 34 additions and 0 deletions

View file

@ -0,0 +1,33 @@
import asyncio
from orchstr8.testcase import IntegrationTestCase, d2f
from torba.constants import COIN
class ReconnectTests(IntegrationTestCase):
VERBOSE = False
async def test_connection_drop_still_receives_events_after_reconnected(self):
address1 = await d2f(self.account.receiving.get_or_create_usable_address())
self.ledger.network.client.connectionLost()
sendtxid = await self.blockchain.send_to_address(address1, 1.1337)
await self.on_transaction_id(sendtxid) # mempool
await self.blockchain.generate(1)
await self.on_transaction_id(sendtxid) # confirmed
self.assertEqual(round(await self.get_balance(self.account)/COIN, 4), 1.1337)
# is it real? are we rich!? let me see this tx...
d = self.ledger.network.get_transaction(sendtxid)
# what's that smoke on my ethernet cable? oh no!
self.ledger.network.client.connectionLost()
with self.assertRaisesRegex(TimeoutError, 'Connection dropped'):
await d2f(d)
# rich but offline? no way, no water, let's retry
with self.assertRaisesRegex(ConnectionError, 'connection is not available'):
await d2f(self.ledger.network.get_transaction(sendtxid))
# * goes to pick some water outside... * time passes by and another donation comes in
sendtxid = await self.blockchain.send_to_address(address1, 42)
await self.blockchain.generate(1)
# omg, the burned cable still works! torba is fire proof!
await d2f(self.ledger.network.get_transaction(sendtxid))

View file

@ -20,5 +20,6 @@ commands =
unit: coverage run -p --source={envsitepackagesdir}/torba -m twisted.trial unit unit: coverage run -p --source={envsitepackagesdir}/torba -m twisted.trial unit
integration: orchstr8 download integration: orchstr8 download
integration: coverage run -p --source={envsitepackagesdir}/torba -m twisted.trial --reactor=asyncio integration.test_transactions integration: coverage run -p --source={envsitepackagesdir}/torba -m twisted.trial --reactor=asyncio integration.test_transactions
integration: coverage run -p --source={envsitepackagesdir}/torba -m twisted.trial --reactor=asyncio integration.test_reconnect
# Too slow on Travis # Too slow on Travis
# integration: coverage run -p --source={envsitepackagesdir}/torba -m twisted.trial --reactor=asyncio integration.test_blockchain_reorganization # integration: coverage run -p --source={envsitepackagesdir}/torba -m twisted.trial --reactor=asyncio integration.test_blockchain_reorganization