Skip to content

Commit 9603bf4

Browse files
committed
Registry testing tooling cleanup
Signed-off-by: apostasie <[email protected]>
1 parent 914238e commit 9603bf4

File tree

3 files changed

+18
-113
lines changed

3 files changed

+18
-113
lines changed

cmd/nerdctl/issues/issues_linux_test.go

+13-12
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,24 @@ import (
2424

2525
"github.com/containerd/nerdctl/v2/pkg/testutil"
2626
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
27+
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest/registry"
2728
"github.com/containerd/nerdctl/v2/pkg/testutil/test"
28-
"github.com/containerd/nerdctl/v2/pkg/testutil/testregistry"
2929
)
3030

3131
func TestIssue3425(t *testing.T) {
3232
nerdtest.Setup()
3333

34-
var registry *testregistry.RegistryServer
34+
var reg *registry.Server
3535

3636
testCase := &test.Case{
37+
Require: nerdtest.Registry,
3738
Setup: func(data test.Data, helpers test.Helpers) {
38-
base := testutil.NewBase(t)
39-
registry = testregistry.NewWithNoAuth(base, 0, false)
39+
reg = nerdtest.RegistryWithNoAuth(data, helpers, 0, false)
40+
reg.Setup(data, helpers)
4041
},
4142
Cleanup: func(data test.Data, helpers test.Helpers) {
42-
if registry != nil {
43-
registry.Cleanup(nil)
43+
if reg != nil {
44+
reg.Cleanup(data, helpers)
4445
}
4546
},
4647
SubTests: []*test.Case{
@@ -52,14 +53,14 @@ func TestIssue3425(t *testing.T) {
5253
helpers.Ensure("run", "-d", "--name", data.Identifier(), testutil.CommonImage)
5354
helpers.Ensure("image", "rm", "-f", testutil.CommonImage)
5455
helpers.Ensure("image", "pull", testutil.CommonImage)
55-
helpers.Ensure("tag", testutil.CommonImage, fmt.Sprintf("localhost:%d/%s", registry.Port, data.Identifier()))
56+
helpers.Ensure("tag", testutil.CommonImage, fmt.Sprintf("localhost:%d/%s", reg.Port, data.Identifier()))
5657
},
5758
Cleanup: func(data test.Data, helpers test.Helpers) {
5859
helpers.Anyhow("rm", "-f", data.Identifier())
59-
helpers.Anyhow("rmi", "-f", fmt.Sprintf("localhost:%d/%s", registry.Port, data.Identifier()))
60+
helpers.Anyhow("rmi", "-f", fmt.Sprintf("localhost:%d/%s", reg.Port, data.Identifier()))
6061
},
6162
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
62-
return helpers.Command("push", fmt.Sprintf("localhost:%d/%s", registry.Port, data.Identifier()))
63+
return helpers.Command("push", fmt.Sprintf("localhost:%d/%s", reg.Port, data.Identifier()))
6364
},
6465
Expected: test.Expects(0, nil, nil),
6566
},
@@ -71,14 +72,14 @@ func TestIssue3425(t *testing.T) {
7172
helpers.Ensure("run", "-d", "--name", data.Identifier(), testutil.CommonImage, "touch", "/something")
7273
helpers.Ensure("image", "rm", "-f", testutil.CommonImage)
7374
helpers.Ensure("image", "pull", testutil.CommonImage)
74-
helpers.Ensure("commit", data.Identifier(), fmt.Sprintf("localhost:%d/%s", registry.Port, data.Identifier()))
75+
helpers.Ensure("commit", data.Identifier(), fmt.Sprintf("localhost:%d/%s", reg.Port, data.Identifier()))
7576
},
7677
Cleanup: func(data test.Data, helpers test.Helpers) {
7778
helpers.Anyhow("rm", "-f", data.Identifier())
78-
helpers.Anyhow("rmi", "-f", fmt.Sprintf("localhost:%d/%s", registry.Port, data.Identifier()))
79+
helpers.Anyhow("rmi", "-f", fmt.Sprintf("localhost:%d/%s", reg.Port, data.Identifier()))
7980
},
8081
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
81-
return helpers.Command("push", fmt.Sprintf("localhost:%d/%s", registry.Port, data.Identifier()))
82+
return helpers.Command("push", fmt.Sprintf("localhost:%d/%s", reg.Port, data.Identifier()))
8283
},
8384
Expected: test.Expects(0, nil, nil),
8485
},

cmd/nerdctl/login/login_linux_test.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131

