Skip to content

feat: add replay data loading, partitioning, and request building#233

Open
JasonXuDeveloper wants to merge 4 commits intoAzure:unstable-replayfrom
JasonXuDeveloper:replay/pr4
Open

feat: add replay data loading, partitioning, and request building#233
JasonXuDeveloper wants to merge 4 commits intoAzure:unstable-replayfrom
JasonXuDeveloper:replay/pr4

Conversation

@JasonXuDeveloper
Copy link
Contributor

Summary

  • Loader: YAML/gzip profile loading from file or URL with validation
  • Partition: Request distribution across runners using object-key consistent hashing to preserve per-object ordering (e.g., all operations on the same Pod go to the same runner)
  • Builder: HTTP request construction with URL building, verb mapping, and URL masking for metrics aggregation

Test plan

  • go build ./... passes
  • go vet ./... passes
  • go test ./replay/... passes (loader, partition, builder tests)

Part 4 of 6 in the replay feature PR stack. Depends on PR #232.

- Fix "traget" → "target" typo in LoadProfileSpec comment
- Fix "letencies" → "latencies" typo in runner CLI flag description
- Add empty specs validation in loadConfig to prevent index-out-of-range
  panic when config file has no specs
- Preserve nodeAffinity from runnergroup spec when CLI --affinity flag
  is not provided

Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
Add foundation types for the timeseries replay system:
- ReplayRequest, ReplayProfile, ReplayProfileSpec types with validation
- IsReplayMode() method on RunnerGroupSpec for detecting replay configs
- ReplayProfileSpec field in RunnerGroupSpec for distributed mode
- Sample replay profile and runner group config test data

Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
Extract shared report-building logic into metrics.BuildPercentileLatenciesReport()
to avoid duplication between runner and replay report builders. Refactor
buildRunnerMetricReport() to use the shared utility.

Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
Core replay data processing (no execution engine yet):
- Loader: YAML/gzip profile loading from file or URL
- Partition: request distribution across runners using object-key
  consistent hashing to preserve per-object ordering
- Builder: HTTP request construction with URL building, verb mapping,
  and URL masking for metrics aggregation

Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant