From 9ce7a7d80045e4f8d71b769d4e70b9eb9c20ac8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AD=A6=E5=B3=B0?= Date: Fri, 22 Jul 2022 16:19:13 +0800 Subject: [PATCH] feat: add params for task service --- services/const.py | 2 ++ services/tone_job_service.py | 16 ++++++++++----- services/tone_service.py | 38 ++++++++++++++++++++++++++++++++++-- views/device_view.py | 2 +- views/task_view.py | 2 +- views/tone_view.py | 24 ++++++++++++++++++++++- 6 files changed, 74 insertions(+), 10 deletions(-) diff --git a/services/const.py b/services/const.py index d06c703..2d8c1f2 100644 --- a/services/const.py +++ b/services/const.py @@ -18,3 +18,5 @@ ERROR_LACK_PERMISSION = '缺少权限' ERROR_DUPLICATED_NAME = '该命名已使用' ERROR_UN_EXISTED_TONE_JOB = 'tone job不存在' + +DAILY_UN_LOGIN_USER = 'testlib-tester' diff --git a/services/tone_job_service.py b/services/tone_job_service.py index c400da6..c5e625e 100644 --- a/services/tone_job_service.py +++ b/services/tone_job_service.py @@ -69,9 +69,12 @@ async def save_func_detail(task_id, data): test_suite_id = func_result.get('test_suite_id') test_case_id = func_result.get('test_case_id') case = [task_case_result for task_case_result in run_result.get('case_infos') - if task_case_result['tone_case_id'] == test_case_id] + if int(task_case_result['tone_case_id']) == test_case_id] if len(case) == 1: case[0]['result'] = func_result.get('case_state') + case[0]['statistics'] = func_result.get('result_statistics') + case[0]['start_time'] = func_result.get('start_time') + case[0]['end_time'] = func_result.get('end_time') if len(func_result['case_result']) == 0 and func_result['case_state'] == 'fail': func_result_list.append({ 'sub_case_name': f'{func_result["test_suite"]}:{func_result["test_case"]}', @@ -117,9 +120,11 @@ async def save_perf_detail(task_id, data): test_suite_id = perf_result.get('test_suite_id') test_case_id = perf_result.get('test_case_id') case = [task_case_result for task_case_result in run_result.get('case_infos') - if task_case_result['tone_case_id'] == test_case_id] + if int(task_case_result['tone_case_id']) == test_case_id] if len(case) == 1: case[0]['result'] = perf_result.get('case_state') + case[0]['start_time'] = perf_result.get('start_time') + case[0]['end_time'] = perf_result.get('end_time') for case_result in perf_result.get('case_result'): perf_result_obj = dict({ 'metric': case_result.get('metric'), @@ -141,10 +146,10 @@ async def save_perf_detail(task_id, data): async def create_tone_job(data): req_data = { - 'workspace': conf.config['TONE_WORKSPACE'], + 'workspace': data.get('workspace'), 'name': "test_lib_job" + str(time.time()), 'job_type': data.get('job_type'), - 'project': conf.config['TONE_PROJECT'], + 'project': data.get('project'), 'test_config': data.get('test_config'), 'callback_api': conf.config['MAIN_DOMAIN'] + 'api/tone/callback' } @@ -152,9 +157,10 @@ async def create_tone_job(data): if status == 200: if result['success']: await create_job(result['data'], data.get('task_id')) + return None, True else: return result['msg'], False - return None, False + return result['msg'], False async def query_tone_job(tone_job_id): diff --git a/services/tone_service.py b/services/tone_service.py index e72cad4..f5f8bd3 100644 --- a/services/tone_service.py +++ b/services/tone_service.py @@ -1,6 +1,6 @@ import asyncio import json -from common.tone.api import TONE_SUITE_QUERY +from common.tone.api import TONE_SUITE_QUERY, TONE_WS_QUERY, TONE_PROJECT_QUERY, TONE_JOB_TYPE_QUERY from common.tone.tone_request import get_res_from_tone from app import log from models.tone_model import ToneCase, query_tone_case_type, query_tone_suite, ToneSyncPull, \ @@ -32,7 +32,7 @@ async def get_tone_case_type(): async def sync_suite(): while True: - await asyncio.sleep(36000) + await asyncio.sleep(3600) last_sync_pull = await ToneSyncPull.query_obj_one() if last_sync_pull: last_sync_time = last_sync_pull.gmt_created.strftime('%Y-%m-%d %H:%M:%S') @@ -96,3 +96,37 @@ async def sync_suite_by_manual(): await batch_insert_or_update_case(case_list) await ToneSyncPull().save(dict()) return None, True + + +async def get_tone_ws(): + status_code, result = await get_res_from_tone('get', TONE_WS_QUERY, {}) + if status_code == 200: + tone_result = json.loads(result) + if tone_result['success']: + return tone_result['data'] + return None + + +async def get_tone_project(ws_id): + req_data = { + 'ws_id': ws_id + } + status_code, result = await get_res_from_tone('get', TONE_PROJECT_QUERY, req_data) + if status_code == 200: + tone_result = json.loads(result) + if tone_result['success']: + return tone_result['data'] + return None + + +async def get_tone_job_type(ws_id, test_type): + req_data = { + 'ws_id': ws_id, + 'test_type': test_type + } + status_code, result = await get_res_from_tone('get', TONE_JOB_TYPE_QUERY, req_data) + if status_code == 200: + tone_result = json.loads(result) + if tone_result['success']: + return tone_result['data'] + return None diff --git a/views/device_view.py b/views/device_view.py index 7fa4900..b893518 100644 --- a/views/device_view.py +++ b/views/device_view.py @@ -61,7 +61,7 @@ async def modify(request, device_id, user_infos): @bp.get('/ping/') @login_auth -async def ping(_, device_id): +async def ping(_, device_id, user_infos): return rsp(data=True) diff --git a/views/task_view.py b/views/task_view.py index 9889c11..5b1bfc2 100644 --- a/views/task_view.py +++ b/views/task_view.py @@ -35,7 +35,7 @@ async def get_task(_, task_id, user_infos): @bp.post('/create') @read_auth async def create(request, user_infos): - args = ['name', 'plan_id', 'cases', 'run_method'] + args = ['name', 'plan_id', 'cases', 'run_method', 'workspace', 'project', 'job_type'] res, ok = check_args(args, request.json) if not ok: return res diff --git a/views/tone_view.py b/views/tone_view.py index 885f761..6cf11ee 100644 --- a/views/tone_view.py +++ b/views/tone_view.py @@ -3,7 +3,8 @@ import asyncio from common.http import rsp from services.auth_service import login_auth, read_auth -from services.tone_service import query_suite, get_tone_case_type, query_tone_cases, sync_suite, sync_suite_by_manual +from services.tone_service import query_suite, get_tone_case_type, query_tone_cases, sync_suite, sync_suite_by_manual, \ + get_tone_project, get_tone_job_type, get_tone_ws from services.tone_job_service import create_tone_job, tone_callback bp = Blueprint('tone', url_prefix='api/tone/') @@ -57,3 +58,24 @@ async def test(_, user_infos): @bp.listener('after_server_start') async def sync_data(bp, loop): asyncio.create_task(sync_suite()) + + +@bp.get('/project_list/') +@login_auth +async def get_project_list(_, ws_id, user_infos): + result = await get_tone_project(ws_id) + return rsp(data=result) + + +@bp.get('/job_type_list//') +@login_auth +async def get_job_type_list(_, ws_id, test_type, user_infos): + result = await get_tone_job_type(ws_id, test_type) + return rsp(data=result) + + +@bp.get('/ws_list') +@login_auth +async def get_ws_list(_, user_infos): + result = await get_tone_ws() + return rsp(data=result) -- Gitee