github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/integration/system/info_linux_test.go (about) 1 //go:build !windows 2 // +build !windows 3 4 package system // import "github.com/docker/docker/integration/system" 5 6 import ( 7 "context" 8 "fmt" 9 "net" 10 "net/http" 11 "testing" 12 13 "github.com/docker/docker/testutil/daemon" 14 req "github.com/docker/docker/testutil/request" 15 "gotest.tools/v3/assert" 16 is "gotest.tools/v3/assert/cmp" 17 "gotest.tools/v3/skip" 18 ) 19 20 func TestInfoBinaryCommits(t *testing.T) { 21 defer setupTest(t)() 22 client := testEnv.APIClient() 23 24 info, err := client.Info(context.Background()) 25 assert.NilError(t, err) 26 27 assert.Check(t, "N/A" != info.ContainerdCommit.ID) 28 assert.Check(t, is.Equal(info.ContainerdCommit.Expected, info.ContainerdCommit.ID)) 29 30 assert.Check(t, "N/A" != info.InitCommit.ID) 31 assert.Check(t, is.Equal(info.InitCommit.Expected, info.InitCommit.ID)) 32 33 assert.Check(t, "N/A" != info.RuncCommit.ID) 34 assert.Check(t, is.Equal(info.RuncCommit.Expected, info.RuncCommit.ID)) 35 } 36 37 func TestInfoAPIVersioned(t *testing.T) { 38 // Windows only supports 1.25 or later 39 40 res, body, err := req.Get("/v1.20/info") 41 assert.NilError(t, err) 42 assert.Check(t, is.DeepEqual(res.StatusCode, http.StatusOK)) 43 44 b, err := req.ReadBody(body) 45 assert.NilError(t, err) 46 47 out := string(b) 48 assert.Check(t, is.Contains(out, "ExecutionDriver")) 49 assert.Check(t, is.Contains(out, "not supported")) 50 } 51 52 // TestInfoDiscoveryBackend verifies that a daemon run with `--cluster-advertise` and 53 // `--cluster-store` properly returns the backend's endpoint in info output. 54 func TestInfoDiscoveryBackend(t *testing.T) { 55 skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") 56 57 const ( 58 discoveryBackend = "consul://consuladdr:consulport/some/path" 59 discoveryAdvertise = "1.1.1.1:2375" 60 ) 61 62 d := daemon.New(t) 63 d.Start(t, "--cluster-store="+discoveryBackend, "--cluster-advertise="+discoveryAdvertise) 64 defer d.Stop(t) 65 66 info := d.Info(t) 67 assert.Equal(t, info.ClusterStore, discoveryBackend) 68 assert.Equal(t, info.ClusterAdvertise, discoveryAdvertise) 69 } 70 71 // TestInfoDiscoveryInvalidAdvertise verifies that a daemon run with 72 // an invalid `--cluster-advertise` configuration 73 func TestInfoDiscoveryInvalidAdvertise(t *testing.T) { 74 skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") 75 d := daemon.New(t) 76 77 // --cluster-advertise with an invalid string is an error 78 err := d.StartWithError("--cluster-store=consul://consuladdr:consulport/some/path", "--cluster-advertise=invalid") 79 if err == nil { 80 d.Stop(t) 81 } 82 assert.ErrorContains(t, err, "", "expected error when starting daemon") 83 84 // --cluster-advertise without --cluster-store is also an error 85 err = d.StartWithError("--cluster-advertise=1.1.1.1:2375") 86 if err == nil { 87 d.Stop(t) 88 } 89 assert.ErrorContains(t, err, "", "expected error when starting daemon") 90 } 91 92 // TestInfoDiscoveryAdvertiseInterfaceName verifies that a daemon run with `--cluster-advertise` 93 // configured with interface name properly show the advertise ip-address in info output. 94 func TestInfoDiscoveryAdvertiseInterfaceName(t *testing.T) { 95 skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon") 96 skip.If(t, testEnv.IsRootless, "rootless mode has different view of network") 97 // TODO should we check for networking availability (integration-cli suite checks for networking through `Network()`) 98 99 d := daemon.New(t) 100 const ( 101 discoveryStore = "consul://consuladdr:consulport/some/path" 102 discoveryInterface = "eth0" 103 ) 104 105 d.Start(t, "--cluster-store="+discoveryStore, fmt.Sprintf("--cluster-advertise=%s:2375", discoveryInterface)) 106 defer d.Stop(t) 107 108 iface, err := net.InterfaceByName(discoveryInterface) 109 assert.NilError(t, err) 110 addrs, err := iface.Addrs() 111 assert.NilError(t, err) 112 assert.Assert(t, len(addrs) > 0) 113 ip, _, err := net.ParseCIDR(addrs[0].String()) 114 assert.NilError(t, err) 115 116 info := d.Info(t) 117 assert.Equal(t, info.ClusterStore, discoveryStore) 118 assert.Equal(t, info.ClusterAdvertise, ip.String()+":2375") 119 }