Documentation ¶
Index ¶
- Constants
- Variables
- func DockerIncompatible(t testing.TB)
- func GetDaemonIsKillable() bool
- func GetEnableIPv6() bool
- func GetTarget() string
- func Identifier(t testing.TB) string
- func ImageRepo(s string) string
- func M(m *testing.M)
- func NewDelayOnceReader(wrapped io.Reader) io.Reader
- func RequireContainerdPlugin(base *Base, requiredType, requiredID string, requiredCaps []string)
- func RequireDaemonVersion(b *Base, constraint string)
- func RequireExecPlatform(t testing.TB, ss ...string)
- func RequireExecutable(t testing.TB, name string)
- func RequireKernelVersion(t testing.TB, constraint string)
- func RequireSystemService(t testing.TB, sv string)
- func RequiresBuild(t testing.TB)
- func WithStdin(r io.Reader) func(*Cmd)
- type Base
- func (b *Base) Cmd(args ...string) *Cmd
- func (b *Base) CmdWithHelper(helper []string, args ...string) *Cmd
- func (b *Base) ComposeCmd(args ...string) *Cmd
- func (b *Base) ComposeCmdWithHelper(helper []string, args ...string) *Cmd
- func (b *Base) ContainerdAddress() string
- func (b *Base) DumpDaemonLogs(minutes int)
- func (b *Base) EnsureContainerExited(con string, expectedExitCode int)
- func (b *Base) EnsureContainerStarted(con string)
- func (b *Base) EnsureDaemonActive()
- func (b *Base) Info() dockercompat.Info
- func (b *Base) InfoNative() native.Info
- func (b *Base) InspectContainer(name string) dockercompat.Container
- func (b *Base) InspectImage(name string) dockercompat.Image
- func (b *Base) InspectNetwork(name string) dockercompat.Network
- func (b *Base) InspectVolume(name string, args ...string) native.Volume
- func (b *Base) KillDaemon()
- type Cmd
- func (c *Cmd) Assert(expected icmd.Expected)
- func (c *Cmd) AssertCombinedOutContains(s string)
- func (c *Cmd) AssertExitCode(exitCode int)
- func (c *Cmd) AssertFail()
- func (c *Cmd) AssertNoOut(s string)
- func (c *Cmd) AssertOK()
- func (c *Cmd) AssertOutContains(s string)
- func (c *Cmd) AssertOutContainsAll(strs ...string)
- func (c *Cmd) AssertOutContainsAny(strs ...string)
- func (c *Cmd) AssertOutExactly(s string)
- func (c *Cmd) AssertOutNotContains(s string)
- func (c *Cmd) AssertOutStreamsExactly(stdout, stderr string)
- func (c *Cmd) AssertOutStreamsWithFunc(fn func(stdout, stderr string) error)
- func (c *Cmd) AssertOutWithFunc(fn func(stdout string) error)
- func (c *Cmd) CmdOption(cmdOptions ...func(*Cmd)) *Cmd
- func (c *Cmd) Out() string
- func (c *Cmd) OutLines() []string
- func (c *Cmd) Run() *icmd.Result
- type ComposeDir
- type Target
Constants ¶
const ( Nerdctl = Target("nerdctl") Docker = Target("docker") )
const ( FedoraESGZImage = "ghcr.io/stargz-containers/fedora:30-esgz" // eStargz FfmpegSociImage = "public.ecr.aws/soci-workshop-examples/ffmpeg:latest" // SOCI UbuntuImage = "public.ecr.aws/docker/library/ubuntu:23.10" // Large enough for testing soci index creation )
const Namespace = "nerdctl-test"
Variables ¶
var ( BusyboxImage = "ghcr.io/containerd/busybox:1.28" AlpineImage = mirrorOf("alpine:3.13") NginxAlpineImage = mirrorOf("nginx:1.19-alpine") NginxAlpineIndexHTMLSnippet = "<title>Welcome to nginx!</title>" RegistryImage = mirrorOf("registry:2") WordpressImage = mirrorOf("wordpress:5.7") WordpressIndexHTMLSnippet = "<title>WordPress › Installation</title>" MariaDBImage = mirrorOf("mariadb:10.5") DockerAuthImage = mirrorOf("cesanta/docker_auth:1.7") FluentdImage = mirrorOf("fluent/fluentd:v1.14-1") KuboImage = mirrorOf("ipfs/kubo:v0.16.0") // Source: https://gist.github.com/cpuguy83/fcf3041e5d8fb1bb5c340915aabeebe0 NonDistBlobImage = "ghcr.io/cpuguy83/non-dist-blob:latest" // Foreign layer digest NonDistBlobDigest = "sha256:be691b1535726014cdf3b715ff39361b19e121ca34498a9ceea61ad776b9c215" CommonImage = AlpineImage // This error string is expected when attempting to connect to a TCP socket // for a service which actively refuses the connection. // (e.g. attempting to connect using http to an https endpoint). // It should be "connection refused" as per the TCP RFC. // https://www.rfc-editor.org/rfc/rfc793 ExpectedConnectionRefusedError = "connection refused" )
Functions ¶
func DockerIncompatible ¶
func GetDaemonIsKillable ¶
func GetDaemonIsKillable() bool
func GetEnableIPv6 ¶ added in v1.7.0
func GetEnableIPv6() bool
func Identifier ¶ added in v0.16.0
Identifier can be used as a name of container, image, volume, network, etc.
func ImageRepo ¶ added in v1.2.1
ImageRepo returns the image repo that can be used to, e.g, validate output from `nerdctl images`.
func NewDelayOnceReader ¶ added in v1.5.0
NewDelayOnceReader returns a wrapper around io.Reader that delays the first Read() by one second. It is used to test detaching from a container, and the reason why we need this is described below:
Since detachableStdin.closer cancels the corresponding container's IO, it has to be invoked after the corresponding task is started, or the container could be resulted in an invalid state.
However, in taskutil.go, the goroutines that copy the container's IO start right after container.NewTask(ctx, ioCreator) is invoked and before the function returns, which means that detachableStdin.closer could be invoked before the task is started, and that's indeed the case for e2e test as the detach keys are "entered immediately".
Since detaching from a container is only applicable when there is a TTY, which usually means that there's a human in front of the computer waiting for a prompt to start typing, it's reasonable to assume that the user will not type the detach keys before the task is started.
Besides delaying the first Read() by one second, the returned reader also sleeps for one second if EOF is reached for the wrapped reader. The reason follows:
NewDelayOnceReader is usually used with `unbuffer -p`, which has a caveat: "unbuffer simply exits when it encounters an EOF from either its input or process2." [1] The implication is if we use `unbuffer -p` to feed a command to container shell, `unbuffer -p` will exit right after it finishes reading the command (i.e., encounter an EOF from its input), and by that time, the container may have not executed the command and printed the wanted results to stdout, which would fail the test if it asserts stdout to contain certain strings.
As a result, to avoid flaky tests, we give the container shell one second to process the command before `unbuffer -p` exits.
func RequireContainerdPlugin ¶ added in v0.20.0
func RequireDaemonVersion ¶ added in v0.20.0
func RequireExecPlatform ¶ added in v0.13.0
func RequireExecutable ¶ added in v1.2.0
RequireExecutable skips tests when executable `name` is not present in PATH.
func RequireKernelVersion ¶ added in v0.23.0
func RequireSystemService ¶ added in v0.23.0
func RequiresBuild ¶
Types ¶
type Base ¶
type Base struct { T testing.TB Target Target DaemonIsKillable bool EnableIPv6 bool IPv6Compatible bool Binary string Args []string Env []string }
func NewBaseWithIPv6Compatible ¶ added in v1.7.0
func NewBaseWithNamespace ¶ added in v1.1.0
func (*Base) ComposeCmd ¶ added in v0.8.0
ComposeCmd executes `nerdctl -n nerdctl-test compose` or `docker-compose`
func (*Base) ComposeCmdWithHelper ¶ added in v0.23.0
func (*Base) ContainerdAddress ¶ added in v1.2.0
func (*Base) DumpDaemonLogs ¶ added in v0.15.0
func (*Base) EnsureContainerExited ¶ added in v1.7.1
func (*Base) EnsureContainerStarted ¶ added in v0.22.0
func (*Base) EnsureDaemonActive ¶
func (b *Base) EnsureDaemonActive()
func (*Base) Info ¶ added in v0.7.3
func (b *Base) Info() dockercompat.Info
func (*Base) InfoNative ¶ added in v0.20.0
func (*Base) InspectContainer ¶
func (b *Base) InspectContainer(name string) dockercompat.Container
func (*Base) InspectImage ¶ added in v0.9.0
func (b *Base) InspectImage(name string) dockercompat.Image
func (*Base) InspectNetwork ¶ added in v0.11.0
func (b *Base) InspectNetwork(name string) dockercompat.Network
func (*Base) InspectVolume ¶ added in v0.11.0
func (*Base) KillDaemon ¶
func (b *Base) KillDaemon()
type Cmd ¶
func (*Cmd) AssertCombinedOutContains ¶ added in v0.18.0
func (*Cmd) AssertExitCode ¶
func (*Cmd) AssertFail ¶
func (c *Cmd) AssertFail()
func (*Cmd) AssertNoOut ¶
func (*Cmd) AssertOutContains ¶ added in v0.8.1
func (*Cmd) AssertOutContainsAll ¶ added in v1.2.0
AssertOutContainsAll checks if command output contains All strings in `strs`.
func (*Cmd) AssertOutContainsAny ¶ added in v1.2.0
AssertOutContainsAny checks if command output contains Any string in `strs`.
func (*Cmd) AssertOutExactly ¶ added in v0.13.0
func (*Cmd) AssertOutNotContains ¶ added in v0.16.1
func (*Cmd) AssertOutStreamsExactly ¶ added in v1.1.0
func (*Cmd) AssertOutStreamsWithFunc ¶ added in v1.1.0
func (*Cmd) AssertOutWithFunc ¶
type ComposeDir ¶ added in v0.8.0
type ComposeDir struct {
// contains filtered or unexported fields
}
func NewComposeDir ¶ added in v0.8.0
func NewComposeDir(t testing.TB, dockerComposeYAML string) *ComposeDir
func (*ComposeDir) CleanUp ¶ added in v0.8.0
func (cd *ComposeDir) CleanUp()
func (*ComposeDir) Dir ¶ added in v0.17.0
func (cd *ComposeDir) Dir() string
func (*ComposeDir) ProjectName ¶ added in v0.8.0
func (cd *ComposeDir) ProjectName() string
func (*ComposeDir) WriteFile ¶ added in v0.8.0
func (cd *ComposeDir) WriteFile(name, content string)
func (*ComposeDir) YAMLFullPath ¶ added in v0.8.0
func (cd *ComposeDir) YAMLFullPath() string