lbry-sdk/tests/integration/service/test_daemon.py

47 lines
1.5 KiB
Python
Raw Normal View History

2020-08-20 16:43:44 +02:00
import os
import time
import asyncio
import signal
from threading import Thread
from unittest import TestCase
from lbry import Daemon, FullNode
2020-09-03 18:55:31 +02:00
from lbry.cli import execute_command
2020-08-20 16:43:44 +02:00
from lbry.blockchain.lbrycrd import Lbrycrd
2020-09-03 18:55:31 +02:00
from lbry.testcase import CommandTestCase
2020-08-20 16:43:44 +02:00
class TestShutdown(TestCase):
def test_graceful_fail(self):
chain_loop = asyncio.new_event_loop()
asyncio.set_event_loop(chain_loop)
chain = Lbrycrd.temp_regtest()
self.addCleanup(lambda: chain_loop.run_until_complete(chain.stop()))
self.addCleanup(lambda: asyncio.set_event_loop(chain_loop))
chain_loop.run_until_complete(chain.ensure())
chain_loop.run_until_complete(chain.start())
chain_loop.run_until_complete(chain.generate(1))
2020-09-17 01:50:51 +02:00
chain.ledger.conf.set(workers=2, console='none')
daemon = Daemon.from_config(FullNode, chain.ledger.conf)
2020-08-20 16:43:44 +02:00
def send_signal():
time.sleep(2)
os.kill(os.getpid(), signal.SIGTERM)
thread = Thread(target=send_signal)
thread.start()
daemon.run()
2020-09-03 18:55:31 +02:00
class WebSocketAPITestCase(CommandTestCase):
async def test_api_failure_over_websocket_doesnt_hang(self):
self.assertEqual(
await asyncio.wait_for(
execute_command(self.daemon.conf, 'resolve', {'crazyparameters': 'not there'}),
timeout=1
),
"unexpected error: resolve() got an unexpected keyword argument 'crazyparameters'"
)