From 9ca82e0ca870d805a2f2fbe7c24d03172425c6a1 Mon Sep 17 00:00:00 2001 From: Nishant Totla Date: Mon, 6 Nov 2017 17:12:50 -0800 Subject: [PATCH] scheduler: Adding plugin filter unit test for bind mount Signed-off-by: Nishant Totla --- manager/scheduler/scheduler_test.go | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/manager/scheduler/scheduler_test.go b/manager/scheduler/scheduler_test.go index 19be998974..5705e1dcdb 100644 --- a/manager/scheduler/scheduler_test.go +++ b/manager/scheduler/scheduler_test.go @@ -2432,6 +2432,31 @@ func TestSchedulerPluginConstraint(t *testing.T) { } } + // Task0: bind mount + t0 := &api.Task{ + ID: "task0_ID", + DesiredState: api.TaskStateRunning, + Spec: api.TaskSpec{ + Runtime: &api.TaskSpec_Container{ + Container: &api.ContainerSpec{ + Mounts: []api.Mount{ + { + Source: "/src", + Target: "/foo", + Type: api.MountTypeBind, + }, + }, + }, + }, + }, + ServiceAnnotations: api.Annotations{ + Name: "task0", + }, + Status: api.TaskStatus{ + State: api.TaskStatePending, + }, + } + // Task1: vol plugin1 t1 := &api.Task{ ID: "task1_ID", @@ -2631,6 +2656,18 @@ func TestSchedulerPluginConstraint(t *testing.T) { assignment := watchAssignment(t, watch) assert.Equal(t, assignment.NodeID, "node1_ID") + // Create t0; it should get assigned because the plugin filter shouldn't + // be enabled for tasks that have bind mounts + err = s.Update(func(tx store.Tx) error { + assert.NoError(t, store.CreateTask(tx, t0)) + return nil + }) + assert.NoError(t, err) + + assignment0 := watchAssignment(t, watch) + assert.Equal(t, assignment0.ID, "task0_ID") + assert.Equal(t, assignment0.NodeID, "node1_ID") + // Create t2; it should stay in the pending state because there is // no node that with volume plugin `plugin2` err = s.Update(func(tx store.Tx) error {