aboutsummaryrefslogtreecommitdiffstats
path: root/yardstick/tests/unit/apiserver/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'yardstick/tests/unit/apiserver/__init__.py')
-rw-r--r--yardstick/tests/unit/apiserver/__init__.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/yardstick/tests/unit/apiserver/__init__.py b/yardstick/tests/unit/apiserver/__init__.py
new file mode 100644
index 000000000..44d163429
--- /dev/null
+++ b/yardstick/tests/unit/apiserver/__init__.py
@@ -0,0 +1,58 @@
+##############################################################################
+# Copyright (c) 2017
+#
+# 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
+##############################################################################
+"""Tests for yardstick/api/server.py"""
+from __future__ import absolute_import
+
+import mock
+import os
+import socket
+import unittest
+import tempfile
+
+from oslo_serialization import jsonutils
+
+from yardstick.common import constants as consts
+
+
+class APITestCase(unittest.TestCase):
+ """Tests for the YardStick API server"""
+ def setUp(self):
+ self.db_fd, self.db_path = tempfile.mkstemp()
+ consts.SQLITE = 'sqlite:///{}'.format(self.db_path)
+
+ # server calls gethostbyname which takes 4 seconds, and we should mock
+ # it anyway
+ self.socket_mock = mock.patch.dict("sys.modules", {"socket": mock.MagicMock(
+ **{"gethostbyname.return_value": "127.0.0.1",
+ "gethostname.return_value": "localhost"})})
+ self.socket_mock.start()
+ try:
+ from api import server
+ except socket.gaierror:
+ self.app = None
+ return
+
+ server.app.config['TESTING'] = True
+ self.app = server.app.test_client()
+
+ server.init_db()
+
+ def tearDown(self):
+ os.close(self.db_fd)
+ os.unlink(self.db_path)
+ self.socket_mock.stop()
+
+ def _post(self, url, data):
+ headers = {'Content-Type': 'application/json'}
+ resp = self.app.post(url, data=jsonutils.dumps(data), headers=headers)
+ return jsonutils.loads(resp.data)
+
+ def _get(self, url):
+ resp = self.app.get(url)
+ return jsonutils.loads(resp.data)