Repository: ambari
Updated Branches:
  refs/heads/trunk b5c303ac5 -> e39eca7e0


AMBARI-12204 Windows unit tests: Agent unit tests: adapt the existing unit 
tests to Windows


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

Branch: refs/heads/trunk
Commit: e39eca7e06d8c8b06df86e7c18dbdccead207e19
Parents: b5c303a
Author: Florian Barca <fba...@hortonworks.com>
Authored: Tue Jul 21 12:59:57 2015 -0700
Committer: Florian Barca <fba...@hortonworks.com>
Committed: Wed Jul 22 13:35:54 2015 -0700

----------------------------------------------------------------------
 .../test/python/ambari_agent/TestActionQueue.py | 27 ++++++++++++++------
 .../TestClusterConfigurationCache.py            | 11 +++++---
 .../src/test/python/ambari_agent/TestMain.py    | 17 ++++++++++--
 ambari-agent/src/test/python/unitTests.py       | 15 ++++++++---
 4 files changed, 53 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/e39eca7e/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py 
b/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
index 5a22843..6e22bf8 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
@@ -40,6 +40,8 @@ from ambari_agent.FileCache import FileCache
 from ambari_commons import OSCheck
 from only_for_platform import not_for_platform, os_distro_value, 
PLATFORM_WINDOWS
 
+import logging
+
 class TestActionQueue(TestCase):
   def setUp(self):
     # save original open() method for later use
@@ -49,6 +51,8 @@ class TestActionQueue(TestCase):
   def tearDown(self):
     sys.stdout = sys.__stdout__
 
+  logger = logging.getLogger()
+
   datanode_install_command = {
     'commandType': 'EXECUTION_COMMAND',
     'role': u'DATANODE',
@@ -253,7 +257,7 @@ class TestActionQueue(TestCase):
     actionQueue.stop()
     actionQueue.join()
     self.assertEqual(actionQueue.stopped(), True, 'Action queue is not 
stopped.')
-    self.assertTrue(process_command_mock.call_count > 1)
+    self.assertGreater(process_command_mock.call_count, 1)
 
 
   @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value))
@@ -372,9 +376,12 @@ class TestActionQueue(TestCase):
     # Continue command execution
     unfreeze_flag.set()
     # wait until ready
-    while actionQueue.tasks_in_progress_or_pending():
-      time.sleep(0.1)
+    check_queue = True
+    while check_queue:
       report = actionQueue.result()
+      if not actionQueue.tasks_in_progress_or_pending():
+        break
+      time.sleep(0.1)
 
     self.assertEqual(len(report['reports']), 0)
 
@@ -388,10 +395,11 @@ class TestActionQueue(TestCase):
     unfreeze_flag.set()
     #  check in progress report
     # wait until ready
-    report = actionQueue.result()
-    while actionQueue.tasks_in_progress_or_pending():
-      time.sleep(0.1)
+    while check_queue:
       report = actionQueue.result()
+      if not actionQueue.tasks_in_progress_or_pending():
+        break
+      time.sleep(0.1)
 
     self.assertEqual(len(report['reports']), 0)
 
@@ -839,7 +847,11 @@ class TestActionQueue(TestCase):
       'structuredOut': '',
       'status': 'FAILED'
     }
-    time_mock.side_effect = [4, 8, 10, 14, 18, 22]
+
+    times_arr = [8, 10, 14, 18, 22]
+    if self.logger.isEnabledFor(logging.INFO):
+      times_arr.insert(0, 4)
+    time_mock.side_effect = times_arr
 
     def side_effect(command, tmpoutfile, tmperrfile, 
override_output_files=True, retry=False):
       return python_execution_result_dict
@@ -954,7 +966,6 @@ class TestActionQueue(TestCase):
     report = actionQueue.result()
     self.assertEqual(len(report['reports']),1)
 
-  @not_for_platform(PLATFORM_WINDOWS)
   @patch.object(CustomServiceOrchestrator, "get_py_executor")
   @patch.object(CustomServiceOrchestrator, "resolve_script_path")
   @patch.object(StackVersionsFileHandler, "read_stack_version")

