docker_api_info_test.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package main
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "fmt"
  6. "github.com/docker/docker/api/types"
  7. "github.com/docker/docker/client"
  8. "github.com/docker/docker/integration-cli/checker"
  9. "github.com/docker/docker/integration-cli/request"
  10. "github.com/go-check/check"
  11. "golang.org/x/net/context"
  12. )
  13. func (s *DockerSuite) TestInfoAPI(c *check.C) {
  14. cli, err := client.NewEnvClient()
  15. c.Assert(err, checker.IsNil)
  16. defer cli.Close()
  17. info, err := cli.Info(context.Background())
  18. c.Assert(err, checker.IsNil)
  19. // always shown fields
  20. stringsToCheck := []string{
  21. "ID",
  22. "Containers",
  23. "ContainersRunning",
  24. "ContainersPaused",
  25. "ContainersStopped",
  26. "Images",
  27. "LoggingDriver",
  28. "OperatingSystem",
  29. "NCPU",
  30. "OSType",
  31. "Architecture",
  32. "MemTotal",
  33. "KernelVersion",
  34. "Driver",
  35. "ServerVersion",
  36. "SecurityOptions"}
  37. out := fmt.Sprintf("%+v", info)
  38. for _, linePrefix := range stringsToCheck {
  39. c.Assert(out, checker.Contains, linePrefix)
  40. }
  41. }
  42. // TestInfoAPIRuncCommit tests that dockerd is able to obtain RunC version
  43. // information, and that the version matches the expected version
  44. func (s *DockerSuite) TestInfoAPIRuncCommit(c *check.C) {
  45. testRequires(c, DaemonIsLinux) // Windows does not have RunC version information
  46. res, body, err := request.Get("/v1.30/info")
  47. c.Assert(res.StatusCode, checker.Equals, http.StatusOK)
  48. c.Assert(err, checker.IsNil)
  49. b, err := request.ReadBody(body)
  50. c.Assert(err, checker.IsNil)
  51. var i types.Info
  52. c.Assert(json.Unmarshal(b, &i), checker.IsNil)
  53. c.Assert(i.RuncCommit.ID, checker.Not(checker.Equals), "N/A")
  54. c.Assert(i.RuncCommit.ID, checker.Equals, i.RuncCommit.Expected)
  55. }
  56. func (s *DockerSuite) TestInfoAPIVersioned(c *check.C) {
  57. testRequires(c, DaemonIsLinux) // Windows only supports 1.25 or later
  58. res, body, err := request.Get("/v1.20/info")
  59. c.Assert(res.StatusCode, checker.Equals, http.StatusOK)
  60. c.Assert(err, checker.IsNil)
  61. b, err := request.ReadBody(body)
  62. c.Assert(err, checker.IsNil)
  63. out := string(b)
  64. c.Assert(out, checker.Contains, "ExecutionDriver")
  65. c.Assert(out, checker.Contains, "not supported")
  66. }