From ec2063aa0b026b2e5792ccf80e0c9400c2deb7c0 Mon Sep 17 00:00:00 2001 From: Fabian Date: Thu, 12 Jan 2023 17:36:33 +0100 Subject: [PATCH] updated tests for dm_control --- test/test_dmc_envs.py | 14 ++++++++------ test/utils.py | 8 ++++---- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/test/test_dmc_envs.py b/test/test_dmc_envs.py index 71b27a3..53119af 100644 --- a/test/test_dmc_envs.py +++ b/test/test_dmc_envs.py @@ -11,21 +11,23 @@ from test.utils import run_env, run_env_determinism # SUITE_IDS = [f'dmc:{env}-{task}' for env, task in suite.ALL_TASKS if env != "lqr"] # MANIPULATION_IDS = [f'dmc:manipulation-{task}' for task in manipulation.ALL if task.endswith('_features')] DM_CONTROL_IDS = [spec.id for spec in gym.envs.registry.values() if - not isinstance(spec.entry_point, Callable) and spec.entry_point.startswith('dm_control/')] -DMC_MP_IDS = chain(*fancy_gym.ALL_DMC_MOVEMENT_PRIMITIVE_ENVIRONMENTS.values()) + spec.id.startswith('dm_control/') + and 'compatibility-env-v0' not in spec.id + and 'lqr-lqr' not in spec.id] +DM_control_MP_IDS = chain(*fancy_gym.ALL_DMC_MOVEMENT_PRIMITIVE_ENVIRONMENTS.values()) SEED = 1 @pytest.mark.parametrize('env_id', DM_CONTROL_IDS) def test_step_dm_control_functionality(env_id: str): """Tests that suite step environments run without errors using random actions.""" - run_env(env_id) + run_env(env_id, 1000) @pytest.mark.parametrize('env_id', DM_CONTROL_IDS) def test_step_dm_control_determinism(env_id: str): """Tests that for step environments identical seeds produce identical trajectories.""" - run_env_determinism(env_id, SEED) + run_env_determinism(env_id, SEED, 1000) # @pytest.mark.parametrize('env_id', MANIPULATION_IDS) @@ -40,13 +42,13 @@ def test_step_dm_control_determinism(env_id: str): # run_env_determinism(env_id, SEED) -@pytest.mark.parametrize('env_id', DMC_MP_IDS) +@pytest.mark.parametrize('env_id', DM_control_MP_IDS) def test_bb_dmc_functionality(env_id: str): """Tests that black box environments run without errors using random actions.""" run_env(env_id) -@pytest.mark.parametrize('env_id', DMC_MP_IDS) +@pytest.mark.parametrize('env_id', DM_control_MP_IDS) def test_bb_dmc_determinism(env_id: str): """Tests that for black box environment identical seeds produce identical trajectories.""" run_env_determinism(env_id, SEED) diff --git a/test/utils.py b/test/utils.py index a57e58e..56f739f 100644 --- a/test/utils.py +++ b/test/utils.py @@ -53,16 +53,16 @@ def run_env(env_id, iterations=None, seed=0, render=False): if terminated or truncated: break - assert terminated or truncated, "Termination or truncation flag is not True after end of episode." + assert terminated or truncated, f"Termination or truncation flag is not True after {i + 1} iterations." observations.append(obs) env.close() del env return np.array(observations), np.array(rewards), np.array(terminations), np.array(truncations), np.array(actions) -def run_env_determinism(env_id: str, seed: int): - traj1 = run_env(env_id, seed=seed) - traj2 = run_env(env_id, seed=seed) +def run_env_determinism(env_id: str, seed: int, iterations: int = None): + traj1 = run_env(env_id, iterations=iterations, seed=seed) + traj2 = run_env(env_id, iterations=iterations, seed=seed) # Iterate over two trajectories, which should have the same state and action sequence for i, time_step in enumerate(zip(*traj1, *traj2)): obs1, rwd1, term1, trunc1, ac1, obs2, rwd2, term2, trunc2, ac2 = time_step