Files
orisys_arm/station/test/test_client_state.py
T

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'])