github.com/AliyunContainerService/cli@v0.0.0-20181009023821-814ced4b30d0/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 } 40 fakeImage struct { 41 nameFunc func() string 42 targetFunc func() ocispec.Descriptor 43 unpackFunc func(context.Context, string) error 44 rootFSFunc func(ctx context.Context) ([]digest.Digest, error) 45 sizeFunc func(ctx context.Context) (int64, error) 46 configFunc func(ctx context.Context) (ocispec.Descriptor, error) 47 isUnpackedFunc func(context.Context, string) (bool, error) 48 contentStoreFunc func() content.Store 49 } 50 ) 51 52 func (w *fakeContainerdClient) Containers(ctx context.Context, filters ...string) ([]containerd.Container, error) { 53 if w.containersFunc != nil { 54 return w.containersFunc(ctx, filters...) 55 } 56 return []containerd.Container{}, nil 57 } 58 func (w *fakeContainerdClient) NewContainer(ctx context.Context, id string, opts ...containerd.NewContainerOpts) (containerd.Container, error) { 59 if w.newContainerFunc != nil { 60 return w.newContainerFunc(ctx, id, opts...) 61 } 62 return nil, nil 63 } 64 func (w *fakeContainerdClient) Pull(ctx context.Context, ref string, opts ...containerd.RemoteOpt) (containerd.Image, error) { 65 if w.pullFunc != nil { 66 return w.pullFunc(ctx, ref, opts...) 67 } 68 return nil, nil 69 } 70 func (w *fakeContainerdClient) GetImage(ctx context.Context, ref string) (containerd.Image, error) { 71 if w.getImageFunc != nil { 72 return w.getImageFunc(ctx, ref) 73 } 74 return nil, nil 75 } 76 func (w *fakeContainerdClient) ContentStore() content.Store { 77 if w.contentStoreFunc != nil { 78 return w.contentStoreFunc() 79 } 80 return nil 81 } 82 func (w *fakeContainerdClient) ContainerService() containers.Store { 83 if w.containerServiceFunc != nil { 84 return w.containerServiceFunc() 85 } 86 return nil 87 } 88 func (w *fakeContainerdClient) Close() error { 89 return nil 90 } 91 func (w *fakeContainerdClient) Install(ctx context.Context, image containerd.Image, args ...containerd.InstallOpts) error { 92 if w.installFunc != nil { 93 return w.installFunc(ctx, image, args...) 94 } 95 return nil 96 } 97 func (w *fakeContainerdClient) Version(ctx context.Context) (containerd.Version, error) { 98 if w.versionFunc != nil { 99 return w.versionFunc(ctx) 100 } 101 return containerd.Version{}, nil 102 } 103 104 func (c *fakeContainer) ID() string { 105 if c.idFunc != nil { 106 return c.idFunc() 107 } 108 return "" 109 } 110 func (c *fakeContainer) Info(ctx context.Context) (containers.Container, error) { 111 if c.infoFunc != nil { 112 return c.infoFunc(ctx) 113 } 114 return containers.Container{}, nil 115 } 116 func (c *fakeContainer) Delete(ctx context.Context, opts ...containerd.DeleteOpts) error { 117 if c.deleteFunc != nil { 118 return c.deleteFunc(ctx, opts...) 119 } 120 return nil 121 } 122 func (c *fakeContainer) NewTask(ctx context.Context, ioc cio.Creator, opts ...containerd.NewTaskOpts) (containerd.Task, error) { 123 if c.newTaskFunc != nil { 124 return c.newTaskFunc(ctx, ioc, opts...) 125 } 126 return nil, nil 127 } 128 func (c *fakeContainer) Spec(ctx context.Context) (*oci.Spec, error) { 129 if c.specFunc != nil { 130 return c.specFunc(ctx) 131 } 132 return nil, nil 133 } 134 func (c *fakeContainer) Task(ctx context.Context, attach cio.Attach) (containerd.Task, error) { 135 if c.taskFunc != nil { 136 return c.taskFunc(ctx, attach) 137 } 138 return nil, nil 139 } 140 func (c *fakeContainer) Image(ctx context.Context) (containerd.Image, error) { 141 if c.imageFunc != nil { 142 return c.imageFunc(ctx) 143 } 144 return nil, nil 145 } 146 func (c *fakeContainer) Labels(ctx context.Context) (map[string]string, error) { 147 if c.labelsFunc != nil { 148 return c.labelsFunc(ctx) 149 } 150 return nil, nil 151 } 152 func (c *fakeContainer) SetLabels(ctx context.Context, labels map[string]string) (map[string]string, error) { 153 if c.setLabelsFunc != nil { 154 return c.setLabelsFunc(ctx, labels) 155 } 156 return nil, nil 157 } 158 func (c *fakeContainer) Extensions(ctx context.Context) (map[string]prototypes.Any, error) { 159 if c.extensionsFunc != nil { 160 return c.extensionsFunc(ctx) 161 } 162 return nil, nil 163 } 164 func (c *fakeContainer) Update(ctx context.Context, opts ...containerd.UpdateContainerOpts) error { 165 if c.updateFunc != nil { 166 return c.updateFunc(ctx, opts...) 167 } 168 return nil 169 } 170 171 func (i *fakeImage) Name() string { 172 if i.nameFunc != nil { 173 return i.nameFunc() 174 } 175 return "" 176 } 177 func (i *fakeImage) Target() ocispec.Descriptor { 178 if i.targetFunc != nil { 179 return i.targetFunc() 180 } 181 return ocispec.Descriptor{} 182 } 183 func (i *fakeImage) Unpack(ctx context.Context, name string) error { 184 if i.unpackFunc != nil { 185 return i.unpackFunc(ctx, name) 186 } 187 return nil 188 } 189 func (i *fakeImage) RootFS(ctx context.Context) ([]digest.Digest, error) { 190 if i.rootFSFunc != nil { 191 return i.rootFSFunc(ctx) 192 } 193 return nil, nil 194 } 195 func (i *fakeImage) Size(ctx context.Context) (int64, error) { 196 if i.sizeFunc != nil { 197 return i.sizeFunc(ctx) 198 } 199 return 0, nil 200 } 201 func (i *fakeImage) Config(ctx context.Context) (ocispec.Descriptor, error) { 202 if i.configFunc != nil { 203 return i.configFunc(ctx) 204 } 205 return ocispec.Descriptor{}, nil 206 } 207 func (i *fakeImage) IsUnpacked(ctx context.Context, name string) (bool, error) { 208 if i.isUnpackedFunc != nil { 209 return i.isUnpackedFunc(ctx, name) 210 } 211 return false, nil 212 } 213 func (i *fakeImage) ContentStore() content.Store { 214 if i.contentStoreFunc != nil { 215 return i.contentStoreFunc() 216 } 217 return nil 218 }