package main import ( "encoding/json" "net/http" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" "github.com/docker/docker/integration-cli/checker" "github.com/docker/docker/integration-cli/request" "github.com/go-check/check" "golang.org/x/net/context" ) func (s *DockerSuite) TestInfoAPI(c *check.C) { cli, err := client.NewEnvClient() c.Assert(err, checker.IsNil) defer cli.Close() info, err := cli.Info(context.Background()) c.Assert(err, checker.IsNil) // always shown fields stringsToCheck := []string{ "ID", "Containers", "ContainersRunning", "ContainersPaused", "ContainersStopped", "Images", "LoggingDriver", "OperatingSystem", "NCPU", "OSType", "Architecture", "MemTotal", "KernelVersion", "Driver", "ServerVersion", "SecurityOptions"} out := fmt.Sprintf("%+v", info) for _, linePrefix := range stringsToCheck { c.Assert(out, checker.Contains, linePrefix) } } // TestInfoAPIRuncCommit tests that dockerd is able to obtain RunC version // information, and that the version matches the expected version func (s *DockerSuite) TestInfoAPIRuncCommit(c *check.C) { testRequires(c, DaemonIsLinux) // Windows does not have RunC version information res, body, err := request.Get("/v1.30/info") c.Assert(res.StatusCode, checker.Equals, http.StatusOK) c.Assert(err, checker.IsNil) b, err := request.ReadBody(body) c.Assert(err, checker.IsNil) var i types.Info c.Assert(json.Unmarshal(b, &i), checker.IsNil) c.Assert(i.RuncCommit.ID, checker.Not(checker.Equals), "N/A") c.Assert(i.RuncCommit.ID, checker.Equals, i.RuncCommit.Expected) } func (s *DockerSuite) TestInfoAPIVersioned(c *check.C) { testRequires(c, DaemonIsLinux) // Windows only supports 1.25 or later res, body, err := request.Get("/v1.20/info") c.Assert(res.StatusCode, checker.Equals, http.StatusOK) c.Assert(err, checker.IsNil) b, err := request.ReadBody(body) c.Assert(err, checker.IsNil) out := string(b) c.Assert(out, checker.Contains, "ExecutionDriver") c.Assert(out, checker.Contains, "not supported") }