diff --git a/daemon/cluster/executor/container/container_test.go b/daemon/cluster/executor/container/container_test.go index 1bf6f6cf02..5f967c2f77 100644 --- a/daemon/cluster/executor/container/container_test.go +++ b/daemon/cluster/executor/container/container_test.go @@ -35,3 +35,48 @@ func TestIsolationConversion(t *testing.T) { }) } } + +func TestContainerLabels(t *testing.T) { + c := &containerConfig{ + task: &swarmapi.Task{ + ID: "real-task.id", + Spec: swarmapi.TaskSpec{ + Runtime: &swarmapi.TaskSpec_Container{ + Container: &swarmapi.ContainerSpec{ + Labels: map[string]string{ + "com.docker.swarm.task": "user-specified-task", + "com.docker.swarm.task.id": "user-specified-task.id", + "com.docker.swarm.task.name": "user-specified-task.name", + "com.docker.swarm.node.id": "user-specified-node.id", + "com.docker.swarm.service.id": "user-specified-service.id", + "com.docker.swarm.service.name": "user-specified-service.name", + "this-is-a-user-label": "this is a user label's value", + }, + }, + }, + }, + ServiceID: "real-service.id", + Slot: 123, + NodeID: "real-node.id", + Annotations: swarmapi.Annotations{ + Name: "real-service.name.123.real-task.id", + }, + ServiceAnnotations: swarmapi.Annotations{ + Name: "real-service.name", + }, + }, + } + + expected := map[string]string{ + "com.docker.swarm.task": "", + "com.docker.swarm.task.id": "real-task.id", + "com.docker.swarm.task.name": "real-service.name.123.real-task.id", + "com.docker.swarm.node.id": "real-node.id", + "com.docker.swarm.service.id": "real-service.id", + "com.docker.swarm.service.name": "real-service.name", + "this-is-a-user-label": "this is a user label's value", + } + + labels := c.labels() + assert.DeepEqual(t, expected, labels) +}