def bill_scenario(ip, port): sock = connect(ip, port) chat_room = "cats" client_name = "bill" try: message = create_join_chat_room_message(chat_room, client_name) sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") while True: response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") break sleep(2) message = create_leave_chat_room_message(0, 0, client_name) sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") sleep(2) message = create_disconnect_message(client_name) sock.sendall(message) except socket.error, e: handle_socket_exception(e, sock)
def execute_scenario(ip, port, message_f): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((ip, port)) message = message_f() try: sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") sock.close() except socket.error, e: handle_socket_exception(e, sock)
def charlie_scenario(ip, port): sock = connect(ip, port) chat_room = "cats" client_name = "charlie" scenario_executed = False try: while True: if scenario_executed: break message = create_join_chat_room_message(chat_room, client_name) sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") message = create_message_chat_room_message( 0, 1, client_name, "This is a test message." ) sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") sleep(4) message = create_leave_chat_room_message(0, 1, client_name) sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") sleep(4) message = create_disconnect_message(client_name) sock.sendall(message) scenario_executed = True except socket.error, e: handle_socket_exception(e, sock)
def charlie_scenario(ip, port): sock = connect(ip, port) chat_room = "cats" client_name = "charlie" scenario_executed = False try: while True: if scenario_executed: break message = create_join_chat_room_message(chat_room, client_name) sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") message = create_message_chat_room_message( 0, 1, client_name, "This is a test message.") sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") sleep(4) message = create_leave_chat_room_message(0, 1, client_name) sock.sendall(message) response = sock.recv(BUFFER_SIZE) sys.stdout.write(response + "\n") sleep(4) message = create_disconnect_message(client_name) sock.sendall(message) scenario_executed = True except socket.error, e: handle_socket_exception(e, sock)
continue # Do work try: message_handler(self) handled = True except MessageHandlerError, e: error_processing(e.original_message) self.request.sendall(e.get_error_message()) except InformClientError, e: sys.stdout.write("Informing client of error\n") self.request.sendall(e.get_error_message()) except: raise except socket.error, e: handle_socket_exception(e, self.request) except TerminateRequestThread: sys.stdout.write("Terminate thread\n") pass except: print "Unexpected error:", sys.exc_info raise finally: sys.stdout.write("Client disconnected\n") # Release semaphore on thread destruction if handled: semaphore.release() class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): request_queue_size = 100