20260427 拆分独立repo-bytes.db数据库文件,cir materialize 移除旧兼容
This commit is contained in:
@@ -34,11 +34,7 @@ from pathlib import Path
|
||||
sequence_root = Path(sys.argv[1]).resolve()
|
||||
drop_bin = sys.argv[2]
|
||||
sequence = json.loads((sequence_root / "sequence.json").read_text(encoding="utf-8"))
|
||||
static_root = sequence_root / sequence["staticRoot"] if "staticRoot" in sequence else None
|
||||
raw_store_db = sequence_root / sequence["rawStoreDbPath"] if "rawStoreDbPath" in sequence else None
|
||||
backend_count = sum(x is not None for x in (static_root, raw_store_db))
|
||||
if backend_count != 1:
|
||||
raise SystemExit("sequence must set exactly one of staticRoot or rawStoreDbPath")
|
||||
repo_bytes_db = sequence_root / sequence["repoBytesDbPath"]
|
||||
|
||||
summaries = []
|
||||
for step in sequence["steps"]:
|
||||
@@ -58,10 +54,7 @@ for step in sequence["steps"]:
|
||||
"--md-out",
|
||||
str(out_dir / "drop.md"),
|
||||
]
|
||||
if static_root is not None:
|
||||
cmd.extend(["--static-root", str(static_root)])
|
||||
else:
|
||||
cmd.extend(["--raw-store-db", str(raw_store_db)])
|
||||
cmd.extend(["--repo-bytes-db", str(repo_bytes_db)])
|
||||
proc = subprocess.run(cmd, capture_output=True, text=True)
|
||||
if proc.returncode != 0:
|
||||
raise SystemExit(
|
||||
|
||||
@@ -92,7 +92,8 @@ if [[ -z "$DELTA_VALIDATION_TIME" ]]; then
|
||||
fi
|
||||
|
||||
rm -rf "$OUT_DIR"
|
||||
mkdir -p "$OUT_DIR/full" "$OUT_DIR/delta-001" "$OUT_DIR/static"
|
||||
mkdir -p "$OUT_DIR/full" "$OUT_DIR/delta-001"
|
||||
REPO_BYTES_DB="$OUT_DIR/repo-bytes.db"
|
||||
|
||||
FULL_DB="$OUT_DIR/full/db"
|
||||
DELTA_DB="$OUT_DIR/delta-001/db"
|
||||
@@ -110,7 +111,7 @@ DELTA_DB="$OUT_DIR/delta-001/db"
|
||||
--report-json "$OUT_DIR/full/report.json" \
|
||||
--cir-enable \
|
||||
--cir-out "$OUT_DIR/full/input.cir" \
|
||||
--cir-static-root "$OUT_DIR/static" \
|
||||
--repo-bytes-db "$REPO_BYTES_DB" \
|
||||
--cir-tal-uri "$CIR_TAL_URI" \
|
||||
>"$OUT_DIR/full/run.stdout.log" 2>"$OUT_DIR/full/run.stderr.log"
|
||||
|
||||
@@ -130,7 +131,7 @@ DELTA_DB="$OUT_DIR/delta-001/db"
|
||||
--report-json "$OUT_DIR/delta-001/report.json" \
|
||||
--cir-enable \
|
||||
--cir-out "$OUT_DIR/delta-001/input.cir" \
|
||||
--cir-static-root "$OUT_DIR/static" \
|
||||
--repo-bytes-db "$REPO_BYTES_DB" \
|
||||
--cir-tal-uri "$CIR_TAL_URI" \
|
||||
>"$OUT_DIR/delta-001/run.stdout.log" 2>"$OUT_DIR/delta-001/run.stderr.log"
|
||||
|
||||
@@ -143,13 +144,12 @@ from pathlib import Path
|
||||
out = Path(sys.argv[1])
|
||||
base_validation_time = sys.argv[2]
|
||||
delta_validation_time = sys.argv[3]
|
||||
static_files = sum(1 for _ in (out / "static").rglob("*") if _.is_file())
|
||||
summary = {
|
||||
"version": 1,
|
||||
"kind": "cir_pair",
|
||||
"baseValidationTime": base_validation_time,
|
||||
"deltaValidationTime": delta_validation_time,
|
||||
"staticRoot": "static",
|
||||
"repoBytesDbPath": "repo-bytes.db",
|
||||
"steps": [
|
||||
{
|
||||
"kind": "full",
|
||||
@@ -165,7 +165,7 @@ summary = {
|
||||
"previous": "full",
|
||||
},
|
||||
],
|
||||
"staticFileCount": static_files,
|
||||
"repoBytesDbExists": (out / "repo-bytes.db").exists(),
|
||||
}
|
||||
(out / "summary.json").write_text(json.dumps(summary, indent=2), encoding="utf-8")
|
||||
PY
|
||||
|
||||
@@ -116,13 +116,13 @@ for rir in rirs:
|
||||
"rir": rir,
|
||||
"root": str(root),
|
||||
"stepCount": len(seq["steps"]),
|
||||
"staticFileCount": summ["staticFileCount"],
|
||||
"repoBytesDbExists": summ.get("repoBytesDbExists", False),
|
||||
})
|
||||
summary = {"version": 1, "rirs": items}
|
||||
summary_json.write_text(json.dumps(summary, indent=2), encoding="utf-8")
|
||||
lines = ["# Multi-RIR Offline CIR Sequence Summary", ""]
|
||||
for item in items:
|
||||
lines.append(f"- `{item['rir']}`: `stepCount={item['stepCount']}` `staticFileCount={item['staticFileCount']}` `root={item['root']}`")
|
||||
lines.append(f"- `{item['rir']}`: `stepCount={item['stepCount']}` `repoBytesDbExists={item['repoBytesDbExists']}` `root={item['root']}`")
|
||||
summary_md.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||
PY
|
||||
|
||||
|
||||
@@ -97,7 +97,8 @@ if [[ -z "$DELTA_VALIDATION_TIME" ]]; then
|
||||
fi
|
||||
|
||||
rm -rf "$OUT_DIR"
|
||||
mkdir -p "$OUT_DIR/static" "$OUT_DIR/full"
|
||||
mkdir -p "$OUT_DIR/full"
|
||||
REPO_BYTES_DB="$OUT_DIR/repo-bytes.db"
|
||||
|
||||
run_step() {
|
||||
local kind="$1"
|
||||
@@ -114,7 +115,7 @@ run_step() {
|
||||
--report-json "$step_dir/report.json" \
|
||||
--cir-enable \
|
||||
--cir-out "$step_dir/input.cir" \
|
||||
--cir-static-root "$OUT_DIR/static" \
|
||||
--repo-bytes-db "$REPO_BYTES_DB" \
|
||||
--cir-tal-uri "$CIR_TAL_URI"
|
||||
)
|
||||
if [[ "$FULL_REPO" -ne 1 ]]; then
|
||||
@@ -186,7 +187,7 @@ for idx in range(1, delta_count + 1):
|
||||
summary = {
|
||||
"version": 1,
|
||||
"kind": "cir_sequence_offline",
|
||||
"staticRoot": "static",
|
||||
"repoBytesDbPath": "repo-bytes.db",
|
||||
"steps": steps,
|
||||
}
|
||||
(out / "sequence.json").write_text(json.dumps(summary, indent=2), encoding="utf-8")
|
||||
@@ -195,7 +196,8 @@ summary = {
|
||||
{
|
||||
"version": 1,
|
||||
"stepCount": len(steps),
|
||||
"staticFileCount": sum(1 for p in (out / "static").rglob("*") if p.is_file()),
|
||||
"repoBytesDbPath": "repo-bytes.db",
|
||||
"repoBytesDbExists": (out / "repo-bytes.db").exists(),
|
||||
},
|
||||
indent=2,
|
||||
),
|
||||
|
||||
@@ -87,6 +87,7 @@ fi
|
||||
mkdir -p "$OUT"
|
||||
DB="$OUT/work-db"
|
||||
RAW_STORE_DB="$OUT/raw-store.db"
|
||||
REPO_BYTES_DB="$OUT/repo-bytes.db"
|
||||
ROWS="$OUT/.sequence_rows.tsv"
|
||||
: > "$ROWS"
|
||||
|
||||
@@ -140,6 +141,7 @@ PY
|
||||
target/release/rpki
|
||||
--db "$DB"
|
||||
--raw-store-db "$RAW_STORE_DB"
|
||||
--repo-bytes-db "$REPO_BYTES_DB"
|
||||
--tal-path "$TAL_REL"
|
||||
--ta-path "$TA_REL"
|
||||
--ccr-out "$ccr_out"
|
||||
@@ -216,7 +218,7 @@ for idx, row in enumerate(rows):
|
||||
})
|
||||
|
||||
(out / "sequence.json").write_text(
|
||||
json.dumps({"version": 1, "rawStoreDbPath": "raw-store.db", "steps": steps}, indent=2),
|
||||
json.dumps({"version": 1, "repoBytesDbPath": "repo-bytes.db", "steps": steps}, indent=2),
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
|
||||
@@ -56,16 +56,17 @@ IFS=',' read -r -a ITEMS <<< "$RIRS"
|
||||
for rir in "${ITEMS[@]}"; do
|
||||
read -r tal_rel ta_rel < <(case_paths "$rir")
|
||||
rir_root="$OUT_ROOT/$rir"
|
||||
mkdir -p "$rir_root/full" "$rir_root/static"
|
||||
mkdir -p "$rir_root/full"
|
||||
repo_bytes_db="$rir_root/repo-bytes.db"
|
||||
"$HELPER_BIN" \
|
||||
--tal-path "$ROOT_DIR/$tal_rel" \
|
||||
--ta-path "$ROOT_DIR/$ta_rel" \
|
||||
--tal-uri "https://example.test/$rir.tal" \
|
||||
--validation-time "2026-04-09T00:00:00Z" \
|
||||
--cir-out "$rir_root/full/input.cir" \
|
||||
--static-root "$rir_root/static"
|
||||
--repo-bytes-db "$repo_bytes_db"
|
||||
"$EXTRACT_BIN" --cir "$rir_root/full/input.cir" --tals-dir "$rir_root/.tmp/tals" --meta-json "$rir_root/.tmp/meta.json"
|
||||
"$MATERIALIZE_BIN" --cir "$rir_root/full/input.cir" --static-root "$rir_root/static" --mirror-root "$rir_root/.tmp/mirror"
|
||||
"$MATERIALIZE_BIN" --cir "$rir_root/full/input.cir" --repo-bytes-db "$repo_bytes_db" --mirror-root "$rir_root/.tmp/mirror"
|
||||
FIRST_TAL="$(python3 - <<'PY' "$rir_root/.tmp/meta.json"
|
||||
import json,sys
|
||||
print(json.load(open(sys.argv[1]))["talFiles"][0]["path"])
|
||||
@@ -99,7 +100,7 @@ for i in range(1, delta_count + 1):
|
||||
step = f"delta-{i:03d}"
|
||||
steps.append({"stepId":step,"kind":"delta","validationTime":"2026-04-09T00:00:00Z","cirPath":f"{step}/input.cir","ccrPath":f"{step}/result.ccr","reportPath":f"{step}/report.json","previousStepId":prev})
|
||||
prev = step
|
||||
(root/"sequence.json").write_text(json.dumps({"version":1,"staticRoot":"static","steps":steps}, indent=2), encoding="utf-8")
|
||||
(root/"sequence.json").write_text(json.dumps({"version":1,"repoBytesDbPath":"repo-bytes.db","steps":steps}, indent=2), encoding="utf-8")
|
||||
(root/"summary.json").write_text(json.dumps({"version":1,"stepCount":len(steps)}, indent=2), encoding="utf-8")
|
||||
PY
|
||||
done
|
||||
|
||||
@@ -6,7 +6,7 @@ usage() {
|
||||
Usage:
|
||||
./scripts/cir/run_cir_replay_matrix.sh \
|
||||
--cir <path> \
|
||||
--static-root <path> \
|
||||
--repo-bytes-db <path> \
|
||||
--out-dir <path> \
|
||||
--reference-ccr <path> \
|
||||
--rpki-client-build-dir <path> \
|
||||
@@ -21,7 +21,7 @@ EOF
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
|
||||
CIR=""
|
||||
STATIC_ROOT=""
|
||||
REPO_BYTES_DB=""
|
||||
OUT_DIR=""
|
||||
REFERENCE_CCR=""
|
||||
RPKI_CLIENT_BUILD_DIR=""
|
||||
@@ -37,7 +37,7 @@ RPKI_CLIENT_SCRIPT="$ROOT_DIR/scripts/cir/run_cir_replay_rpki_client.sh"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--cir) CIR="$2"; shift 2 ;;
|
||||
--static-root) STATIC_ROOT="$2"; shift 2 ;;
|
||||
--repo-bytes-db) REPO_BYTES_DB="$2"; shift 2 ;;
|
||||
--out-dir) OUT_DIR="$2"; shift 2 ;;
|
||||
--reference-ccr) REFERENCE_CCR="$2"; shift 2 ;;
|
||||
--rpki-client-build-dir) RPKI_CLIENT_BUILD_DIR="$2"; shift 2 ;;
|
||||
@@ -51,7 +51,7 @@ while [[ $# -gt 0 ]]; do
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -n "$CIR" && -n "$STATIC_ROOT" && -n "$OUT_DIR" && -n "$REFERENCE_CCR" && -n "$RPKI_CLIENT_BUILD_DIR" ]] || {
|
||||
[[ -n "$CIR" && -n "$REPO_BYTES_DB" && -n "$OUT_DIR" && -n "$REFERENCE_CCR" && -n "$RPKI_CLIENT_BUILD_DIR" ]] || {
|
||||
usage >&2
|
||||
exit 2
|
||||
}
|
||||
@@ -102,7 +102,7 @@ mkdir -p "$OURS_OUT" "$ROUTINATOR_OUT" "$RPKI_CLIENT_OUT"
|
||||
ours_cmd=(
|
||||
"$OURS_SCRIPT"
|
||||
--cir "$CIR"
|
||||
--static-root "$STATIC_ROOT"
|
||||
--repo-bytes-db "$REPO_BYTES_DB"
|
||||
--out-dir "$OURS_OUT"
|
||||
--reference-ccr "$REFERENCE_CCR"
|
||||
--rpki-bin "$RPKI_BIN"
|
||||
@@ -111,7 +111,7 @@ ours_cmd=(
|
||||
routinator_cmd=(
|
||||
"$ROUTINATOR_SCRIPT"
|
||||
--cir "$CIR"
|
||||
--static-root "$STATIC_ROOT"
|
||||
--repo-bytes-db "$REPO_BYTES_DB"
|
||||
--out-dir "$ROUTINATOR_OUT"
|
||||
--reference-ccr "$REFERENCE_CCR"
|
||||
--routinator-root "$ROUTINATOR_ROOT"
|
||||
@@ -121,7 +121,7 @@ routinator_cmd=(
|
||||
rpki_client_cmd=(
|
||||
"$RPKI_CLIENT_SCRIPT"
|
||||
--cir "$CIR"
|
||||
--static-root "$STATIC_ROOT"
|
||||
--repo-bytes-db "$REPO_BYTES_DB"
|
||||
--out-dir "$RPKI_CLIENT_OUT"
|
||||
--reference-ccr "$REFERENCE_CCR"
|
||||
--build-dir "$RPKI_CLIENT_BUILD_DIR"
|
||||
@@ -159,7 +159,7 @@ DETAIL_MD="$OUT_DIR/detail.md"
|
||||
|
||||
python3 - <<'PY' \
|
||||
"$CIR" \
|
||||
"$STATIC_ROOT" \
|
||||
"$REPO_BYTES_DB" \
|
||||
"$REFERENCE_CCR" \
|
||||
"$OURS_OUT" \
|
||||
"$ROUTINATOR_OUT" \
|
||||
@@ -171,7 +171,7 @@ import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
cir_path, static_root, reference_ccr, ours_out, routinator_out, rpki_client_out, summary_json, summary_md, detail_md = sys.argv[1:]
|
||||
cir_path, repo_bytes_db, reference_ccr, ours_out, routinator_out, rpki_client_out, summary_json, summary_md, detail_md = sys.argv[1:]
|
||||
|
||||
participants = []
|
||||
all_match = True
|
||||
@@ -204,7 +204,7 @@ for name, out_dir in [
|
||||
|
||||
summary = {
|
||||
"cirPath": cir_path,
|
||||
"staticRoot": static_root,
|
||||
"repoBytesDb": repo_bytes_db,
|
||||
"referenceCcr": reference_ccr,
|
||||
"participants": participants,
|
||||
"allMatch": all_match,
|
||||
@@ -215,7 +215,7 @@ lines = [
|
||||
"# CIR Replay Matrix Summary",
|
||||
"",
|
||||
f"- `cir`: `{cir_path}`",
|
||||
f"- `static_root`: `{static_root}`",
|
||||
f"- `repo_bytes_db`: `{repo_bytes_db}`",
|
||||
f"- `reference_ccr`: `{reference_ccr}`",
|
||||
f"- `all_match`: `{all_match}`",
|
||||
"",
|
||||
|
||||
@@ -6,7 +6,7 @@ usage() {
|
||||
Usage:
|
||||
./scripts/cir/run_cir_replay_ours.sh \
|
||||
--cir <path> \
|
||||
[--static-root <path> | --raw-store-db <path>] \
|
||||
--repo-bytes-db <path> \
|
||||
--out-dir <path> \
|
||||
--reference-ccr <path> \
|
||||
[--keep-db] \
|
||||
@@ -18,9 +18,7 @@ EOF
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
|
||||
CIR=""
|
||||
STATIC_ROOT=""
|
||||
POOL_DB=""
|
||||
RAW_STORE_DB=""
|
||||
REPO_BYTES_DB=""
|
||||
OUT_DIR=""
|
||||
REFERENCE_CCR=""
|
||||
KEEP_DB=0
|
||||
@@ -34,8 +32,7 @@ WRAPPER="$ROOT_DIR/scripts/cir/cir-rsync-wrapper"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--cir) CIR="$2"; shift 2 ;;
|
||||
--static-root) STATIC_ROOT="$2"; shift 2 ;;
|
||||
--raw-store-db) RAW_STORE_DB="$2"; shift 2 ;;
|
||||
--repo-bytes-db) REPO_BYTES_DB="$2"; shift 2 ;;
|
||||
--out-dir) OUT_DIR="$2"; shift 2 ;;
|
||||
--reference-ccr) REFERENCE_CCR="$2"; shift 2 ;;
|
||||
--keep-db) KEEP_DB=1; shift ;;
|
||||
@@ -46,14 +43,10 @@ while [[ $# -gt 0 ]]; do
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -n "$CIR" && -n "$OUT_DIR" && -n "$REFERENCE_CCR" ]] || {
|
||||
[[ -n "$CIR" && -n "$REPO_BYTES_DB" && -n "$OUT_DIR" && -n "$REFERENCE_CCR" ]] || {
|
||||
usage >&2
|
||||
exit 2
|
||||
}
|
||||
backend_count=0
|
||||
[[ -n "$STATIC_ROOT" ]] && backend_count=$((backend_count+1))
|
||||
[[ -n "$RAW_STORE_DB" ]] && backend_count=$((backend_count+1))
|
||||
[[ "$backend_count" -eq 1 ]] || { usage >&2; exit 2; }
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
|
||||
@@ -82,12 +75,7 @@ rm -rf "$TMP_ROOT"
|
||||
mkdir -p "$TMP_ROOT"
|
||||
|
||||
"$CIR_EXTRACT_INPUTS_BIN" --cir "$CIR" --tals-dir "$TALS_DIR" --meta-json "$META_JSON"
|
||||
materialize_cmd=("$CIR_MATERIALIZE_BIN" --cir "$CIR" --mirror-root "$MIRROR_ROOT")
|
||||
if [[ -n "$STATIC_ROOT" ]]; then
|
||||
materialize_cmd+=(--static-root "$STATIC_ROOT")
|
||||
else
|
||||
materialize_cmd+=(--raw-store-db "$RAW_STORE_DB")
|
||||
fi
|
||||
materialize_cmd=("$CIR_MATERIALIZE_BIN" --cir "$CIR" --repo-bytes-db "$REPO_BYTES_DB" --mirror-root "$MIRROR_ROOT")
|
||||
if [[ "$KEEP_DB" -eq 1 ]]; then
|
||||
materialize_cmd+=(--keep-db)
|
||||
fi
|
||||
|
||||
@@ -6,7 +6,7 @@ usage() {
|
||||
Usage:
|
||||
./scripts/cir/run_cir_replay_routinator.sh \
|
||||
--cir <path> \
|
||||
[--static-root <path> | --raw-store-db <path>] \
|
||||
--repo-bytes-db <path> \
|
||||
--out-dir <path> \
|
||||
--reference-ccr <path> \
|
||||
[--keep-db] \
|
||||
@@ -20,9 +20,7 @@ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
RPKI_DEV_ROOT="${RPKI_DEV_ROOT:-$ROOT_DIR}"
|
||||
|
||||
CIR=""
|
||||
STATIC_ROOT=""
|
||||
POOL_DB=""
|
||||
RAW_STORE_DB=""
|
||||
REPO_BYTES_DB=""
|
||||
OUT_DIR=""
|
||||
REFERENCE_CCR=""
|
||||
KEEP_DB=0
|
||||
@@ -39,8 +37,7 @@ FAKETIME_LIB="${FAKETIME_LIB:-$ROOT_DIR/target/tools/faketime_pkg/extracted/libf
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--cir) CIR="$2"; shift 2 ;;
|
||||
--static-root) STATIC_ROOT="$2"; shift 2 ;;
|
||||
--raw-store-db) RAW_STORE_DB="$2"; shift 2 ;;
|
||||
--repo-bytes-db) REPO_BYTES_DB="$2"; shift 2 ;;
|
||||
--out-dir) OUT_DIR="$2"; shift 2 ;;
|
||||
--reference-ccr) REFERENCE_CCR="$2"; shift 2 ;;
|
||||
--keep-db) KEEP_DB=1; shift ;;
|
||||
@@ -52,14 +49,10 @@ while [[ $# -gt 0 ]]; do
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -n "$CIR" && -n "$OUT_DIR" && -n "$REFERENCE_CCR" ]] || {
|
||||
[[ -n "$CIR" && -n "$REPO_BYTES_DB" && -n "$OUT_DIR" && -n "$REFERENCE_CCR" ]] || {
|
||||
usage >&2
|
||||
exit 2
|
||||
}
|
||||
backend_count=0
|
||||
[[ -n "$STATIC_ROOT" ]] && backend_count=$((backend_count+1))
|
||||
[[ -n "$RAW_STORE_DB" ]] && backend_count=$((backend_count+1))
|
||||
[[ "$backend_count" -eq 1 ]] || { usage >&2; exit 2; }
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
if [[ ! -x "$CIR_MATERIALIZE_BIN" || ! -x "$CIR_EXTRACT_INPUTS_BIN" || ! -x "$CCR_TO_COMPARE_VIEWS_BIN" ]]; then
|
||||
@@ -102,12 +95,7 @@ for tal in Path(sys.argv[1]).glob("*.tal"):
|
||||
seen_sep = True
|
||||
tal.write_text("\n".join(rsync_uris) + "\n\n" + "\n".join(base64_lines) + "\n", encoding="utf-8")
|
||||
PY
|
||||
materialize_cmd=("$CIR_MATERIALIZE_BIN" --cir "$CIR" --mirror-root "$MIRROR_ROOT")
|
||||
if [[ -n "$STATIC_ROOT" ]]; then
|
||||
materialize_cmd+=(--static-root "$STATIC_ROOT")
|
||||
else
|
||||
materialize_cmd+=(--raw-store-db "$RAW_STORE_DB")
|
||||
fi
|
||||
materialize_cmd=("$CIR_MATERIALIZE_BIN" --cir "$CIR" --repo-bytes-db "$REPO_BYTES_DB" --mirror-root "$MIRROR_ROOT")
|
||||
if [[ "$KEEP_DB" -eq 1 ]]; then
|
||||
materialize_cmd+=(--keep-db)
|
||||
fi
|
||||
|
||||
@@ -6,10 +6,10 @@ usage() {
|
||||
Usage:
|
||||
./scripts/cir/run_cir_replay_rpki_client.sh \
|
||||
--cir <path> \
|
||||
[--static-root <path> | --raw-store-db <path>] \
|
||||
--repo-bytes-db <path> \
|
||||
--out-dir <path> \
|
||||
--reference-ccr <path> \
|
||||
--build-dir <path> \
|
||||
[--build-dir <path> | --rpki-client-bin <path>] \
|
||||
[--keep-db] \
|
||||
[--real-rsync-bin <path>]
|
||||
EOF
|
||||
@@ -17,12 +17,11 @@ EOF
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
CIR=""
|
||||
STATIC_ROOT=""
|
||||
POOL_DB=""
|
||||
RAW_STORE_DB=""
|
||||
REPO_BYTES_DB=""
|
||||
OUT_DIR=""
|
||||
REFERENCE_CCR=""
|
||||
BUILD_DIR=""
|
||||
RPKI_CLIENT_BIN=""
|
||||
KEEP_DB=0
|
||||
REAL_RSYNC_BIN="${REAL_RSYNC_BIN:-/usr/bin/rsync}"
|
||||
CIR_MATERIALIZE_BIN="${CIR_MATERIALIZE_BIN:-$ROOT_DIR/target/release/cir_materialize}"
|
||||
@@ -33,11 +32,11 @@ WRAPPER="$ROOT_DIR/scripts/cir/cir-rsync-wrapper"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--cir) CIR="$2"; shift 2 ;;
|
||||
--static-root) STATIC_ROOT="$2"; shift 2 ;;
|
||||
--raw-store-db) RAW_STORE_DB="$2"; shift 2 ;;
|
||||
--repo-bytes-db) REPO_BYTES_DB="$2"; shift 2 ;;
|
||||
--out-dir) OUT_DIR="$2"; shift 2 ;;
|
||||
--reference-ccr) REFERENCE_CCR="$2"; shift 2 ;;
|
||||
--build-dir) BUILD_DIR="$2"; shift 2 ;;
|
||||
--rpki-client-bin) RPKI_CLIENT_BIN="$2"; shift 2 ;;
|
||||
--keep-db) KEEP_DB=1; shift ;;
|
||||
--real-rsync-bin) REAL_RSYNC_BIN="$2"; shift 2 ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
@@ -45,14 +44,17 @@ while [[ $# -gt 0 ]]; do
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -n "$CIR" && -n "$OUT_DIR" && -n "$REFERENCE_CCR" && -n "$BUILD_DIR" ]] || {
|
||||
[[ -n "$CIR" && -n "$REPO_BYTES_DB" && -n "$OUT_DIR" && -n "$REFERENCE_CCR" ]] || {
|
||||
usage >&2
|
||||
exit 2
|
||||
}
|
||||
backend_count=0
|
||||
[[ -n "$STATIC_ROOT" ]] && backend_count=$((backend_count+1))
|
||||
[[ -n "$RAW_STORE_DB" ]] && backend_count=$((backend_count+1))
|
||||
[[ "$backend_count" -eq 1 ]] || { usage >&2; exit 2; }
|
||||
if [[ -z "$BUILD_DIR" && -z "$RPKI_CLIENT_BIN" ]]; then
|
||||
usage >&2
|
||||
exit 2
|
||||
fi
|
||||
if [[ -z "$RPKI_CLIENT_BIN" ]]; then
|
||||
RPKI_CLIENT_BIN="$BUILD_DIR/src/rpki-client"
|
||||
fi
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
if [[ ! -x "$CIR_MATERIALIZE_BIN" || ! -x "$CIR_EXTRACT_INPUTS_BIN" || ! -x "$CCR_TO_COMPARE_VIEWS_BIN" ]]; then
|
||||
@@ -97,12 +99,7 @@ for tal in Path(sys.argv[1]).glob("*.tal"):
|
||||
seen_sep = True
|
||||
tal.write_text("\n".join(rsync_uris) + "\n\n" + "\n".join(base64_lines) + "\n", encoding="utf-8")
|
||||
PY
|
||||
materialize_cmd=("$CIR_MATERIALIZE_BIN" --cir "$CIR" --mirror-root "$MIRROR_ROOT")
|
||||
if [[ -n "$STATIC_ROOT" ]]; then
|
||||
materialize_cmd+=(--static-root "$STATIC_ROOT")
|
||||
else
|
||||
materialize_cmd+=(--raw-store-db "$RAW_STORE_DB")
|
||||
fi
|
||||
materialize_cmd=("$CIR_MATERIALIZE_BIN" --cir "$CIR" --repo-bytes-db "$REPO_BYTES_DB" --mirror-root "$MIRROR_ROOT")
|
||||
if [[ "$KEEP_DB" -eq 1 ]]; then
|
||||
materialize_cmd+=(--keep-db)
|
||||
fi
|
||||
@@ -133,7 +130,8 @@ export REAL_RSYNC_BIN="$REAL_RSYNC_BIN"
|
||||
export CIR_LOCAL_LINK_MODE=1
|
||||
|
||||
mkdir -p "$CACHE_DIR" "$OUT_CCR_DIR"
|
||||
"$BUILD_DIR/src/rpki-client" \
|
||||
chmod -R 0777 "$TMP_ROOT"
|
||||
"$RPKI_CLIENT_BIN" \
|
||||
-R \
|
||||
-e "$WRAPPER" \
|
||||
-P "$VALIDATION_EPOCH" \
|
||||
@@ -141,11 +139,53 @@ mkdir -p "$CACHE_DIR" "$OUT_CCR_DIR"
|
||||
-d "$CACHE_DIR" \
|
||||
"$OUT_CCR_DIR" >"$RUN_LOG" 2>&1
|
||||
|
||||
"$CCR_TO_COMPARE_VIEWS_BIN" \
|
||||
--ccr "$OUT_CCR_DIR/rpki.ccr" \
|
||||
--vrps-out "$ACTUAL_VRPS" \
|
||||
--vaps-out "$ACTUAL_VAPS" \
|
||||
--trust-anchor "$TA_NAME"
|
||||
if [[ -f "$OUT_CCR_DIR/rpki.ccr" ]]; then
|
||||
"$CCR_TO_COMPARE_VIEWS_BIN" \
|
||||
--ccr "$OUT_CCR_DIR/rpki.ccr" \
|
||||
--vrps-out "$ACTUAL_VRPS" \
|
||||
--vaps-out "$ACTUAL_VAPS" \
|
||||
--trust-anchor "$TA_NAME"
|
||||
else
|
||||
python3 - <<'PY' "$OUT_CCR_DIR/json" "$ACTUAL_VRPS" "$ACTUAL_VAPS" "$TA_NAME"
|
||||
import csv
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
json_path = Path(sys.argv[1])
|
||||
vrps_out = Path(sys.argv[2])
|
||||
vaps_out = Path(sys.argv[3])
|
||||
default_ta = sys.argv[4]
|
||||
|
||||
if not json_path.is_file():
|
||||
raise SystemExit(f"rpki-client output has neither rpki.ccr nor json: {json_path}")
|
||||
|
||||
data = json.loads(json_path.read_text(encoding="utf-8"))
|
||||
|
||||
vrps_out.parent.mkdir(parents=True, exist_ok=True)
|
||||
with vrps_out.open("w", newline="", encoding="utf-8") as fh:
|
||||
writer = csv.writer(fh)
|
||||
writer.writerow(["ASN", "IP Prefix", "Max Length", "Trust Anchor"])
|
||||
for roa in data.get("roas", []):
|
||||
writer.writerow([
|
||||
f"AS{roa['asn']}",
|
||||
roa["prefix"],
|
||||
str(roa["maxLength"]),
|
||||
roa.get("ta") or default_ta,
|
||||
])
|
||||
|
||||
with vaps_out.open("w", newline="", encoding="utf-8") as fh:
|
||||
writer = csv.writer(fh)
|
||||
writer.writerow(["Customer ASN", "Providers", "Trust Anchor"])
|
||||
for aspa in data.get("aspas", []):
|
||||
providers = ";".join(f"AS{item}" for item in sorted(aspa.get("providers", [])))
|
||||
writer.writerow([
|
||||
f"AS{aspa['customer_asid']}",
|
||||
providers,
|
||||
aspa.get("ta") or default_ta,
|
||||
])
|
||||
PY
|
||||
fi
|
||||
|
||||
python3 - <<'PY' "$ACTUAL_VRPS" "$ACTUAL_VAPS" "$ACTUAL_VRPS_META" "$ACTUAL_VAPS_META"
|
||||
import csv, json, sys
|
||||
|
||||
@@ -55,11 +55,7 @@ rpki_bin = sys.argv[6]
|
||||
real_rsync_bin = sys.argv[7]
|
||||
|
||||
sequence = json.loads((sequence_root / "sequence.json").read_text(encoding="utf-8"))
|
||||
static_root = sequence_root / sequence["staticRoot"] if "staticRoot" in sequence else None
|
||||
raw_store_db = sequence_root / sequence["rawStoreDbPath"] if "rawStoreDbPath" in sequence else None
|
||||
backend_count = sum(x is not None for x in (static_root, raw_store_db))
|
||||
if backend_count != 1:
|
||||
raise SystemExit("sequence must set exactly one of staticRoot or rawStoreDbPath")
|
||||
repo_bytes_db = sequence_root / sequence["repoBytesDbPath"]
|
||||
steps = sequence["steps"]
|
||||
|
||||
results = []
|
||||
@@ -81,10 +77,7 @@ for step in steps:
|
||||
"--real-rsync-bin",
|
||||
real_rsync_bin,
|
||||
]
|
||||
if static_root is not None:
|
||||
cmd.extend(["--static-root", str(static_root)])
|
||||
else:
|
||||
cmd.extend(["--raw-store-db", str(raw_store_db)])
|
||||
cmd.extend(["--repo-bytes-db", str(repo_bytes_db)])
|
||||
proc = subprocess.run(cmd, capture_output=True, text=True)
|
||||
if proc.returncode != 0:
|
||||
raise SystemExit(
|
||||
|
||||
@@ -57,11 +57,7 @@ routinator_bin = sys.argv[6]
|
||||
real_rsync_bin = sys.argv[7]
|
||||
|
||||
sequence = json.loads((sequence_root / "sequence.json").read_text(encoding="utf-8"))
|
||||
static_root = sequence_root / sequence["staticRoot"] if "staticRoot" in sequence else None
|
||||
raw_store_db = sequence_root / sequence["rawStoreDbPath"] if "rawStoreDbPath" in sequence else None
|
||||
backend_count = sum(x is not None for x in (static_root, raw_store_db))
|
||||
if backend_count != 1:
|
||||
raise SystemExit("sequence must set exactly one of staticRoot or rawStoreDbPath")
|
||||
repo_bytes_db = sequence_root / sequence["repoBytesDbPath"]
|
||||
steps = sequence["steps"]
|
||||
results = []
|
||||
all_match = True
|
||||
@@ -85,10 +81,7 @@ for step in steps:
|
||||
"--real-rsync-bin",
|
||||
real_rsync_bin,
|
||||
]
|
||||
if static_root is not None:
|
||||
cmd.extend(["--static-root", str(static_root)])
|
||||
else:
|
||||
cmd.extend(["--raw-store-db", str(raw_store_db)])
|
||||
cmd.extend(["--repo-bytes-db", str(repo_bytes_db)])
|
||||
proc = subprocess.run(cmd, capture_output=True, text=True)
|
||||
if proc.returncode != 0:
|
||||
raise SystemExit(
|
||||
|
||||
@@ -6,7 +6,7 @@ usage() {
|
||||
Usage:
|
||||
./scripts/cir/run_cir_replay_sequence_rpki_client.sh \
|
||||
--sequence-root <path> \
|
||||
--build-dir <path> \
|
||||
[--build-dir <path> | --rpki-client-bin <path>] \
|
||||
[--real-rsync-bin <path>]
|
||||
EOF
|
||||
}
|
||||
@@ -14,6 +14,7 @@ EOF
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
SEQUENCE_ROOT=""
|
||||
BUILD_DIR=""
|
||||
RPKI_CLIENT_BIN=""
|
||||
REAL_RSYNC_BIN="${REAL_RSYNC_BIN:-/usr/bin/rsync}"
|
||||
STEP_SCRIPT="$ROOT_DIR/scripts/cir/run_cir_replay_rpki_client.sh"
|
||||
|
||||
@@ -21,13 +22,14 @@ while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--sequence-root) SEQUENCE_ROOT="$2"; shift 2 ;;
|
||||
--build-dir) BUILD_DIR="$2"; shift 2 ;;
|
||||
--rpki-client-bin) RPKI_CLIENT_BIN="$2"; shift 2 ;;
|
||||
--real-rsync-bin) REAL_RSYNC_BIN="$2"; shift 2 ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
*) echo "unknown argument: $1" >&2; usage; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -n "$SEQUENCE_ROOT" && -n "$BUILD_DIR" ]] || { usage >&2; exit 2; }
|
||||
[[ -n "$SEQUENCE_ROOT" && ( -n "$BUILD_DIR" || -n "$RPKI_CLIENT_BIN" ) ]] || { usage >&2; exit 2; }
|
||||
|
||||
SEQUENCE_ROOT="$(python3 - <<'PY' "$SEQUENCE_ROOT"
|
||||
from pathlib import Path
|
||||
@@ -39,7 +41,7 @@ PY
|
||||
SUMMARY_JSON="$SEQUENCE_ROOT/sequence-summary-rpki-client.json"
|
||||
SUMMARY_MD="$SEQUENCE_ROOT/sequence-summary-rpki-client.md"
|
||||
|
||||
python3 - <<'PY' "$SEQUENCE_ROOT" "$SUMMARY_JSON" "$SUMMARY_MD" "$STEP_SCRIPT" "$BUILD_DIR" "$REAL_RSYNC_BIN"
|
||||
python3 - <<'PY' "$SEQUENCE_ROOT" "$SUMMARY_JSON" "$SUMMARY_MD" "$STEP_SCRIPT" "$BUILD_DIR" "$RPKI_CLIENT_BIN" "$REAL_RSYNC_BIN"
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
@@ -50,14 +52,11 @@ summary_json = Path(sys.argv[2])
|
||||
summary_md = Path(sys.argv[3])
|
||||
step_script = Path(sys.argv[4])
|
||||
build_dir = sys.argv[5]
|
||||
real_rsync_bin = sys.argv[6]
|
||||
rpki_client_bin = sys.argv[6]
|
||||
real_rsync_bin = sys.argv[7]
|
||||
|
||||
sequence = json.loads((sequence_root / "sequence.json").read_text(encoding="utf-8"))
|
||||
static_root = sequence_root / sequence["staticRoot"] if "staticRoot" in sequence else None
|
||||
raw_store_db = sequence_root / sequence["rawStoreDbPath"] if "rawStoreDbPath" in sequence else None
|
||||
backend_count = sum(x is not None for x in (static_root, raw_store_db))
|
||||
if backend_count != 1:
|
||||
raise SystemExit("sequence must set exactly one of staticRoot or rawStoreDbPath")
|
||||
repo_bytes_db = sequence_root / sequence["repoBytesDbPath"]
|
||||
steps = sequence["steps"]
|
||||
results = []
|
||||
all_match = True
|
||||
@@ -74,15 +73,14 @@ for step in steps:
|
||||
str(out_dir),
|
||||
"--reference-ccr",
|
||||
str(sequence_root / step["ccrPath"]),
|
||||
"--build-dir",
|
||||
build_dir,
|
||||
"--real-rsync-bin",
|
||||
real_rsync_bin,
|
||||
]
|
||||
if static_root is not None:
|
||||
cmd.extend(["--static-root", str(static_root)])
|
||||
if rpki_client_bin:
|
||||
cmd.extend(["--rpki-client-bin", rpki_client_bin])
|
||||
else:
|
||||
cmd.extend(["--raw-store-db", str(raw_store_db)])
|
||||
cmd.extend(["--build-dir", build_dir])
|
||||
cmd.extend(["--repo-bytes-db", str(repo_bytes_db)])
|
||||
proc = subprocess.run(cmd, capture_output=True, text=True)
|
||||
if proc.returncode != 0:
|
||||
raise SystemExit(
|
||||
|
||||
@@ -193,10 +193,10 @@ for rir in "${RIRS[@]}"; do
|
||||
done
|
||||
|
||||
if [[ "$KIND" == "snapshot" ]]; then
|
||||
rm -rf state/ours/work-db state/ours/raw-store.db state/rpki-client/cache state/rpki-client/out state/rpki-client/ta state/rpki-client/.ta
|
||||
rm -rf state/ours/work-db state/ours/raw-store.db state/ours/repo-bytes.db state/rpki-client/cache state/rpki-client/out state/rpki-client/ta state/rpki-client/.ta
|
||||
fi
|
||||
mkdir -p state/ours/work-db state/ours/raw-store.db state/rpki-client/cache state/rpki-client/out state/rpki-client/ta state/rpki-client/.ta
|
||||
chmod 0777 state/ours/work-db state/ours/raw-store.db
|
||||
mkdir -p state/ours/work-db state/ours/raw-store.db state/ours/repo-bytes.db state/rpki-client/cache state/rpki-client/out state/rpki-client/ta state/rpki-client/.ta
|
||||
chmod 0777 state/ours/work-db state/ours/raw-store.db state/ours/repo-bytes.db
|
||||
chmod -R 0777 state/rpki-client
|
||||
|
||||
START_EPOCH="$(python3 - <<'PY'
|
||||
@@ -222,6 +222,7 @@ PY
|
||||
env RPKI_PROGRESS_LOG=1 RPKI_PROGRESS_SLOW_SECS=0 ./rpki \
|
||||
--db state/ours/work-db \
|
||||
--raw-store-db state/ours/raw-store.db \
|
||||
--repo-bytes-db state/ours/repo-bytes.db \
|
||||
"${OURS_TAL_ARGS[@]}" \
|
||||
--parallel-phase1 \
|
||||
"${OURS_EXTRA_ARGV[@]}" \
|
||||
|
||||
@@ -46,6 +46,7 @@ REMOTE_REPO="$REMOTE_ROOT/repo"
|
||||
REMOTE_OUT="$REMOTE_ROOT/rounds/$ROUND_ID/ours"
|
||||
REMOTE_WORK_DB="$REMOTE_ROOT/state/ours/work-db"
|
||||
REMOTE_RAW_STORE="$REMOTE_ROOT/state/ours/raw-store.db"
|
||||
REMOTE_REPO_BYTES="$REMOTE_ROOT/state/ours/repo-bytes.db"
|
||||
|
||||
mkdir -p "$LOCAL_OUT"
|
||||
|
||||
@@ -66,6 +67,7 @@ ssh "$SSH_TARGET" \
|
||||
REMOTE_OUT="$REMOTE_OUT" \
|
||||
REMOTE_WORK_DB="$REMOTE_WORK_DB" \
|
||||
REMOTE_RAW_STORE="$REMOTE_RAW_STORE" \
|
||||
REMOTE_REPO_BYTES="$REMOTE_REPO_BYTES" \
|
||||
KIND="$KIND" \
|
||||
ROUND_ID="$ROUND_ID" \
|
||||
SCHEDULED_AT="$SCHEDULED_AT" \
|
||||
@@ -76,7 +78,7 @@ cd "$REMOTE_REPO"
|
||||
mkdir -p "$REMOTE_OUT"
|
||||
|
||||
if [[ "$KIND" == "snapshot" ]]; then
|
||||
rm -rf "$REMOTE_WORK_DB" "$REMOTE_RAW_STORE"
|
||||
rm -rf "$REMOTE_WORK_DB" "$REMOTE_RAW_STORE" "$REMOTE_REPO_BYTES"
|
||||
fi
|
||||
mkdir -p "$(dirname "$REMOTE_WORK_DB")"
|
||||
|
||||
@@ -97,6 +99,7 @@ set +e
|
||||
env RPKI_PROGRESS_LOG=1 RPKI_PROGRESS_SLOW_SECS=0 target/release/rpki \
|
||||
--db "$REMOTE_WORK_DB" \
|
||||
--raw-store-db "$REMOTE_RAW_STORE" \
|
||||
--repo-bytes-db "$REMOTE_REPO_BYTES" \
|
||||
--tal-path tests/fixtures/tal/apnic-rfc7730-https.tal \
|
||||
--ta-path tests/fixtures/ta/apnic-ta.cer \
|
||||
--parallel-phase1 \
|
||||
|
||||
@@ -91,6 +91,7 @@ base_time = (
|
||||
(run_root / "rounds").mkdir(parents=True, exist_ok=True)
|
||||
(run_root / "state" / "ours" / "work-db").mkdir(parents=True, exist_ok=True)
|
||||
(run_root / "state" / "ours" / "raw-store.db").mkdir(parents=True, exist_ok=True)
|
||||
(run_root / "state" / "ours" / "repo-bytes.db").mkdir(parents=True, exist_ok=True)
|
||||
(run_root / "state" / "rpki-client" / "cache").mkdir(parents=True, exist_ok=True)
|
||||
(run_root / "state" / "rpki-client" / "out").mkdir(parents=True, exist_ok=True)
|
||||
|
||||
@@ -110,8 +111,10 @@ meta = {
|
||||
"ours": {
|
||||
"workDbPath": "state/ours/work-db",
|
||||
"rawStoreDbPath": "state/ours/raw-store.db",
|
||||
"repoBytesDbPath": "state/ours/repo-bytes.db",
|
||||
"remoteWorkDbPath": "state/ours/work-db",
|
||||
"remoteRawStoreDbPath": "state/ours/raw-store.db",
|
||||
"remoteRepoBytesDbPath": "state/ours/repo-bytes.db",
|
||||
},
|
||||
"rpkiClient": {
|
||||
"cachePath": "state/rpki-client/cache",
|
||||
|
||||
@@ -46,6 +46,7 @@ REMOTE_REPO="$REMOTE_ROOT/repo"
|
||||
REMOTE_OUT="$REMOTE_ROOT/rounds/$ROUND_ID/ours"
|
||||
REMOTE_WORK_DB="$REMOTE_ROOT/state/ours/work-db"
|
||||
REMOTE_RAW_STORE="$REMOTE_ROOT/state/ours/raw-store.db"
|
||||
REMOTE_REPO_BYTES="$REMOTE_ROOT/state/ours/repo-bytes.db"
|
||||
|
||||
mkdir -p "$LOCAL_OUT"
|
||||
|
||||
@@ -66,6 +67,7 @@ ssh "$SSH_TARGET" \
|
||||
REMOTE_OUT="$REMOTE_OUT" \
|
||||
REMOTE_WORK_DB="$REMOTE_WORK_DB" \
|
||||
REMOTE_RAW_STORE="$REMOTE_RAW_STORE" \
|
||||
REMOTE_REPO_BYTES="$REMOTE_REPO_BYTES" \
|
||||
KIND="$KIND" \
|
||||
ROUND_ID="$ROUND_ID" \
|
||||
SCHEDULED_AT="$SCHEDULED_AT" \
|
||||
@@ -76,7 +78,7 @@ cd "$REMOTE_REPO"
|
||||
mkdir -p "$REMOTE_OUT"
|
||||
|
||||
if [[ "$KIND" == "snapshot" ]]; then
|
||||
rm -rf "$REMOTE_WORK_DB" "$REMOTE_RAW_STORE"
|
||||
rm -rf "$REMOTE_WORK_DB" "$REMOTE_RAW_STORE" "$REMOTE_REPO_BYTES"
|
||||
fi
|
||||
mkdir -p "$(dirname "$REMOTE_WORK_DB")"
|
||||
|
||||
@@ -97,6 +99,7 @@ set +e
|
||||
env RPKI_PROGRESS_LOG=1 target/release/rpki \
|
||||
--db "$REMOTE_WORK_DB" \
|
||||
--raw-store-db "$REMOTE_RAW_STORE" \
|
||||
--repo-bytes-db "$REMOTE_REPO_BYTES" \
|
||||
--tal-path tests/fixtures/tal/arin.tal \
|
||||
--ta-path tests/fixtures/ta/arin-ta.cer \
|
||||
--ccr-out "$ccr_out" \
|
||||
|
||||
Reference in New Issue
Block a user