package config // P6 task 08: the [batch] block and ParseSize. import ( "os" "path/filepath" "testing" ) func TestBatchBlock(t *testing.T) { p := filepath.Join(t.TempDir(), "sift.toml") body := "[batch]\ndisabled = false\ntargets_per_job = 16\njobs_per_caller = 2\njobs_total = 4\nworkers = 2\nttl = \"12h\"\nmax_bytes = \"32MiB\"\n" if err := os.WriteFile(p, []byte(body), 0o600); err != nil { t.Fatal(err) } f, err := Load(p) if err != nil { t.Fatal(err) } b := f.Batch if b.Disabled || b.TargetsPerJob != 16 || b.JobsPerCaller != 2 || b.JobsTotal != 4 || b.Workers != 2 || b.TTL != "12h" || b.MaxBytes != "32MiB" { t.Fatalf("batch block %+v", b) } // No block: zero values, and batch is on (the runner applies its own defaults). empty := filepath.Join(t.TempDir(), "empty.toml") if err := os.WriteFile(empty, []byte("listen = \":8443\"\n"), 0o600); err != nil { t.Fatal(err) } if f, err := Load(empty); err != nil || f.Batch != (Batch{}) { t.Fatalf("no [batch] block: %+v %v", f.Batch, err) } } func TestParseSize(t *testing.T) { const def = 7 for _, c := range []struct { in string want int64 }{ {"64MiB", 64 << 20}, {"512KiB", 512 << 10}, {"1GiB", 1 << 30}, {"1000", 1000}, {" 2MiB ", 2 << 20}, {"", def}, {"junk", def}, {"-1MiB", def}, {"0", def}, {"12MB", def}, // decimal units are not accepted: say MiB } { if got := ParseSize(c.in, def); got != c.want { t.Errorf("ParseSize(%q) = %d, want %d", c.in, got, c.want) } } }