Shorter reconnection delay
This commit is contained in:
1 parent
8a8cb02296
commit
8cc2ae32df
4 files changed
+64
-25
No files matched your search
@@ -11,7 +11,7 @@ import aiohttp
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'apps'))
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'apps' / 'ad_toolbox'))
|
||||
from SamsungTheFrameAsync import SamsungTheFrame, TVError, _TVConnection
|
||||
from samsungtheframeasync import SamsungTheFrame, TVError, _TVConnection
|
||||
|
||||
|
||||
def message(data):
|
||||
@@ -231,6 +231,22 @@ class ApplicationTests(unittest.IsolatedAsyncioTestCase):
|
||||
app.app_list = []
|
||||
return app
|
||||
|
||||
async def test_fresh_target_shortens_idle_reconnect_delay(self):
|
||||
app = self.app()
|
||||
app._retry_at = app._loop.time() + 60
|
||||
app._transition = AsyncMock(return_value=None)
|
||||
app._set_target('hdmi')
|
||||
self.assertLessEqual(app._retry_at - app._loop.time(), 2)
|
||||
await app._target_task
|
||||
|
||||
async def test_wake_rechecks_after_ten_seconds(self):
|
||||
app = self.app()
|
||||
app.args['wake_up_service'] = 'esphome/wake_tv'
|
||||
app.get_state = AsyncMock(side_effect=lambda e: 'on' if e == app.power_plug else '0')
|
||||
self.assertEqual(await app._transition('hdmi'), 10)
|
||||
app.call_service.assert_awaited_once_with('esphome/wake_tv')
|
||||
app._client.send_key.assert_not_awaited()
|
||||
|
||||
async def asyncTearDown(self):
|
||||
tasks = [t for t in asyncio.all_tasks() if t is not asyncio.current_task()]
|
||||
for task in tasks:
|
||||
@@ -252,7 +268,7 @@ class ApplicationTests(unittest.IsolatedAsyncioTestCase):
|
||||
app.listen_state = Mock()
|
||||
app._post = Mock()
|
||||
app.create_task = Mock(side_effect=lambda coro: coro.close())
|
||||
with patch('SamsungTheFrameAsync.EventHandler') as handler:
|
||||
with patch('samsungtheframeasync.EventHandler') as handler:
|
||||
app.on_initialize_smart_object()
|
||||
self.assertEqual(app.listen_state.call_count, 3)
|
||||
self.assertEqual(handler.call_count, 2)
|
||||
@@ -343,7 +359,7 @@ class ApplicationTests(unittest.IsolatedAsyncioTestCase):
|
||||
app.get_state.side_effect = None
|
||||
self.assertIsNone(await app._transition('power_off'))
|
||||
app.turn_on.assert_not_called()
|
||||
self.assertEqual(await app._transition('art_mode'), 60)
|
||||
self.assertEqual(await app._transition('art_mode'), 5)
|
||||
app.turn_on.assert_awaited_once_with(app.power_plug)
|
||||
app._client.art_request.assert_not_called()
|
||||
|
||||
@@ -379,7 +395,7 @@ class ApplicationTests(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_monitor_coalesces_sensor_bursts_and_shutdown_closes_client(self):
|
||||
app = self.app()
|
||||
client = app._client
|
||||
with patch('SamsungTheFrameAsync._TVConnection', return_value=client):
|
||||
with patch('samsungtheframeasync._TVConnection', return_value=client):
|
||||
task = asyncio.create_task(app._run())
|
||||
await asyncio.sleep(.02)
|
||||
for _ in range(30):
|
||||
@@ -402,7 +418,7 @@ class ApplicationTests(unittest.IsolatedAsyncioTestCase):
|
||||
app.args['reconnect_delay'] = .5
|
||||
client.alive.return_value = False
|
||||
client.art_request.side_effect = TVError('offline')
|
||||
with patch('SamsungTheFrameAsync._TVConnection', return_value=client):
|
||||
with patch('samsungtheframeasync._TVConnection', return_value=client):
|
||||
task = asyncio.create_task(app._run())
|
||||
await asyncio.sleep(.01)
|
||||
for _ in range(10):
|
||||
|
||||
Reference in new issue
Block a user