1
0
mirror of https://github.com/gryf/coach.git synced 2025-12-18 11:40:18 +01:00
Files
coach/rl_coach/tests/presets/test_presets.py
2018-08-13 17:11:34 +03:00

57 lines
1.7 KiB
Python

# nasty hack to deal with issue #46
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
import pytest
import os
import time
import shutil
from subprocess import Popen, DEVNULL
from rl_coach.logger import screen
@pytest.mark.integration_test
def test_all_presets_are_running():
# os.chdir("../../")
test_failed = False
all_presets = sorted([f.split('.')[0] for f in os.listdir('rl_coach/presets') if f.endswith('.py') and f != '__init__.py'])
for preset in all_presets:
print("Testing preset {}".format(preset))
# TODO: this is a temporary workaround for presets which define more than a single available level.
# we should probably do this in a more robust way
level = ""
if "Atari" in preset:
level = "breakout"
elif "Mujoco" in preset:
level = "inverted_pendulum"
elif "ControlSuite" in preset:
level = "pendulum:swingup"
params = ["python3", "rl_coach/coach.py", "-p", preset, "-ns", "-e", ".test"]
if level != "":
params += ["-lvl", level]
p = Popen(params, stdout=DEVNULL)
# wait 10 seconds overhead of initialization etc.
time.sleep(10)
return_value = p.poll()
if return_value is None:
screen.success("{} passed successfully".format(preset))
else:
test_failed = True
screen.error("{} failed".format(preset), crash=False)
p.kill()
if os.path.exists("experiments/.test"):
shutil.rmtree("experiments/.test")
assert not test_failed
if __name__ == "__main__":
test_all_presets_are_running()