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