meta_ai_hackathon / tests /test_environment_dynamics.py
GOOD CAT
Final submission prep
ec8c511
from server.baseline.heuristic_agent import heuristic_policy
from server.firewall_environment import FirewallEnvironment
def test_expired_malicious_sessions_are_counted():
env = FirewallEnvironment(seed=11)
env.reset(task="easy", seed=11)
before = env.metrics.malicious_seen
for _ in range(4):
env.step({})
after = env.metrics.malicious_seen
assert after >= before
def test_inspect_keeps_session_pending_and_reveals():
env = FirewallEnvironment(seed=12)
env.reset(task="easy", seed=12)
session_id = next(iter(env.pending_sessions.keys()))
env.take_action(session_id=session_id, action=2)
assert session_id in env.pending_sessions
assert env.pending_sessions[session_id]["metadata"]["revealed"] is True
def test_step_single_has_fixed_size_action_mode():
env = FirewallEnvironment(seed=13)
env.reset(task="easy", seed=13)
response = env.step_single(action=0)
assert "focus_observation" in response["state"]
assert len(response["state"]["focus_observation"]) == 22
def test_budget_is_scaled_by_episode_length():
env = FirewallEnvironment(seed=14, budget=50.0)
env.reset(task="hard", seed=14)
assert env.initial_budget >= env.max_steps * 0.35
def test_attacker_outcomes_exposed_in_step_info():
env = FirewallEnvironment(seed=15)
env.reset(task="easy", seed=15)
session_id = next(iter(env.pending_sessions.keys()))
result = env.step({session_id: 1})
assert "attacker_outcomes" in result["info"]
def test_heuristic_policy_executes_over_pending_sessions():
env = FirewallEnvironment(seed=16)
env.reset(task="easy", seed=16)
actions = heuristic_policy(env, list(env.pending_sessions.keys())[:5])
assert isinstance(actions, dict)