Skip to content

Commit 5d69bbd

Browse files
committed
test
1 parent a751132 commit 5d69bbd

1 file changed

Lines changed: 34 additions & 6 deletions

File tree

tests/test_pose_compounding.py

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ def setUpClass(cls):
2727
cls.__last_message = None
2828
cls.__callback_event = threading.Event()
2929
cls.__ws = None
30+
cls.__ws_connected = threading.Event() # Use Event for connection tracking
31+
cls.__ws_error = None
3032

3133
def callback(pose, message):
3234
cls.__last_pose = pose
@@ -52,15 +54,19 @@ def on_message(ws, message):
5254

5355
def on_error(ws, error):
5456
print(f"WebSocket error: {error}")
57+
cls.__ws_error = error
58+
cls.__ws_connected.clear()
5559

5660
def on_close(ws, close_status_code, close_msg):
57-
print("WebSocket connection closed")
61+
print(f"WebSocket connection closed: {close_status_code} - {close_msg}")
62+
cls.__ws_connected.clear()
5863

5964
def on_open(ws):
6065
print("WebSocket connection opened")
66+
cls.__ws_connected.set() # Signal that connection is established
6167

6268
# Create WebSocket connection
63-
websocket.enableTrace(False) # Set to True for debugging
69+
websocket.enableTrace(True) # Enable for debugging
6470

6571
# Use wss:// for HTTPS or ws:// for HTTP
6672
url = BASE_URL.replace("ws://", "wss://") if "4443" in BASE_URL else BASE_URL
@@ -86,7 +92,16 @@ def on_open(ws):
8692
cls.__ws_thread.daemon = True
8793
cls.__ws_thread.start()
8894

89-
time.sleep(2)
95+
# Wait for connection to be established
96+
connection_established = cls.__ws_connected.wait(timeout=10)
97+
if not connection_established:
98+
if cls.__ws_error:
99+
raise Exception(f"WebSocket connection failed: {cls.__ws_error}")
100+
else:
101+
raise Exception("WebSocket connection timeout")
102+
103+
# Give a small buffer after connection
104+
time.sleep(0.5)
90105

91106
def setUp(self):
92107
self.__class__.__last_pose = None
@@ -98,14 +113,27 @@ def _wait_for_callback(self, timeout=10.0):
98113

99114
def _send_message(self, payload):
100115
"""Send message to WebSocket server"""
116+
# Check if connection is still active
117+
if not self.__ws_connected.is_set():
118+
raise Exception("WebSocket connection not active")
119+
120+
if not hasattr(self.__ws, 'sock') or self.__ws.sock is None:
121+
raise Exception("WebSocket socket is None")
122+
101123
message = {
102124
"type": "pose",
103125
"data": payload
104126
}
105-
self.__ws.send(json.dumps(message))
127+
128+
try:
129+
self.__ws.send(json.dumps(message))
130+
except Exception as e:
131+
# Connection might have been closed, try to reconnect
132+
self.__ws_connected.clear()
133+
raise Exception(f"Failed to send message: {e}")
106134

107135
def test_response(self):
108-
if not hasattr(self.__ws, 'sock') or self.__ws.sock is None:
136+
if not self.__ws_connected.is_set():
109137
self.skipTest("WebSocket client not connected")
110138

111139
payload = get_message()
@@ -121,7 +149,7 @@ def test_response(self):
121149
)
122150

123151
def test_single_position_update(self):
124-
if not hasattr(self.__ws, 'sock') or self.__ws.sock is None:
152+
if not self.__ws_connected.is_set():
125153
self.skipTest("WebSocket client not connected")
126154

127155
payload = get_message()

0 commit comments

Comments
 (0)