Files
kra-new/scripts/sw_analytics_http_smoke.py
T

38 lines
2.0 KiB
Python

"""只读检查渠道/游戏统计接口,区分空结果与业务表未接入。"""
import argparse
import json
import urllib.request
from pathlib import Path
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--base-url", default="http://127.0.0.1:18000")
parser.add_argument("--token-file", required=True, type=Path)
parser.add_argument("--output", required=True, type=Path)
args = parser.parse_args()
token = args.token_file.read_text(encoding="utf-8").strip()
checks = []
for kind in ["channelData", "gameData"]:
for query, expected in [("sourceDb=lx,hw,yq&pageNum=1&pageSize=10", 0), ("beginTime=bad&endTime=2026-11-04", 7), ("beginTime=2026-11-05&endTime=2026-11-04", 7)]:
path = f"/sw/{kind}/list?{query}"
req = urllib.request.Request(args.base_url + path, headers={"x-token": token})
with urllib.request.urlopen(req, timeout=30) as response:
payload = json.load(response)
data = payload.get("data", {})
item = {"path": path, "http": response.status, "code": payload.get("code"), "msg": payload.get("msg"), "passed": payload.get("code") == expected}
if "available" in data:
item.update(available=data["available"], total=data.get("total"), begin=data.get("beginTime"), end=data.get("endTime"))
if data["available"] is False:
item["passed"] &= data.get("summary") is None
checks.append(item)
report = {"scope": "真实 sw7 会话,只读请求;完整统计及权限口径另由隔离 TCP HTTP 测试验证。", "checks": checks, "passed": all(item["passed"] for item in checks)}
args.output.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
print(json.dumps(report, ensure_ascii=False))
if not report["passed"]:
raise SystemExit(1)
if __name__ == "__main__":
main()