123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package container
- import (
- "strings"
- "testing"
- "github.com/docker/docker/daemon"
- "github.com/docker/docker/pkg/stringid"
- "github.com/docker/swarmkit/api"
- )
- func newTestControllerWithMount(m api.Mount) (*controller, error) {
- return newController(&daemon.Daemon{}, &api.Task{
- ID: stringid.GenerateRandomID(),
- ServiceID: stringid.GenerateRandomID(),
- Spec: api.TaskSpec{
- Runtime: &api.TaskSpec_Container{
- Container: &api.ContainerSpec{
- Image: "image_name",
- Labels: map[string]string{
- "com.docker.swarm.task.id": "id",
- },
- Mounts: []api.Mount{m},
- },
- },
- },
- })
- }
- func TestControllerValidateMountBind(t *testing.T) {
- // with improper source
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.MountTypeBind,
- Source: "foo",
- Target: testAbsPath,
- }); err == nil || !strings.Contains(err.Error(), "invalid bind mount source") {
- t.Fatalf("expected error, got: %v", err)
- }
- // with proper source
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.MountTypeBind,
- Source: testAbsPath,
- Target: testAbsPath,
- }); err != nil {
- t.Fatalf("expected error, got: %v", err)
- }
- }
- func TestControllerValidateMountVolume(t *testing.T) {
- // with improper source
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.MountTypeVolume,
- Source: testAbsPath,
- Target: testAbsPath,
- }); err == nil || !strings.Contains(err.Error(), "invalid volume mount source") {
- t.Fatalf("expected error, got: %v", err)
- }
- // with proper source
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.MountTypeVolume,
- Source: "foo",
- Target: testAbsPath,
- }); err != nil {
- t.Fatalf("expected error, got: %v", err)
- }
- }
- func TestControllerValidateMountTarget(t *testing.T) {
- // with improper target
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.MountTypeBind,
- Source: testAbsPath,
- Target: "foo",
- }); err == nil || !strings.Contains(err.Error(), "invalid mount target") {
- t.Fatalf("expected error, got: %v", err)
- }
- // with proper target
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.MountTypeBind,
- Source: testAbsPath,
- Target: testAbsPath,
- }); err != nil {
- t.Fatalf("expected no error, got: %v", err)
- }
- }
- func TestControllerValidateMountTmpfs(t *testing.T) {
- // with improper target
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.MountTypeTmpfs,
- Source: "foo",
- Target: testAbsPath,
- }); err == nil || !strings.Contains(err.Error(), "invalid tmpfs source") {
- t.Fatalf("expected error, got: %v", err)
- }
- // with proper target
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.MountTypeTmpfs,
- Target: testAbsPath,
- }); err != nil {
- t.Fatalf("expected no error, got: %v", err)
- }
- }
- func TestControllerValidateMountInvalidType(t *testing.T) {
- // with improper target
- if _, err := newTestControllerWithMount(api.Mount{
- Type: api.Mount_MountType(9999),
- Source: "foo",
- Target: testAbsPath,
- }); err == nil || !strings.Contains(err.Error(), "invalid mount type") {
- t.Fatalf("expected error, got: %v", err)
- }
- }
|