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")
