def test_send_message_while_disconnection(self): if is_ci_unstable_test_skip_enabled(): return t = Thread(target=start_socket_mode_server(self, 3011)) t.daemon = True t.start() time.sleep(2) # wait for the server try: self.reset_sever_state() client = SocketModeClient( app_token="xapp-A111-222-xyz", web_client=self.web_client, auto_reconnect_enabled=False, trace_enabled=True, ) client.wss_uri = "ws://0.0.0.0:3011/link" client.connect() time.sleep(1) # wait for the connection client.send_message("foo") client.disconnect() time.sleep(1) # wait for the connection try: client.send_message("foo") self.fail("SlackClientNotConnectedError is expected here") except SlackClientNotConnectedError as _: pass client.connect() time.sleep(1) # wait for the connection client.send_message("foo") finally: client.close() self.server.stop() self.server.close()
def test_interactions(self): if is_ci_unstable_test_skip_enabled(): return t = Thread(target=start_socket_mode_server(self, 3011)) t.daemon = True t.start() time.sleep(2) # wait for the server try: buffer_size_list = [1024, 9000, 35, 49] + list( [randint(16, 128) for _ in range(10)]) for buffer_size in buffer_size_list: self.reset_sever_state() received_messages = [] received_socket_mode_requests = [] def message_handler(message): self.logger.info(f"Raw Message: {message}") time.sleep(randint(50, 200) / 1000) received_messages.append(message) def socket_mode_request_handler(client: BaseSocketModeClient, request: SocketModeRequest): self.logger.info(f"Socket Mode Request: {request}") time.sleep(randint(50, 200) / 1000) received_socket_mode_requests.append(request) self.logger.info( f"Started testing with buffer size: {buffer_size}") client = SocketModeClient( app_token="xapp-A111-222-xyz", web_client=self.web_client, on_message_listeners=[message_handler], receive_buffer_size=buffer_size, auto_reconnect_enabled=False, trace_enabled=True, ) try: client.socket_mode_request_listeners.append( socket_mode_request_handler) client.wss_uri = "ws://0.0.0.0:3011/link" client.connect() self.assertTrue(client.is_connected()) time.sleep(2) # wait for the message receiver repeat = 2 for _ in range(repeat): client.send_message("foo") client.send_message("bar") client.send_message("baz") self.assertTrue(client.is_connected()) expected = (socket_mode_envelopes + [socket_mode_hello_message] + ["foo", "bar", "baz"] * repeat) expected.sort() count = 0 while count < 5 and len(received_messages) < len(expected): time.sleep(0.1) self.logger.debug( f"Received messages: {len(received_messages)}") count += 0.1 received_messages.sort() self.assertEqual(len(received_messages), len(expected)) self.assertEqual(received_messages, expected) self.assertEqual(len(socket_mode_envelopes), len(received_socket_mode_requests)) finally: pass # client.close() self.logger.info(f"Passed with buffer size: {buffer_size}") finally: client.close() self.server.stop() self.server.close() self.logger.info(f"Passed with buffer size: {buffer_size_list}")