24 lines
1.3 KiB
Python
24 lines
1.3 KiB
Python
import threading
|
|
import time
|
|
from unittest import TestCase
|
|
from unittest.mock import patch
|
|
from station.runtime_client import RuntimeClient
|
|
|
|
|
|
class ClientStateTest(TestCase):
|
|
def test_paint_snapshot_is_local_and_stale_state_is_not_live(self):
|
|
client=RuntimeClient.__new__(RuntimeClient)
|
|
client._lock=threading.RLock();client.error=''
|
|
client._snapshot={'now':time.time()-10,'arm_live':{'89':{'enabled':True,'pose_live':True}},
|
|
'gripper_live':{'89':{'connected':True,'pose_live':True}},
|
|
'backend':{'monitoring':{'devices':[{'health':'live','enabled':True}],
|
|
'processes':[{'state':'running','running':True}]}}}
|
|
with patch('station.rpc.call',side_effect=AssertionError('paint path must not perform RPC')):
|
|
snapshot=client.snapshot()
|
|
self.assertFalse(snapshot['arm_live']['89']['pose_live'])
|
|
self.assertIsNone(snapshot['arm_live']['89']['enabled'])
|
|
self.assertFalse(snapshot['gripper_live']['89']['connected'])
|
|
self.assertEqual(snapshot['backend']['monitoring']['devices'][0]['health'],'unknown')
|
|
self.assertEqual(snapshot['backend']['monitoring']['processes'][0]['state'],'unknown')
|
|
self.assertTrue(client._snapshot['gripper_live']['89']['connected'])
|