Skip to content

Commit

Permalink
Merge 3a31f32 into 35f275d
Browse files Browse the repository at this point in the history
  • Loading branch information
TheseusGrey committed Sep 7, 2018
2 parents 35f275d + 3a31f32 commit 8ce868e
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 1 deletion.
1 change: 1 addition & 0 deletions aimmo-game-creator/game_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ def create_game(self, game_id, game_data):
env = os.environ.copy()
game_data = {str(k): str(v) for k, v in game_data.items()}
env.update(game_data)
env['GAME_ID'] = game_id
self.games[game_id] = subprocess.Popen(process_args, cwd=self.game_directory, env=env)
game_url = "http://{}:{}".format(self.host, port)
LOGGER.info("Game started - {}, listening at {}".format(game_id, game_url))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ class LocalWorkerManager(WorkerManager):

def __init__(self, *args, **kwargs):
self.workers = {}
self.port_counter = itertools.count(1989)
game_id = os.environ['GAME_ID']
self.port_counter = itertools.count(1989 + int(game_id) * 10000)
super(LocalWorkerManager, self).__init__(*args, **kwargs)

def create_worker(self, player_id):
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import os

from unittest import TestCase
from urlparse import urlparse

from simulation.worker_managers.local_worker_manager import LocalWorkerManager


class TestLocalWorkerManager(TestCase):
def test_local_worker_ports_do_not_conflict(self):
os.environ['GAME_ID'] = '1'
worker_manager1 = LocalWorkerManager()
local_worker1 = worker_manager1.create_worker(1)
url1 = urlparse(local_worker1)

os.environ['GAME_ID'] = '2'
worker_manager2 = LocalWorkerManager()
local_worker2 = worker_manager2.create_worker(1)
url2 = urlparse(local_worker2)

self.assertEquals(url1.port, 11989)
self.assertEquals(url2.port, 21989)

def test_local_workers_in_the_same_game_do_not_have_port_conflicts(self):
os.environ['GAME_ID'] = '1'
worker_manager = LocalWorkerManager()
local_worker1 = worker_manager.create_worker(1)
local_worker2 = worker_manager.create_worker(2)
url1 = urlparse(local_worker1)
url2 = urlparse(local_worker2)

self.assertEquals(url1.port, 11989)
self.assertEquals(url2.port, 11990)


0 comments on commit 8ce868e

Please sign in to comment.