Skip to main content

panoramic

Run Saluki's Panoramic correctness and integration tests non-interactively and investigate their machine-readable results. Read this before running `panoramic`, `make test-integration`, or `make test-correctness`, or when diagnosing a test from its artifacts.

Zur Installation springen

Quellinformationen

Repository
DataDog/saluki
Letzte Quellaktivität
5. September 2026 um 12:29
Erkannte Sprache von SKILL.md
Englisch
Sterne
41
Forks
13

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
panoramic
description
Run Saluki's Panoramic correctness and integration tests non-interactively and investigate their machine-readable results. Read this before running `panoramic`, `make test-integration`, or `make test-correctness`, or when diagnosing a test from its artifacts.
disable-model-invocation
false
# /panoramic `panoramic` runs correctness cases from `test/correctness/cases` and integration cases from `test/integration/cases`. Get the user's approval before running these system-level suites. ## Discover the current interface Check the current `Makefile` recipes and `panoramic --help` before choosing a command. Use `panoramic run --help` for runner options and `panoramic list --help` to discover selection options. This keeps commands aligned with the working tree as the harness changes. These human-facing documents provide optional background: - `docs/development/testing.md`: test types and CI entry points - `docs/development/testing-patterns.md`: conventions for Rust tests - `bin/correctness/README.md`: Panoramic and its supporting tools ## Choose the suite and runtime Prefer the Make targets when test dependencies need rebuilding. Confirm their current recipes in the `Makefile`; the standard entry points are: ```bash make test-correctness make test-correctness-case CASE=<case> make test-integration ``` `make test-integration-quick` skips image builds. Use it only after verifying that the local images match the working tree. `--runtime` scopes integration discovery. On macOS, assume the `linux` runtime through the local Docker setup unless the user explicitly requests native macOS tests; pass `--runtime linux` because the CLI defaults to `mac` there. Follow the current Make recipe for native macOS provisioning. Correctness cases choose their runtime from their case configuration. Use `panoramic list` with the intended test directory and runtime to discover eligible case names before selecting them. ## Run non-interactively The Panoramic test targets write artifacts beneath `{{saluki}}/target/test-output/panoramic/` by default. This in-tree path is visible to Docker on macOS. Set `SALUKI_TEST_OUTPUT_DIR` to relocate the shared test-output root or `PANORAMIC_LOG_DIR` to override Panoramic only. Use the same base for direct runs. ```bash make build-panoramic target/release/panoramic run \ -d "$(pwd)/test/integration/cases" \ --runtime linux \ -t <case-name> \ --no-tui -o json -l "$(pwd)/target/test-output/panoramic" ``` Use comma-separated names with `-t` and `-p 1` when one case needs attributable output. Each run creates a timestamped `panoramic-*` directory beneath the base. `make clean-test-logs` deletes the Panoramic directory under the shared test-output root; `make clean` includes that target. Stdout and `run.json` identify the directory for a run. ## Interpret the result Exit codes distinguish the run-level result: | Code | Meaning | |------|---------| | 0 | Every test passed | | 1 | At least one assertion failed | | 2 | The harness could not reach a verdict for at least one test | | 3 | The selection matched no tests | Treat code 2 as an environment or harness problem before investigating assertion differences. A completed run writes `run.json`; each test directory contains `result.json`, `result.log`, and its captured artifacts. Start with the non-passing entries in `run.json`, follow each entry's `log_dir`, then use the paths in `result.json` rather than constructing artifact paths yourself. ```bash jq -r '.tests[] | select(.outcome != "passed") | "\(.name) \(.outcome) \(.log_dir)"' run.json jq -r '.assertions[] | select(.passed == false) | .kind + ": " + .message' <case-log-dir>/result.json jq -r '.diagnostic_lines[]? | "\(.source):\(.line_number) \(.text)"' <case-log-dir>/result.json ``` `outcome` is the verdict: `passed`, `failed`, `errored`, or `timed_out`. For a timeout, read the `timeout` object to identify the deadline, active phase, and configured duration. For other failures, read `error`, failed `assertions`, and `diagnostic_lines`, then open the referenced artifacts for context. Correctness assertion details may point to uncapped files under `details/`. `run.json` includes `build_revision`: the source revision used to build Panoramic, with `-dirty` for a modified checkout and `unknown` when it cannot be determined. ## Read the traffic artifacts A correctness test records what it sent and what each side decoded under `<log_dir>/traffic/`. Start with `traffic/manifest.json`: it names each capture, reports its compressed size, and says whether the file is still on disk (`file.present`). A passing test keeps only the manifest; every other outcome keeps the captures. When `input` is `null`, read `input_unavailable_reason` - the `kubernetes_in_docker` runtime never produces an input capture. The captures are zstd-compressed JSON Lines, one record per line, so decompress before reading: ```bash zstd -dc traffic/input.jsonl.zst | head -5 zstd -dc traffic/baseline-decoded.jsonl.zst | jq -c 'select(.kind == "metric") | .value.context' ``` Input records are in send order, which is not packet order. Decoded records are grouped by kind and indexed within each kind, so `index` is a position within a kind, not a global receive order.
Auf GitHub ansehen