Unit test fixes to handle ZK retry in main

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

Branch: refs/heads/feature/SLIDER-304_hdfs_token_renewal
Commit: f1552505033106c8259fd2230424c6c3b0128cc2
Parents: 15dc1ec
Author: Sumit Mohanty <[email protected]>
Authored: Tue Aug 26 21:36:41 2014 -0700
Committer: Sumit Mohanty <[email protected]>
Committed: Tue Aug 26 21:36:41 2014 -0700

----------------------------------------------------------------------
 slider-agent/src/main/python/agent/Registry.py |  1 +
 slider-agent/src/main/python/agent/main.py     |  3 ++-
 slider-agent/src/test/python/agent/TestMain.py | 19 ++++++++++++++-----
 3 files changed, 17 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/f1552505/slider-agent/src/main/python/agent/Registry.py
----------------------------------------------------------------------
diff --git a/slider-agent/src/main/python/agent/Registry.py 
b/slider-agent/src/main/python/agent/Registry.py
index 9d4a387..453be10 100644
--- a/slider-agent/src/main/python/agent/Registry.py
+++ b/slider-agent/src/main/python/agent/Registry.py
@@ -30,6 +30,7 @@ class Registry:
     self.zk_reg_path = zk_reg_path
 
   def readAMHostPort(self):
+    logger.debug("Trying to connect to ZK...")
     amHost = ""
     amSecuredPort = ""
     amUnsecuredPort = ""

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/f1552505/slider-agent/src/main/python/agent/main.py
----------------------------------------------------------------------
diff --git a/slider-agent/src/main/python/agent/main.py 
b/slider-agent/src/main/python/agent/main.py
index f6b8666..a8fc4e1 100644
--- a/slider-agent/src/main/python/agent/main.py
+++ b/slider-agent/src/main/python/agent/main.py
@@ -271,11 +271,12 @@ def main():
       # Wait until server is reachable and continue to query ZK
       netutil = NetUtil()
       retries = netutil.try_to_connect(server_url, 3, logger)
-      zk_lookup_tries += 1
       if retries < 3:
         break;
       pass
     pass
+    zk_lookup_tries += 1
+  pass
 
   # Launch Controller communication
   controller = Controller(agentConfig)

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/f1552505/slider-agent/src/test/python/agent/TestMain.py
----------------------------------------------------------------------
diff --git a/slider-agent/src/test/python/agent/TestMain.py 
b/slider-agent/src/test/python/agent/TestMain.py
index bc68582..e73a05a 100644
--- a/slider-agent/src/test/python/agent/TestMain.py
+++ b/slider-agent/src/test/python/agent/TestMain.py
@@ -31,6 +31,7 @@ import ConfigParser
 import os
 import tempfile
 from Controller import Controller
+from Registry import Registry
 from optparse import OptionParser
 
 logger = logging.getLogger()
@@ -46,7 +47,6 @@ class TestMain(unittest.TestCase):
     # enable stdout
     sys.stdout = sys.__stdout__
 
-
   @patch("os._exit")
   @patch("os.getpid")
   @patch.object(ProcessHelper, "stopAgent")
@@ -218,7 +218,7 @@ class TestMain(unittest.TestCase):
     ProcessHelper.pidfile = oldpid
     os.remove(tmpoutfile)
 
-
+  @patch.object(Registry, "readAMHostPort")
   @patch.object(main, "setup_logging")
   @patch.object(main, "bind_signal_handlers")
   @patch.object(main, "update_config_from_file")
@@ -236,17 +236,20 @@ class TestMain(unittest.TestCase):
                 update_log_level_mock, write_pid_mock,
                 perform_prestart_checks_mock,
                 update_config_from_file_mock,
-                bind_signal_handlers_mock, setup_logging_mock):
+                bind_signal_handlers_mock, setup_logging_mock,
+                readAMHostPort_mock):
     Controller_init_mock.return_value = None
     isAlive_mock.return_value = False
     options = MagicMock()
     parse_args_mock.return_value = (options, MagicMock)
+    readAMHostPort_mock.return_value = ("host1", 101, 100)
 
     tmpdir = tempfile.gettempdir()
 
     #testing call without command-line arguments
     os.environ["AGENT_WORK_ROOT"] = os.path.join(tmpdir, "work")
     os.environ["AGENT_LOG_ROOT"] = ",".join([os.path.join(tmpdir, 
"log"),os.path.join(tmpdir, "log2")])
+    try_to_connect_mock.return_value = 1
     main.main()
 
     self.assertTrue(setup_logging_mock.called)
@@ -256,7 +259,7 @@ class TestMain(unittest.TestCase):
     self.assertTrue(write_pid_mock.called)
     self.assertTrue(update_log_level_mock.called)
     self.assertTrue(options.log_folder == os.path.join(tmpdir, "log"))
-    try_to_connect_mock.assert_called_once_with(ANY, -1, ANY)
+    
try_to_connect_mock.assert_called_once_with('https://host1:101/ws/v1/slider/agents/',
 3, ANY)
     self.assertTrue(start_mock.called)
 
   class AgentOptions:
@@ -267,6 +270,8 @@ class TestMain(unittest.TestCase):
           self.verbose = verbose
           self.debug = debug
 
+  @patch.object(Registry, "readAMHostPort")
+  @patch("time.sleep")
   @patch.object(main, "setup_logging")
   @patch.object(main, "bind_signal_handlers")
   @patch.object(main, "stop_agent")
@@ -287,18 +292,22 @@ class TestMain(unittest.TestCase):
                 update_log_level_mock, write_pid_mock,
                 perform_prestart_checks_mock,
                 update_config_from_file_mock, stop_mock,
-                bind_signal_handlers_mock, setup_logging_mock):
+                bind_signal_handlers_mock, setup_logging_mock,
+                time_sleep_mock, readAMHostPort_mock):
       Controller_init_mock.return_value = None
       isAlive_mock.return_value = False
       parse_args_mock.return_value = (
           TestMain.AgentOptions("agent", "host1:2181", 
"/registry/org-apache-slider/cl1", True, ""), [])
       tmpdir = tempfile.gettempdir()
+      time_sleep_mock.return_value = None
+      readAMHostPort_mock.return_value = (None, None, None)
 
       #testing call without command-line arguments
       os.environ["AGENT_WORK_ROOT"] = os.path.join(tmpdir, "work")
       os.environ["AGENT_LOG_ROOT"] = os.path.join(tmpdir, "log")
       main.main()
       self.assertTrue(AgentConfig_set_mock.call_count == 3)
+      self.assertTrue(readAMHostPort_mock.call_count == 10)
       AgentConfig_set_mock.assert_any_call("server", "zk_quorum", "host1:2181")
       AgentConfig_set_mock.assert_any_call("server", "zk_reg_path", 
"/registry/org-apache-slider/cl1")
 

Reply via email to