20260401 live recorder 扩展到1+N个delta,完成5个RIR录制,以及三方replay,结果三方均对齐vrps和vaps
This commit is contained in:
@@ -10,6 +10,7 @@ OUT_ROOT=""
|
||||
ROUTINATOR_ROOT="/home/yuyr/dev/rust_playground/routinator"
|
||||
RPKI_CLIENT_ROOT="/home/yuyr/dev/rpki-client-9.7"
|
||||
RPKI_CLIENT_BUILD_DIR="/home/yuyr/dev/rpki-client-9.7/build-m5"
|
||||
KEEP_DB=0
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
@@ -20,7 +21,8 @@ Usage:
|
||||
[--out-root <dir>] \
|
||||
[--routinator-root <dir>] \
|
||||
[--rpki-client-root <dir>] \
|
||||
[--rpki-client-build-dir <dir>]
|
||||
[--rpki-client-build-dir <dir>] \
|
||||
[--keep-db]
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -32,6 +34,7 @@ while [[ $# -gt 0 ]]; do
|
||||
--routinator-root) ROUTINATOR_ROOT="${2:?}"; shift 2 ;;
|
||||
--rpki-client-root) RPKI_CLIENT_ROOT="${2:?}"; shift 2 ;;
|
||||
--rpki-client-build-dir) RPKI_CLIENT_BUILD_DIR="${2:?}"; shift 2 ;;
|
||||
--keep-db) KEEP_DB=1; shift ;;
|
||||
--help|-h) usage; exit 0 ;;
|
||||
*) echo "unknown argument: $1" >&2; usage >&2; exit 2 ;;
|
||||
esac
|
||||
@@ -42,11 +45,24 @@ if [[ -z "$BUNDLE_ROOT" ]]; then
|
||||
exit 2
|
||||
fi
|
||||
|
||||
BUNDLE_ROOT="$(python3 - "$BUNDLE_ROOT" <<'PY'
|
||||
from pathlib import Path
|
||||
import sys
|
||||
print(Path(sys.argv[1]).resolve())
|
||||
PY
|
||||
)"
|
||||
|
||||
RUN_TAG="$(date -u +%Y%m%dT%H%M%SZ)"
|
||||
if [[ -z "$OUT_ROOT" ]]; then
|
||||
OUT_ROOT="target/replay/peer_bundle_matrix_${RUN_TAG}"
|
||||
fi
|
||||
mkdir -p "$OUT_ROOT"
|
||||
OUT_ROOT="$(python3 - "$OUT_ROOT" <<'PY'
|
||||
from pathlib import Path
|
||||
import sys
|
||||
print(Path(sys.argv[1]).resolve())
|
||||
PY
|
||||
)"
|
||||
|
||||
discover_rirs() {
|
||||
python3 - "$BUNDLE_ROOT" <<'PY'
|
||||
@@ -100,9 +116,13 @@ for raw_rir in "${RIR_LIST[@]}"; do
|
||||
source_bundle_dir="$match"
|
||||
fi
|
||||
ln -sfn "$source_bundle_dir" "$NORMALIZED_BUNDLE_ROOT/$rir"
|
||||
"$ROUTINATOR_ROOT/bench/multi_rir_demo_ours/run_single_rir_ours_bundle.sh" \
|
||||
"$source_bundle_dir" \
|
||||
ROUTI_CMD=(
|
||||
"$ROUTINATOR_ROOT/bench/multi_rir_demo_ours/run_single_rir_ours_bundle.sh"
|
||||
"$source_bundle_dir"
|
||||
"$ROUTI_OUT/$rir"
|
||||
)
|
||||
[[ "$KEEP_DB" -eq 1 ]] && ROUTI_CMD=( "$ROUTINATOR_ROOT/bench/multi_rir_demo_ours/run_single_rir_ours_bundle.sh" --keep-db "$source_bundle_dir" "$ROUTI_OUT/$rir" )
|
||||
"${ROUTI_CMD[@]}"
|
||||
done
|
||||
|
||||
CLIENT_ARGS=(
|
||||
@@ -111,6 +131,7 @@ CLIENT_ARGS=(
|
||||
--build-dir "$RPKI_CLIENT_BUILD_DIR"
|
||||
--work-dir "$CLIENT_OUT"
|
||||
)
|
||||
[[ "$KEEP_DB" -eq 1 ]] && CLIENT_ARGS+=(--keep-db)
|
||||
for raw_rir in "${RIR_LIST[@]}"; do
|
||||
rir="$(printf '%s' "$raw_rir" | tr '[:upper:]' '[:lower:]' | xargs)"
|
||||
[[ -n "$rir" ]] || continue
|
||||
@@ -147,27 +168,41 @@ lines = [
|
||||
"",
|
||||
"## Routinator",
|
||||
"",
|
||||
"| rir | base_vrp | delta_vrp | base_vap | delta_vap |",
|
||||
"| rir | base_vrp | base_vap | sequence_vrp | sequence_vap |",
|
||||
"|---|---|---|---|---|",
|
||||
]
|
||||
for rir, data in sorted(summary["routinator"].items()):
|
||||
lines.append(
|
||||
f"| {rir} | {str(data.get('baseMatch')).lower()} | {str(data.get('deltaMatch')).lower()} | "
|
||||
f"{str(data.get('baseVapsMatch')).lower()} | {str(data.get('deltaVapsMatch')).lower()} |"
|
||||
)
|
||||
if "steps" in data:
|
||||
lines.append(
|
||||
f"| {rir} | {str(data.get('baseMatch')).lower()} | {str(data.get('baseVapsMatch')).lower()} | "
|
||||
f"{str(data.get('summary', {}).get('allStepsMatch')).lower()} | "
|
||||
f"{str(data.get('summary', {}).get('allStepsVapsMatch')).lower()} |"
|
||||
)
|
||||
else:
|
||||
lines.append(
|
||||
f"| {rir} | {str(data.get('baseMatch')).lower()} | {str(data.get('baseVapsMatch')).lower()} | "
|
||||
f"{str(data.get('deltaMatch')).lower()} | {str(data.get('deltaVapsMatch')).lower()} |"
|
||||
)
|
||||
lines += [
|
||||
"",
|
||||
"## rpki-client",
|
||||
"",
|
||||
"| rir | base_vrp | delta_vrp | base_vap | delta_vap |",
|
||||
"| rir | base_vrp | base_vap | sequence_vrp | sequence_vap |",
|
||||
"|---|---|---|---|---|",
|
||||
]
|
||||
for rir, phases in sorted(summary["rpki_client"].items()):
|
||||
base = phases.get("base", {})
|
||||
delta = phases.get("delta", {})
|
||||
step_items = [
|
||||
value for key, value in phases.items()
|
||||
if key not in ("base", "delta") and isinstance(value, dict)
|
||||
]
|
||||
if "delta" in phases:
|
||||
step_items.append(phases["delta"])
|
||||
all_step_match = all(item.get("match") for item in step_items) if step_items else None
|
||||
all_step_vap_match = all(item.get("vaps_match") for item in step_items) if step_items else None
|
||||
lines.append(
|
||||
f"| {rir} | {str(base.get('match')).lower()} | {str(delta.get('match')).lower()} | "
|
||||
f"{str(base.get('vaps_match')).lower()} | {str(delta.get('vaps_match')).lower()} |"
|
||||
f"| {rir} | {str(base.get('match')).lower()} | {str(base.get('vaps_match')).lower()} | "
|
||||
f"{str(all_step_match).lower()} | {str(all_step_vap_match).lower()} |"
|
||||
)
|
||||
out.write_text("\n".join(lines) + "\n")
|
||||
PY
|
||||
|
||||
Reference in New Issue
Block a user