Skip to content

Commit

Permalink
Introduce two additional unit tests for two runtimes and pod annotati…
Browse files Browse the repository at this point in the history
…ons.

Signed-off-by: Ray Burgemeestre <rayb@nvidia.com>
  • Loading branch information
rayburgemeestre committed May 2, 2024
1 parent 9cb8870 commit f3004cb
Showing 1 changed file with 94 additions and 0 deletions.
94 changes: 94 additions & 0 deletions cmd/containerd/server/config/config_test.go
Expand Up @@ -304,6 +304,100 @@ func TestMergingPluginsWithTwoCriCniDropInConfigs(t *testing.T) {
testMergeConfig(t, []string{data1, data2}, expected, "io.containerd.grpc.v1.cri")
}

func TestMergingPluginsWithTwoCriRuntimeDropInConfigs(t *testing.T) {
runc_runtime := `

Check warning on line 308 in cmd/containerd/server/config/config_test.go

View workflow job for this annotation

GitHub Actions / Linters (ubuntu-22.04)

var-naming: don't use underscores in Go names; var runc_runtime should be runcRuntime (revive)
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
`
nvidia_runtime := `

Check warning on line 314 in cmd/containerd/server/config/config_test.go

View workflow job for this annotation

GitHub Actions / Linters (ubuntu-22.04)

var-naming: don't use underscores in Go names; var nvidia_runtime should be nvidiaRuntime (revive)
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
[plugins."io.containerd.grpc.v1.cri".containerd]
default_runtime_name = "nvidia"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
privileged_without_host_devices = false
runtime_engine = ""
runtime_root = ""
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
BinaryName = "/usr/bin/nvidia-container-runtime"
SystemdCgroup = true
`
expected := `
[containerd]
default_runtime_name = 'nvidia'
[containerd.runtimes]
[containerd.runtimes.nvidia]
privileged_without_host_devices = false
runtime_engine = ''
runtime_root = ''
runtime_type = 'io.containerd.runc.v2'
[containerd.runtimes.nvidia.options]
BinaryName = '/usr/bin/nvidia-container-runtime'
SystemdCgroup = true
[containerd.runtimes.runc]
runtime_type = 'io.containerd.runc.v2'
[containerd.runtimes.runc.options]
SystemdCgroup = true
`
testMergeConfig(t, []string{runc_runtime, nvidia_runtime}, expected, "io.containerd.grpc.v1.cri")

// Merging a third config that customizes only the default_runtime_name should result in mostly identical result
runc_default := `

Check warning on line 353 in cmd/containerd/server/config/config_test.go

View workflow job for this annotation

GitHub Actions / Linters (ubuntu-22.04)

var-naming: don't use underscores in Go names; var runc_default should be runcDefault (revive)
[plugins."io.containerd.grpc.v1.cri".containerd]
default_runtime_name = "runc"
`
// This will then be the only difference in our expected TOML
expected2 := strings.Replace(expected, "default_runtime_name = 'nvidia'", "default_runtime_name = 'runc'", 1)

testMergeConfig(t, []string{runc_runtime, nvidia_runtime, runc_default}, expected2, "io.containerd.grpc.v1.cri")

// Mixing up the order will again result in 'nvidia' being the default runtime
testMergeConfig(t, []string{runc_runtime, runc_default, nvidia_runtime}, expected, "io.containerd.grpc.v1.cri")
}

func TestMergingPluginsWithTwoCriRuntimeWithPodAnnotationsDropInConfigs(t *testing.T) {
runc1 := `
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
cni_conf_dir = "/foo"
pod_annotations = ["a", "b", "c"]
`
runc2 := `
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
cni_conf_dir = "/bar"
pod_annotations = ["d", "e", "f"]
`
expected := `
[containerd]
[containerd.runtimes]
[containerd.runtimes.runc]
cni_conf_dir = '/bar'
pod_annotations = ['d', 'e', 'f']
runtime_type = 'io.containerd.runc.v2'
`
testMergeConfig(t, []string{runc1, runc2}, expected, "io.containerd.grpc.v1.cri")

// The other way around: runc1 over runc2
expected = `
[containerd]
[containerd.runtimes]
[containerd.runtimes.runc]
cni_conf_dir = '/foo'
pod_annotations = ['a', 'b', 'c']
runtime_type = 'io.containerd.runc.v2'
`
testMergeConfig(t, []string{runc2, runc1}, expected, "io.containerd.grpc.v1.cri")
}

func testMergeConfig(t *testing.T, inputs []string, expected string, comparePlugin string) {
tempDir := t.TempDir()
var result Config
Expand Down

0 comments on commit f3004cb

Please sign in to comment.