import logging
import os
+import re
import pkg_resources
+import socket
import uuid
import ConfigParser
-from flask import abort, jsonify
+from flask import jsonify
+from flasgger.utils import swag_from
from functest.api.base import ApiResource
from functest.api.common import api_utils, thread
LOGGER = logging.getLogger(__name__)
+ADDRESS = socket.gethostbyname(socket.gethostname())
+ENDPOINT_TESTCASES = ('http://{}:5000/api/v1/functest/testcases'
+ .format(ADDRESS))
+
class V1Testcases(ApiResource):
""" V1Testcases Resource class"""
+ @swag_from(pkg_resources.resource_filename(
+ 'functest', 'api/swagger/testcases.yaml'))
def get(self): # pylint: disable=no-self-use
""" GET all testcases """
testcases_list = Testcase().list()
- result = {'testcases': testcases_list.split('\n')[:-1]}
+ result = {'testcases': re.split(' |\n ', testcases_list)[1:]}
return jsonify(result)
class V1Testcase(ApiResource):
""" V1Testcase Resource class"""
+ @swag_from(
+ pkg_resources.resource_filename('functest',
+ 'api/swagger/testcase.yaml'),
+ endpoint='{0}/<testcase_name>'.format(ENDPOINT_TESTCASES))
def get(self, testcase_name): # pylint: disable=no-self-use
""" GET the info of one testcase"""
testcase = Testcase().show(testcase_name)
if not testcase:
- abort(404, "The test case '%s' does not exist or is not supported"
- % testcase_name)
+ return api_utils.result_handler(
+ status=1,
+ data="The test case '%s' does not exist or is not supported"
+ % testcase_name)
+
testcase_info = api_utils.change_obj_to_dict(testcase)
dependency_dict = api_utils.change_obj_to_dict(
testcase_info.get('dependency'))
result.update({'dependency': dependency_dict})
return jsonify(result)
+ @swag_from(
+ pkg_resources.resource_filename('functest',
+ 'api/swagger/testcase_run.yaml'),
+ endpoint='{0}/action'.format(ENDPOINT_TESTCASES))
def post(self):
""" Used to handle post request """
return self._dispatch_post()
return api_utils.result_handler(
status=1, data='testcase name must be provided')
+ testcase = Testcase().show(case_name)
+ if not testcase:
+ return api_utils.result_handler(
+ status=1,
+ data="The test case '%s' does not exist or is not supported"
+ % case_name)
+
task_id = str(uuid.uuid4())
task_args = {'testcase': case_name, 'task_id': task_id}
task_thread = thread.TaskThread(self._run, task_args, TasksHandler())
task_thread.start()
- results = {'testcase': case_name, 'task_id': task_id}
- return jsonify(results)
+ result = {'testcase': case_name, 'task_id': task_id}
+ return jsonify({'result': result})
def _run(self, args): # pylint: disable=no-self-use
""" The built_in function to run a test case """
}
result = {
'task_id': args.get('task_id'),
- 'case_name': case_name,
+ 'testcase': case_name,
'env_info': env_info,
'result': result
}