Merge "Adding example testcase to enable multiport support for http"
[yardstick.git] / tests / unit / apiserver / __init__.py
1 from __future__ import absolute_import
2
3 import mock
4 import os
5 import socket
6 import unittest
7 import tempfile
8
9 from oslo_serialization import jsonutils
10
11 from yardstick.common import constants as consts
12
13
14 class APITestCase(unittest.TestCase):
15
16     def setUp(self):
17         self.db_fd, self.db_path = tempfile.mkstemp()
18         consts.SQLITE = 'sqlite:///{}'.format(self.db_path)
19
20         # server calls gethostbyname which takes 4 seconds, and we should mock it anyway
21         self.socket_mock = mock.patch.dict("sys.modules", {"socket": mock.MagicMock(
22             **{"gethostbyname.return_value": "127.0.0.1", "gethostname.return_value": "localhost"})})
23         self.socket_mock.start()
24         try:
25             from api import server
26         except socket.gaierror:
27             self.app = None
28             return
29
30         server.app.config['TESTING'] = True
31         self.app = server.app.test_client()
32
33         server.init_db()
34
35     def tearDown(self):
36         os.close(self.db_fd)
37         os.unlink(self.db_path)
38         self.socket_mock.stop()
39
40     def _post(self, url, data):
41         headers = {'Content-Type': 'application/json'}
42         resp = self.app.post(url, data=jsonutils.dumps(data), headers=headers)
43         return jsonutils.loads(resp.data)
44
45     def _get(self, url):
46         resp = self.app.get(url)
47         return jsonutils.loads(resp.data)