Skip to content

Commit dd1e55f

Browse files
author
Pieter-Jan Pintens
committed
Add kubernetes driver for executing structured tests
1 parent d1d4fd3 commit dd1e55f

File tree

6 files changed

+622
-68
lines changed

6 files changed

+622
-68
lines changed

cmd/container-structure-test/app/cmd/test.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,14 @@ func NewCmdTest(out io.Writer) *cobra.Command {
9696

9797
func run(out io.Writer) error {
9898
args = &drivers.DriverConfig{
99-
Image: opts.ImagePath,
100-
Save: opts.Save,
101-
Metadata: opts.Metadata,
102-
Runtime: opts.Runtime,
103-
Platform: opts.Platform,
99+
Image: opts.ImagePath,
100+
Save: opts.Save,
101+
Metadata: opts.Metadata,
102+
Runtime: opts.Runtime,
103+
Platform: opts.Platform,
104+
Namespace: opts.Namespace,
105+
PodnamePrefix: opts.PodnamePrefix,
106+
AllowReuse: opts.AllowReuse,
104107
}
105108

106109
var err error
@@ -247,6 +250,9 @@ func AddTestFlags(cmd *cobra.Command) {
247250
cmd.Flags().VarP(&opts.Output, "output", "o", "output format for the test report (available format: text, json, junit)")
248251
cmd.Flags().BoolVar(&opts.NoColor, "no-color", false, "no color in the output")
249252
cmd.Flags().StringVar(&opts.JunitSuiteName, "junit-suite-name", "", fmt.Sprintf("name to use for the junit test suite (defaults to '%s')", output.DefaultJunitSuiteName))
253+
cmd.Flags().StringVar(&opts.Namespace, "namespace", "", "namespace to use with kubernetes driver")
254+
cmd.Flags().StringVar(&opts.PodnamePrefix, "podname-prefix", "", "podname prefix to use with kubernetes driver")
255+
cmd.Flags().BoolVar(&opts.AllowReuse, "allow-reuse", false, "if set, reuse the running pod for multiple tests, this is a lot faster but test can interfere with each other. Use with kubernetes driver")
250256

251257
cmd.Flags().StringArrayVarP(&opts.ConfigFiles, "config", "c", []string{}, "test config files")
252258
cmd.MarkFlagRequired("config")

go.mod

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,95 @@
11
module github.com/GoogleContainerTools/container-structure-test
22

3-
go 1.22
3+
go 1.25.0
44

55
require (
66
github.com/fsouza/go-dockerclient v1.11.2
7-
github.com/google/go-cmp v0.6.0
7+
github.com/google/go-cmp v0.7.0
88
github.com/google/go-containerregistry v0.20.1
99
github.com/joho/godotenv v1.5.1
1010
github.com/moby/sys/sequential v0.6.0
1111
github.com/opencontainers/image-spec v1.1.0
1212
github.com/pkg/errors v0.9.1
1313
github.com/sirupsen/logrus v1.9.3
1414
github.com/spf13/cobra v1.8.0
15-
golang.org/x/crypto v0.25.0
15+
golang.org/x/crypto v0.45.0
1616
gopkg.in/yaml.v2 v2.4.0
17+
k8s.io/api v0.35.3
18+
k8s.io/apimachinery v0.35.3
19+
k8s.io/client-go v0.35.3
1720
)
1821

1922
exclude github.com/docker/docker v24.0.6+incompatible // indirect
2023

2124
require (
2225
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
2326
github.com/Microsoft/go-winio v0.6.2 // indirect
24-
github.com/containerd/containerd v1.7.13 // indirect
27+
github.com/containerd/containerd v1.7.30 // indirect
2528
github.com/containerd/log v0.1.0 // indirect
2629
github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect
27-
github.com/distribution/reference v0.5.0 // indirect
30+
github.com/davecgh/go-spew v1.1.1 // indirect
31+
github.com/distribution/reference v0.6.0 // indirect
2832
github.com/docker/cli v25.0.3+incompatible // indirect
2933
github.com/docker/distribution v2.8.3+incompatible // indirect
3034
github.com/docker/docker v27.1.1+incompatible // indirect
3135
github.com/docker/docker-credential-helpers v0.8.1 // indirect
3236
github.com/docker/go-connections v0.5.0 // indirect
3337
github.com/docker/go-units v0.5.0 // indirect
38+
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
3439
github.com/felixge/httpsnoop v1.0.4 // indirect
35-
github.com/go-logr/logr v1.4.1 // indirect
40+
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
41+
github.com/go-logr/logr v1.4.3 // indirect
3642
github.com/go-logr/stdr v1.2.2 // indirect
43+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
44+
github.com/go-openapi/jsonreference v0.20.2 // indirect
45+
github.com/go-openapi/swag v0.23.0 // indirect
3746
github.com/gogo/protobuf v1.3.2 // indirect
47+
github.com/google/gnostic-models v0.7.0 // indirect
48+
github.com/google/uuid v1.6.0 // indirect
49+
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
3850
github.com/inconshreveable/mousetrap v1.1.0 // indirect
51+
github.com/josharian/intern v1.0.0 // indirect
52+
github.com/json-iterator/go v1.1.12 // indirect
3953
github.com/klauspost/compress v1.17.7 // indirect
40-
github.com/kr/pretty v0.2.1 // indirect
41-
github.com/kr/text v0.2.0 // indirect
54+
github.com/mailru/easyjson v0.7.7 // indirect
4255
github.com/mitchellh/go-homedir v1.1.0 // indirect
4356
github.com/moby/docker-image-spec v1.3.1 // indirect
4457
github.com/moby/patternmatcher v0.6.0 // indirect
45-
github.com/moby/sys/user v0.1.0 // indirect
58+
github.com/moby/spdystream v0.5.0 // indirect
59+
github.com/moby/sys/user v0.3.0 // indirect
60+
github.com/moby/sys/userns v0.1.0 // indirect
4661
github.com/moby/term v0.5.0 // indirect
62+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
63+
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
4764
github.com/morikuni/aec v1.0.0 // indirect
65+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
66+
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
4867
github.com/opencontainers/go-digest v1.0.0 // indirect
49-
github.com/spf13/pflag v1.0.5 // indirect
68+
github.com/spf13/pflag v1.0.9 // indirect
5069
github.com/vbatts/tar-split v0.11.5 // indirect
70+
github.com/x448/float16 v0.8.4 // indirect
5171
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
5272
go.opentelemetry.io/otel v1.24.0 // indirect
5373
go.opentelemetry.io/otel/metric v1.24.0 // indirect
5474
go.opentelemetry.io/otel/trace v1.24.0 // indirect
55-
golang.org/x/sync v0.6.0 // indirect
56-
golang.org/x/sys v0.22.0 // indirect
57-
golang.org/x/term v0.22.0 // indirect
75+
go.yaml.in/yaml/v2 v2.4.3 // indirect
76+
go.yaml.in/yaml/v3 v3.0.4 // indirect
77+
golang.org/x/net v0.47.0 // indirect
78+
golang.org/x/oauth2 v0.30.0 // indirect
79+
golang.org/x/sync v0.18.0 // indirect
80+
golang.org/x/sys v0.38.0 // indirect
81+
golang.org/x/term v0.37.0 // indirect
82+
golang.org/x/text v0.31.0 // indirect
83+
golang.org/x/time v0.12.0 // indirect
84+
google.golang.org/protobuf v1.36.8 // indirect
85+
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
86+
gopkg.in/inf.v0 v0.9.1 // indirect
87+
gopkg.in/yaml.v3 v3.0.1 // indirect
88+
k8s.io/klog/v2 v2.130.1 // indirect
89+
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
90+
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect
91+
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
92+
sigs.k8s.io/randfill v1.0.0 // indirect
93+
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
94+
sigs.k8s.io/yaml v1.6.0 // indirect
5895
)

0 commit comments

Comments
 (0)