github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/integration/system/info_test.go (about)

     1  package system // import "github.com/Prakhar-Agarwal-byte/moby/integration/system"
     2  
     3  import (
     4  	"fmt"
     5  	"sort"
     6  	"testing"
     7  
     8  	"github.com/Prakhar-Agarwal-byte/moby/api/types/registry"
     9  	"github.com/Prakhar-Agarwal-byte/moby/testutil"
    10  	"github.com/Prakhar-Agarwal-byte/moby/testutil/daemon"
    11  	"gotest.tools/v3/assert"
    12  	is "gotest.tools/v3/assert/cmp"
    13  	"gotest.tools/v3/skip"
    14  )
    15  
    16  func TestInfoAPI(t *testing.T) {
    17  	ctx := setupTest(t)
    18  	client := testEnv.APIClient()
    19  
    20  	info, err := client.Info(ctx)
    21  	assert.NilError(t, err)
    22  
    23  	// always shown fields
    24  	stringsToCheck := []string{
    25  		"ID",
    26  		"Containers",
    27  		"ContainersRunning",
    28  		"ContainersPaused",
    29  		"ContainersStopped",
    30  		"Images",
    31  		"LoggingDriver",
    32  		"OperatingSystem",
    33  		"NCPU",
    34  		"OSType",
    35  		"Architecture",
    36  		"MemTotal",
    37  		"KernelVersion",
    38  		"Driver",
    39  		"ServerVersion",
    40  		"SecurityOptions",
    41  	}
    42  
    43  	out := fmt.Sprintf("%+v", info)
    44  	for _, linePrefix := range stringsToCheck {
    45  		assert.Check(t, is.Contains(out, linePrefix))
    46  	}
    47  }
    48  
    49  func TestInfoAPIWarnings(t *testing.T) {
    50  	skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon")
    51  	skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME")
    52  
    53  	ctx := testutil.StartSpan(baseContext, t)
    54  
    55  	d := daemon.New(t)
    56  	c := d.NewClientT(t)
    57  
    58  	d.Start(t, "-H=0.0.0.0:23756", "-H="+d.Sock())
    59  	defer d.Stop(t)
    60  
    61  	info, err := c.Info(ctx)
    62  	assert.NilError(t, err)
    63  
    64  	stringsToCheck := []string{
    65  		"Access to the remote API is equivalent to root access",
    66  		"http://0.0.0.0:23756",
    67  	}
    68  
    69  	out := fmt.Sprintf("%+v", info)
    70  	for _, linePrefix := range stringsToCheck {
    71  		assert.Check(t, is.Contains(out, linePrefix))
    72  	}
    73  }
    74  
    75  func TestInfoDebug(t *testing.T) {
    76  	skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon")
    77  	skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME: test starts daemon with -H unix://.....")
    78  
    79  	_ = testutil.StartSpan(baseContext, t)
    80  
    81  	d := daemon.New(t)
    82  	d.Start(t, "--debug")
    83  	defer d.Stop(t)
    84  
    85  	info := d.Info(t)
    86  	assert.Equal(t, info.Debug, true)
    87  
    88  	// Note that the information below is not tied to debug-mode being enabled.
    89  	assert.Check(t, info.NFd != 0)
    90  
    91  	// TODO need a stable way to generate event listeners
    92  	// assert.Check(t, info.NEventsListener != 0)
    93  	assert.Check(t, info.NGoroutines != 0)
    94  	assert.Check(t, info.SystemTime != "")
    95  	assert.Equal(t, info.DockerRootDir, d.Root)
    96  }
    97  
    98  func TestInfoInsecureRegistries(t *testing.T) {
    99  	skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon")
   100  	skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME: test starts daemon with -H unix://.....")
   101  
   102  	const (
   103  		registryCIDR = "192.168.1.0/24"
   104  		registryHost = "insecurehost.com:5000"
   105  	)
   106  
   107  	d := daemon.New(t)
   108  	d.Start(t, "--insecure-registry="+registryCIDR, "--insecure-registry="+registryHost)
   109  	defer d.Stop(t)
   110  
   111  	info := d.Info(t)
   112  	assert.Assert(t, is.Len(info.RegistryConfig.InsecureRegistryCIDRs, 2))
   113  	cidrs := []string{
   114  		info.RegistryConfig.InsecureRegistryCIDRs[0].String(),
   115  		info.RegistryConfig.InsecureRegistryCIDRs[1].String(),
   116  	}
   117  	assert.Assert(t, is.Contains(cidrs, registryCIDR))
   118  	assert.Assert(t, is.Contains(cidrs, "127.0.0.0/8"))
   119  	assert.DeepEqual(t, *info.RegistryConfig.IndexConfigs["docker.io"], registry.IndexInfo{Name: "docker.io", Mirrors: []string{}, Secure: true, Official: true})
   120  	assert.DeepEqual(t, *info.RegistryConfig.IndexConfigs[registryHost], registry.IndexInfo{Name: registryHost, Mirrors: []string{}, Secure: false, Official: false})
   121  }
   122  
   123  func TestInfoRegistryMirrors(t *testing.T) {
   124  	skip.If(t, testEnv.IsRemoteDaemon, "cannot run daemon when remote daemon")
   125  	skip.If(t, testEnv.DaemonInfo.OSType == "windows", "FIXME: test starts daemon with -H unix://.....")
   126  
   127  	const (
   128  		registryMirror1 = "https://192.168.1.2"
   129  		registryMirror2 = "http://registry-mirror.example.com:5000"
   130  	)
   131  
   132  	d := daemon.New(t)
   133  	d.Start(t, "--registry-mirror="+registryMirror1, "--registry-mirror="+registryMirror2)
   134  	defer d.Stop(t)
   135  
   136  	info := d.Info(t)
   137  	sort.Strings(info.RegistryConfig.Mirrors)
   138  	assert.DeepEqual(t, info.RegistryConfig.Mirrors, []string{registryMirror2 + "/", registryMirror1 + "/"})
   139  }