mirror of https://github.com/k3s-io/k3s
Browse Source
Signed-off-by: Vitor Savian <vitor.savian@suse.com> Added default runtime flag Signed-off-by: Vitor Savian <vitor.savian@suse.com>pull/8962/head
Vitor Savian
1 year ago
14 changed files with 799 additions and 576 deletions
@ -0,0 +1,59 @@ |
|||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: nvidia |
||||||
|
handler: nvidia |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: nvidia-experimental |
||||||
|
handler: nvidia-experimental |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: crun |
||||||
|
handler: crun |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: lunatic |
||||||
|
handler: lunatic |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: slight |
||||||
|
handler: slight |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: spin |
||||||
|
handler: spin |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: wws |
||||||
|
handler: wws |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: wasmedge |
||||||
|
handler: wasmedge |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: wasmer |
||||||
|
handler: wasmer |
||||||
|
--- |
||||||
|
apiVersion: node.k8s.io/v1 |
||||||
|
kind: RuntimeClass |
||||||
|
metadata: |
||||||
|
name: wasmtime |
||||||
|
handler: wasmtime |
@ -1,37 +0,0 @@ |
|||||||
//go:build linux
|
|
||||||
// +build linux
|
|
||||||
|
|
||||||
package containerd |
|
||||||
|
|
||||||
import ( |
|
||||||
"io/fs" |
|
||||||
) |
|
||||||
|
|
||||||
// findNvidiaContainerRuntimes returns a list of nvidia container runtimes that
|
|
||||||
// are available on the system. It checks install locations used by the nvidia
|
|
||||||
// gpu operator and by system package managers. The gpu operator installation
|
|
||||||
// takes precedence over the system package manager installation.
|
|
||||||
// The given fs.FS should represent the filesystem root directory to search in.
|
|
||||||
func findNvidiaContainerRuntimes(root fs.FS, foundRuntimes runtimeConfigs) { |
|
||||||
// Check these locations in order. The GPU operator's installation should
|
|
||||||
// take precedence over the package manager's installation.
|
|
||||||
locationsToCheck := []string{ |
|
||||||
"usr/local/nvidia/toolkit", // Path when installing via GPU Operator
|
|
||||||
"usr/bin", // Path when installing via package manager
|
|
||||||
} |
|
||||||
|
|
||||||
// Fill in the binary location with just the name of the binary,
|
|
||||||
// and check against each of the possible locations. If a match is found,
|
|
||||||
// set the location to the full path.
|
|
||||||
potentialRuntimes := runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "nvidia-container-runtime", |
|
||||||
}, |
|
||||||
"nvidia-experimental": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "nvidia-container-runtime-experimental", |
|
||||||
}, |
|
||||||
} |
|
||||||
findContainerRuntimes(root, potentialRuntimes, locationsToCheck, foundRuntimes) |
|
||||||
} |
|
@ -1,267 +0,0 @@ |
|||||||
//go:build linux
|
|
||||||
// +build linux
|
|
||||||
|
|
||||||
package containerd |
|
||||||
|
|
||||||
import ( |
|
||||||
"io/fs" |
|
||||||
"reflect" |
|
||||||
"testing" |
|
||||||
"testing/fstest" |
|
||||||
) |
|
||||||
|
|
||||||
func Test_UnitFindNvidiaContainerRuntimes(t *testing.T) { |
|
||||||
executable := &fstest.MapFile{Mode: 0755} |
|
||||||
type args struct { |
|
||||||
root fs.FS |
|
||||||
alreadyFoundRuntimes runtimeConfigs |
|
||||||
} |
|
||||||
tests := []struct { |
|
||||||
name string |
|
||||||
args args |
|
||||||
want runtimeConfigs |
|
||||||
}{ |
|
||||||
{ |
|
||||||
name: "No runtimes", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Nvidia runtime in /usr/bin", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Experimental runtime in /usr/local/nvidia/toolkit", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/local/nvidia/toolkit/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Two runtimes in separate directories", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime": executable, |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/local/nvidia/toolkit/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Experimental runtime in /usr/bin", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime-experimental": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia-experimental": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime-experimental", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Same runtime in two directories", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime-experimental": executable, |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime-experimental": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia-experimental": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/local/nvidia/toolkit/nvidia-container-runtime-experimental", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Both runtimes in /usr/bin", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime-experimental": executable, |
|
||||||
"usr/bin/nvidia-container-runtime": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
"nvidia-experimental": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime-experimental", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Both runtimes in both directories", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime": executable, |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime-experimental": executable, |
|
||||||
"usr/bin/nvidia-container-runtime": executable, |
|
||||||
"usr/bin/nvidia-container-runtime-experimental": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/local/nvidia/toolkit/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
"nvidia-experimental": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/local/nvidia/toolkit/nvidia-container-runtime-experimental", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Both runtimes in /usr/local/nvidia/toolkit", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime": executable, |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime-experimental": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/local/nvidia/toolkit/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
"nvidia-experimental": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/local/nvidia/toolkit/nvidia-container-runtime-experimental", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Both runtimes in /usr/bin and one duplicate in /usr/local/nvidia/toolkit", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime": executable, |
|
||||||
"usr/bin/nvidia-container-runtime-experimental": executable, |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime-experimental": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
"nvidia-experimental": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/local/nvidia/toolkit/nvidia-container-runtime-experimental", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Runtime is a directory", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime": &fstest.MapFile{ |
|
||||||
Mode: fs.ModeDir, |
|
||||||
}, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Runtime in both directories, but one is a directory", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime": executable, |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime": &fstest.MapFile{ |
|
||||||
Mode: fs.ModeDir, |
|
||||||
}, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Preserve already found runtimes", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/nvidia-container-runtime": executable, |
|
||||||
"usr/local/nvidia/toolkit/nvidia-container-runtime": &fstest.MapFile{ |
|
||||||
Mode: fs.ModeDir, |
|
||||||
}, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{ |
|
||||||
"slight": { |
|
||||||
RuntimeType: "io.containerd.slight.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-slight-v1", |
|
||||||
}, |
|
||||||
"wasmtime": { |
|
||||||
RuntimeType: "io.containerd.wasmtime.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-wasmtime-v1", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"slight": { |
|
||||||
RuntimeType: "io.containerd.slight.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-slight-v1", |
|
||||||
}, |
|
||||||
"wasmtime": { |
|
||||||
RuntimeType: "io.containerd.wasmtime.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-wasmtime-v1", |
|
||||||
}, |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
} |
|
||||||
for _, tt := range tests { |
|
||||||
t.Run(tt.name, func(t *testing.T) { |
|
||||||
foundRuntimes := tt.args.alreadyFoundRuntimes |
|
||||||
findNvidiaContainerRuntimes(tt.args.root, foundRuntimes) |
|
||||||
if !reflect.DeepEqual(foundRuntimes, tt.want) { |
|
||||||
t.Errorf("findNvidiaContainerRuntimes() = %+v\nWant = %+v", foundRuntimes, tt.want) |
|
||||||
} |
|
||||||
}) |
|
||||||
} |
|
||||||
} |
|
@ -1,60 +0,0 @@ |
|||||||
//go:build linux
|
|
||||||
// +build linux
|
|
||||||
|
|
||||||
package containerd |
|
||||||
|
|
||||||
import ( |
|
||||||
"io/fs" |
|
||||||
) |
|
||||||
|
|
||||||
// findWasiRuntimes returns a list of WebAssembly (WASI) container runtimes that
|
|
||||||
// are available on the system. It checks install locations used by the kwasm
|
|
||||||
// operator and by system package managers. The kwasm operator installation
|
|
||||||
// takes precedence over the system package manager installation.
|
|
||||||
// The given fs.FS should represent the filesystem root directory to search in.
|
|
||||||
func findWasiRuntimes(root fs.FS, |
|
||||||
foundRuntimes runtimeConfigs, |
|
||||||
) { |
|
||||||
// Check these locations in order. The GPU operator's installation should
|
|
||||||
// take precedence over the package manager's installation.
|
|
||||||
locationsToCheck := []string{ |
|
||||||
"opt/kwasm/bin", // Path when installing via kwasm Operator
|
|
||||||
"usr/bin", // Path when installing via package manager
|
|
||||||
"usr/sbin", // Path when installing via package manager
|
|
||||||
} |
|
||||||
|
|
||||||
// Fill in the binary location with just the name of the binary,
|
|
||||||
// and check against each of the possible locations. If a match is found,
|
|
||||||
// set the location to the full path.
|
|
||||||
potentialRuntimes := runtimeConfigs{ |
|
||||||
"lunatic": { |
|
||||||
RuntimeType: "io.containerd.lunatic.v2", |
|
||||||
BinaryName: "containerd-shim-lunatic-v1", |
|
||||||
}, |
|
||||||
"slight": { |
|
||||||
RuntimeType: "io.containerd.slight.v2", |
|
||||||
BinaryName: "containerd-shim-slight-v1", |
|
||||||
}, |
|
||||||
"spin": { |
|
||||||
RuntimeType: "io.containerd.spin.v2", |
|
||||||
BinaryName: "containerd-shim-spin-v1", |
|
||||||
}, |
|
||||||
"wws": { |
|
||||||
RuntimeType: "io.containerd.wws.v2", |
|
||||||
BinaryName: "containerd-shim-wws-v1", |
|
||||||
}, |
|
||||||
"wasmedge": { |
|
||||||
RuntimeType: "io.containerd.wasmedge.v2", |
|
||||||
BinaryName: "containerd-shim-wasmedge-v1", |
|
||||||
}, |
|
||||||
"wasmer": { |
|
||||||
RuntimeType: "io.containerd.wasmer.v2", |
|
||||||
BinaryName: "containerd-shim-wasmer-v1", |
|
||||||
}, |
|
||||||
"wasmtime": { |
|
||||||
RuntimeType: "io.containerd.wasmtime.v2", |
|
||||||
BinaryName: "containerd-shim-wasmtime-v1", |
|
||||||
}, |
|
||||||
} |
|
||||||
findContainerRuntimes(root, potentialRuntimes, locationsToCheck, foundRuntimes) |
|
||||||
} |
|
@ -1,199 +0,0 @@ |
|||||||
//go:build linux
|
|
||||||
// +build linux
|
|
||||||
|
|
||||||
package containerd |
|
||||||
|
|
||||||
import ( |
|
||||||
"io/fs" |
|
||||||
"reflect" |
|
||||||
"testing" |
|
||||||
"testing/fstest" |
|
||||||
) |
|
||||||
|
|
||||||
func Test_UnitFindWasiRuntimes(t *testing.T) { |
|
||||||
executable := &fstest.MapFile{Mode: 0755} |
|
||||||
type args struct { |
|
||||||
root fs.FS |
|
||||||
alreadyFoundRuntimes runtimeConfigs |
|
||||||
} |
|
||||||
tests := []struct { |
|
||||||
name string |
|
||||||
args args |
|
||||||
want runtimeConfigs |
|
||||||
}{ |
|
||||||
{ |
|
||||||
name: "No runtimes", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "wasmtime runtime in /usr/sbin", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/sbin/containerd-shim-wasmtime-v1": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"wasmtime": { |
|
||||||
RuntimeType: "io.containerd.wasmtime.v2", |
|
||||||
BinaryName: "/usr/sbin/containerd-shim-wasmtime-v1", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "lunatic runtime in /opt/kwasm/bin/", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"opt/kwasm/bin/containerd-shim-lunatic-v1": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"lunatic": { |
|
||||||
RuntimeType: "io.containerd.lunatic.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-lunatic-v1", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Two runtimes in separate directories", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/containerd-shim-wasmer-v1": executable, |
|
||||||
"opt/kwasm/bin/containerd-shim-slight-v1": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"slight": { |
|
||||||
RuntimeType: "io.containerd.slight.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-slight-v1", |
|
||||||
}, |
|
||||||
"wasmer": { |
|
||||||
RuntimeType: "io.containerd.wasmer.v2", |
|
||||||
BinaryName: "/usr/bin/containerd-shim-wasmer-v1", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Same runtime in two directories", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/containerd-shim-wasmedge-v1": executable, |
|
||||||
"opt/kwasm/bin/containerd-shim-wasmedge-v1": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"wasmedge": { |
|
||||||
RuntimeType: "io.containerd.wasmedge.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-wasmedge-v1", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "All runtimes in /usr/bin", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"usr/bin/containerd-shim-lunatic-v1": executable, |
|
||||||
"usr/bin/containerd-shim-slight-v1": executable, |
|
||||||
"usr/bin/containerd-shim-spin-v1": executable, |
|
||||||
"usr/bin/containerd-shim-wws-v1": executable, |
|
||||||
"usr/bin/containerd-shim-wasmedge-v1": executable, |
|
||||||
"usr/bin/containerd-shim-wasmer-v1": executable, |
|
||||||
"usr/bin/containerd-shim-wasmtime-v1": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"lunatic": { |
|
||||||
RuntimeType: "io.containerd.lunatic.v2", |
|
||||||
BinaryName: "/usr/bin/containerd-shim-lunatic-v1", |
|
||||||
}, |
|
||||||
"slight": { |
|
||||||
RuntimeType: "io.containerd.slight.v2", |
|
||||||
BinaryName: "/usr/bin/containerd-shim-slight-v1", |
|
||||||
}, |
|
||||||
"spin": { |
|
||||||
RuntimeType: "io.containerd.spin.v2", |
|
||||||
BinaryName: "/usr/bin/containerd-shim-spin-v1", |
|
||||||
}, |
|
||||||
"wws": { |
|
||||||
RuntimeType: "io.containerd.wws.v2", |
|
||||||
BinaryName: "/usr/bin/containerd-shim-wws-v1", |
|
||||||
}, |
|
||||||
"wasmedge": { |
|
||||||
RuntimeType: "io.containerd.wasmedge.v2", |
|
||||||
BinaryName: "/usr/bin/containerd-shim-wasmedge-v1", |
|
||||||
}, |
|
||||||
"wasmer": { |
|
||||||
RuntimeType: "io.containerd.wasmer.v2", |
|
||||||
BinaryName: "/usr/bin/containerd-shim-wasmer-v1", |
|
||||||
}, |
|
||||||
"wasmtime": { |
|
||||||
RuntimeType: "io.containerd.wasmtime.v2", |
|
||||||
BinaryName: "/usr/bin/containerd-shim-wasmtime-v1", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Both runtimes in both directories", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"opt/kwasm/bin/containerd-shim-slight-v1": executable, |
|
||||||
"opt/kwasm/bin/containerd-shim-wasmtime-v1": executable, |
|
||||||
"usr/bin/containerd-shim-slight-v1": executable, |
|
||||||
"usr/bin/containerd-shim-wasmtime-v1": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"slight": { |
|
||||||
RuntimeType: "io.containerd.slight.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-slight-v1", |
|
||||||
}, |
|
||||||
"wasmtime": { |
|
||||||
RuntimeType: "io.containerd.wasmtime.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-wasmtime-v1", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
{ |
|
||||||
name: "Preserve already found runtimes", |
|
||||||
args: args{ |
|
||||||
root: fstest.MapFS{ |
|
||||||
"opt/kwasm/bin/containerd-shim-wasmtime-v1": executable, |
|
||||||
}, |
|
||||||
alreadyFoundRuntimes: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
want: runtimeConfigs{ |
|
||||||
"nvidia": { |
|
||||||
RuntimeType: "io.containerd.runc.v2", |
|
||||||
BinaryName: "/usr/bin/nvidia-container-runtime", |
|
||||||
}, |
|
||||||
"wasmtime": { |
|
||||||
RuntimeType: "io.containerd.wasmtime.v2", |
|
||||||
BinaryName: "/opt/kwasm/bin/containerd-shim-wasmtime-v1", |
|
||||||
}, |
|
||||||
}, |
|
||||||
}, |
|
||||||
} |
|
||||||
for _, tt := range tests { |
|
||||||
t.Run(tt.name, func(t *testing.T) { |
|
||||||
foundRuntimes := tt.args.alreadyFoundRuntimes |
|
||||||
findWasiRuntimes(tt.args.root, foundRuntimes) |
|
||||||
if !reflect.DeepEqual(foundRuntimes, tt.want) { |
|
||||||
t.Errorf("findWasiRuntimes() = %+v\nWant = %+v", foundRuntimes, tt.want) |
|
||||||
} |
|
||||||
}) |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue