mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #33637 from thaJeztah/improve-ci-build-time
Minor refactor/cleanup of tests
This commit is contained in:
commit
7fdc2e42d1
2 changed files with 45 additions and 71 deletions
|
@ -2,7 +2,9 @@ package main
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"regexp"
|
||||
|
||||
"github.com/docker/docker/integration-cli/registry"
|
||||
|
@ -47,9 +49,14 @@ func regexpCheckUA(c *check.C, ua string) {
|
|||
c.Assert(bMatchUpstreamUA, check.Equals, true, check.Commentf("(Upstream) Docker Client User-Agent malformed"))
|
||||
}
|
||||
|
||||
// registerUserAgentHandler registers a handler for the `/v2/*` endpoint.
|
||||
// Note that a 404 is returned to prevent the client to proceed.
|
||||
// We are only checking if the client sent a valid User Agent string along
|
||||
// with the request.
|
||||
func registerUserAgentHandler(reg *registry.Mock, result *string) {
|
||||
reg.RegisterHandler("/v2/", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(404)
|
||||
w.Write([]byte(`{"errors":[{"code": "UNSUPPORTED","message": "this is a mock registry"}]}`))
|
||||
var ua string
|
||||
for k, v := range r.Header {
|
||||
if k == "User-Agent" {
|
||||
|
@ -64,60 +71,33 @@ func registerUserAgentHandler(reg *registry.Mock, result *string) {
|
|||
// a registry, the registry should see a User-Agent string of the form
|
||||
// [docker engine UA] UpstreamClientSTREAM-CLIENT([client UA])
|
||||
func (s *DockerRegistrySuite) TestUserAgentPassThrough(c *check.C) {
|
||||
var (
|
||||
buildUA string
|
||||
pullUA string
|
||||
pushUA string
|
||||
loginUA string
|
||||
)
|
||||
var ua string
|
||||
|
||||
buildReg, err := registry.NewMock(c)
|
||||
defer buildReg.Close()
|
||||
reg, err := registry.NewMock(c)
|
||||
defer reg.Close()
|
||||
c.Assert(err, check.IsNil)
|
||||
registerUserAgentHandler(buildReg, &buildUA)
|
||||
buildRepoName := fmt.Sprintf("%s/busybox", buildReg.URL())
|
||||
registerUserAgentHandler(reg, &ua)
|
||||
repoName := fmt.Sprintf("%s/busybox", reg.URL())
|
||||
|
||||
pullReg, err := registry.NewMock(c)
|
||||
defer pullReg.Close()
|
||||
s.d.StartWithBusybox(c, "--insecure-registry", reg.URL())
|
||||
|
||||
tmp, err := ioutil.TempDir("", "integration-cli-")
|
||||
c.Assert(err, check.IsNil)
|
||||
registerUserAgentHandler(pullReg, &pullUA)
|
||||
pullRepoName := fmt.Sprintf("%s/busybox", pullReg.URL())
|
||||
defer os.RemoveAll(tmp)
|
||||
|
||||
pushReg, err := registry.NewMock(c)
|
||||
defer pushReg.Close()
|
||||
c.Assert(err, check.IsNil)
|
||||
registerUserAgentHandler(pushReg, &pushUA)
|
||||
pushRepoName := fmt.Sprintf("%s/busybox", pushReg.URL())
|
||||
|
||||
loginReg, err := registry.NewMock(c)
|
||||
defer loginReg.Close()
|
||||
c.Assert(err, check.IsNil)
|
||||
registerUserAgentHandler(loginReg, &loginUA)
|
||||
|
||||
s.d.Start(c,
|
||||
"--insecure-registry", buildReg.URL(),
|
||||
"--insecure-registry", pullReg.URL(),
|
||||
"--insecure-registry", pushReg.URL(),
|
||||
"--insecure-registry", loginReg.URL())
|
||||
|
||||
dockerfileName, cleanup1, err := makefile(fmt.Sprintf("FROM %s", buildRepoName))
|
||||
dockerfile, err := makefile(tmp, fmt.Sprintf("FROM %s", repoName))
|
||||
c.Assert(err, check.IsNil, check.Commentf("Unable to create test dockerfile"))
|
||||
defer cleanup1()
|
||||
s.d.Cmd("build", "--file", dockerfileName, ".")
|
||||
regexpCheckUA(c, buildUA)
|
||||
|
||||
s.d.Cmd("login", "-u", "richard", "-p", "testtest", loginReg.URL())
|
||||
regexpCheckUA(c, loginUA)
|
||||
s.d.Cmd("build", "--file", dockerfile, tmp)
|
||||
regexpCheckUA(c, ua)
|
||||
|
||||
s.d.Cmd("pull", pullRepoName)
|
||||
regexpCheckUA(c, pullUA)
|
||||
s.d.Cmd("login", "-u", "richard", "-p", "testtest", reg.URL())
|
||||
regexpCheckUA(c, ua)
|
||||
|
||||
dockerfileName, cleanup2, err := makefile(`FROM scratch
|
||||
ENV foo bar`)
|
||||
c.Assert(err, check.IsNil, check.Commentf("Unable to create test dockerfile"))
|
||||
defer cleanup2()
|
||||
s.d.Cmd("build", "-t", pushRepoName, "--file", dockerfileName, ".")
|
||||
s.d.Cmd("pull", repoName)
|
||||
regexpCheckUA(c, ua)
|
||||
|
||||
s.d.Cmd("push", pushRepoName)
|
||||
regexpCheckUA(c, pushUA)
|
||||
s.d.Cmd("tag", "busybox", repoName)
|
||||
s.d.Cmd("push", repoName)
|
||||
regexpCheckUA(c, ua)
|
||||
}
|
||||
|
|
|
@ -10,28 +10,16 @@ import (
|
|||
"github.com/go-check/check"
|
||||
)
|
||||
|
||||
func makefile(contents string) (string, func(), error) {
|
||||
cleanup := func() {
|
||||
|
||||
}
|
||||
|
||||
f, err := ioutil.TempFile(".", "tmp")
|
||||
func makefile(path string, contents string) (string, error) {
|
||||
f, err := ioutil.TempFile(path, "tmp")
|
||||
if err != nil {
|
||||
return "", cleanup, err
|
||||
return "", err
|
||||
}
|
||||
err = ioutil.WriteFile(f.Name(), []byte(contents), os.ModePerm)
|
||||
if err != nil {
|
||||
return "", cleanup, err
|
||||
return "", err
|
||||
}
|
||||
|
||||
cleanup = func() {
|
||||
err := os.Remove(f.Name())
|
||||
if err != nil {
|
||||
fmt.Println("Error removing tmpfile")
|
||||
}
|
||||
}
|
||||
return f.Name(), cleanup, nil
|
||||
|
||||
return f.Name(), nil
|
||||
}
|
||||
|
||||
// TestV2Only ensures that a daemon by default does not
|
||||
|
@ -53,11 +41,14 @@ func (s *DockerRegistrySuite) TestV2Only(c *check.C) {
|
|||
|
||||
s.d.Start(c, "--insecure-registry", reg.URL())
|
||||
|
||||
dockerfileName, cleanup, err := makefile(fmt.Sprintf("FROM %s/busybox", reg.URL()))
|
||||
c.Assert(err, check.IsNil, check.Commentf("Unable to create test dockerfile"))
|
||||
defer cleanup()
|
||||
tmp, err := ioutil.TempDir("", "integration-cli-")
|
||||
c.Assert(err, check.IsNil)
|
||||
defer os.RemoveAll(tmp)
|
||||
|
||||
s.d.Cmd("build", "--file", dockerfileName, ".")
|
||||
dockerfileName, err := makefile(tmp, fmt.Sprintf("FROM %s/busybox", reg.URL()))
|
||||
c.Assert(err, check.IsNil, check.Commentf("Unable to create test dockerfile"))
|
||||
|
||||
s.d.Cmd("build", "--file", dockerfileName, tmp)
|
||||
|
||||
s.d.Cmd("run", repoName)
|
||||
s.d.Cmd("login", "-u", "richard", "-p", "testtest", reg.URL())
|
||||
|
@ -102,11 +93,14 @@ func (s *DockerRegistrySuite) TestV1(c *check.C) {
|
|||
|
||||
s.d.Start(c, "--insecure-registry", reg.URL(), "--disable-legacy-registry=false")
|
||||
|
||||
dockerfileName, cleanup, err := makefile(fmt.Sprintf("FROM %s/busybox", reg.URL()))
|
||||
c.Assert(err, check.IsNil, check.Commentf("Unable to create test dockerfile"))
|
||||
defer cleanup()
|
||||
tmp, err := ioutil.TempDir("", "integration-cli-")
|
||||
c.Assert(err, check.IsNil)
|
||||
defer os.RemoveAll(tmp)
|
||||
|
||||
s.d.Cmd("build", "--file", dockerfileName, ".")
|
||||
dockerfileName, err := makefile(tmp, fmt.Sprintf("FROM %s/busybox", reg.URL()))
|
||||
c.Assert(err, check.IsNil, check.Commentf("Unable to create test dockerfile"))
|
||||
|
||||
s.d.Cmd("build", "--file", dockerfileName, tmp)
|
||||
c.Assert(v1Repo, check.Equals, 1, check.Commentf("Expected v1 repository access after build"))
|
||||
|
||||
repoName := fmt.Sprintf("%s/busybox", reg.URL())
|
||||
|
|
Loading…
Add table
Reference in a new issue