github.com/fabiokung/docker@v0.11.2-0.20170222101415-4534dcd49497/integration-cli/docker_cli_prune_unix_test.go (about) 1 // +build !windows 2 3 package main 4 5 import ( 6 "strconv" 7 "strings" 8 "time" 9 10 "github.com/docker/docker/integration-cli/checker" 11 "github.com/docker/docker/integration-cli/daemon" 12 "github.com/go-check/check" 13 ) 14 15 func pruneNetworkAndVerify(c *check.C, d *daemon.Swarm, kept, pruned []string) { 16 _, err := d.Cmd("network", "prune", "--force") 17 c.Assert(err, checker.IsNil) 18 out, err := d.Cmd("network", "ls", "--format", "{{.Name}}") 19 c.Assert(err, checker.IsNil) 20 for _, s := range kept { 21 c.Assert(out, checker.Contains, s) 22 } 23 for _, s := range pruned { 24 c.Assert(out, checker.Not(checker.Contains), s) 25 } 26 } 27 28 func (s *DockerSwarmSuite) TestPruneNetwork(c *check.C) { 29 d := s.AddDaemon(c, true, true) 30 _, err := d.Cmd("network", "create", "n1") // used by container (testprune) 31 c.Assert(err, checker.IsNil) 32 _, err = d.Cmd("network", "create", "n2") 33 c.Assert(err, checker.IsNil) 34 _, err = d.Cmd("network", "create", "n3", "--driver", "overlay") // used by service (testprunesvc) 35 c.Assert(err, checker.IsNil) 36 _, err = d.Cmd("network", "create", "n4", "--driver", "overlay") 37 c.Assert(err, checker.IsNil) 38 39 cName := "testprune" 40 _, err = d.Cmd("run", "-d", "--name", cName, "--net", "n1", "busybox", "top") 41 c.Assert(err, checker.IsNil) 42 43 serviceName := "testprunesvc" 44 replicas := 1 45 out, err := d.Cmd("service", "create", "--name", serviceName, 46 "--replicas", strconv.Itoa(replicas), 47 "--network", "n3", 48 "busybox", "top") 49 c.Assert(err, checker.IsNil) 50 c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), "") 51 waitAndAssert(c, defaultReconciliationTimeout, d.CheckActiveContainerCount, checker.Equals, replicas+1) 52 53 // prune and verify 54 pruneNetworkAndVerify(c, d, []string{"n1", "n3"}, []string{"n2", "n4"}) 55 56 // remove containers, then prune and verify again 57 _, err = d.Cmd("rm", "-f", cName) 58 c.Assert(err, checker.IsNil) 59 _, err = d.Cmd("service", "rm", serviceName) 60 c.Assert(err, checker.IsNil) 61 waitAndAssert(c, defaultReconciliationTimeout, d.CheckActiveContainerCount, checker.Equals, 0) 62 pruneNetworkAndVerify(c, d, []string{}, []string{"n1", "n3"}) 63 } 64 65 func (s *DockerDaemonSuite) TestPruneImageDangling(c *check.C) { 66 s.d.StartWithBusybox(c) 67 68 out, _, err := s.d.BuildImageWithOut("test", 69 `FROM busybox 70 LABEL foo=bar`, true, "-q") 71 c.Assert(err, checker.IsNil) 72 id := strings.TrimSpace(out) 73 74 out, err = s.d.Cmd("images", "-q", "--no-trunc") 75 c.Assert(err, checker.IsNil) 76 c.Assert(strings.TrimSpace(out), checker.Contains, id) 77 78 out, err = s.d.Cmd("image", "prune", "--force") 79 c.Assert(err, checker.IsNil) 80 c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), id) 81 82 out, err = s.d.Cmd("images", "-q", "--no-trunc") 83 c.Assert(err, checker.IsNil) 84 c.Assert(strings.TrimSpace(out), checker.Contains, id) 85 86 out, err = s.d.Cmd("image", "prune", "--force", "--all") 87 c.Assert(err, checker.IsNil) 88 c.Assert(strings.TrimSpace(out), checker.Contains, id) 89 90 out, err = s.d.Cmd("images", "-q", "--no-trunc") 91 c.Assert(err, checker.IsNil) 92 c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), id) 93 } 94 95 func (s *DockerSuite) TestPruneContainerUntil(c *check.C) { 96 out, _ := dockerCmd(c, "run", "-d", "busybox") 97 id1 := strings.TrimSpace(out) 98 c.Assert(waitExited(id1, 5*time.Second), checker.IsNil) 99 100 until := daemonUnixTime(c) 101 102 out, _ = dockerCmd(c, "run", "-d", "busybox") 103 id2 := strings.TrimSpace(out) 104 c.Assert(waitExited(id2, 5*time.Second), checker.IsNil) 105 106 out, _ = dockerCmd(c, "container", "prune", "--force", "--filter", "until="+until) 107 c.Assert(strings.TrimSpace(out), checker.Contains, id1) 108 c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), id2) 109 110 out, _ = dockerCmd(c, "ps", "-a", "-q", "--no-trunc") 111 c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), id1) 112 c.Assert(strings.TrimSpace(out), checker.Contains, id2) 113 }