def test_get_agent_id(db_handle): new_agent_id = agent_data.get_agent_id(owner, name, game_type, db_handle) same_agent_id = agent_data.get_agent_id(owner, name, game_type, db_handle) assert same_agent_id is not None assert new_agent_id == same_agent_id owners = agent_data.get_owners(db_handle) assert len(owners) > 0
def test_dynamic_agent_database(): config = { "owner": "test_owner", "name": "test_agent", "game_type": "test_game", "class_name": "BasicAgent", "local_path": "battleground.games.basic_game.basic_agent", "remote_path": None } # create an agent ID agent_id = agent_data.get_agent_id(owner=config["owner"], name=config["name"], game_type=config["game_type"]) # load file module_path = config["local_path"].replace(".", "/") + ".py" with open(module_path, 'r') as file: code_string = file.read() # save to database agent_data.save_agent_data(agent_id, code_string, "code") # test loading from database dynamic_agent = DynamicAgent(owner=config["owner"], name=config["name"], game_type=config["game_type"], class_name=config["class_name"], from_db=True) assert isinstance(dynamic_agent.agent_instance, Agent) assert isinstance(dynamic_agent.move(None), dict)
def test_with_engine(): game_type = "test_game" num_players = 4 players = [] player_mems = {} # create agents for i in range(num_players): owner = "core" name = "basic_persistent_{}".format(i) agent_id = agent_data.get_agent_id(owner, name, game_type) players.append((str(agent_id), PersistentAgent())) # run games for game_num in range(2): engine = BasicGameEngine(num_players=num_players, type=game_type) scores = site_runner.run_session(engine, players, 4, save=True) assert len(scores) == num_players for agent_id, player in players: db_memory = agent_data.load_agent_data(agent_id, "memory") assert isinstance(db_memory, dict) memory = player.get_memory() assert db_memory == memory if agent_id in player_mems: player_mems[agent_id].append(player.get_memory()) else: player_mems[agent_id] = [player.get_memory()] # check that memory after game 1 is different from memory after game 2. for _, mem in player_mems.items(): assert mem[0] != mem[1]