github.com/brahmaroutu/docker@v1.2.1-0.20160809185609-eb28dde01f16/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 "OSType:", 26 "Architecture:", 27 "Logging Driver:", 28 "Operating System:", 29 "CPUs:", 30 "Total Memory:", 31 "Kernel Version:", 32 "Storage Driver:", 33 "Volume:", 34 "Network:", 35 "Security Options:", 36 "Live Restore Enabled:", 37 } 38 39 if DaemonIsLinux.Condition() { 40 stringsToCheck = append(stringsToCheck, "Runtimes:", "Default Runtime: runc") 41 } 42 43 if utils.ExperimentalBuild() { 44 stringsToCheck = append(stringsToCheck, "Experimental: true") 45 } 46 47 for _, linePrefix := range stringsToCheck { 48 c.Assert(out, checker.Contains, linePrefix, check.Commentf("couldn't find string %v in output", linePrefix)) 49 } 50 } 51 52 // TestInfoDiscoveryBackend verifies that a daemon run with `--cluster-advertise` and 53 // `--cluster-store` properly show the backend's endpoint in info output. 54 func (s *DockerSuite) TestInfoDiscoveryBackend(c *check.C) { 55 testRequires(c, SameHostDaemon, DaemonIsLinux) 56 57 d := NewDaemon(c) 58 discoveryBackend := "consul://consuladdr:consulport/some/path" 59 discoveryAdvertise := "1.1.1.1:2375" 60 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), fmt.Sprintf("--cluster-advertise=%s", discoveryAdvertise)) 61 c.Assert(err, checker.IsNil) 62 defer d.Stop() 63 64 out, err := d.Cmd("info") 65 c.Assert(err, checker.IsNil) 66 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster Store: %s\n", discoveryBackend)) 67 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster Advertise: %s\n", discoveryAdvertise)) 68 } 69 70 // TestInfoDiscoveryInvalidAdvertise verifies that a daemon run with 71 // an invalid `--cluster-advertise` configuration 72 func (s *DockerSuite) TestInfoDiscoveryInvalidAdvertise(c *check.C) { 73 testRequires(c, SameHostDaemon, DaemonIsLinux) 74 75 d := NewDaemon(c) 76 discoveryBackend := "consul://consuladdr:consulport/some/path" 77 78 // --cluster-advertise with an invalid string is an error 79 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), "--cluster-advertise=invalid") 80 c.Assert(err, checker.Not(checker.IsNil)) 81 82 // --cluster-advertise without --cluster-store is also an error 83 err = d.Start("--cluster-advertise=1.1.1.1:2375") 84 c.Assert(err, checker.Not(checker.IsNil)) 85 } 86 87 // TestInfoDiscoveryAdvertiseInterfaceName verifies that a daemon run with `--cluster-advertise` 88 // configured with interface name properly show the advertise ip-address in info output. 89 func (s *DockerSuite) TestInfoDiscoveryAdvertiseInterfaceName(c *check.C) { 90 testRequires(c, SameHostDaemon, Network, DaemonIsLinux) 91 92 d := NewDaemon(c) 93 discoveryBackend := "consul://consuladdr:consulport/some/path" 94 discoveryAdvertise := "eth0" 95 96 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), fmt.Sprintf("--cluster-advertise=%s:2375", discoveryAdvertise)) 97 c.Assert(err, checker.IsNil) 98 defer d.Stop() 99 100 iface, err := net.InterfaceByName(discoveryAdvertise) 101 c.Assert(err, checker.IsNil) 102 addrs, err := iface.Addrs() 103 c.Assert(err, checker.IsNil) 104 c.Assert(len(addrs), checker.GreaterThan, 0) 105 ip, _, err := net.ParseCIDR(addrs[0].String()) 106 c.Assert(err, checker.IsNil) 107 108 out, err := d.Cmd("info") 109 c.Assert(err, checker.IsNil) 110 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster Store: %s\n", discoveryBackend)) 111 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster Advertise: %s:2375\n", ip.String())) 112 } 113 114 func (s *DockerSuite) TestInfoDisplaysRunningContainers(c *check.C) { 115 testRequires(c, DaemonIsLinux) 116 117 dockerCmd(c, "run", "-d", "busybox", "top") 118 out, _ := dockerCmd(c, "info") 119 c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1)) 120 c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 1)) 121 c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0)) 122 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 0)) 123 } 124 125 func (s *DockerSuite) TestInfoDisplaysPausedContainers(c *check.C) { 126 testRequires(c, DaemonIsLinux) 127 128 out, _ := dockerCmd(c, "run", "-d", "busybox", "top") 129 cleanedContainerID := strings.TrimSpace(out) 130 131 dockerCmd(c, "pause", cleanedContainerID) 132 133 out, _ = dockerCmd(c, "info") 134 c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1)) 135 c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 0)) 136 c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 1)) 137 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 0)) 138 } 139 140 func (s *DockerSuite) TestInfoDisplaysStoppedContainers(c *check.C) { 141 testRequires(c, DaemonIsLinux) 142 143 out, _ := dockerCmd(c, "run", "-d", "busybox", "top") 144 cleanedContainerID := strings.TrimSpace(out) 145 146 dockerCmd(c, "stop", cleanedContainerID) 147 148 out, _ = dockerCmd(c, "info") 149 c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1)) 150 c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 0)) 151 c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0)) 152 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 1)) 153 } 154 155 func (s *DockerSuite) TestInfoDebug(c *check.C) { 156 testRequires(c, SameHostDaemon, DaemonIsLinux) 157 158 d := NewDaemon(c) 159 err := d.Start("--debug") 160 c.Assert(err, checker.IsNil) 161 defer d.Stop() 162 163 out, err := d.Cmd("--debug", "info") 164 c.Assert(err, checker.IsNil) 165 c.Assert(out, checker.Contains, "Debug Mode (client): true\n") 166 c.Assert(out, checker.Contains, "Debug Mode (server): true\n") 167 c.Assert(out, checker.Contains, "File Descriptors") 168 c.Assert(out, checker.Contains, "Goroutines") 169 c.Assert(out, checker.Contains, "System Time") 170 c.Assert(out, checker.Contains, "EventsListeners") 171 c.Assert(out, checker.Contains, "Docker Root Dir") 172 } 173 174 func (s *DockerSuite) TestInsecureRegistries(c *check.C) { 175 testRequires(c, SameHostDaemon, DaemonIsLinux) 176 177 registryCIDR := "192.168.1.0/24" 178 registryHost := "insecurehost.com:5000" 179 180 d := NewDaemon(c) 181 err := d.Start("--insecure-registry="+registryCIDR, "--insecure-registry="+registryHost) 182 c.Assert(err, checker.IsNil) 183 defer d.Stop() 184 185 out, err := d.Cmd("info") 186 c.Assert(err, checker.IsNil) 187 c.Assert(out, checker.Contains, "Insecure Registries:\n") 188 c.Assert(out, checker.Contains, fmt.Sprintf(" %s\n", registryHost)) 189 c.Assert(out, checker.Contains, fmt.Sprintf(" %s\n", registryCIDR)) 190 }