64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
"""Add explicit MBBT/config provenance to the accepted Phase-6 replay client."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
PHASE6 = Path(__file__).resolve().parents[1] / "opprof-phase6"
|
|
sys.path.insert(0, str(PHASE6))
|
|
|
|
import opprof_phase6_client as base # noqa: E402
|
|
|
|
|
|
def parser() -> argparse.ArgumentParser:
|
|
result = argparse.ArgumentParser()
|
|
result.add_argument("command", choices=("warmup", "run-anchor"))
|
|
result.add_argument("--study", required=True)
|
|
result.add_argument("--cell", required=True)
|
|
result.add_argument("--anchor", type=float, required=True)
|
|
result.add_argument("--tp", type=int, required=True)
|
|
result.add_argument("--mns", type=int, required=True)
|
|
result.add_argument("--mbbt", type=int, required=True)
|
|
result.add_argument("--base-url", required=True)
|
|
result.add_argument("--result-dir", required=True)
|
|
result.add_argument("--disable-slo-early-stop", action="store_true")
|
|
return result
|
|
|
|
|
|
def main() -> None:
|
|
args = parser().parse_args()
|
|
result = base.run_replay(args, warmup=args.command == "warmup")
|
|
result.update(
|
|
{
|
|
"schema": "action-aware-pilot-result-v0",
|
|
"config_id": args.cell,
|
|
"mbbt": args.mbbt,
|
|
}
|
|
)
|
|
base.atomic_json(Path(args.result_dir) / "result.json", result)
|
|
print(
|
|
json.dumps(
|
|
{
|
|
key: result[key]
|
|
for key in (
|
|
"config_id",
|
|
"mns",
|
|
"mbbt",
|
|
"kind",
|
|
"pass_rate",
|
|
"feasible",
|
|
)
|
|
},
|
|
sort_keys=True,
|
|
)
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|