pypot/pypot-master/tests/test_websocket.py

49 lines
1.3 KiB
Python
Raw Normal View History

2025-07-30 11:57:45 +08:00
import json
import time
import unittest
import websocket
from pypot.creatures import PoppyErgoJr
from utils import get_open_port
@unittest.skip("tornado.ioloop from jr.ws as well as js.http must be stopped by jr.close() before launching new jr instances")
class TestWebsocketsCommunication(unittest.TestCase):
"""docstring for TestWebsocketsCommunication"""
def setUp(self):
port = get_open_port()
self.jr = PoppyErgoJr(simulator='poppy-simu', use_ws=True, ws_port=port)
self.ws_url = 'ws://127.0.0.1:{}'.format(port)
while True:
try:
self.ws = websocket.WebSocket()
self.ws.connect(self.ws_url)
break
except ConnectionError:
time.sleep(1.0)
def tearDown(self):
self.ws.close()
def test_connected(self):
self.assertTrue(self.ws.connected)
def test_recv_state(self):
state = json.loads(self.ws.recv())
self.assertSetEqual(set(state.keys()),
{m.name for m in self.jr.motors})
def test_led(self):
obj = {
'm1': {
'led': 'red'
}
}
self.ws.send(json.dumps(obj))
if __name__ == '__main__':
unittest.main()