- Benchmarks overlay build in an environment with 1000 nodes - Updates testenv to support both benchmarks and tests To execute: ``` go test github.com/warewulf/warewulf/internal/app/wwctl/overlay/build -bench Benchmark_Overlay_Build ``` Signed-off-by: Jonathon Anderson <janderson@ciq.com>
107 lines
4.0 KiB
Go
107 lines
4.0 KiB
Go
package kernels
|
|
|
|
import (
|
|
"bytes"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/warewulf/warewulf/internal/pkg/testenv"
|
|
"github.com/warewulf/warewulf/internal/pkg/wwlog"
|
|
)
|
|
|
|
func Test_List(t *testing.T) {
|
|
tests := map[string]struct {
|
|
files map[string][]string
|
|
args []string
|
|
stdout string
|
|
}{
|
|
"default": {
|
|
files: map[string][]string{},
|
|
args: []string{},
|
|
stdout: `
|
|
Container Kernel Version Default Nodes
|
|
--------- ------ ------- ------- -----
|
|
`,
|
|
},
|
|
"list": {
|
|
files: map[string][]string{
|
|
"container1": []string{
|
|
"/boot/vmlinuz-5.14.0-427.18.1.el9_4.x86_64",
|
|
"/boot/vmlinuz-5.14.0-427.24.1.el9_4.x86_64",
|
|
"/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
|
},
|
|
"container2": []string{
|
|
"/boot/vmlinuz-0-rescue-eb46964329b146e39518c625feab3ea0",
|
|
"/boot/vmlinuz-5.14.0-362.24.1.el9_3.aarch64",
|
|
"/boot/vmlinuz-5.14.0-427.31.1.el9_4.aarch64+debug",
|
|
"/boot/vmlinuz-5.14.0-284.30.1.el9_2.aarch64",
|
|
"/boot/vmlinuz-5.14.0-427.31.1.el9_4.aarch64",
|
|
},
|
|
},
|
|
args: []string{},
|
|
stdout: `
|
|
Container Kernel Version Default Nodes
|
|
--------- ------ ------- ------- -----
|
|
container1 /boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64 4.14.0-427.18.1 false 0
|
|
container1 /boot/vmlinuz-5.14.0-427.18.1.el9_4.x86_64 5.14.0-427.18.1 false 0
|
|
container1 /boot/vmlinuz-5.14.0-427.24.1.el9_4.x86_64 5.14.0-427.24.1 true 0
|
|
container2 /boot/vmlinuz-0-rescue-eb46964329b146e39518c625feab3ea0 -- false 0
|
|
container2 /boot/vmlinuz-5.14.0-284.30.1.el9_2.aarch64 5.14.0-284.30.1 false 0
|
|
container2 /boot/vmlinuz-5.14.0-362.24.1.el9_3.aarch64 5.14.0-362.24.1 false 0
|
|
container2 /boot/vmlinuz-5.14.0-427.31.1.el9_4.aarch64 5.14.0-427.31.1 true 0
|
|
container2 /boot/vmlinuz-5.14.0-427.31.1.el9_4.aarch64+debug 5.14.0-427.31.1 false 0
|
|
`,
|
|
},
|
|
"single container": {
|
|
files: map[string][]string{
|
|
"container1": []string{
|
|
"/boot/vmlinuz-5.14.0-427.18.1.el9_4.x86_64",
|
|
"/boot/vmlinuz-5.14.0-427.24.1.el9_4.x86_64",
|
|
"/boot/vmlinuz-4.14.0-427.18.1.el8_4.x86_64",
|
|
},
|
|
"container2": []string{
|
|
"/boot/vmlinuz-0-rescue-eb46964329b146e39518c625feab3ea0",
|
|
"/boot/vmlinuz-5.14.0-362.24.1.el9_3.aarch64",
|
|
"/boot/vmlinuz-5.14.0-427.31.1.el9_4.aarch64+debug",
|
|
"/boot/vmlinuz-5.14.0-284.30.1.el9_2.aarch64",
|
|
"/boot/vmlinuz-5.14.0-427.31.1.el9_4.aarch64",
|
|
},
|
|
},
|
|
args: []string{"container2"},
|
|
stdout: `
|
|
Container Kernel Version Default Nodes
|
|
--------- ------ ------- ------- -----
|
|
container2 /boot/vmlinuz-0-rescue-eb46964329b146e39518c625feab3ea0 -- false 0
|
|
container2 /boot/vmlinuz-5.14.0-284.30.1.el9_2.aarch64 5.14.0-284.30.1 false 0
|
|
container2 /boot/vmlinuz-5.14.0-362.24.1.el9_3.aarch64 5.14.0-362.24.1 false 0
|
|
container2 /boot/vmlinuz-5.14.0-427.31.1.el9_4.aarch64 5.14.0-427.31.1 true 0
|
|
container2 /boot/vmlinuz-5.14.0-427.31.1.el9_4.aarch64+debug 5.14.0-427.31.1 false 0
|
|
`,
|
|
},
|
|
}
|
|
|
|
for name, tt := range tests {
|
|
t.Run(name, func(t *testing.T) {
|
|
env := testenv.New(t)
|
|
defer env.RemoveAll()
|
|
for container, files := range tt.files {
|
|
rootfs := filepath.Join(filepath.Join("/var/lib/warewulf/chroots", container), "rootfs")
|
|
for _, file := range files {
|
|
env.CreateFile(filepath.Join(rootfs, file))
|
|
}
|
|
}
|
|
buf := new(bytes.Buffer)
|
|
baseCmd := GetCommand()
|
|
baseCmd.SetArgs(tt.args)
|
|
baseCmd.SetOut(buf)
|
|
baseCmd.SetErr(buf)
|
|
wwlog.SetLogWriter(buf)
|
|
err := baseCmd.Execute()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, strings.TrimSpace(tt.stdout), strings.TrimSpace(buf.String()))
|
|
})
|
|
}
|
|
}
|