import asyncio from binascii import unhexlify from lbry.testcase import IntegrationTestCase from lbry.service.full_node import FullNode from lbry.service.light_client import LightClient from lbry.blockchain.block import get_address_filter class LightClientTests(IntegrationTestCase): async def asyncSetUp(self): await super().asyncSetUp() await self.chain.generate(200) self.full_node_daemon = await self.make_full_node_daemon() self.full_node: FullNode = self.full_node_daemon.service self.light_client_daemon = await self.make_light_client_daemon(self.full_node_daemon, start=False) self.light_client: LightClient = self.light_client_daemon.service self.light_client.conf.wallet_storage = "database" self.addCleanup(self.light_client.client.disconnect) await self.light_client.client.connect() self.addCleanup(self.light_client.db.close) await self.light_client.db.open() self.addCleanup(self.light_client.wallets.close) await self.light_client.wallets.open() await self.light_client.client.start_event_streams() self.db = self.light_client.db self.sync = self.light_client.sync self.client = self.light_client.client self.account = self.light_client.wallets.default.accounts.default async def test_sync(self): self.assertEqual(await self.client.first.block_tip(), 200) self.assertEqual(await self.db.get_best_block_height(), -1) self.assertEqual(await self.db.get_missing_required_filters(200), {(2, 0, 100)}) await self.sync.start() self.assertEqual(await self.db.get_best_block_height(), 200) self.assertEqual(await self.db.get_missing_required_filters(200), set()) address = await self.account.receiving.get_or_create_usable_address() await self.chain.send_to_address(address, '5.0') await self.chain.generate(1) await self.assertBalance(self.account, '0.0') await self.sync.on_synced.first await self.assertBalance(self.account, '5.0')