You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by ke...@apache.org on 2014/05/22 00:29:26 UTC

git commit: Add a test to catch regressions in scheduler_client connect_scheduler.

Repository: incubator-aurora
Updated Branches:
  refs/heads/master b20708852 -> d2ab18213


Add a test to catch regressions in scheduler_client connect_scheduler.

Tested with the previous diff found in https://reviews.apache.org/r/21735/

Bugs closed: AURORA-453

Reviewed at https://reviews.apache.org/r/21739/


Project: http://git-wip-us.apache.org/repos/asf/incubator-aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-aurora/commit/d2ab1821
Tree: http://git-wip-us.apache.org/repos/asf/incubator-aurora/tree/d2ab1821
Diff: http://git-wip-us.apache.org/repos/asf/incubator-aurora/diff/d2ab1821

Branch: refs/heads/master
Commit: d2ab182132fc0c3aa7cd9d0b68774fa660a91da7
Parents: b207088
Author: Joe Smith <ya...@gmail.com>
Authored: Wed May 21 14:34:41 2014 -0700
Committer: Kevin Sweeney <ke...@apache.org>
Committed: Wed May 21 15:29:10 2014 -0700

----------------------------------------------------------------------
 .../python/apache/aurora/client/api/scheduler_client.py |  4 ++--
 src/test/python/apache/aurora/client/api/BUILD          |  1 +
 .../apache/aurora/client/api/test_scheduler_client.py   | 12 ++++++++++++
 3 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/d2ab1821/src/main/python/apache/aurora/client/api/scheduler_client.py
----------------------------------------------------------------------
diff --git a/src/main/python/apache/aurora/client/api/scheduler_client.py b/src/main/python/apache/aurora/client/api/scheduler_client.py
index c0089f6..df9d7e0 100644
--- a/src/main/python/apache/aurora/client/api/scheduler_client.py
+++ b/src/main/python/apache/aurora/client/api/scheduler_client.py
@@ -84,7 +84,7 @@ class SchedulerClient(object):
     return None
 
   @staticmethod
-  def _connect_scheduler(host, port):
+  def _connect_scheduler(host, port, clock=time):
     transport = THttpClient.THttpClient('http://%s:%s/api' % (host, port))
     protocol = TJSONProtocol.TJSONProtocol(transport)
     schedulerClient = AuroraAdmin.Client(protocol)
@@ -93,7 +93,7 @@ class SchedulerClient(object):
         transport.open()
         return schedulerClient
       except TTransport.TTransportException:
-        time.sleep(SchedulerClient.RETRY_TIMEOUT.as_(Time.SECONDS))
+        clock.sleep(SchedulerClient.RETRY_TIMEOUT.as_(Time.SECONDS))
         continue
       except Exception as e:
         # Monkey-patched proxies, like socks, can generate a proxy error here.

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/d2ab1821/src/test/python/apache/aurora/client/api/BUILD
----------------------------------------------------------------------
diff --git a/src/test/python/apache/aurora/client/api/BUILD b/src/test/python/apache/aurora/client/api/BUILD
index f0fa58f..56d4093 100644
--- a/src/test/python/apache/aurora/client/api/BUILD
+++ b/src/test/python/apache/aurora/client/api/BUILD
@@ -62,6 +62,7 @@ python_tests(name = 'restarter',
 python_tests(name = 'scheduler_client',
   sources = ['test_scheduler_client.py'],
   dependencies = [
+    pants('3rdparty/python:mock'),
     pants('3rdparty/python:mox'),
     pants('src/main/python/apache/aurora/client/api:scheduler_client'),
     pants('src/main/thrift/org/apache/aurora/gen:py-thrift'),

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/d2ab1821/src/test/python/apache/aurora/client/api/test_scheduler_client.py
----------------------------------------------------------------------
diff --git a/src/test/python/apache/aurora/client/api/test_scheduler_client.py b/src/test/python/apache/aurora/client/api/test_scheduler_client.py
index e29bae9..e59248f 100644
--- a/src/test/python/apache/aurora/client/api/test_scheduler_client.py
+++ b/src/test/python/apache/aurora/client/api/test_scheduler_client.py
@@ -15,9 +15,12 @@
 #
 
 import inspect
+import time
 import unittest
 
+import mock
 from mox import IgnoreArg, IsA, Mox
+from thrift.transport import THttpClient, TTransport
 from twitter.common.quantity import Amount, Time
 from twitter.common.zookeeper.kazoo_client import TwitterKazooClient
 from twitter.common.zookeeper.serverset.endpoint import ServiceInstance
@@ -339,3 +342,12 @@ class TestZookeeperSchedulerClient(unittest.TestCase):
       assert zk_scheduler_client.url == 'http://%s:%d' % (host, port)
     finally:
       TestZookeeperSchedulerClient.get_scheduler_serverset = original_method
+
+class TestSchedulerClient(unittest.TestCase):
+  @mock.patch('thrift.transport.THttpClient.THttpClient', spec=THttpClient.THttpClient)
+  def test_connect_scheduler(self, MockTHttpClient):
+    MockTHttpClient.return_value.open.side_effect = [TTransport.TTransportException, True]
+    mock_time = mock.Mock(spec=time)
+    scheduler_client.SchedulerClient._connect_scheduler('scheduler.example.com', 1337, mock_time)
+    assert MockTHttpClient.return_value.open.call_count is 2
+    mock_time.sleep.assert_called_once_with(scheduler_client.SchedulerClient.RETRY_TIMEOUT.as_(Time.SECONDS))