Files
kra-new/scripts/sw_report_build_http_smoke.py
T

35 lines
1.8 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()
def get(path):
req = urllib.request.Request(args.base_url + path, headers={'x-token': token})
with urllib.request.urlopen(req, timeout=30) as response:
data = json.load(response)
assert data['code'] == 0, data.get('msg')
return data['data']
methods = get('/timedTask/getRegisteredMethods')['methods']
names = {row['name'] for row in methods}
expected = {f'swReport{kind}{period}Task' for kind in ['Day', 'ServerDay'] for period in ['Today', 'Yesterday', 'Backfill']}
tasks = get('/timedTask/getTimedTaskList?page=1&pageSize=1000')
imported = [row for row in tasks['list'] if row.get('name', '').startswith('SW/')]
report = {'scope': '真实 sw7 会话,只读任务接口;正向创建和触发通过隔离数据库原生任务 HTTP 测试。', 'registeredMethods': sorted(names & expected), 'importedTasks': len(imported), 'enabledImportedTasks': sum(bool(row['enabled']) for row in imported), 'passed': expected <= names and not any(row['enabled'] for row in imported)}
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()