http://git-wip-us.apache.org/repos/asf/ambari/blob/e39eca7e/ambari-agent/src/test/python/ambari_agent/TestClusterConfigurationCache.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/ambari_agent/TestClusterConfigurationCache.py 
b/ambari-agent/src/test/python/ambari_agent/TestClusterConfigurationCache.py
index bd754b2..e82fca2 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestClusterConfigurationCache.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestClusterConfigurationCache.py
@@ -18,6 +18,7 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 '''
 
+import os
 import sys
 
 from ambari_agent.ClusterConfiguration import ClusterConfiguration
@@ -42,9 +43,9 @@ class TestClusterConfigurationCache(TestCase):
     open_mock = mock_open(read_data=configuration_json)
 
     with patch("__builtin__.open", open_mock):
-      cluster_configuration = ClusterConfiguration("/foo/bar/baz")
+      cluster_configuration = ClusterConfiguration(os.path.join(os.sep, "foo", 
"bar", "baz"))
 
-    open_mock.assert_called_with("/foo/bar/baz/configurations.json", 'r')
+    open_mock.assert_called_with(os.sep + "foo" + os.sep + "bar" + os.sep + 
"baz" + os.sep + "configurations.json", 'r')
 
     self.assertEqual('bar', 
cluster_configuration.get_configuration_value('c1', 'foo-site/foo') )
     self.assertEqual('baz', 
cluster_configuration.get_configuration_value('c1', 'foo-site/foobar') )
@@ -52,6 +53,7 @@ class TestClusterConfigurationCache(TestCase):
     self.assertEqual(None, cluster_configuration.get_configuration_value('c1', 
'INVALID/INVALID') )
     self.assertEqual(None, 
cluster_configuration.get_configuration_value('INVALID', 'foo-site/foo') )
     self.assertEqual(None, 
cluster_configuration.get_configuration_value('INVALID', 'foo-site/foobar') )
+    pass
 
 
   @patch("ambari_simplejson.dump")
@@ -63,9 +65,10 @@ class TestClusterConfigurationCache(TestCase):
     }
 
     file_mock = self.__update_cluster_configuration(cluster_configuration, 
configuration)
-    file_mock.assert_called_with('/foo/bar/baz/configurations.json', 'w')
+    file_mock.assert_called_with(os.sep + "foo" + os.sep + "bar" + os.sep + 
"baz" + os.sep + "configurations.json", 'w')
 
     json_dump_mock.assert_called_with({'c1': {'foo-site': {'baz': 
'rendered-baz', 'bar': 'rendered-bar'}}}, ANY, indent=2)
+    pass
 
   def __get_cluster_configuration(self):
     """
@@ -75,7 +78,7 @@ class TestClusterConfigurationCache(TestCase):
     """
     with patch("__builtin__.open") as open_mock:
       open_mock.side_effect = self.open_side_effect
-      cluster_configuration = ClusterConfiguration("/foo/bar/baz")
+      cluster_configuration = ClusterConfiguration(os.path.join(os.sep, "foo", 
"bar", "baz"))
       return cluster_configuration
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/e39eca7e/ambari-agent/src/test/python/ambari_agent/TestMain.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/ambari_agent/TestMain.py 
b/ambari-agent/src/test/python/ambari_agent/TestMain.py
index 7a3dc71..6218b59 100644
--- a/ambari-agent/src/test/python/ambari_agent/TestMain.py
+++ b/ambari-agent/src/test/python/ambari_agent/TestMain.py
@@ -28,6 +28,7 @@ import tempfile
 import ConfigParser
 
 from ambari_commons import OSCheck
+from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
 from only_for_platform import get_platform, not_for_platform, os_distro_value, 
PLATFORM_WINDOWS
 from mock.mock import MagicMock, patch, ANY, Mock
 
@@ -283,6 +284,16 @@ class TestMain(unittest.TestCase):
     self.assertTrue(sys_exit_mock.called)
 
 
+  @OsFamilyFuncImpl(OSConst.WINSRV_FAMILY)
+  def init_ambari_config_mock(self):
+    return os.path.normpath(
+        os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", 
"conf", "windows", "ambari-agent.ini"))
+
+  @OsFamilyFuncImpl(OsFamilyImpl.DEFAULT)
+  def init_ambari_config_mock(self):
+    return os.path.normpath(
+        os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", 
"conf", "unix", "ambari-agent.ini"))
+
   @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = 
os_distro_value))
   @patch.object(socket, "gethostbyname")
   @patch.object(main, "setup_logging")
@@ -315,7 +326,7 @@ class TestMain(unittest.TestCase):
     parse_args_mock.return_value = (options, MagicMock)
     try_to_connect_mock.return_value = (0, True)
     # use default unix config
-    ambari_config_mock.return_value = 
os.path.abspath("../../../conf/unix/ambari-agent.ini")
+    ambari_config_mock.return_value = self.init_ambari_config_mock()
     #testing call without command-line arguments
 
     main.main()
@@ -335,10 +346,12 @@ class TestMain(unittest.TestCase):
     self.assertTrue(data_clean_start_mock.called)
     self.assertTrue(ping_port_init_mock.called)
     self.assertTrue(ping_port_start_mock.called)
-    self.assertTrue(cleanup_mock.called)
+    if not OSCheck.get_os_family() == OSConst.WINSRV_FAMILY:
+      self.assertTrue(cleanup_mock.called)
     perform_prestart_checks_mock.reset_mock()
 
     # Testing call with --expected-hostname parameter
     options.expected_hostname = "test.hst"
     main.main()
     
perform_prestart_checks_mock.assert_called_once_with(options.expected_hostname)
+    pass
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/e39eca7e/ambari-agent/src/test/python/unitTests.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/test/python/unitTests.py 
b/ambari-agent/src/test/python/unitTests.py
index a7763be..ba8bc6e 100644
--- a/ambari-agent/src/test/python/unitTests.py
+++ b/ambari-agent/src/test/python/unitTests.py
@@ -154,9 +154,18 @@ def main():
 if __name__ == '__main__':
   import os
   import sys
-  sys.path.insert(0, 
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
-  sys.path.insert(0, 
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + 
os.sep + 'main' + os.sep + 'python')
-  sys.path.insert(0, 
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + 
os.sep + 'main' + os.sep + 'python' + os.sep + 'ambari_agent')
+
+  pwd = os.path.abspath(__file__)
+  ambari_agent_dir = 
os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(pwd))))
+  src_dir = os.path.dirname(ambari_agent_dir)
+  ambari_common_dir = os.path.join(src_dir, "ambari-common")
+
+  sys.path.insert(0, os.path.join(ambari_agent_dir, "src", "main", "python"))
+  sys.path.insert(0, os.path.join(ambari_agent_dir, "src", "main", "python", 
"ambari_agent"))
+  sys.path.insert(0, os.path.join(ambari_common_dir, "src", "main", "python"))
+  sys.path.insert(0, os.path.join(ambari_common_dir, "src", "main", "python", 
"ambari_jinja2"))
+  sys.path.insert(0, os.path.join(ambari_common_dir, "src", "test", "python"))
+
   logger = logging.getLogger()
   logger.setLevel(logging.INFO)
   formatter = logging.Formatter("[%(levelname)s] %(message)s")

Reply via email to