Пример #1
0
def match_thread(data):
    global BUSY
    BUSY = True
    GAMES_RUN.append(data['id'])

    data['s3_bucket'] = bucket

    data['player_memory'] = 256
    data['player_cpu'] = 20

    data['map'] = cli.get_map(os.path.abspath(os.path.join('..', 'battlecode-maps', data['map'])))
    data['docker'] = True
    data['terminal_viewer'] = False
    data['use_viewer'] = False

    data['extra_delay'] = 0

    (game, dockers, sock_file) = cli.create_scrimmage_game(data)
    winner = None
    match_file = None
    try:
        print("Running match " + str(data['id']))
        winner, match_file = cli.run_game(game, dockers, data, sock_file,scrimmage=True)
    finally:
        cli.cleanup(dockers, data, sock_file)

    logs = None
    if all('logger' in player for player in game.players):
        logs = [player['logger'].logs.getvalue() for player in game.players]

    end_game(data,winner,match_file,logs)
Пример #2
0
def match_thread(data):
    global BUSY
    global DB_LOCK
    BUSY = True
    GAMES_RUN.append(data['id'])

    data['s3_bucket'] = bucket

    data['player_memory'] = int(os.environ['PLAYER_MEMORY'])
    data['player_cpu'] = 20
    data['map_name'] = data['map']

    data['map'] = cli.get_map(
        os.path.abspath(os.path.join('..', 'battlecode-maps', data['map'])))
    data['docker'] = True
    data['terminal_viewer'] = False
    data['use_viewer'] = False

    data['extra_delay'] = 0

    try:
        (game, dockers, sock_file) = cli.create_scrimmage_game(data)
    except ValueError as e:
        print(
            "Destroying the game, as it is invalid.  This should not happen.")
        while DB_LOCK == True:
            sleep(0.1)
        DB_LOCK = True
        cur.execute(
            "UPDATE " + os.environ["TABLE_NAME"] +
            " SET status='rejected' WHERE id=%s", (data['id'], ))
        pg.commit()
        DB_LOCK = False

        return

    PROXY_UPLOADER.game = game
    winner = None
    match_file = None
    try:
        print("Running match " + str(data['id']))
        winner, match_file = cli.run_game(game,
                                          dockers,
                                          data,
                                          sock_file,
                                          scrimmage=True)
    finally:
        cli.cleanup(dockers, data, sock_file)
    PROXY_UPLOADER.game = None
    PROXY_UPLOADER.games_run += 1

    logs = None
    if all('logger' in player for player in game.players):
        logs = [player['logger'].logs.getvalue() for player in game.players]

    end_game(data, winner, match_file, logs)