This commit is contained in:
nnbcccscdscdsc
2026-03-23 20:18:53 +08:00
commit 4824675244
28 changed files with 5569 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
package main
import (
"flag"
"log"
"path/filepath"
"strings"
"omnisocketgo/cmd/internal/latencylog"
)
type stringListFlag []string
func (f *stringListFlag) String() string {
return ""
}
func (f *stringListFlag) Set(value string) error {
*f = append(*f, value)
return nil
}
func main() {
var inputPaths stringListFlag
outputPath := flag.String("output", "latency-summary.jsonl", "output JSONL file for summarized latency metrics")
flag.Var(&inputPaths, "input", "raw latency JSONL file path; can be provided multiple times")
flag.Parse()
if len(inputPaths) == 0 {
log.Fatal("at least one -input raw latency log file is required")
}
events, err := latencylog.LoadEventsFromFiles(inputPaths)
if err != nil {
log.Fatalf("load raw latency logs: %v", err)
}
summaries := latencylog.SummarizeEvents(events)
if err := latencylog.WriteSummariesJSONL(*outputPath, summaries); err != nil {
log.Fatalf("write latency summary: %v", err)
}
chartPath := replaceFileExt(*outputPath, ".html")
if err := latencylog.WriteSummariesHTMLChart(chartPath, summaries); err != nil {
log.Fatalf("write latency chart: %v", err)
}
log.Printf("wrote %d summarized message records to %s", len(summaries), *outputPath)
log.Printf("wrote simple latency chart to %s", chartPath)
}
func replaceFileExt(path, ext string) string {
currentExt := filepath.Ext(path)
if currentExt == "" {
return path + ext
}
return strings.TrimSuffix(path, currentExt) + ext
}