github.com/itscaro/cli@v0.0.0-20190705081621-c9db0fe93829/internal/containerizedengine/client_test.go (about) 1 package containerizedengine 2 3 import ( 4 "context" 5 6 "github.com/containerd/containerd" 7 "github.com/containerd/containerd/cio" 8 "github.com/containerd/containerd/containers" 9 "github.com/containerd/containerd/content" 10 "github.com/containerd/containerd/oci" 11 prototypes "github.com/gogo/protobuf/types" 12 "github.com/opencontainers/go-digest" 13 ocispec "github.com/opencontainers/image-spec/specs-go/v1" 14 ) 15 16 type ( 17 fakeContainerdClient struct { 18 containersFunc func(ctx context.Context, filters ...string) ([]containerd.Container, error) 19 newContainerFunc func(ctx context.Context, id string, opts ...containerd.NewContainerOpts) (containerd.Container, error) 20 pullFunc func(ctx context.Context, ref string, opts ...containerd.RemoteOpt) (containerd.Image, error) 21 getImageFunc func(ctx context.Context, ref string) (containerd.Image, error) 22 contentStoreFunc func() content.Store 23 containerServiceFunc func() containers.Store 24 installFunc func(context.Context, containerd.Image, ...containerd.InstallOpts) error 25 versionFunc func(ctx context.Context) (containerd.Version, error) 26 } 27 fakeContainer struct { 28 idFunc func() string 29 infoFunc func(context.Context) (containers.Container, error) 30 deleteFunc func(context.Context, ...containerd.DeleteOpts) error 31 newTaskFunc func(context.Context, cio.Creator, ...containerd.NewTaskOpts) (containerd.Task, error) 32 specFunc func(context.Context) (*oci.Spec, error) 33 taskFunc func(context.Context, cio.Attach) (containerd.Task, error) 34 imageFunc func(context.Context) (containerd.Image, error) 35 labelsFunc func(context.Context) (map[string]string, error) 36 setLabelsFunc func(context.Context, map[string]string) (map[string]string, error) 37 extensionsFunc func(context.Context) (map[string]prototypes.Any, error) 38 updateFunc func(context.Context, ...containerd.UpdateContainerOpts) error 39 checkpointFunc func(context.Context, string, ...containerd.CheckpointOpts) (containerd.Image, error) 40 } 41 fakeImage struct { 42 nameFunc func() string 43 targetFunc func() ocispec.Descriptor 44 labelFunc func() map[string]string 45 unpackFunc func(context.Context, string) error 46 rootFSFunc func(ctx context.Context) ([]digest.Digest, error) 47 sizeFunc func(ctx context.Context) (int64, error) 48 configFunc func(ctx context.Context) (ocispec.Descriptor, error) 49 isUnpackedFunc func(context.Context, string) (bool, error) 50 contentStoreFunc func() content.Store 51 } 52 ) 53 54 func (w *fakeContainerdClient) Containers(ctx context.Context, filters ...string) ([]containerd.Container, error) { 55 if w.containersFunc != nil { 56 return w.containersFunc(ctx, filters...) 57 } 58 return []containerd.Container{}, nil 59 } 60 func (w *fakeContainerdClient) NewContainer(ctx context.Context, id string, opts ...containerd.NewContainerOpts) (containerd.Container, error) { 61 if w.newContainerFunc != nil { 62 return w.newContainerFunc(ctx, id, opts...) 63 } 64 return nil, nil 65 } 66 func (w *fakeContainerdClient) Pull(ctx context.Context, ref string, opts ...containerd.RemoteOpt) (containerd.Image, error) { 67 if w.pullFunc != nil { 68 return w.pullFunc(ctx, ref, opts...) 69 } 70 return nil, nil 71 } 72 func (w *fakeContainerdClient) GetImage(ctx context.Context, ref string) (containerd.Image, error) { 73 if w.getImageFunc != nil { 74 return w.getImageFunc(ctx, ref) 75 } 76 return nil, nil 77 } 78 func (w *fakeContainerdClient) ContentStore() content.Store { 79 if w.contentStoreFunc != nil { 80 return w.contentStoreFunc() 81 } 82 return nil 83 } 84 func (w *fakeContainerdClient) ContainerService() containers.Store { 85 if w.containerServiceFunc != nil { 86 return w.containerServiceFunc() 87 } 88 return nil 89 } 90 func (w *fakeContainerdClient) Close() error { 91 return nil 92 } 93 func (w *fakeContainerdClient) Install(ctx context.Context, image containerd.Image, args ...containerd.InstallOpts) error { 94 if w.installFunc != nil { 95 return w.installFunc(ctx, image, args...) 96 } 97 return nil 98 } 99 func (w *fakeContainerdClient) Version(ctx context.Context) (containerd.Version, error) { 100 if w.versionFunc != nil { 101 return w.versionFunc(ctx) 102 } 103 return containerd.Version{}, nil 104 } 105 106 func (c *fakeContainer) ID() string { 107 if c.idFunc != nil { 108 return c.idFunc() 109 } 110 return "" 111 } 112 func (c *fakeContainer) Info(ctx context.Context) (containers.Container, error) { 113 if c.infoFunc != nil { 114 return c.infoFunc(ctx) 115 } 116 return containers.Container{}, nil 117 } 118 func (c *fakeContainer) Delete(ctx context.Context, opts ...containerd.DeleteOpts) error { 119 if c.deleteFunc != nil { 120 return c.deleteFunc(ctx, opts...) 121 } 122 return nil 123 } 124 func (c *fakeContainer) NewTask(ctx context.Context, ioc cio.Creator, opts ...containerd.NewTaskOpts) (containerd.Task, error) { 125 if c.newTaskFunc != nil { 126 return c.newTaskFunc(ctx, ioc, opts...) 127 } 128 return nil, nil 129 } 130 func (c *fakeContainer) Spec(ctx context.Context) (*oci.Spec, error) { 131 if c.specFunc != nil { 132 return c.specFunc(ctx) 133 } 134 return nil, nil 135 } 136 func (c *fakeContainer) Task(ctx context.Context, attach cio.Attach) (containerd.Task, error) { 137 if c.taskFunc != nil { 138 return c.taskFunc(ctx, attach) 139 } 140 return nil, nil 141 } 142 func (c *fakeContainer) Image(ctx context.Context) (containerd.Image, error) { 143 if c.imageFunc != nil { 144 return c.imageFunc(ctx) 145 } 146 return nil, nil 147 } 148 func (c *fakeContainer) Labels(ctx context.Context) (map[string]string, error) { 149 if c.labelsFunc != nil { 150 return c.labelsFunc(ctx) 151 } 152 return nil, nil 153 } 154 func (c *fakeContainer) SetLabels(ctx context.Context, labels map[string]string) (map[string]string, error) { 155 if c.setLabelsFunc != nil { 156 return c.setLabelsFunc(ctx, labels) 157 } 158 return nil, nil 159 } 160 func (c *fakeContainer) Extensions(ctx context.Context) (map[string]prototypes.Any, error) { 161 if c.extensionsFunc != nil { 162 return c.extensionsFunc(ctx) 163 } 164 return nil, nil 165 } 166 func (c *fakeContainer) Update(ctx context.Context, opts ...containerd.UpdateContainerOpts) error { 167 if c.updateFunc != nil { 168 return c.updateFunc(ctx, opts...) 169 } 170 return nil 171 } 172 173 func (c *fakeContainer) Checkpoint(ctx context.Context, ref string, opts ...containerd.CheckpointOpts) (containerd.Image, error) { 174 if c.checkpointFunc != nil { 175 return c.checkpointFunc(ctx, ref, opts...) 176 } 177 return nil, nil 178 } 179 180 func (i *fakeImage) Name() string { 181 if i.nameFunc != nil { 182 return i.nameFunc() 183 } 184 return "" 185 } 186 func (i *fakeImage) Target() ocispec.Descriptor { 187 if i.targetFunc != nil { 188 return i.targetFunc() 189 } 190 return ocispec.Descriptor{} 191 } 192 func (i *fakeImage) Labels() map[string]string { 193 if i.labelFunc != nil { 194 return i.labelFunc() 195 } 196 return nil 197 } 198 199 func (i *fakeImage) Unpack(ctx context.Context, name string) error { 200 if i.unpackFunc != nil { 201 return i.unpackFunc(ctx, name) 202 } 203 return nil 204 } 205 func (i *fakeImage) RootFS(ctx context.Context) ([]digest.Digest, error) { 206 if i.rootFSFunc != nil { 207 return i.rootFSFunc(ctx) 208 } 209 return nil, nil 210 } 211 func (i *fakeImage) Size(ctx context.Context) (int64, error) { 212 if i.sizeFunc != nil { 213 return i.sizeFunc(ctx) 214 } 215 return 0, nil 216 } 217 func (i *fakeImage) Config(ctx context.Context) (ocispec.Descriptor, error) { 218 if i.configFunc != nil { 219 return i.configFunc(ctx) 220 } 221 return ocispec.Descriptor{}, nil 222 } 223 func (i *fakeImage) IsUnpacked(ctx context.Context, name string) (bool, error) { 224 if i.isUnpackedFunc != nil { 225 return i.isUnpackedFunc(ctx, name) 226 } 227 return false, nil 228 } 229 func (i *fakeImage) ContentStore() content.Store { 230 if i.contentStoreFunc != nil { 231 return i.contentStoreFunc() 232 } 233 return nil 234 }