github.com/ojongerius/docker@v1.11.2/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  	}
    36  
    37  	if utils.ExperimentalBuild() {
    38  		stringsToCheck = append(stringsToCheck, "Experimental: true")
    39  	}
    40  
    41  	for _, linePrefix := range stringsToCheck {
    42  		c.Assert(out, checker.Contains, linePrefix, check.Commentf("couldn't find string %v in output", linePrefix))
    43  	}
    44  }
    45  
    46  // TestInfoDiscoveryBackend verifies that a daemon run with `--cluster-advertise` and
    47  // `--cluster-store` properly show the backend's endpoint in info output.
    48  func (s *DockerSuite) TestInfoDiscoveryBackend(c *check.C) {
    49  	testRequires(c, SameHostDaemon, DaemonIsLinux)
    50  
    51  	d := NewDaemon(c)
    52  	discoveryBackend := "consul://consuladdr:consulport/some/path"
    53  	discoveryAdvertise := "1.1.1.1:2375"
    54  	err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), fmt.Sprintf("--cluster-advertise=%s", discoveryAdvertise))
    55  	c.Assert(err, checker.IsNil)
    56  	defer d.Stop()
    57  
    58  	out, err := d.Cmd("info")
    59  	c.Assert(err, checker.IsNil)
    60  	c.Assert(out, checker.Contains, fmt.Sprintf("Cluster store: %s\n", discoveryBackend))
    61  	c.Assert(out, checker.Contains, fmt.Sprintf("Cluster advertise: %s\n", discoveryAdvertise))
    62  }
    63  
    64  // TestInfoDiscoveryInvalidAdvertise verifies that a daemon run with
    65  // an invalid `--cluster-advertise` configuration
    66  func (s *DockerSuite) TestInfoDiscoveryInvalidAdvertise(c *check.C) {
    67  	testRequires(c, SameHostDaemon, DaemonIsLinux)
    68  
    69  	d := NewDaemon(c)
    70  	discoveryBackend := "consul://consuladdr:consulport/some/path"
    71  
    72  	// --cluster-advertise with an invalid string is an error
    73  	err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), "--cluster-advertise=invalid")
    74  	c.Assert(err, checker.Not(checker.IsNil))
    75  
    76  	// --cluster-advertise without --cluster-store is also an error
    77  	err = d.Start("--cluster-advertise=1.1.1.1:2375")
    78  	c.Assert(err, checker.Not(checker.IsNil))
    79  }
    80  
    81  // TestInfoDiscoveryAdvertiseInterfaceName verifies that a daemon run with `--cluster-advertise`
    82  // configured with interface name properly show the advertise ip-address in info output.
    83  func (s *DockerSuite) TestInfoDiscoveryAdvertiseInterfaceName(c *check.C) {
    84  	testRequires(c, SameHostDaemon, Network, DaemonIsLinux)
    85  
    86  	d := NewDaemon(c)
    87  	discoveryBackend := "consul://consuladdr:consulport/some/path"
    88  	discoveryAdvertise := "eth0"
    89  
    90  	err := d.Start(fmt.Sprintf("--cluster-store=%s", discoveryBackend), fmt.Sprintf("--cluster-advertise=%s:2375", discoveryAdvertise))
    91  	c.Assert(err, checker.IsNil)
    92  	defer d.Stop()
    93  
    94  	iface, err := net.InterfaceByName(discoveryAdvertise)
    95  	c.Assert(err, checker.IsNil)
    96  	addrs, err := iface.Addrs()
    97  	c.Assert(err, checker.IsNil)
    98  	c.Assert(len(addrs), checker.GreaterThan, 0)
    99  	ip, _, err := net.ParseCIDR(addrs[0].String())
   100  	c.Assert(err, checker.IsNil)
   101  
   102  	out, err := d.Cmd("info")
   103  	c.Assert(err, checker.IsNil)
   104  	c.Assert(out, checker.Contains, fmt.Sprintf("Cluster store: %s\n", discoveryBackend))
   105  	c.Assert(out, checker.Contains, fmt.Sprintf("Cluster advertise: %s:2375\n", ip.String()))
   106  }
   107  
   108  func (s *DockerSuite) TestInfoDisplaysRunningContainers(c *check.C) {
   109  	testRequires(c, DaemonIsLinux)
   110  
   111  	dockerCmd(c, "run", "-d", "busybox", "top")
   112  	out, _ := dockerCmd(c, "info")
   113  	c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1))
   114  	c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 1))
   115  	c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0))
   116  	c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 0))
   117  }
   118  
   119  func (s *DockerSuite) TestInfoDisplaysPausedContainers(c *check.C) {
   120  	testRequires(c, DaemonIsLinux)
   121  
   122  	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
   123  	cleanedContainerID := strings.TrimSpace(out)
   124  
   125  	dockerCmd(c, "pause", cleanedContainerID)
   126  
   127  	out, _ = dockerCmd(c, "info")
   128  	c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1))
   129  	c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 0))
   130  	c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 1))
   131  	c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 0))
   132  }
   133  
   134  func (s *DockerSuite) TestInfoDisplaysStoppedContainers(c *check.C) {
   135  	testRequires(c, DaemonIsLinux)
   136  
   137  	out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
   138  	cleanedContainerID := strings.TrimSpace(out)
   139  
   140  	dockerCmd(c, "stop", cleanedContainerID)
   141  
   142  	out, _ = dockerCmd(c, "info")
   143  	c.Assert(out, checker.Contains, fmt.Sprintf("Containers: %d\n", 1))
   144  	c.Assert(out, checker.Contains, fmt.Sprintf(" Running: %d\n", 0))
   145  	c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0))
   146  	c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 1))
   147  }
   148  
   149  func (s *DockerSuite) TestInfoDebug(c *check.C) {
   150  	testRequires(c, SameHostDaemon, DaemonIsLinux)
   151  
   152  	d := NewDaemon(c)
   153  	err := d.Start("--debug")
   154  	c.Assert(err, checker.IsNil)
   155  	defer d.Stop()
   156  
   157  	out, err := d.Cmd("--debug", "info")
   158  	c.Assert(err, checker.IsNil)
   159  	c.Assert(out, checker.Contains, "Debug mode (client): true\n")
   160  	c.Assert(out, checker.Contains, "Debug mode (server): true\n")
   161  	c.Assert(out, checker.Contains, "File Descriptors")
   162  	c.Assert(out, checker.Contains, "Goroutines")
   163  	c.Assert(out, checker.Contains, "System Time")
   164  	c.Assert(out, checker.Contains, "EventsListeners")
   165  	c.Assert(out, checker.Contains, "Docker Root Dir")
   166  }