4
4
import shutil
5
5
import socket
6
6
import subprocess
7
+ import tempfile
7
8
8
9
import arff
9
10
import numpy as np
15
16
16
17
class TestMetadataGeneration (unittest .TestCase ):
17
18
def setUp (self ):
18
- self .working_directory = "/tmp/autosklearn-unittest-tmp-dir-%s-%d-%d" % (
19
- socket .gethostname (),
20
- os .getpid (),
21
- random .randint (0 , 1000000 ),
19
+ host = socket .gethostname ()
20
+ pid = os .getpid ()
21
+ rint = random .randint (0 , 1000000 )
22
+
23
+ self .working_directory = os .path .join (
24
+ tempfile .gettempdir (), f"autosklearn-unittest-tmp-dir-{ host } -{ pid } -{ rint } "
22
25
)
23
26
24
27
def print_files (self ):
@@ -27,7 +30,6 @@ def print_files(self):
27
30
print (dirpath , dirnames , filenames )
28
31
29
32
def test_metadata_generation (self ):
30
-
31
33
regression_task_id = 360029
32
34
regression_dataset_name = "SWD" .lower ()
33
35
classification_task_id = 245
@@ -52,10 +54,15 @@ def test_metadata_generation(self):
52
54
script_filename ,
53
55
self .working_directory ,
54
56
)
57
+
55
58
return_value = subprocess .run (
56
- cmd , shell = True , stdout = subprocess .PIPE , stderr = subprocess .PIPE
59
+ cmd ,
60
+ shell = True ,
61
+ stdout = subprocess .PIPE ,
62
+ stderr = subprocess .PIPE ,
63
+ timeout = 30 ,
57
64
)
58
- self .assertEqual (return_value .returncode , 0 , msg = str (return_value ))
65
+ self .assertEqual (return_value .returncode , 0 , msg = f" { cmd } \n { str (return_value )} " )
59
66
60
67
# 4. run one of the commands to get some data
61
68
commands_output_file = os .path .join (
@@ -99,8 +106,13 @@ def test_metadata_generation(self):
99
106
# for training. In production, it would use twice as much!
100
107
cmd = cmd .replace ("-s 1" , "-s 1 --unittest" )
101
108
print ("COMMAND: %s" % cmd )
109
+
102
110
return_value = subprocess .run (
103
- cmd , shell = True , stdout = subprocess .PIPE , stderr = subprocess .PIPE
111
+ cmd ,
112
+ shell = True ,
113
+ stdout = subprocess .PIPE ,
114
+ stderr = subprocess .PIPE ,
115
+ timeout = 180 ,
104
116
)
105
117
print ("STDOUT: %s" % repr (return_value .stdout ), flush = True )
106
118
print ("STDERR: %s" % repr (return_value .stderr ), flush = True )
@@ -124,7 +136,9 @@ def test_metadata_generation(self):
124
136
with open (smac_log ) as fh :
125
137
smac_output = fh .read ()
126
138
self .assertEqual (
127
- return_value .returncode , 0 , msg = str (return_value ) + "\n " + smac_output
139
+ return_value .returncode ,
140
+ 0 ,
141
+ msg = f"{ cmd } \n { str (return_value )} " + "\n " + smac_output ,
128
142
)
129
143
expected_validation_output = os .path .join (
130
144
expected_output_directory , ".." , "validation_trajectory_1.json"
@@ -174,12 +188,17 @@ def test_metadata_generation(self):
174
188
self .working_directory ,
175
189
)
176
190
print ("COMMAND: %s" % cmd )
191
+
177
192
return_value = subprocess .run (
178
- cmd , shell = True , stdout = subprocess .PIPE , stderr = subprocess .PIPE
193
+ cmd ,
194
+ shell = True ,
195
+ stdout = subprocess .PIPE ,
196
+ stderr = subprocess .PIPE ,
197
+ timeout = 60 ,
179
198
)
180
199
print ("STDOUT: %s" % repr (return_value .stdout ), flush = True )
181
200
print ("STDERR: %s" % repr (return_value .stderr ), flush = True )
182
- self .assertEqual (return_value .returncode , 0 , msg = str (return_value ))
201
+ self .assertEqual (return_value .returncode , 0 , msg = f" { cmd } \n { str (return_value )} " )
183
202
184
203
for file in [
185
204
"algorithm_runs.arff" ,
@@ -218,9 +237,13 @@ def test_metadata_generation(self):
218
237
self .working_directory ,
219
238
)
220
239
return_value = subprocess .run (
221
- cmd , shell = True , stdout = subprocess .PIPE , stderr = subprocess .PIPE
240
+ cmd ,
241
+ shell = True ,
242
+ stdout = subprocess .PIPE ,
243
+ stderr = subprocess .PIPE ,
244
+ timeout = 90 ,
222
245
)
223
- self .assertEqual (return_value .returncode , 0 , msg = str (return_value ))
246
+ self .assertEqual (return_value .returncode , 0 , msg = f" { cmd } \n { str (return_value )} " )
224
247
for task_type in ("classification" , "regression" ):
225
248
for file in [
226
249
"calculation_times.csv" ,
@@ -273,10 +296,15 @@ def test_metadata_generation(self):
273
296
script_filename ,
274
297
self .working_directory ,
275
298
)
299
+
276
300
return_value = subprocess .run (
277
- cmd , shell = True , stdout = subprocess .PIPE , stderr = subprocess .PIPE
301
+ cmd ,
302
+ shell = True ,
303
+ stdout = subprocess .PIPE ,
304
+ stderr = subprocess .PIPE ,
305
+ timeout = 45 ,
278
306
)
279
- self .assertEqual (return_value .returncode , 0 , msg = str (return_value ))
307
+ self .assertEqual (return_value .returncode , 0 , msg = f" { cmd } \n { str (return_value )} " )
280
308
281
309
for metric_ , combination in (
282
310
(metric , "%s_binary.classification_dense" % metric ),
0 commit comments