Files
kra-new/scripts/sw_server_analysis_http_smoke.py
T

45 lines
2.2 KiB
Python

"""只读验证区服分析接口;完整统计由隔离数据库的真实 TCP HTTP 测试覆盖。"""
import argparse
import json
import urllib.parse
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 = []
cases = [
('list', {}, 7), ('servers', {}, 7),
('list', {'gameName': '隔离核验不存在游戏', 'sourceDb': 'lx,hw,yq'}, 0),
('list', {'gameName': 'x', 'beginTime': 'bad', 'endTime': '2026-11-04'}, 7),
('list', {'gameName': 'x', 'beginTime': '2026-11-05', 'endTime': '2026-11-04'}, 7),
('servers', {'gameName': '隔离核验不存在游戏', 'sourceDb': 'lx'}, 7),
]
for endpoint, query, expected in cases:
path = '/sw/serverAnalysis/' + endpoint + '?' + urllib.parse.urlencode(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 = {'endpoint': endpoint, 'query': query, 'http': response.status, 'code': payload.get('code'), 'msg': payload.get('msg'), 'passed': payload.get('code') == expected}
if isinstance(data, dict) and 'available' in data:
item.update(available=data['available'], total=data.get('total'))
if data['available'] is False:
item['passed'] &= data.get('summary') is None
checks.append(item)
report = {'scope': '真实 sw7 会话只读检查,当前缺少业务报表和游戏区服表;未创建实际业务数据。', '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()