Loading...
#!/usr/bin/python import socket import time import select import sys _CONTROL_PORT = 17694 def waitformsgs(client_sockets, msg): client_sockets_set = set(client_sockets) while len(client_sockets_set) > 0: rl, _, _ = select.select(client_sockets_set, [], []) for client_socket in rl: sentmsg = client_socket.recv(1024) if sentmsg == msg: client_sockets_set.remove(client_socket) def main(num_clients, test_type, num_threads, job_size, args): client_sockets = [] control_socket = socket.socket() control_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) control_socket.bind(("", _CONTROL_PORT)) control_socket.listen(num_clients) while(len(client_sockets)<num_clients): client_socket, _ = control_socket.accept() msg = "\0".join(["%s\0%d\0%d" % (test_type, num_threads, job_size)] + args) + "\0\0" client_socket.send(msg) client_sockets.append(client_socket) control_socket.close() waitformsgs(client_sockets, "Ready") start_time = time.time() for client_socket in client_sockets: client_socket.shutdown(socket.SHUT_WR) waitformsgs(client_sockets, "Done") for client_socket in client_sockets: client_socket.close() end_time = time.time() return end_time - start_time def usage(): sys.stderr.write("usage: start_tests.py num_clients type threads size\n") exit(1) if __name__ == "__main__": if len(sys.argv) < 5: usage() try: num_clients = int(sys.argv[1]) test_type = sys.argv[2] num_threads = int(sys.argv[3]) job_size = int(sys.argv[4]) args = sys.argv[5:] except ValueError: usage() print main(num_clients, test_type, num_threads, job_size, args) |