Signed-off-by: weiyan <weiyan3@huawei.com>
| ... | ... |
@@ -14,6 +14,7 @@ import ( |
| 14 | 14 |
"strings" |
| 15 | 15 |
"time" |
| 16 | 16 |
|
| 17 |
+ "github.com/docker/docker/pkg/integration/checker" |
|
| 17 | 18 |
"github.com/go-check/check" |
| 18 | 19 |
) |
| 19 | 20 |
|
| ... | ... |
@@ -125,114 +126,95 @@ func (s *DockerExternalVolumeSuite) SetUpSuite(c *check.C) {
|
| 125 | 125 |
fmt.Fprintln(w, `{}`)
|
| 126 | 126 |
}) |
| 127 | 127 |
|
| 128 |
- if err := os.MkdirAll("/etc/docker/plugins", 0755); err != nil {
|
|
| 129 |
- c.Fatal(err) |
|
| 130 |
- } |
|
| 128 |
+ err := os.MkdirAll("/etc/docker/plugins", 0755)
|
|
| 129 |
+ c.Assert(err, checker.IsNil) |
|
| 131 | 130 |
|
| 132 |
- if err := ioutil.WriteFile("/etc/docker/plugins/test-external-volume-driver.spec", []byte(s.server.URL), 0644); err != nil {
|
|
| 133 |
- c.Fatal(err) |
|
| 134 |
- } |
|
| 131 |
+ err = ioutil.WriteFile("/etc/docker/plugins/test-external-volume-driver.spec", []byte(s.server.URL), 0644)
|
|
| 132 |
+ c.Assert(err, checker.IsNil) |
|
| 135 | 133 |
} |
| 136 | 134 |
|
| 137 | 135 |
func (s *DockerExternalVolumeSuite) TearDownSuite(c *check.C) {
|
| 138 | 136 |
s.server.Close() |
| 139 | 137 |
|
| 140 |
- if err := os.RemoveAll("/etc/docker/plugins"); err != nil {
|
|
| 141 |
- c.Fatal(err) |
|
| 142 |
- } |
|
| 138 |
+ err := os.RemoveAll("/etc/docker/plugins")
|
|
| 139 |
+ c.Assert(err, checker.IsNil) |
|
| 143 | 140 |
} |
| 144 | 141 |
|
| 145 | 142 |
func (s *DockerExternalVolumeSuite) TestStartExternalNamedVolumeDriver(c *check.C) {
|
| 146 |
- if err := s.d.StartWithBusybox(); err != nil {
|
|
| 147 |
- c.Fatal(err) |
|
| 148 |
- } |
|
| 143 |
+ err := s.d.StartWithBusybox() |
|
| 144 |
+ c.Assert(err, checker.IsNil) |
|
| 149 | 145 |
|
| 150 | 146 |
out, err := s.d.Cmd("run", "--rm", "--name", "test-data", "-v", "external-volume-test:/tmp/external-volume-test", "--volume-driver", "test-external-volume-driver", "busybox:latest", "cat", "/tmp/external-volume-test/test")
|
| 151 |
- if err != nil {
|
|
| 152 |
- c.Fatal(out, err) |
|
| 153 |
- } |
|
| 147 |
+ c.Assert(err, checker.IsNil) |
|
| 154 | 148 |
|
| 155 |
- if !strings.Contains(out, s.server.URL) {
|
|
| 156 |
- c.Fatalf("External volume mount failed. Output: %s\n", out)
|
|
| 157 |
- } |
|
| 149 |
+ c.Assert(out, checker.Contains, s.server.URL) |
|
| 158 | 150 |
|
| 159 | 151 |
p := hostVolumePath("external-volume-test")
|
| 160 | 152 |
_, err = os.Lstat(p) |
| 161 |
- if err == nil {
|
|
| 162 |
- c.Fatalf("Expected error checking volume path in host: %s\n", p)
|
|
| 163 |
- } |
|
| 153 |
+ c.Assert(err, checker.NotNil) |
|
| 164 | 154 |
|
| 165 | 155 |
if !os.IsNotExist(err) {
|
| 166 | 156 |
c.Fatalf("Expected volume path in host to not exist: %s, %v\n", p, err)
|
| 167 | 157 |
} |
| 168 | 158 |
|
| 169 |
- c.Assert(s.ec.activations, check.Equals, 1) |
|
| 170 |
- c.Assert(s.ec.creations, check.Equals, 1) |
|
| 171 |
- c.Assert(s.ec.removals, check.Equals, 1) |
|
| 172 |
- c.Assert(s.ec.mounts, check.Equals, 1) |
|
| 173 |
- c.Assert(s.ec.unmounts, check.Equals, 1) |
|
| 159 |
+ c.Assert(s.ec.activations, checker.Equals, 1) |
|
| 160 |
+ c.Assert(s.ec.creations, checker.Equals, 1) |
|
| 161 |
+ c.Assert(s.ec.removals, checker.Equals, 1) |
|
| 162 |
+ c.Assert(s.ec.mounts, checker.Equals, 1) |
|
| 163 |
+ c.Assert(s.ec.unmounts, checker.Equals, 1) |
|
| 174 | 164 |
} |
| 175 | 165 |
|
| 176 | 166 |
func (s *DockerExternalVolumeSuite) TestStartExternalVolumeUnnamedDriver(c *check.C) {
|
| 177 |
- if err := s.d.StartWithBusybox(); err != nil {
|
|
| 178 |
- c.Fatal(err) |
|
| 179 |
- } |
|
| 167 |
+ err := s.d.StartWithBusybox() |
|
| 168 |
+ c.Assert(err, checker.IsNil) |
|
| 180 | 169 |
|
| 181 | 170 |
out, err := s.d.Cmd("run", "--rm", "--name", "test-data", "-v", "/tmp/external-volume-test", "--volume-driver", "test-external-volume-driver", "busybox:latest", "cat", "/tmp/external-volume-test/test")
|
| 182 |
- if err != nil {
|
|
| 183 |
- c.Fatal(err) |
|
| 184 |
- } |
|
| 171 |
+ c.Assert(err, checker.IsNil) |
|
| 185 | 172 |
|
| 186 |
- if !strings.Contains(out, s.server.URL) {
|
|
| 187 |
- c.Fatalf("External volume mount failed. Output: %s\n", out)
|
|
| 188 |
- } |
|
| 173 |
+ c.Assert(out, checker.Contains, s.server.URL) |
|
| 189 | 174 |
|
| 190 |
- c.Assert(s.ec.activations, check.Equals, 1) |
|
| 191 |
- c.Assert(s.ec.creations, check.Equals, 1) |
|
| 192 |
- c.Assert(s.ec.removals, check.Equals, 1) |
|
| 193 |
- c.Assert(s.ec.mounts, check.Equals, 1) |
|
| 194 |
- c.Assert(s.ec.unmounts, check.Equals, 1) |
|
| 175 |
+ c.Assert(s.ec.activations, checker.Equals, 1) |
|
| 176 |
+ c.Assert(s.ec.creations, checker.Equals, 1) |
|
| 177 |
+ c.Assert(s.ec.removals, checker.Equals, 1) |
|
| 178 |
+ c.Assert(s.ec.mounts, checker.Equals, 1) |
|
| 179 |
+ c.Assert(s.ec.unmounts, checker.Equals, 1) |
|
| 195 | 180 |
} |
| 196 | 181 |
|
| 197 | 182 |
func (s DockerExternalVolumeSuite) TestStartExternalVolumeDriverVolumesFrom(c *check.C) {
|
| 198 |
- if err := s.d.StartWithBusybox(); err != nil {
|
|
| 199 |
- c.Fatal(err) |
|
| 200 |
- } |
|
| 183 |
+ err := s.d.StartWithBusybox() |
|
| 184 |
+ c.Assert(err, checker.IsNil) |
|
| 201 | 185 |
|
| 202 | 186 |
out, err := s.d.Cmd("run", "-d", "--name", "vol-test1", "-v", "/foo", "--volume-driver", "test-external-volume-driver", "busybox:latest")
|
| 203 |
- c.Assert(err, check.IsNil, check.Commentf(out)) |
|
| 187 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 204 | 188 |
|
| 205 | 189 |
out, err = s.d.Cmd("run", "--rm", "--volumes-from", "vol-test1", "--name", "vol-test2", "busybox", "ls", "/tmp")
|
| 206 |
- c.Assert(err, check.IsNil, check.Commentf(out)) |
|
| 190 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 207 | 191 |
|
| 208 | 192 |
out, err = s.d.Cmd("rm", "-fv", "vol-test1")
|
| 209 |
- c.Assert(err, check.IsNil, check.Commentf(out)) |
|
| 193 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 210 | 194 |
|
| 211 |
- c.Assert(s.ec.activations, check.Equals, 1) |
|
| 212 |
- c.Assert(s.ec.creations, check.Equals, 1) |
|
| 213 |
- c.Assert(s.ec.removals, check.Equals, 1) |
|
| 214 |
- c.Assert(s.ec.mounts, check.Equals, 2) |
|
| 215 |
- c.Assert(s.ec.unmounts, check.Equals, 2) |
|
| 195 |
+ c.Assert(s.ec.activations, checker.Equals, 1) |
|
| 196 |
+ c.Assert(s.ec.creations, checker.Equals, 1) |
|
| 197 |
+ c.Assert(s.ec.removals, checker.Equals, 1) |
|
| 198 |
+ c.Assert(s.ec.mounts, checker.Equals, 2) |
|
| 199 |
+ c.Assert(s.ec.unmounts, checker.Equals, 2) |
|
| 216 | 200 |
} |
| 217 | 201 |
|
| 218 | 202 |
func (s DockerExternalVolumeSuite) TestStartExternalVolumeDriverDeleteContainer(c *check.C) {
|
| 219 |
- if err := s.d.StartWithBusybox(); err != nil {
|
|
| 220 |
- c.Fatal(err) |
|
| 221 |
- } |
|
| 203 |
+ err := s.d.StartWithBusybox() |
|
| 204 |
+ c.Assert(err, checker.IsNil) |
|
| 222 | 205 |
|
| 223 |
- if out, err := s.d.Cmd("run", "-d", "--name", "vol-test1", "-v", "/foo", "--volume-driver", "test-external-volume-driver", "busybox:latest"); err != nil {
|
|
| 224 |
- c.Fatal(out, err) |
|
| 225 |
- } |
|
| 206 |
+ out, err := s.d.Cmd("run", "-d", "--name", "vol-test1", "-v", "/foo", "--volume-driver", "test-external-volume-driver", "busybox:latest")
|
|
| 207 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 226 | 208 |
|
| 227 |
- if out, err := s.d.Cmd("rm", "-fv", "vol-test1"); err != nil {
|
|
| 228 |
- c.Fatal(out, err) |
|
| 229 |
- } |
|
| 209 |
+ out, err = s.d.Cmd("rm", "-fv", "vol-test1")
|
|
| 210 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 230 | 211 |
|
| 231 |
- c.Assert(s.ec.activations, check.Equals, 1) |
|
| 232 |
- c.Assert(s.ec.creations, check.Equals, 1) |
|
| 233 |
- c.Assert(s.ec.removals, check.Equals, 1) |
|
| 234 |
- c.Assert(s.ec.mounts, check.Equals, 1) |
|
| 235 |
- c.Assert(s.ec.unmounts, check.Equals, 1) |
|
| 212 |
+ c.Assert(s.ec.activations, checker.Equals, 1) |
|
| 213 |
+ c.Assert(s.ec.creations, checker.Equals, 1) |
|
| 214 |
+ c.Assert(s.ec.removals, checker.Equals, 1) |
|
| 215 |
+ c.Assert(s.ec.mounts, checker.Equals, 1) |
|
| 216 |
+ c.Assert(s.ec.unmounts, checker.Equals, 1) |
|
| 236 | 217 |
} |
| 237 | 218 |
|
| 238 | 219 |
func hostVolumePath(name string) string {
|
| ... | ... |
@@ -240,9 +222,8 @@ func hostVolumePath(name string) string {
|
| 240 | 240 |
} |
| 241 | 241 |
|
| 242 | 242 |
func (s *DockerExternalVolumeSuite) TestStartExternalNamedVolumeDriverCheckBindLocalVolume(c *check.C) {
|
| 243 |
- if err := s.d.StartWithBusybox(); err != nil {
|
|
| 244 |
- c.Fatal(err) |
|
| 245 |
- } |
|
| 243 |
+ err := s.d.StartWithBusybox() |
|
| 244 |
+ c.Assert(err, checker.IsNil) |
|
| 246 | 245 |
|
| 247 | 246 |
expected := s.server.URL |
| 248 | 247 |
|
| ... | ... |
@@ -253,28 +234,26 @@ func (s *DockerExternalVolumeSuite) TestStartExternalNamedVolumeDriverCheckBindL |
| 253 | 253 |
|
| 254 | 254 |
img := "test-checkbindlocalvolume" |
| 255 | 255 |
|
| 256 |
- _, err := buildImageWithOutInDamon(s.d.sock(), img, dockerfile, true) |
|
| 257 |
- c.Assert(err, check.IsNil) |
|
| 256 |
+ _, err = buildImageWithOutInDamon(s.d.sock(), img, dockerfile, true) |
|
| 257 |
+ c.Assert(err, checker.IsNil) |
|
| 258 | 258 |
|
| 259 | 259 |
out, err := s.d.Cmd("run", "--rm", "--name", "test-data-nobind", "-v", "external-volume-test:/tmp/external-volume-test", "--volume-driver", "test-external-volume-driver", img, "cat", "/nobindthenlocalvol/test")
|
| 260 |
- c.Assert(err, check.IsNil) |
|
| 260 |
+ c.Assert(err, checker.IsNil) |
|
| 261 | 261 |
|
| 262 |
- if !strings.Contains(out, expected) {
|
|
| 263 |
- c.Fatalf("External volume mount failed. Output: %s\n", out)
|
|
| 264 |
- } |
|
| 262 |
+ c.Assert(out, checker.Contains, expected) |
|
| 265 | 263 |
|
| 266 |
- c.Assert(s.ec.activations, check.Equals, 1) |
|
| 267 |
- c.Assert(s.ec.creations, check.Equals, 1) |
|
| 268 |
- c.Assert(s.ec.removals, check.Equals, 1) |
|
| 269 |
- c.Assert(s.ec.mounts, check.Equals, 1) |
|
| 270 |
- c.Assert(s.ec.unmounts, check.Equals, 1) |
|
| 264 |
+ c.Assert(s.ec.activations, checker.Equals, 1) |
|
| 265 |
+ c.Assert(s.ec.creations, checker.Equals, 1) |
|
| 266 |
+ c.Assert(s.ec.removals, checker.Equals, 1) |
|
| 267 |
+ c.Assert(s.ec.mounts, checker.Equals, 1) |
|
| 268 |
+ c.Assert(s.ec.unmounts, checker.Equals, 1) |
|
| 271 | 269 |
} |
| 272 | 270 |
|
| 273 | 271 |
// Make sure a request to use a down driver doesn't block other requests |
| 274 | 272 |
func (s *DockerExternalVolumeSuite) TestStartExternalVolumeDriverLookupNotBlocked(c *check.C) {
|
| 275 | 273 |
specPath := "/etc/docker/plugins/down-driver.spec" |
| 276 | 274 |
err := ioutil.WriteFile("/etc/docker/plugins/down-driver.spec", []byte("tcp://127.0.0.7:9999"), 0644)
|
| 277 |
- c.Assert(err, check.IsNil) |
|
| 275 |
+ c.Assert(err, checker.IsNil) |
|
| 278 | 276 |
defer os.RemoveAll(specPath) |
| 279 | 277 |
|
| 280 | 278 |
chCmd1 := make(chan struct{})
|
| ... | ... |
@@ -282,10 +261,10 @@ func (s *DockerExternalVolumeSuite) TestStartExternalVolumeDriverLookupNotBlocke |
| 282 | 282 |
cmd1 := exec.Command(dockerBinary, "volume", "create", "-d", "down-driver") |
| 283 | 283 |
cmd2 := exec.Command(dockerBinary, "volume", "create") |
| 284 | 284 |
|
| 285 |
- c.Assert(cmd1.Start(), check.IsNil) |
|
| 285 |
+ c.Assert(cmd1.Start(), checker.IsNil) |
|
| 286 | 286 |
defer cmd1.Process.Kill() |
| 287 | 287 |
time.Sleep(100 * time.Millisecond) // ensure API has been called |
| 288 |
- c.Assert(cmd2.Start(), check.IsNil) |
|
| 288 |
+ c.Assert(cmd2.Start(), checker.IsNil) |
|
| 289 | 289 |
|
| 290 | 290 |
go func() {
|
| 291 | 291 |
cmd1.Wait() |
| ... | ... |
@@ -300,7 +279,7 @@ func (s *DockerExternalVolumeSuite) TestStartExternalVolumeDriverLookupNotBlocke |
| 300 | 300 |
cmd2.Process.Kill() |
| 301 | 301 |
c.Fatalf("volume create with down driver finished unexpectedly")
|
| 302 | 302 |
case err := <-chCmd2: |
| 303 |
- c.Assert(err, check.IsNil, check.Commentf("error creating volume"))
|
|
| 303 |
+ c.Assert(err, checker.IsNil) |
|
| 304 | 304 |
case <-time.After(5 * time.Second): |
| 305 | 305 |
c.Fatal("volume creates are blocked by previous create requests when previous driver is down")
|
| 306 | 306 |
cmd2.Process.Kill() |
| ... | ... |
@@ -308,9 +287,8 @@ func (s *DockerExternalVolumeSuite) TestStartExternalVolumeDriverLookupNotBlocke |
| 308 | 308 |
} |
| 309 | 309 |
|
| 310 | 310 |
func (s *DockerExternalVolumeSuite) TestStartExternalVolumeDriverRetryNotImmediatelyExists(c *check.C) {
|
| 311 |
- if err := s.d.StartWithBusybox(); err != nil {
|
|
| 312 |
- c.Fatal(err) |
|
| 313 |
- } |
|
| 311 |
+ err := s.d.StartWithBusybox() |
|
| 312 |
+ c.Assert(err, checker.IsNil) |
|
| 314 | 313 |
|
| 315 | 314 |
specPath := "/etc/docker/plugins/test-external-volume-driver-retry.spec" |
| 316 | 315 |
os.RemoveAll(specPath) |
| ... | ... |
@@ -333,18 +311,16 @@ func (s *DockerExternalVolumeSuite) TestStartExternalVolumeDriverRetryNotImmedia |
| 333 | 333 |
|
| 334 | 334 |
select {
|
| 335 | 335 |
case err := <-errchan: |
| 336 |
- if err != nil {
|
|
| 337 |
- c.Fatal(err) |
|
| 338 |
- } |
|
| 336 |
+ c.Assert(err, checker.IsNil) |
|
| 339 | 337 |
case <-time.After(8 * time.Second): |
| 340 | 338 |
c.Fatal("volume creates fail when plugin not immediately available")
|
| 341 | 339 |
} |
| 342 | 340 |
|
| 343 |
- c.Assert(s.ec.activations, check.Equals, 1) |
|
| 344 |
- c.Assert(s.ec.creations, check.Equals, 1) |
|
| 345 |
- c.Assert(s.ec.removals, check.Equals, 1) |
|
| 346 |
- c.Assert(s.ec.mounts, check.Equals, 1) |
|
| 347 |
- c.Assert(s.ec.unmounts, check.Equals, 1) |
|
| 341 |
+ c.Assert(s.ec.activations, checker.Equals, 1) |
|
| 342 |
+ c.Assert(s.ec.creations, checker.Equals, 1) |
|
| 343 |
+ c.Assert(s.ec.removals, checker.Equals, 1) |
|
| 344 |
+ c.Assert(s.ec.mounts, checker.Equals, 1) |
|
| 345 |
+ c.Assert(s.ec.unmounts, checker.Equals, 1) |
|
| 348 | 346 |
} |
| 349 | 347 |
|
| 350 | 348 |
func (s *DockerExternalVolumeSuite) TestStartExternalVolumeDriverBindExternalVolume(c *check.C) {
|
| ... | ... |
@@ -356,9 +332,9 @@ func (s *DockerExternalVolumeSuite) TestStartExternalVolumeDriverBindExternalVol |
| 356 | 356 |
Driver string |
| 357 | 357 |
} |
| 358 | 358 |
out, err := inspectFieldJSON("testing", "Mounts")
|
| 359 |
- c.Assert(err, check.IsNil) |
|
| 360 |
- c.Assert(json.NewDecoder(strings.NewReader(out)).Decode(&mounts), check.IsNil) |
|
| 361 |
- c.Assert(len(mounts), check.Equals, 1, check.Commentf(out)) |
|
| 362 |
- c.Assert(mounts[0].Name, check.Equals, "foo") |
|
| 363 |
- c.Assert(mounts[0].Driver, check.Equals, "test-external-volume-driver") |
|
| 359 |
+ c.Assert(err, checker.IsNil) |
|
| 360 |
+ c.Assert(json.NewDecoder(strings.NewReader(out)).Decode(&mounts), checker.IsNil) |
|
| 361 |
+ c.Assert(len(mounts), checker.Equals, 1, check.Commentf(out)) |
|
| 362 |
+ c.Assert(mounts[0].Name, checker.Equals, "foo") |
|
| 363 |
+ c.Assert(mounts[0].Driver, checker.Equals, "test-external-volume-driver") |
|
| 364 | 364 |
} |