@@ -209,6 +209,48 @@ func TestTaskRunner_TaskEnv(t *testing.T) {
209
209
assert .Equal (t , "global bar somebody" , mockCfg .StdoutString )
210
210
}
211
211
212
+ func TestTaskRunner_TaskConfig (t * testing.T ) {
213
+ t .Parallel ()
214
+ require := require .New (t )
215
+
216
+ alloc := mock .BatchAlloc ()
217
+ task := alloc .Job .TaskGroups [0 ].Tasks [0 ]
218
+ task .Driver = "mock_driver"
219
+
220
+ //// Use interpolation from both node attributes and meta vars
221
+ //task.Config = map[string]interface{}{
222
+ // "run_for": "1ms",
223
+ //}
224
+
225
+ conf , cleanup := testTaskRunnerConfig (t , alloc , task .Name )
226
+ defer cleanup ()
227
+
228
+ // Run the first TaskRunner
229
+ tr , err := NewTaskRunner (conf )
230
+ require .NoError (err )
231
+ go tr .Run ()
232
+ defer tr .Kill (context .Background (), structs .NewTaskEvent ("cleanup" ))
233
+
234
+ // Wait for task to complete
235
+ select {
236
+ case <- tr .WaitCh ():
237
+ case <- time .After (3 * time .Second ):
238
+ }
239
+
240
+ // Get the mock driver plugin
241
+ driverPlugin , err := conf .DriverManager .Dispense (mockdriver .PluginID .Name )
242
+ require .NoError (err )
243
+ mockDriver := driverPlugin .(* mockdriver.Driver )
244
+
245
+ // Assert its config has been properly interpolated
246
+ driverCfg , mockCfg := mockDriver .GetTaskConfig ()
247
+ require .NotNil (driverCfg )
248
+ require .NotNil (mockCfg )
249
+ assert .Equal (t , alloc .Job .Name , driverCfg .JobName )
250
+ assert .Equal (t , alloc .TaskGroup , driverCfg .TaskGroupName )
251
+ assert .Equal (t , alloc .Job .TaskGroups [0 ].Tasks [0 ].Name , driverCfg .Name )
252
+ }
253
+
212
254
// Test that devices get sent to the driver
213
255
func TestTaskRunner_DevicePropogation (t * testing.T ) {
214
256
t .Parallel ()
0 commit comments