Created
August 2, 2016 13:23
-
-
Save gklka/c736d46aac6ea244ecd2cc9addf2c24f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# -*- coding: utf-8 -*- | |
import sys | |
import time | |
import datetime | |
import threading | |
from TrackSimulator import TrackSimulator | |
from engine.Common import p | |
RUN_DELAY = 0 # sec | |
class TrackSimulatorThread(threading.Thread): | |
"""Run TrackSimulator on a thread""" | |
track_simulator = None | |
thread_number = None | |
rainbow = False | |
def __init__(self, thread_number, shift=None, speed=None, regatta_id=None, group_id=None, rainbow=False): | |
threading.Thread.__init__(self) | |
if rainbow: | |
self.track_simulator = TrackSimulator(num=thread_number, speed=speed, regatta_id=regatta_id, group_id=group_id, rainbow=True) | |
else: | |
self.track_simulator = TrackSimulator(num=thread_number, shift=shift, speed=speed, regatta_id=regatta_id, group_id=group_id) | |
self.thread_number = thread_number | |
def run(self): | |
p(self, "TrackSimulator on thread %s" % self.thread_number) | |
self.track_simulator.main() | |
class MultiRun(): | |
"""Kwindoo Track Simulator multiple runner""" | |
version = 0.2 | |
num = 1 | |
shift = None | |
speed = 1 | |
regatta_id = 0 | |
group_id = 0 | |
rainbow = False | |
def parse_params(self): | |
# Num | |
if "--num" in sys.argv: | |
arg_number = sys.argv.index("--num") | |
try: | |
self.num = int(sys.argv[arg_number+1]) | |
if self.num == 0: | |
self.num = 1 | |
except: | |
pass | |
# Time difference | |
self.shift = datetime.timedelta(seconds = 0) | |
if "--shift" in sys.argv: | |
arg_number = sys.argv.index("--shift") | |
try: | |
seconds = int(sys.argv[arg_number+1]) | |
self.shift = datetime.timedelta(seconds = seconds) | |
except: | |
pass | |
# Speed | |
if "--speed" in sys.argv: | |
arg_number = sys.argv.index("--speed") | |
try: | |
self.speed = 1.0/float(sys.argv[arg_number+1]) | |
except: | |
pass | |
# Help | |
if "--help" in sys.argv: | |
self.print_help() | |
exit() | |
if "--version" in sys.argv: | |
print "KWINDOO Track Simulator MultiRun v%s" % self.version | |
exit() | |
# Regatta ID | |
if "--regatta" in sys.argv: | |
arg_number = sys.argv.index("--regatta") | |
try: | |
regatta_id = int(sys.argv[arg_number+1]) | |
if regatta_id > 0: | |
self.regatta_id = regatta_id | |
except: | |
pass | |
if not self.regatta_id: | |
self.print_help() | |
p(self, "Missing --regatta", type='red') | |
exit() | |
# Running group ID | |
if "--group" in sys.argv: | |
arg_number = sys.argv.index("--group") | |
try: | |
group_id = int(sys.argv[arg_number+1]) | |
if group_id > 0: | |
self.group_id = group_id | |
except: | |
pass | |
if not self.group_id: | |
self.print_help() | |
p(self, "Missing --group", type='red') | |
exit() | |
# Rainbow | |
if "--rainbow" in sys.argv: | |
self.rainbow = True | |
def print_help(self): | |
print "KWINDOO Track Simulator MultiRun v%s" % self.version | |
print "For running multiple ship simulations easily" | |
print "(c) Kwindoo, 2016" | |
print "" | |
print "usage: python %s [--num number] --regatta regatta_id --group group_id [--rainbow]" % sys.argv[0] | |
print "" | |
print "--num : number of test users to simulate (default: 1)" | |
print "--regatta : the regatta to send the data to" | |
print "--group : the running group id to join to" | |
print "--rainbow : use simulated parallel lines instead of numbered GPX files" | |
def main(self): | |
# Parse params | |
self.parse_params() | |
p(self, "Creating %s simulator(s)..." % self.num) | |
track_simulators = [] | |
for i in range(self.num): | |
track_simulator_thread = TrackSimulatorThread(thread_number=i+1, speed=self.speed, shift=self.shift, regatta_id=self.regatta_id, group_id=self.group_id, rainbow=self.rainbow) | |
track_simulator_thread.setDaemon(True) | |
track_simulators.append(track_simulator_thread) | |
i = 1 | |
for track_simulator_thread in track_simulators: | |
p(self, "Running simulator %i..." % i, type='blue') | |
track_simulator_thread.start() | |
i += 1 | |
time.sleep(RUN_DELAY) | |
# Run the code | |
if __name__ == "__main__": | |
mr = MultiRun() | |
mr.main() | |
time.sleep(10000) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment