package server import ( "strings" "testing" ) func TestCollectLogTimeBounds(t *testing.T) { lines := []string{ "2026-02-28T13:10:13.7442032Z Задача поставлена в очередь", "not-a-timestamp line", "2026-02-28T13:31:00.5077486Z Сбор завершен", } startedAt, finishedAt, ok := collectLogTimeBounds(lines) if !ok { t.Fatalf("expected bounds to be parsed") } if got := formatRawExportDuration(finishedAt.Sub(startedAt)); got != "20m47s" { t.Fatalf("unexpected duration: %s", got) } } func TestBuildHumanReadableCollectionLog_IncludesDurationHeader(t *testing.T) { pkg := &RawExportPackage{ Format: rawExportFormatV1, Source: RawExportSource{ Kind: "live_redfish", CollectLogs: []string{ "2026-02-28T13:10:13.7442032Z Redfish: подключение к BMC...", "2026-02-28T13:31:00.5077486Z Сбор завершен", }, }, } logText := buildHumanReadableCollectionLog(pkg, nil, "LOGPile test") for _, token := range []string{ "Collection Started:", "Collection Finished:", "Collection Duration:", } { if !strings.Contains(logText, token) { t.Fatalf("expected %q in log header", token) } } }