package discovery import ( "os" "path/filepath" "testing" ) func TestMemTotalIsReadFromMeminfo(t *testing.T) { dir := t.TempDir() p := filepath.Join(dir, "meminfo") // The real shape, including the fields before and after, so the parser is // not tested against something tidier than it will see. if err := os.WriteFile(p, []byte( "MemTotal: 32876244 kB\nMemFree: 1234 kB\nMemAvailable: 5678 kB\n"), 0o600); err != nil { t.Fatal(err) } if got, want := memTotalMBFrom(p), 32876244/1024; got != want { t.Errorf("memTotalMBFrom = %d, want %d", got, want) } } func TestUnreadableMeminfoReportsUnknownRatherThanZeroMemory(t *testing.T) { // Zero means "did not say" everywhere downstream, and placement treats it // as no constraint. A node with genuinely no memory is not a case. if got := memTotalMBFrom(filepath.Join(t.TempDir(), "absent")); got != 0 { t.Errorf("got %d for a missing file", got) } dir := t.TempDir() p := filepath.Join(dir, "meminfo") for _, junk := range []string{"", "MemTotal:\n", "MemTotal: not-a-number kB\n", "Other: 1 kB\n"} { if err := os.WriteFile(p, []byte(junk), 0o600); err != nil { t.Fatal(err) } if got := memTotalMBFrom(p); got != 0 { t.Errorf("got %d for %q", got, junk) } } }