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  }