diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/client.py | 37 | ||||
-rw-r--r-- | api/conf.py | 2 | ||||
-rw-r--r-- | api/database/__init__.py | 4 | ||||
-rw-r--r-- | api/resources/testcases.py | 21 | ||||
-rw-r--r-- | api/server.py | 13 | ||||
-rw-r--r-- | api/urls.py | 1 | ||||
-rw-r--r-- | api/views.py | 5 | ||||
-rw-r--r-- | api/yardstick.ini | 2 |
8 files changed, 77 insertions, 8 deletions
diff --git a/api/client.py b/api/client.py new file mode 100644 index 000000000..167754c39 --- /dev/null +++ b/api/client.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2016 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +import logging +import requests + +from oslo_serialization import jsonutils + +from yardstick.common import constants as consts + +logger = logging.getLogger(__name__) + + +def post(url, data={}): + url = '{}{}'.format(consts.BASE_URL, url) + data = jsonutils.dumps(data) + headers = {'Content-Type': 'application/json'} + try: + response = requests.post(url, data=data, headers=headers) + result = response.json() + logger.debug('The result is: %s', result) + + return result + except Exception as e: + logger.exception('Failed: %s', e) + raise + + +def get(url): + url = '{}{}'.format(consts.BASE_URL, url) + response = requests.get(url) + return response.json() diff --git a/api/conf.py b/api/conf.py index abaf34a1f..a4f332533 100644 --- a/api/conf.py +++ b/api/conf.py @@ -15,8 +15,6 @@ with IPDB() as ip: GATEWAY_IP = ip.routes['default'].gateway PORT = 8086 -TEST_ACTION = ['runTestCase'] - TEST_CASE_PATH = '../tests/opnfv/test_cases/' SAMPLE_PATH = '../samples/' diff --git a/api/database/__init__.py b/api/database/__init__.py index d7cf4f9c4..753b34684 100644 --- a/api/database/__init__.py +++ b/api/database/__init__.py @@ -13,10 +13,12 @@ from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.ext.declarative import declarative_base +from yardstick.common import constants as consts + logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) -engine = create_engine('sqlite:////tmp/yardstick.db', convert_unicode=True) +engine = create_engine(consts.SQLITE, convert_unicode=True) db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) diff --git a/api/resources/testcases.py b/api/resources/testcases.py new file mode 100644 index 000000000..6ee15efb3 --- /dev/null +++ b/api/resources/testcases.py @@ -0,0 +1,21 @@ +# ############################################################################ +# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# ############################################################################ +from yardstick.benchmark.core.testcase import Testcase +from yardstick.benchmark.core import Param +from api.utils import common as common_utils + + +def default(args): + return listAllTestcases(args) + + +def listAllTestcases(args): + param = Param(args) + testcase_list = Testcase().list_all(param) + return common_utils.result_handler(1, testcase_list) diff --git a/api/server.py b/api/server.py index 5bac1ba47..1d42feffb 100644 --- a/api/server.py +++ b/api/server.py @@ -10,7 +10,6 @@ from __future__ import absolute_import import inspect import logging -from functools import reduce from six.moves import filter from flasgger import Swagger @@ -38,6 +37,10 @@ def shutdown_session(exception=None): db_session.remove() +for u in urlpatterns: + api.add_resource(u.resource, u.url, endpoint=u.endpoint) + + def init_db(): def func(a): try: @@ -52,12 +55,14 @@ def init_db(): Base.metadata.create_all(bind=engine) -init_db() -reduce(lambda a, b: a.add_resource(b.resource, b.url, - endpoint=b.endpoint) or a, urlpatterns, api) +def app_wrapper(*args, **kwargs): + init_db() + return app(*args, **kwargs) + if __name__ == '__main__': _init_logging() logger.setLevel(logging.DEBUG) logger.info('Starting server') + init_db() app.run(host='0.0.0.0') diff --git a/api/urls.py b/api/urls.py index 04b7485f1..3ccb67dbc 100644 --- a/api/urls.py +++ b/api/urls.py @@ -13,6 +13,7 @@ from api.utils.common import Url urlpatterns = [ Url('/yardstick/asynctask', views.Asynctask, 'asynctask'), + Url('/yardstick/testcases', views.Testcases, 'testcases'), Url('/yardstick/testcases/release/action', views.ReleaseAction, 'release'), Url('/yardstick/testcases/samples/action', views.SamplesAction, 'samples'), Url('/yardstick/testsuites/action', views.TestsuitesAction, 'testsuites'), diff --git a/api/views.py b/api/views.py index 0c39bfad0..9fd236fad 100644 --- a/api/views.py +++ b/api/views.py @@ -30,6 +30,11 @@ class Asynctask(ApiResource): return self._dispatch_get() +class Testcases(ApiResource): + def get(self): + return self._dispatch_get() + + class ReleaseAction(ApiResource): @swag_from(os.getcwd() + '/swagger/docs/release_action.yaml') def post(self): diff --git a/api/yardstick.ini b/api/yardstick.ini index 2ba881fc1..d2e8956e2 100644 --- a/api/yardstick.ini +++ b/api/yardstick.ini @@ -9,7 +9,7 @@ threads = 5 async = true max-requests = 5000 chmod-socket = 666 -callable = app +callable = app_wrapper enable-threads = true close-on-exec = 1 daemonize= /var/log/yardstick/uwsgi.log |