apiserver: mock socket.gethostbyname 69/40969/1
authorRoss Brattain <ross.b.brattain@intel.com>
Mon, 4 Sep 2017 03:32:55 +0000 (20:32 -0700)
committerRoss Brattain <ross.b.brattain@intel.com>
Mon, 4 Sep 2017 03:34:03 +0000 (20:34 -0700)
we don't want use external DNS requests during unittest

Change-Id: I5ed67b700ef1dab4b650ae5071a3cf641a17ae4c
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
tests/unit/apiserver/__init__.py

index 1c9d5a6..5e1ed2e 100644 (file)
@@ -1,5 +1,6 @@
 from __future__ import absolute_import
 
+import mock
 import os
 import socket
 import unittest
@@ -16,6 +17,10 @@ class APITestCase(unittest.TestCase):
         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:
@@ -30,6 +35,7 @@ class APITestCase(unittest.TestCase):
     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'}