blob: 5f967c2f771c8f95950e40f24f4941455018bf77 [file] [log] [blame]
package container // import "github.com/docker/docker/daemon/cluster/executor/container"
import (
"testing"
"github.com/docker/docker/api/types/container"
swarmapi "github.com/docker/swarmkit/api"
"gotest.tools/assert"
)
func TestIsolationConversion(t *testing.T) {
cases := []struct {
name string
from swarmapi.ContainerSpec_Isolation
to container.Isolation
}{
{name: "default", from: swarmapi.ContainerIsolationDefault, to: container.IsolationDefault},
{name: "process", from: swarmapi.ContainerIsolationProcess, to: container.IsolationProcess},
{name: "hyperv", from: swarmapi.ContainerIsolationHyperV, to: container.IsolationHyperV},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
task := swarmapi.Task{
Spec: swarmapi.TaskSpec{
Runtime: &swarmapi.TaskSpec_Container{
Container: &swarmapi.ContainerSpec{
Image: "alpine:latest",
Isolation: c.from,
},
},
},
}
config := containerConfig{task: &task}
assert.Equal(t, c.to, config.hostConfig().Isolation)
})
}
}
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)
}