github.com/jiasir/docker@v1.3.3-0.20170609024000-252e610103e7/builder/dockerfile/mockbackend_test.go (about) 1 package dockerfile 2 3 import ( 4 "io" 5 6 "github.com/docker/docker/api/types" 7 "github.com/docker/docker/api/types/backend" 8 "github.com/docker/docker/api/types/container" 9 "github.com/docker/docker/builder" 10 containerpkg "github.com/docker/docker/container" 11 "golang.org/x/net/context" 12 ) 13 14 // MockBackend implements the builder.Backend interface for unit testing 15 type MockBackend struct { 16 containerCreateFunc func(config types.ContainerCreateConfig) (container.ContainerCreateCreatedBody, error) 17 commitFunc func(string, *backend.ContainerCommitConfig) (string, error) 18 getImageFunc func(string) (builder.Image, builder.ReleaseableLayer, error) 19 makeImageCacheFunc func(cacheFrom []string) builder.ImageCache 20 } 21 22 func (m *MockBackend) ContainerAttachRaw(cID string, stdin io.ReadCloser, stdout, stderr io.Writer, stream bool, attached chan struct{}) error { 23 return nil 24 } 25 26 func (m *MockBackend) ContainerCreate(config types.ContainerCreateConfig) (container.ContainerCreateCreatedBody, error) { 27 if m.containerCreateFunc != nil { 28 return m.containerCreateFunc(config) 29 } 30 return container.ContainerCreateCreatedBody{}, nil 31 } 32 33 func (m *MockBackend) ContainerRm(name string, config *types.ContainerRmConfig) error { 34 return nil 35 } 36 37 func (m *MockBackend) Commit(cID string, cfg *backend.ContainerCommitConfig) (string, error) { 38 if m.commitFunc != nil { 39 return m.commitFunc(cID, cfg) 40 } 41 return "", nil 42 } 43 44 func (m *MockBackend) ContainerKill(containerID string, sig uint64) error { 45 return nil 46 } 47 48 func (m *MockBackend) ContainerStart(containerID string, hostConfig *container.HostConfig, checkpoint string, checkpointDir string) error { 49 return nil 50 } 51 52 func (m *MockBackend) ContainerWait(ctx context.Context, containerID string, condition containerpkg.WaitCondition) (<-chan containerpkg.StateStatus, error) { 53 return nil, nil 54 } 55 56 func (m *MockBackend) ContainerCreateWorkdir(containerID string) error { 57 return nil 58 } 59 60 func (m *MockBackend) CopyOnBuild(containerID string, destPath string, srcRoot string, srcPath string, decompress bool) error { 61 return nil 62 } 63 64 func (m *MockBackend) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (builder.Image, builder.ReleaseableLayer, error) { 65 if m.getImageFunc != nil { 66 return m.getImageFunc(refOrID) 67 } 68 69 return &mockImage{id: "theid"}, &mockLayer{}, nil 70 } 71 72 func (m *MockBackend) MakeImageCache(cacheFrom []string) builder.ImageCache { 73 if m.makeImageCacheFunc != nil { 74 return m.makeImageCacheFunc(cacheFrom) 75 } 76 return nil 77 } 78 79 type mockImage struct { 80 id string 81 config *container.Config 82 } 83 84 func (i *mockImage) ImageID() string { 85 return i.id 86 } 87 88 func (i *mockImage) RunConfig() *container.Config { 89 return i.config 90 } 91 92 type mockImageCache struct { 93 getCacheFunc func(parentID string, cfg *container.Config) (string, error) 94 } 95 96 func (mic *mockImageCache) GetCache(parentID string, cfg *container.Config) (string, error) { 97 if mic.getCacheFunc != nil { 98 return mic.getCacheFunc(parentID, cfg) 99 } 100 return "", nil 101 } 102 103 type mockLayer struct{} 104 105 func (l *mockLayer) Release() error { 106 return nil 107 } 108 109 func (l *mockLayer) Mount() (string, error) { 110 return "mountPath", nil 111 }