@@ -68,23 +68,24 @@ def test_validate_no_roles(self, _) -> None:
68
68
def test_validate_no_resource (self , _ ) -> None :
69
69
runner = Runner ("test" , schedulers = {"default" : self .scheduler })
70
70
with self .assertRaises (ValueError ):
71
- role = Role ("no resource" , image = "no_image" ).runs ("echo" , "hello_world" )
72
- app = AppDef ("no resource" ).of (role )
71
+ role = Role (
72
+ "no resource" , image = "no_image" , entrypoint = "echo" , args = ["hello_world" ]
73
+ )
74
+ app = AppDef ("no resource" , roles = [role ])
73
75
runner .run (app )
74
76
75
77
def test_validate_invalid_replicas (self , _ ) -> None :
76
78
runner = Runner ("test" , schedulers = {"default" : self .scheduler })
77
79
with self .assertRaises (ValueError ):
78
- role = (
79
- Role (
80
- "invalid replicas" ,
81
- image = "torch" ,
82
- resource = Resource (cpu = 1 , gpu = 0 , memMB = 500 ),
83
- )
84
- .runs ("echo" , "hello_world" )
85
- .replicas (0 )
80
+ role = Role (
81
+ "invalid replicas" ,
82
+ image = "torch" ,
83
+ entrypoint = "echo" ,
84
+ args = ["hello_world" ],
85
+ num_replicas = 0 ,
86
+ resource = Resource (cpu = 1 , gpu = 0 , memMB = 500 ),
86
87
)
87
- app = AppDef ("invalid replicas" ). of ( role )
88
+ app = AppDef ("invalid replicas" , roles = [ role ] )
88
89
runner .run (app )
89
90
90
91
def test_run (self , _ ) -> None :
@@ -95,10 +96,14 @@ def test_run(self, _) -> None:
95
96
wait_interval = 1 ,
96
97
)
97
98
self .assertEqual (1 , len (session .scheduler_backends ()))
98
- role = Role (name = "touch" , image = self .test_dir , resource = resource .SMALL ).runs (
99
- "touch.sh" , test_file
99
+ role = Role (
100
+ name = "touch" ,
101
+ image = self .test_dir ,
102
+ resource = resource .SMALL ,
103
+ entrypoint = "touch.sh" ,
104
+ args = [test_file ],
100
105
)
101
- app = AppDef ("name" ). of ( role )
106
+ app = AppDef ("name" , roles = [ role ] )
102
107
103
108
app_handle = session .run (app , cfg = self .cfg )
104
109
app_status = none_throws (session .wait (app_handle ))
@@ -109,20 +114,28 @@ def test_dryrun(self, _) -> None:
109
114
session = Runner (
110
115
name = SESSION_NAME , schedulers = {"default" : scheduler_mock }, wait_interval = 1
111
116
)
112
- role = Role (name = "touch" , image = self .test_dir , resource = resource .SMALL ).runs (
113
- "echo" , "hello world"
117
+ role = Role (
118
+ name = "touch" ,
119
+ image = self .test_dir ,
120
+ resource = resource .SMALL ,
121
+ entrypoint = "echo" ,
122
+ args = ["hello world" ],
114
123
)
115
- app = AppDef ("name" ). of ( role )
124
+ app = AppDef ("name" , roles = [ role ] )
116
125
session .dryrun (app , "default" , cfg = self .cfg )
117
126
scheduler_mock .submit_dryrun .assert_called_once_with (app , self .cfg )
118
127
scheduler_mock ._validate .assert_called_once ()
119
128
120
129
def test_describe (self , _ ) -> None :
121
130
session = Runner (name = SESSION_NAME , schedulers = {"default" : self .scheduler })
122
- role = Role (name = "sleep" , image = self .test_dir , resource = resource .SMALL ).runs (
123
- "sleep.sh" , "60"
131
+ role = Role (
132
+ name = "sleep" ,
133
+ image = self .test_dir ,
134
+ resource = resource .SMALL ,
135
+ entrypoint = "sleep.sh" ,
136
+ args = ["60" ],
124
137
)
125
- app = AppDef ("sleeper" ). of ( role )
138
+ app = AppDef ("sleeper" , roles = [ role ] )
126
139
127
140
app_handle = session .run (app , cfg = self .cfg )
128
141
self .assertEqual (app , session .describe (app_handle ))
@@ -133,10 +146,14 @@ def test_list(self, _) -> None:
133
146
session = Runner (
134
147
name = SESSION_NAME , schedulers = {"default" : self .scheduler }, wait_interval = 1
135
148
)
136
- role = Role (name = "touch" , image = self .test_dir , resource = resource .SMALL ).runs (
137
- "sleep.sh" , "1"
149
+ role = Role (
150
+ name = "touch" ,
151
+ image = self .test_dir ,
152
+ resource = resource .SMALL ,
153
+ entrypoint = "sleep.sh" ,
154
+ args = ["1" ],
138
155
)
139
- app = AppDef ("sleeper" ). of ( role )
156
+ app = AppDef ("sleeper" , roles = [ role ] )
140
157
141
158
num_apps = 4
142
159
@@ -159,10 +176,14 @@ def test_evict_non_existent_app(self, _) -> None:
159
176
name = SESSION_NAME , schedulers = {"default" : scheduler }, wait_interval = 1
160
177
)
161
178
test_file = os .path .join (self .test_dir , "test_file" )
162
- role = Role (name = "touch" , image = self .test_dir , resource = resource .SMALL ).runs (
163
- "touch.sh" , test_file
179
+ role = Role (
180
+ name = "touch" ,
181
+ image = self .test_dir ,
182
+ resource = resource .SMALL ,
183
+ entrypoint = "touch.sh" ,
184
+ args = [test_file ],
164
185
)
165
- app = AppDef ("touch_test_file" ). of ( role )
186
+ app = AppDef ("touch_test_file" , roles = [ role ] )
166
187
167
188
# local scheduler was setup with a cache size of 1
168
189
# run the same app twice (the first will be removed from the scheduler's cache)
@@ -183,10 +204,14 @@ def test_status(self, _) -> None:
183
204
session = Runner (
184
205
name = SESSION_NAME , schedulers = {"default" : self .scheduler }, wait_interval = 1
185
206
)
186
- role = Role (name = "sleep" , image = self .test_dir , resource = resource .SMALL ).runs (
187
- "sleep.sh" , "60"
207
+ role = Role (
208
+ name = "sleep" ,
209
+ image = self .test_dir ,
210
+ resource = resource .SMALL ,
211
+ entrypoint = "sleep.sh" ,
212
+ args = ["60" ],
188
213
)
189
- app = AppDef ("sleeper" ). of ( role )
214
+ app = AppDef ("sleeper" , roles = [ role ] )
190
215
app_handle = session .run (app , cfg = self .cfg )
191
216
app_status = none_throws (session .status (app_handle ))
192
217
self .assertEqual (AppState .RUNNING , app_status .state )
@@ -213,10 +238,13 @@ def test_status_ui_url(self, json_dumps_mock: MagicMock, _) -> None:
213
238
session = Runner (
214
239
name = "test_ui_url_session" , schedulers = {"default" : mock_scheduler }
215
240
)
216
- role = Role ("ignored" , image = self .test_dir , resource = resource .SMALL ).runs (
217
- "/bin/echo"
241
+ role = Role (
242
+ "ignored" ,
243
+ image = self .test_dir ,
244
+ resource = resource .SMALL ,
245
+ entrypoint = "/bin/echo" ,
218
246
)
219
- app_handle = session .run (AppDef (app_id ). of ( role ))
247
+ app_handle = session .run (AppDef (app_id , roles = [ role ] ))
220
248
status = none_throws (session .status (app_handle ))
221
249
self .assertEquals (resp .ui_url , status .ui_url )
222
250
@@ -233,10 +261,13 @@ def test_status_structured_msg(self, json_dumps_mock: MagicMock, _) -> None:
233
261
session = Runner (
234
262
name = "test_structured_msg" , schedulers = {"default" : mock_scheduler }
235
263
)
236
- role = Role ("ignored" , image = self .test_dir , resource = resource .SMALL ).runs (
237
- "/bin/echo"
264
+ role = Role (
265
+ "ignored" ,
266
+ image = self .test_dir ,
267
+ resource = resource .SMALL ,
268
+ entrypoint = "/bin/echo" ,
238
269
)
239
- app_handle = session .run (AppDef (app_id ). of ( role ))
270
+ app_handle = session .run (AppDef (app_id , roles = [ role ] ))
240
271
status = none_throws (session .status (app_handle ))
241
272
self .assertEquals (resp .structured_error_msg , status .structured_error_msg )
242
273
@@ -305,10 +336,14 @@ def test_get_schedulers(self, json_dumps_mock: MagicMock, _) -> None:
305
336
schedulers = {"default" : default_sched_mock , "local" : local_sched_mock }
306
337
session = Runner (name = "test_session" , schedulers = schedulers )
307
338
308
- role = Role (name = "sleep" , image = self .test_dir , resource = resource .SMALL ).runs (
309
- "sleep.sh" , "60"
339
+ role = Role (
340
+ name = "sleep" ,
341
+ image = self .test_dir ,
342
+ resource = resource .SMALL ,
343
+ entrypoint = "sleep.sh" ,
344
+ args = ["60" ],
310
345
)
311
- app = AppDef ("sleeper" ). of ( role )
346
+ app = AppDef ("sleeper" , roles = [ role ] )
312
347
cfg = RunConfig ()
313
348
session .run (app , scheduler = "local" , cfg = cfg )
314
349
local_sched_mock .submit .called_once_with (app , cfg )
@@ -353,8 +388,11 @@ def test_run_from_file(self, _) -> None:
353
388
expected_app = AppDef (
354
389
"ddp_app" ,
355
390
roles = [
356
- Role ("worker" , image = "dummy_image" , resource = Resource (1 , 0 , 1 )).runs (
357
- entrypoint
391
+ Role (
392
+ "worker" ,
393
+ image = "dummy_image" ,
394
+ resource = Resource (1 , 0 , 1 ),
395
+ entrypoint = entrypoint ,
358
396
)
359
397
],
360
398
)
0 commit comments