Add API(v2) to get all test suite 31/37831/1
authorchenjiankun <chenjiankun1@huawei.com>
Thu, 20 Jul 2017 04:13:14 +0000 (04:13 +0000)
committerchenjiankun <chenjiankun1@huawei.com>
Thu, 20 Jul 2017 04:13:14 +0000 (04:13 +0000)
JIRA: YARDSTICK-747

API: /api/v2/yardstick/testsuites
METHOD: GET

Change-Id: I2375b6d2ea54704f5a2328cc8110058af038e777
Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
api/resources/v2/testsuites.py
yardstick/benchmark/core/testsuite.py [new file with mode: 0644]

index 9a3a07a..189988e 100644 (file)
@@ -6,6 +6,8 @@ import yaml
 from api import ApiResource
 from yardstick.common.utils import result_handler
 from yardstick.common import constants as consts
+from yardstick.benchmark.core.testsuite import Testsuite
+from yardstick.benchmark.core import Param
 
 LOG = logging.getLogger(__name__)
 LOG.setLevel(logging.DEBUG)
@@ -13,6 +15,16 @@ LOG.setLevel(logging.DEBUG)
 
 class V2Testsuites(ApiResource):
 
+    def get(self):
+        param = Param({})
+        testsuite_list = Testsuite().list_all(param)
+
+        data = {
+            'testsuites': testsuite_list
+        }
+
+        return result_handler(consts.API_SUCCESS, data)
+
     def post(self):
         return self._dispatch_post()
 
diff --git a/yardstick/benchmark/core/testsuite.py b/yardstick/benchmark/core/testsuite.py
new file mode 100644 (file)
index 0000000..e3940a0
--- /dev/null
@@ -0,0 +1,42 @@
+##############################################################################
+# Copyright (c) 2015 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
+##############################################################################
+
+""" Handler for yardstick command 'testcase' """
+from __future__ import absolute_import
+from __future__ import print_function
+
+import os
+import logging
+
+from yardstick.common import constants as consts
+
+LOG = logging.getLogger(__name__)
+
+
+class Testsuite(object):
+    """Testcase commands.
+
+       Set of commands to discover and display test cases.
+    """
+
+    def list_all(self, args):
+        """List existing test cases"""
+
+        testsuite_list = self._get_testsuite_file_list()
+
+        return testsuite_list
+
+    def _get_testsuite_file_list(self):
+        try:
+            testsuite_files = sorted(os.listdir(consts.TESTSUITE_DIR))
+        except OSError:
+            LOG.exception('Failed to list dir:\n%s\n', consts.TESTSUITE_DIR)
+            raise
+
+        return testsuite_files