6
6
7
7
Submit us a issue if you have found any problem.
8
8
"""
9
- from test .util_platforms import linux_only_forall
10
-
11
- linux_only_forall ()
12
-
9
+ from random import choice , sample
13
10
from machin .env .wrappers import openai_gym
14
11
from machin .utils .logging import default_logger
15
- from random import choice , sample
12
+ from test .util_platforms import linux_only_forall
13
+
16
14
import pytest
17
15
import gym
18
16
import numpy as np
19
17
18
+ linux_only_forall ()
20
19
ENV_NUM = 2
21
20
SAMPLE_NUM = 2
22
21
WORKER_NUM = 2
@@ -26,69 +25,15 @@ def mock_action(action_space: gym.spaces.Space):
26
25
return action_space .sample ()
27
26
28
27
29
- def prepare_envs (env_list ):
30
- for env in env_list :
31
- env .reset ()
32
-
33
-
34
- def should_skip (spec ):
35
- # From gym/envs/tests/spec_list.py
36
- # Used to check whether a gym environment should be tested.
37
-
38
- # We skip tests for envs that require dependencies or are otherwise
39
- # troublesome to run frequently
40
- ep = spec .entry_point
41
-
42
- # No need to test unittest environments
43
- if ep .startswith ("gym.envs.unittest" ):
44
- return True
45
-
46
- # Skip not renderable tests
47
- if ep .startswith ("gym.envs.algorithmic" ) or ep .startswith ("gym.envs.toy_text" ):
48
- return True
49
-
50
- # Skip mujoco tests
51
- if ep .startswith ("gym.envs.mujoco" ) or ep .startswith ("gym.envs.robotics:" ):
52
- return True
53
-
54
- # Skip atari tests
55
- if ep .startswith ("gym.envs.atari" ):
56
- return True
57
-
58
- # Skip other tests
59
- if "GoEnv" in ep or "HexEnv" in ep or "CarRacing" in ep :
60
- return True
61
-
62
- # Conditionally skip box2d tests
63
- try :
64
- import Box2D
65
- except ImportError :
66
- if ep .startswith ("gym.envs.box2d" ):
67
- return True
68
-
69
- return False
70
-
71
-
72
28
@pytest .fixture (scope = "module" , autouse = True )
73
29
def envs ():
74
- all_envs = []
75
- env_map = {}
76
- # Find the newest version of non-skippable environments.
77
- for env_raw_name , env_spec in gym .envs .registry .env_specs .items ():
78
- if not should_skip (env_spec ):
79
- env_name , env_version = env_raw_name .split ("-v" )
80
- if env_name not in env_version or int (env_version ) > env_map [env_name ]:
81
- env_map [env_name ] = int (env_version )
30
+ names = ["CartPole-v0" ]
31
+ creators = []
82
32
83
33
# Create environments.
84
- for env_name , env_version in env_map .items ():
85
- env_name = env_name + "-v" + str (env_version )
86
- default_logger .info (f"OpenAI gym { env_name } added" )
87
- all_envs .append ([lambda * _ : gym .make (env_name ) for _ in range (ENV_NUM )])
88
- default_logger .info (
89
- "{} OpenAI gym environments to be tested." .format (len (all_envs ))
90
- )
91
- return all_envs
34
+ for name in names :
35
+ creators .append ([lambda * _ : gym .make (name ) for _ in range (ENV_NUM )])
36
+ return names , creators
92
37
93
38
94
39
class TestParallelWrapperDummy :
@@ -104,8 +49,9 @@ class TestParallelWrapperDummy:
104
49
105
50
@pytest .mark .parametrize ("idx,reset_num" , param_test_reset )
106
51
def test_reset (self , envs , idx , reset_num ):
107
- for env_list in envs :
108
- dummy_wrapper = openai_gym .ParallelWrapperDummy (env_list )
52
+ for name , creators in zip (* envs ):
53
+ default_logger .info (f"Testing on env { name } " )
54
+ dummy_wrapper = openai_gym .ParallelWrapperDummy (creators )
109
55
obsrvs = dummy_wrapper .reset (idx )
110
56
dummy_wrapper .close ()
111
57
@@ -129,8 +75,9 @@ def test_reset(self, envs, idx, reset_num):
129
75
130
76
@pytest .mark .parametrize ("idx,act_num" , param_test_step )
131
77
def test_step (self , envs , idx , act_num ):
132
- for env_list in envs :
133
- dummy_wrapper = openai_gym .ParallelWrapperDummy (env_list )
78
+ for name , creators in zip (* envs ):
79
+ default_logger .info (f"Testing on env { name } " )
80
+ dummy_wrapper = openai_gym .ParallelWrapperDummy (creators )
134
81
action = [mock_action (dummy_wrapper .action_space ) for _ in range (act_num )]
135
82
dummy_wrapper .reset (idx )
136
83
obsrvs , reward , terminal , info = dummy_wrapper .step (action , idx )
@@ -159,8 +106,9 @@ def test_step(self, envs, idx, act_num):
159
106
160
107
@pytest .mark .parametrize ("idx" , param_test_seed )
161
108
def test_seed (self , envs , idx ):
162
- for env_list in envs :
163
- dummy_wrapper = openai_gym .ParallelWrapperDummy (env_list )
109
+ for name , creators in zip (* envs ):
110
+ default_logger .info (f"Testing on env { name } " )
111
+ dummy_wrapper = openai_gym .ParallelWrapperDummy (creators )
164
112
seeds = dummy_wrapper .seed ()
165
113
dummy_wrapper .close ()
166
114
assert len (seeds ) == ENV_NUM
@@ -177,8 +125,9 @@ def test_seed(self, envs, idx):
177
125
178
126
@pytest .mark .parametrize ("idx,render_num" , param_test_render )
179
127
def test_render (self , envs , idx , render_num ):
180
- for env_list in envs :
181
- dummy_wrapper = openai_gym .ParallelWrapperDummy (env_list )
128
+ for name , creators in zip (* envs ):
129
+ default_logger .info (f"Testing on env { name } " )
130
+ dummy_wrapper = openai_gym .ParallelWrapperDummy (creators )
182
131
dummy_wrapper .reset (idx )
183
132
rendered = dummy_wrapper .render (idx )
184
133
dummy_wrapper .close ()
@@ -190,16 +139,18 @@ def test_render(self, envs, idx, render_num):
190
139
# Test for ParallelWrapperDummy.close
191
140
########################################################################
192
141
def test_close (self , envs ):
193
- for env_list in envs :
194
- dummy_wrapper = openai_gym .ParallelWrapperDummy (env_list )
142
+ for name , creators in zip (* envs ):
143
+ default_logger .info (f"Testing on env { name } " )
144
+ dummy_wrapper = openai_gym .ParallelWrapperDummy (creators )
195
145
dummy_wrapper .close ()
196
146
197
147
########################################################################
198
148
# Test for ParallelWrapperDummy.active
199
149
########################################################################
200
150
def test_active (self , envs ):
201
- for env_list in envs :
202
- dummy_wrapper = openai_gym .ParallelWrapperDummy (env_list )
151
+ for name , creators in zip (* envs ):
152
+ default_logger .info (f"Testing on env { name } " )
153
+ dummy_wrapper = openai_gym .ParallelWrapperDummy (creators )
203
154
dummy_wrapper .reset ()
204
155
active = dummy_wrapper .active ()
205
156
dummy_wrapper .close ()
@@ -209,7 +160,7 @@ def test_active(self, envs):
209
160
# Test for ParallelWrapperDummy.size
210
161
########################################################################
211
162
def test_size (self , envs ):
212
- dummy_wrapper = openai_gym .ParallelWrapperDummy (envs [0 ])
163
+ dummy_wrapper = openai_gym .ParallelWrapperDummy (envs [1 ][ 0 ])
213
164
assert dummy_wrapper .size () == ENV_NUM
214
165
dummy_wrapper .close ()
215
166
@@ -227,8 +178,9 @@ class TestParallelWrapperSubProc:
227
178
228
179
@pytest .mark .parametrize ("idx,reset_num" , param_test_reset )
229
180
def test_reset (self , envs , idx , reset_num ):
230
- for env_list in envs :
231
- subproc_wrapper = openai_gym .ParallelWrapperSubProc (env_list )
181
+ for name , creators in zip (* envs ):
182
+ default_logger .info (f"Testing on env { name } " )
183
+ subproc_wrapper = openai_gym .ParallelWrapperSubProc (creators )
232
184
obsrvs = subproc_wrapper .reset (idx )
233
185
subproc_wrapper .close ()
234
186
@@ -252,8 +204,9 @@ def test_reset(self, envs, idx, reset_num):
252
204
253
205
@pytest .mark .parametrize ("idx,act_num" , param_test_step )
254
206
def test_step (self , envs , idx , act_num ):
255
- for env_list in envs :
256
- subproc_wrapper = openai_gym .ParallelWrapperSubProc (env_list )
207
+ for name , creators in zip (* envs ):
208
+ default_logger .info (f"Testing on env { name } " )
209
+ subproc_wrapper = openai_gym .ParallelWrapperSubProc (creators )
257
210
action = [mock_action (subproc_wrapper .action_space ) for _ in range (act_num )]
258
211
subproc_wrapper .reset (idx )
259
212
obsrvs , reward , terminal , info = subproc_wrapper .step (action , idx )
@@ -282,8 +235,9 @@ def test_step(self, envs, idx, act_num):
282
235
283
236
@pytest .mark .parametrize ("idx" , param_test_seed )
284
237
def test_seed (self , envs , idx ):
285
- for env_list in envs :
286
- subproc_wrapper = openai_gym .ParallelWrapperSubProc (env_list )
238
+ for name , creators in zip (* envs ):
239
+ default_logger .info (f"Testing on env { name } " )
240
+ subproc_wrapper = openai_gym .ParallelWrapperSubProc (creators )
287
241
seeds = subproc_wrapper .seed ()
288
242
subproc_wrapper .close ()
289
243
assert len (seeds ) == ENV_NUM
@@ -300,8 +254,9 @@ def test_seed(self, envs, idx):
300
254
301
255
@pytest .mark .parametrize ("idx,render_num" , param_test_render )
302
256
def test_render (self , envs , idx , render_num ):
303
- for env_list in envs :
304
- subproc_wrapper = openai_gym .ParallelWrapperSubProc (env_list )
257
+ for name , creators in zip (* envs ):
258
+ default_logger .info (f"Testing on env { name } " )
259
+ subproc_wrapper = openai_gym .ParallelWrapperSubProc (creators )
305
260
subproc_wrapper .reset (idx )
306
261
rendered = subproc_wrapper .render (idx )
307
262
subproc_wrapper .close ()
@@ -313,22 +268,24 @@ def test_render(self, envs, idx, render_num):
313
268
# Test for ParallelWrapperSubProc.close
314
269
########################################################################
315
270
def test_close (self , envs ):
316
- for env_list in envs :
317
- subproc_wrapper = openai_gym .ParallelWrapperSubProc (env_list )
271
+ for name , creators in zip (* envs ):
272
+ default_logger .info (f"Testing on env { name } " )
273
+ subproc_wrapper = openai_gym .ParallelWrapperSubProc (creators )
318
274
subproc_wrapper .close ()
319
275
320
276
########################################################################
321
277
# Test for ParallelWrapperSubProc.active
322
278
########################################################################
323
279
def test_active (self , envs ):
324
- for env_list in envs :
325
- subproc_wrapper = openai_gym .ParallelWrapperSubProc (env_list )
280
+ for name , creators in zip (* envs ):
281
+ default_logger .info (f"Testing on env { name } " )
282
+ subproc_wrapper = openai_gym .ParallelWrapperSubProc (creators )
326
283
subproc_wrapper .reset ()
327
284
active = subproc_wrapper .active ()
328
285
subproc_wrapper .close ()
329
286
assert len (active ) == ENV_NUM
330
287
331
288
def test_size (self , envs ):
332
- subproc_wrapper = openai_gym .ParallelWrapperSubProc (envs [0 ])
289
+ subproc_wrapper = openai_gym .ParallelWrapperSubProc (envs [1 ][ 0 ])
333
290
assert subproc_wrapper .size () == ENV_NUM
334
291
subproc_wrapper .close ()
0 commit comments