Skip to content

Instantly share code, notes, and snippets.

@rgs1
Created July 12, 2018 19:35
Show Gist options
  • Save rgs1/ad2666699b82f527fe76040c3b5c58ef to your computer and use it in GitHub Desktop.
Save rgs1/ad2666699b82f527fe76040c3b5c58ef to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import argparse
import random
import SocketServer
import threading
def get_params():
parser = argparse.ArgumentParser()
parser.add_argument('versions', type=str)
parser.add_argument('port_start', type=int)
parser.add_argument('count', type=int)
return parser.parse_args()
class Server(SocketServer.TCPServer):
allow_reuse_address = True
def run_server(version, host, port):
class Handler(SocketServer.BaseRequestHandler):
def handle(self):
command = self.request.recv(1024).strip()
if command == 'VERSION':
self.request.sendall(version + '\n')
server = Server((host, port), Handler)
server.serve_forever()
if __name__ == '__main__':
workers = []
params = get_params()
port = params.port_start
versions = params.versions.split(',')
for idx in range(params.count):
version = random.choice(versions)
print 'Starting worker on port %d (version: %s)' % (port, version)
worker = threading.Thread(
target=run_server, args=(version, 'localhost', port))
worker.start()
workers.append(worker)
port += 1
for worker in workers:
worker.join()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment