github.com/vieux/docker@v0.6.3-0.20161004191708-e097c2a938c7/integration-cli/docker_cli_info_test.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "net" 7 "strings" 8 9 "github.com/docker/docker/pkg/integration/checker" 10 "github.com/docker/docker/utils" 11 "github.com/go-check/check" 12 ) 13 14 // ensure docker info succeeds 15 func (s *DockerSuite) TestInfoEnsureSucceeds(c *check.C) { 16 out, _ := dockerCmd(c, "info") 17 18 // always shown fields 19 stringsToCheck := []string{ 20 "ID:", 21 "Containers:", 22 " Running:", 23 " Paused:", 24 " Stopped:", 25 "Images:", 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 "Live Restore Enabled:", 37 } 38 39 if daemonPlatform == "linux" { 40 stringsToCheck = append(stringsToCheck, "Security Options:") 41 } 42 43 if DaemonIsLinux.Condition() { 44 stringsToCheck = append(stringsToCheck, "Runtimes:", "Default Runtime: runc") 45 } 46 47 if utils.ExperimentalBuild() { 48 stringsToCheck = append(stringsToCheck, "Experimental: true") 49 } 50 51 for _, linePrefix := range stringsToCheck { 52 c.Assert(out, checker.Contains, linePrefix, check.Commentf("couldn't find string %v in output", linePrefix)) 53 } 54 } 55 56 // TestInfoFormat tests `docker info --format` 57 func (s *DockerSuite) TestInfoFormat(c *check.C) { 58 out, status := dockerCmd(c, "info", "--format", "{{json .}}") 59 c.Assert(status, checker.Equals, 0) 60 var m map[string]interface{} 61 err := json.Unmarshal([]byte(out), &m) 62 c.Assert(err, checker.IsNil) 63 _, _, err = dockerCmdWithError("info", "--format", "{{.badString}}") 64 c.Assert(err, checker.NotNil) 65 } 66 67 // TestInfoDiscoveryBackend verifies that a daemon run with `--cluster-advertise` and 68 // `--cluster-store` properly show the backend's endpoint in info output. 69 func (s *DockerSuite) TestInfoDiscoveryBackend(c *check.C) { 70 testRequires(c, SameHostDaemon, DaemonIsLinux) 71 72 d := NewDaemon(c) 73 discoveryBackend := "consul://consuladdr:consulport/some/path" 74 discoveryAdvertise := "1.1.1.1:2375" 75 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), fmt.Sprintf("--cluster-advertise=%s", discoveryAdvertise)) 76 c.Assert(err, checker.IsNil) 77 defer d.Stop() 78 79 out, err := d.Cmd("info") 80 c.Assert(err, checker.IsNil) 81 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster Store: %s\n", discoveryBackend)) 82 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster Advertise: %s\n", discoveryAdvertise)) 83 } 84 85 // TestInfoDiscoveryInvalidAdvertise verifies that a daemon run with 86 // an invalid `--cluster-advertise` configuration 87 func (s *DockerSuite) TestInfoDiscoveryInvalidAdvertise(c *check.C) { 88 testRequires(c, SameHostDaemon, DaemonIsLinux) 89 90 d := NewDaemon(c) 91 discoveryBackend := "consul://consuladdr:consulport/some/path" 92 93 // --cluster-advertise with an invalid string is an error 94 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), "--cluster-advertise=invalid") 95 c.Assert(err, checker.Not(checker.IsNil)) 96 97 // --cluster-advertise without --cluster-store is also an error 98 err = d.Start("--cluster-advertise=1.1.1.1:2375") 99 c.Assert(err, checker.Not(checker.IsNil)) 100 } 101 102 // TestInfoDiscoveryAdvertiseInterfaceName verifies that a daemon run with `--cluster-advertise` 103 // configured with interface name properly show the advertise ip-address in info output. 104 func (s *DockerSuite) TestInfoDiscoveryAdvertiseInterfaceName(c *check.C) { 105 testRequires(c, SameHostDaemon, Network, DaemonIsLinux) 106 107 d := NewDaemon(c) 108 discoveryBackend := "consul://consuladdr:consulport/some/path" 109 discoveryAdvertise := "eth0" 110 111 err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), fmt.Sprintf("--cluster-advertise=%s:2375", discoveryAdvertise)) 112 c.Assert(err, checker.IsNil) 113 defer d.Stop() 114 115 iface, err := net.InterfaceByName(discoveryAdvertise) 116 c.Assert(err, checker.IsNil) 117 addrs, err := iface.Addrs() 118 c.Assert(err, checker.IsNil) 119 c.Assert(len(addrs), checker.GreaterThan, 0) 120 ip, _, err := net.ParseCIDR(addrs[0].String()) 121 c.Assert(err, checker.IsNil) 122 123 out, err := d.Cmd("info") 124 c.Assert(err, checker.IsNil) 125 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster Store: %s\n", discoveryBackend)) 126 c.Assert(out, checker.Contains, fmt.Sprintf("Cluster Advertise: %s:2375\n", ip.String())) 127 } 128 129 func (s *DockerSuite) TestInfoDisplaysRunningContainers(c *check.C) { 130 testRequires(c, DaemonIsLinux) 131 132 dockerCmd(c, "run", "-d", "busybox", "top") 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", 1)) 136 c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0)) 137 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 0)) 138 } 139 140 func (s *DockerSuite) TestInfoDisplaysPausedContainers(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, "pause", 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", 1)) 152 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 0)) 153 } 154 155 func (s *DockerSuite) TestInfoDisplaysStoppedContainers(c *check.C) { 156 testRequires(c, DaemonIsLinux) 157 158 out, _ := dockerCmd(c, "run", "-d", "busybox", "top") 159 cleanedContainerID := strings.TrimSpace(out) 160 161 dockerCmd(c, "stop", cleanedContainerID) 162 163 out, _ = dockerCmd(c, "info") 164 c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1)) 165 c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 0)) 166 c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0)) 167 c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 1)) 168 } 169 170 func (s *DockerSuite) TestInfoDebug(c *check.C) { 171 testRequires(c, SameHostDaemon, DaemonIsLinux) 172 173 d := NewDaemon(c) 174 err := d.Start("--debug") 175 c.Assert(err, checker.IsNil) 176 defer d.Stop() 177 178 out, err := d.Cmd("--debug", "info") 179 c.Assert(err, checker.IsNil) 180 c.Assert(out, checker.Contains, "Debug Mode (client): true\n") 181 c.Assert(out, checker.Contains, "Debug Mode (server): true\n") 182 c.Assert(out, checker.Contains, "File Descriptors") 183 c.Assert(out, checker.Contains, "Goroutines") 184 c.Assert(out, checker.Contains, "System Time") 185 c.Assert(out, checker.Contains, "EventsListeners") 186 c.Assert(out, checker.Contains, "Docker Root Dir") 187 } 188 189 func (s *DockerSuite) TestInsecureRegistries(c *check.C) { 190 testRequires(c, SameHostDaemon, DaemonIsLinux) 191 192 registryCIDR := "192.168.1.0/24" 193 registryHost := "insecurehost.com:5000" 194 195 d := NewDaemon(c) 196 err := d.Start("--insecure-registry="+registryCIDR, "--insecure-registry="+registryHost) 197 c.Assert(err, checker.IsNil) 198 defer d.Stop() 199 200 out, err := d.Cmd("info") 201 c.Assert(err, checker.IsNil) 202 c.Assert(out, checker.Contains, "Insecure Registries:\n") 203 c.Assert(out, checker.Contains, fmt.Sprintf(" %s\n", registryHost)) 204 c.Assert(out, checker.Contains, fmt.Sprintf(" %s\n", registryCIDR)) 205 } 206 207 func (s *DockerDaemonSuite) TestRegistryMirrors(c *check.C) { 208 testRequires(c, SameHostDaemon, DaemonIsLinux) 209 210 registryMirror1 := "https://192.168.1.2" 211 registryMirror2 := "http://registry.mirror.com:5000" 212 213 err := s.d.Start("--registry-mirror="+registryMirror1, "--registry-mirror="+registryMirror2) 214 c.Assert(err, checker.IsNil) 215 216 out, err := s.d.Cmd("info") 217 c.Assert(err, checker.IsNil) 218 c.Assert(out, checker.Contains, "Registry Mirrors:\n") 219 c.Assert(out, checker.Contains, fmt.Sprintf(" %s", registryMirror1)) 220 c.Assert(out, checker.Contains, fmt.Sprintf(" %s", registryMirror2)) 221 }