diff --git a/services/const.py b/services/const.py index d06c7033016e5a5792d69bad795e4a7d70aaa97d..2d8c1f29a72114a696234a5fcd2d3cc0c7eced49 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 c400da651e8b27877822103d349ff04480893e59..c5e625e83a6202f2c2f28647db4d13016369511e 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 e72cad420532f65efcc5e2f22372251b9e9dc916..f5f8bd3897f38ab169d9f6c72983cd719522e027 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 7fa490009323627e9d4b66768b9729ecf063bb97..b8935180e5fc7ca234d35a88b963896edce1a28e 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 9889c11f6313051d1e6fdbf14fb542bc2c077fce..5b1bfc22db1f4fb644380094565f77558e5adfe0 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 885f76157066f02ac65c51605811b65bd749a290..6cf11ee379f2f9e1469932e20b2c9b89111b7ce2 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)