github.com/vincentwoo/docker@v0.7.3-0.20160116130405-82401a4b13c0/integration-cli/docker_cli_info_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "net" 6 "strings" 7 8 "github.com/docker/docker/pkg/integration/checker" 9 "github.com/docker/docker/utils" 10 "github.com/go-check/check" 11 ) 12 13 // ensure docker info succeeds 14 func (s *DockerSuite) TestInfoEnsureSucceeds(c *check.C) { 15 out, _ := dockerCmd(c, "info") 16 17 // always shown fields 18 stringsToCheck := []string{ 19 "ID:", 20 "Containers:", 21 " Running:", 22 " Paused:", 23 " Stopped:", 24 "Images:", 25 "Execution Driver:", 26 "OSType:", 27 "Architecture:", 28 "Logging Driver:", 29 "Operating System:", 30 "CPUs:", 31 "Total Memory:", 32 "Kernel Version:", 33 "Storage Driver:", 34 "Volume:", 35 "Network:", 36 } 37 38 if utils.ExperimentalBuild() { 39 stringsToCheck = append(stringsToCheck, "Experimental: true") 40 } 41 42 for _, linePrefix := range stringsToCheck { 43 c.Assert(out, checker.Contains, linePrefix, check.Commentf("couldn't find string %v in output", linePrefix)) 44 } 45 } 46 47 // TestInfoDiscoveryBackend verifies that a daemon run with `--cluster-advertise` and 48 // `--cluster-store` properly show the backend's endpoint in info output. 49 func (s *DockerSuite) TestInfoDiscoveryBackend(c *check.C) { 50 testRequires(c, SameHostDaemon, DaemonIsLinux) 51 52 d := NewDaemon(c) 53 discoveryBackend := "consul://consuladdr:consulport/some/path" 54 discoveryAdvertise := "1.1.1.1:2375" 55 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), fmt.Sprintf("--cluster-advertise=%s", discoveryAdvertise)) 56 c.Assert(err, checker.IsNil) 57 defer d.Stop() 58 59 out, err := d.Cmd("info") 60 c.Assert(err, checker.IsNil) 61 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster store: %s\n", discoveryBackend)) 62 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster advertise: %s\n", discoveryAdvertise)) 63 } 64 65 // TestInfoDiscoveryInvalidAdvertise verifies that a daemon run with 66 // an invalid `--cluster-advertise` configuration 67 func (s *DockerSuite) TestInfoDiscoveryInvalidAdvertise(c *check.C) { 68 testRequires(c, SameHostDaemon, DaemonIsLinux) 69 70 d := NewDaemon(c) 71 discoveryBackend := "consul://consuladdr:consulport/some/path" 72 73 // --cluster-advertise with an invalid string is an error 74 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), "--cluster-advertise=invalid") 75 c.Assert(err, checker.Not(checker.IsNil)) 76 77 // --cluster-advertise without --cluster-store is also an error 78 err = d.Start("--cluster-advertise=1.1.1.1:2375") 79 c.Assert(err, checker.Not(checker.IsNil)) 80 } 81 82 // TestInfoDiscoveryAdvertiseInterfaceName verifies that a daemon run with `--cluster-advertise` 83 // configured with interface name properly show the advertise ip-address in info output. 84 func (s *DockerSuite) TestInfoDiscoveryAdvertiseInterfaceName(c *check.C) { 85 testRequires(c, SameHostDaemon, Network, DaemonIsLinux) 86 87 d := NewDaemon(c) 88 discoveryBackend := "consul://consuladdr:consulport/some/path" 89 discoveryAdvertise := "eth0" 90 91 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), fmt.Sprintf("--cluster-advertise=%s:2375", discoveryAdvertise)) 92 c.Assert(err, checker.IsNil) 93 defer d.Stop() 94 95 iface, err := net.InterfaceByName(discoveryAdvertise) 96 c.Assert(err, checker.IsNil) 97 addrs, err := iface.Addrs() 98 c.Assert(err, checker.IsNil) 99 c.Assert(len(addrs), checker.GreaterThan, 0) 100 ip, _, err := net.ParseCIDR(addrs[0].String()) 101 c.Assert(err, checker.IsNil) 102 103 out, err := d.Cmd("info") 104 c.Assert(err, checker.IsNil) 105 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster store: %s\n", discoveryBackend)) 106 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster advertise: %s:2375\n", ip.String())) 107 } 108 109 func (s *DockerSuite) TestInfoDisplaysRunningContainers(c *check.C) { 110 testRequires(c, DaemonIsLinux) 111 112 dockerCmd(c, "run", "-d", "busybox", "top") 113 out, _ := dockerCmd(c, "info") 114 c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1)) 115 c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 1)) 116 c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0)) 117 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 0)) 118 } 119 120 func (s *DockerSuite) TestInfoDisplaysPausedContainers(c *check.C) { 121 testRequires(c, DaemonIsLinux) 122 123 out, _ := dockerCmd(c, "run", "-d", "busybox", "top") 124 cleanedContainerID := strings.TrimSpace(out) 125 126 dockerCmd(c, "pause", cleanedContainerID) 127 128 out, _ = dockerCmd(c, "info") 129 c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1)) 130 c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 0)) 131 c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 1)) 132 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 0)) 133 } 134 135 func (s *DockerSuite) TestInfoDisplaysStoppedContainers(c *check.C) { 136 testRequires(c, DaemonIsLinux) 137 138 out, _ := dockerCmd(c, "run", "-d", "busybox", "top") 139 cleanedContainerID := strings.TrimSpace(out) 140 141 dockerCmd(c, "stop", cleanedContainerID) 142 143 out, _ = dockerCmd(c, "info") 144 c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1)) 145 c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 0)) 146 c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0)) 147 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 1)) 148 }