39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"os"
|
||
|
|
"path/filepath"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"metis/pkg/sentinel"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestSentinelNsenterAndErrorBranches(t *testing.T) {
|
||
|
|
dir := t.TempDir()
|
||
|
|
write := func(name, body string) {
|
||
|
|
path := filepath.Join(dir, name)
|
||
|
|
if err := os.WriteFile(path, []byte("#!/usr/bin/env bash\nset -eu\n"+body+"\n"), 0o755); err != nil {
|
||
|
|
t.Fatalf("write %s: %v", name, err)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
write("nsenter", `while [[ "${1:-}" != "--" ]]; do shift; done
|
||
|
|
shift
|
||
|
|
exec "$@"`)
|
||
|
|
write("hostname", `printf 'titan-13\n'`)
|
||
|
|
write("uname", `printf '6.6.63\n'`)
|
||
|
|
write("k3s", `printf 'v1.31.5+k3s1\n'`)
|
||
|
|
write("containerd", `printf '1.7.99\n'`)
|
||
|
|
write("cat", `printf 'PRETTY_NAME="Metis OS"\n'`)
|
||
|
|
write("dpkg-query", `printf '1.0.0\n'`)
|
||
|
|
write("rpm", `printf '1.0.0\n'`)
|
||
|
|
t.Setenv("PATH", dir+string(os.PathListSeparator)+os.Getenv("PATH"))
|
||
|
|
t.Setenv("METIS_SENTINEL_NSENTER", "1")
|
||
|
|
snap := sentinel.Collect()
|
||
|
|
if snap.Hostname != "titan-13" || snap.OSImage != "Metis OS" {
|
||
|
|
t.Fatalf("Collect via nsenter = %#v", snap)
|
||
|
|
}
|
||
|
|
if err := pushSnapshot("http://127.0.0.1:1", snap); err == nil {
|
||
|
|
t.Fatal("expected pushSnapshot error")
|
||
|
|
}
|
||
|
|
}
|