3232
"github.com/containerd/nerdctl/v2/pkg/imgutil/dockerconfigresolver"
3333
"github.com/containerd/nerdctl/v2/pkg/testutil"
34+
"github.com/containerd/nerdctl/v2/pkg/testutil/test"
3435
"github.com/containerd/nerdctl/v2/pkg/testutil/testca"
3536
"github.com/containerd/nerdctl/v2/pkg/testutil/testregistry"
3637
)
@@ -108,8 +109,8 @@ func TestLoginPersistence(t *testing.T) {
108109
t.Run(fmt.Sprintf("Server %s", tc.auth), func(t *testing.T) {
109110
t.Parallel()
110111

111-
username := testregistry.SafeRandomString(30) + "∞"
112-
password := testregistry.SafeRandomString(30) + ":∞"
112+
username := test.RandomStringBase64(30) + "∞"
113+
password := test.RandomStringBase64(30) + ":∞"
113114

114115
// Add the requested authentication
115116
var auth testregistry.Auth
@@ -297,8 +298,8 @@ func TestLoginAgainstVariants(t *testing.T) {
297298
}
298299

299300
// Generate credentials that are specific to each registry, so that we never cross hit another one
300-
username := testregistry.SafeRandomString(30) + "∞"
301-
password := testregistry.SafeRandomString(30) + ":∞"
301+
username := test.RandomStringBase64(30) + "∞"
302+
password := test.RandomStringBase64(30) + ":∞"
302303

303304
// Get a CA if we want TLS
304305
var ca *testca.CA

pkg/testutil/testregistry/testregistry_linux.go

-97
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
package testregistry
1818

1919
import (
20-
"crypto/rand"
21-
"encoding/base64"
2220
"fmt"
2321
"net"
2422
"os"
@@ -249,75 +247,6 @@ func (ba *BasicAuth) Params(base *testutil.Base) []string {
249247
return ret
250248
}
251249

252-
func NewIPFSRegistry(base *testutil.Base, ca *testca.CA, port int, auth Auth, boundCleanup func(error)) *RegistryServer {
253-
EnsureImages(base)
254-
255-
name := testutil.Identifier(base.T)
256-
// listen on 0.0.0.0 to enable 127.0.0.1
257-
listenIP := net.ParseIP("0.0.0.0")
258-
hostIP, err := nettestutil.NonLoopbackIPv4()
259-
assert.NilError(base.T, err, fmt.Errorf("failed finding ipv4 non loopback interface: %w", err))
260-
port, err = portlock.Acquire(port)
261-
assert.NilError(base.T, err, fmt.Errorf("failed acquiring port: %w", err))
262-
263-
containerName := fmt.Sprintf("ipfs-registry-%s-%d", name, port)
264-
// Cleanup possible leftovers first
265-
base.Cmd("rm", "-f", containerName).Run()
266-
267-
args := []string{
268-
"run",
269-
"--pull=never",
270-
"-d",
271-
"-p", fmt.Sprintf("%s:%d:%d", listenIP, port, port),
272-
"--name", containerName,
273-
"--entrypoint=/bin/sh",
274-
testutil.KuboImage,
275-
"-c", "--",
276-
fmt.Sprintf("ipfs init && ipfs config Addresses.API /ip4/0.0.0.0/tcp/%d && ipfs daemon --offline", port),
277-
}
278-
279-
cleanup := func(err error) {
280-
result := base.Cmd("rm", "-f", containerName).Run()
281-
errPortRelease := portlock.Release(port)
282-
if boundCleanup != nil {
283-
boundCleanup(err)
284-
}
285-
if err == nil {
286-
assert.NilError(base.T, result.Error, fmt.Errorf("failed removing container: %w", err))
287-
assert.NilError(base.T, errPortRelease, fmt.Errorf("failed releasing port: %w", err))
288-
}
289-
}
290-
291-
scheme := "http"
292-
293-
err = func() error {
294-
cmd := base.Cmd(args...).Run()
295-
if cmd.Error != nil {
296-
base.T.Logf("%s:\n%s\n%s\n-------\n%s", containerName, cmd.Cmd, cmd.Stdout(), cmd.Stderr())
297-
return cmd.Error
298-
}
299-
300-
if _, err = nettestutil.HTTPGet(fmt.Sprintf("%s://%s:%s/api/v0", scheme, hostIP.String(), strconv.Itoa(port)), 30, true); err != nil {
301-
return err
302-
}
303-
304-
return nil
305-
}()
306-
307-
assert.NilError(base.T, err, fmt.Errorf("failed starting IPFS registry container in a timely manner: %w", err))
308-
309-
return &RegistryServer{
310-
IP: hostIP,
311-
Port: port,
312-
Scheme: scheme,
313-
ListenIP: listenIP,
314-
Cleanup: cleanup,
315-
Logs: func() {
316-
base.T.Logf("%s: %q", containerName, base.Cmd("logs", containerName).Run().String())
317-
},
318-
}
319-
}
320-
321250
func NewRegistry(base *testutil.Base, ca *testca.CA, port int, auth Auth, boundCleanup func(error)) *RegistryServer {
322251
EnsureImages(base)
323252

@@ -469,29 +398,3 @@ func NewWithNoAuth(base *testutil.Base, port int, tls bool) *RegistryServer {
469398
}
470399
return NewRegistry(base, ca, port, &NoAuth{}, nil)
471400
}
472-
473-
func NewWithBasicAuth(base *testutil.Base, user, pass string, port int, tls bool) *RegistryServer {
474-
auth := &BasicAuth{
475-
Username: user,
476-
Password: pass,
477-
}
478-
var ca *testca.CA
479-
if tls {
480-
ca = testca.New(base.T)
481-
}
482-
return NewRegistry(base, ca, port, auth, nil)
483-
}
484-
485-
func SafeRandomString(n int) string {
486-
b := make([]byte, n)
487-
l, err := rand.Read(b)
488-
if err != nil {
489-
panic(err)
490-
}
491-
if l != n {
492-
panic(fmt.Errorf("expected %d bytes, got %d bytes", n, l))
493-
}
494-
// XXX WARNING there is something in the registry (or more likely in the way we generate htpasswd files)
495-
// that is broken and does not resist truly random strings
496-
return base64.URLEncoding.EncodeToString(b)
497-
}

0 commit comments

Comments
 (0)