35 lines
1.8 KiB
Python
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()
|