diff --git a/integration-cli/daemon/daemon.go b/integration-cli/daemon/daemon.go index 54f3a2f388..06bf504fa6 100644 --- a/integration-cli/daemon/daemon.go +++ b/integration-cli/daemon/daemon.go @@ -33,6 +33,7 @@ import ( ) type testingT interface { + require.TestingT logT Fatalf(string, ...interface{}) } @@ -329,9 +330,7 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error { // then save the busybox image from the main daemon and load it into this Daemon instance. func (d *Daemon) StartWithBusybox(t testingT, arg ...string) { d.Start(t, arg...) - if err := d.LoadBusybox(); err != nil { - t.Fatalf("Error loading busybox image to current daemon: %s\n%v", d.id, err) - } + d.LoadBusybox(t) } // Kill will send a SIGKILL to the daemon @@ -493,27 +492,24 @@ func (d *Daemon) handleUserns() { } } -// LoadBusybox will load the stored busybox into a newly started daemon -func (d *Daemon) LoadBusybox() error { - bb := filepath.Join(d.Folder, "busybox.tar") - if _, err := os.Stat(bb); err != nil { - if !os.IsNotExist(err) { - return errors.Errorf("unexpected error on busybox.tar stat: %v", err) - } - // saving busybox image from main daemon - if out, err := exec.Command(d.dockerBinary, "save", "--output", bb, "busybox:latest").CombinedOutput(); err != nil { - imagesOut, _ := exec.Command(d.dockerBinary, "images", "--format", "{{ .Repository }}:{{ .Tag }}").CombinedOutput() - return errors.Errorf("could not save busybox image: %s\n%s", string(out), strings.TrimSpace(string(imagesOut))) - } - } - // loading busybox image to this daemon - if out, err := d.Cmd("load", "--input", bb); err != nil { - return errors.Errorf("could not load busybox image: %s", out) - } - if err := os.Remove(bb); err != nil { - return err - } - return nil +// LoadBusybox image into the daemon +func (d *Daemon) LoadBusybox(t testingT) { + clientHost, err := client.NewEnvClient() + require.NoError(t, err, "failed to create client") + defer clientHost.Close() + + ctx := context.Background() + reader, err := clientHost.ImageSave(ctx, []string{"busybox:latest"}) + require.NoError(t, err, "failed to download busybox") + defer reader.Close() + + client, err := d.NewClient() + require.NoError(t, err, "failed to create client") + defer client.Close() + + resp, err := client.ImageLoad(ctx, reader, true) + require.NoError(t, err, "failed to load busybox") + defer resp.Body.Close() } func (d *Daemon) queryRootDir() (string, error) { diff --git a/integration-cli/docker_cli_authz_plugin_v2_test.go b/integration-cli/docker_cli_authz_plugin_v2_test.go index 0143f1c0fb..b8bbcc75e1 100644 --- a/integration-cli/docker_cli_authz_plugin_v2_test.go +++ b/integration-cli/docker_cli_authz_plugin_v2_test.go @@ -53,7 +53,7 @@ func (s *DockerAuthzV2Suite) TestAuthZPluginAllowNonVolumeRequest(c *check.C) { // start the daemon with the plugin and load busybox, --net=none build fails otherwise // because it needs to pull busybox s.d.Restart(c, "--authorization-plugin="+authzPluginNameWithTag) - c.Assert(s.d.LoadBusybox(), check.IsNil) + s.d.LoadBusybox(c) // defer disabling the plugin defer func() { @@ -83,7 +83,7 @@ func (s *DockerAuthzV2Suite) TestAuthZPluginDisable(c *check.C) { // start the daemon with the plugin and load busybox, --net=none build fails otherwise // because it needs to pull busybox s.d.Restart(c, "--authorization-plugin="+authzPluginNameWithTag) - c.Assert(s.d.LoadBusybox(), check.IsNil) + s.d.LoadBusybox(c) // defer removing the plugin defer func() { diff --git a/integration-cli/docker_cli_authz_unix_test.go b/integration-cli/docker_cli_authz_unix_test.go index 959292f053..f46ab806ca 100644 --- a/integration-cli/docker_cli_authz_unix_test.go +++ b/integration-cli/docker_cli_authz_unix_test.go @@ -209,7 +209,7 @@ func (s *DockerAuthzSuite) TestAuthZPluginAllowRequest(c *check.C) { s.d.Start(c, "--authorization-plugin="+testAuthZPlugin) s.ctrl.reqRes.Allow = true s.ctrl.resRes.Allow = true - c.Assert(s.d.LoadBusybox(), check.IsNil) + s.d.LoadBusybox(c) // Ensure command successful out, err := s.d.Cmd("run", "-d", "busybox", "top") @@ -322,7 +322,7 @@ func (s *DockerAuthzSuite) TestAuthZPluginAllowEventStream(c *check.C) { s.d.Start(c, "--authorization-plugin="+testAuthZPlugin) s.ctrl.reqRes.Allow = true s.ctrl.resRes.Allow = true - c.Assert(s.d.LoadBusybox(), check.IsNil) + s.d.LoadBusybox(c) startTime := strconv.FormatInt(daemonTime(c).Unix(), 10) // Add another command to to enable event pipelining @@ -418,7 +418,7 @@ func (s *DockerAuthzSuite) TestAuthZPluginEnsureLoadImportWorking(c *check.C) { s.d.Start(c, "--authorization-plugin="+testAuthZPlugin, "--authorization-plugin="+testAuthZPlugin) s.ctrl.reqRes.Allow = true s.ctrl.resRes.Allow = true - c.Assert(s.d.LoadBusybox(), check.IsNil) + s.d.LoadBusybox(c) tmp, err := ioutil.TempDir("", "test-authz-load-import") c.Assert(err, check.IsNil) @@ -445,7 +445,7 @@ func (s *DockerAuthzSuite) TestAuthZPluginHeader(c *check.C) { s.d.Start(c, "--debug", "--authorization-plugin="+testAuthZPlugin) s.ctrl.reqRes.Allow = true s.ctrl.resRes.Allow = true - c.Assert(s.d.LoadBusybox(), check.IsNil) + s.d.LoadBusybox(c) daemonURL, err := url.Parse(s.d.Sock())