49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | 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() |