Repository: ambari
Updated Branches:
  refs/heads/trunk 1ffff5593 -> ac875fcc5


AMBARI-5284. Unit test test_start (TestAmbariServer.TestAmbariServer) fails 
intermittently (dlysnichenko)


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

Branch: refs/heads/trunk
Commit: ac875fcc5ca17aa40d6c04d1609ca77ea8ec8a85
Parents: 1ffff55
Author: Lisnichenko Dmitro <dlysniche...@hortonworks.com>
Authored: Mon Mar 31 19:36:07 2014 +0300
Committer: Lisnichenko Dmitro <dlysniche...@hortonworks.com>
Committed: Mon Mar 31 19:36:07 2014 +0300

----------------------------------------------------------------------
 .../src/test/python/TestAmbariServer.py         | 532 +++++++++----------
 1 file changed, 266 insertions(+), 266 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/ac875fcc/ambari-server/src/test/python/TestAmbariServer.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestAmbariServer.py 
b/ambari-server/src/test/python/TestAmbariServer.py
index d97d072..d7de77f 100644
--- a/ambari-server/src/test/python/TestAmbariServer.py
+++ b/ambari-server/src/test/python/TestAmbariServer.py
@@ -2442,272 +2442,272 @@ 
MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
     self.assertEqual(None, rcode)
     self.assertTrue(setup_db_mock.called)
 
-# BUG-15593 - Commented out intermittent failure
-#  @patch.object(ambari_server, 'is_server_runing')
-#  @patch("os.chown")
-#  @patch("pwd.getpwnam")
-#  @patch.object(ambari_server, 'get_master_key_location')
-#  @patch.object(ambari_server, 'save_master_key')
-#  @patch('os.chmod', autospec=True)
-#  @patch.object(ambari_server, 'get_validated_string_input')
-#  @patch("os.environ")
-#  @patch.object(ambari_server, "get_ambari_properties")
-#  @patch("os.path.exists")
-#  @patch("__builtin__.open")
-#  @patch("subprocess.Popen")
-#  @patch.object(ambari_server, "print_info_msg")
-#  @patch.object(ambari_server, "search_file")
-#  @patch.object(ambari_server, "find_jdk")
-#  @patch.object(ambari_server, "print_error_msg")
-#  @patch.object(ambari_server, "check_postgre_up")
-#  @patch.object(ambari_server, "parse_properties_file")
-#  @patch.object(ambari_server, "read_ambari_user")
-#  @patch.object(ambari_server, "is_root")
-#  @patch.object(ambari_server, "find_jdbc_driver")
-#  @patch("getpass.getuser")
-#  @patch("os.chdir")
-#  @patch.object(ResourceFilesKeeper, "perform_housekeeping")
-#  def test_start(self, perform_housekeeping_mock, chdir_mock, getuser_mock,
-#                 find_jdbc_driver_mock, is_root_mock, read_ambari_user_mock,
-#                 parse_properties_file_mock, check_postgre_up_mock,
-#                 print_error_msg_mock, find_jdk_mock, search_file_mock,
-#                 print_info_msg_mock, popenMock, openMock, pexistsMock,
-#                 get_ambari_properties_mock, os_environ_mock,
-#                 get_validated_string_input_method, os_chmod_method,
-#                 save_master_key_method, get_master_key_location_method,
-#                 getpwnam_mock, os_chown_mock, is_server_running_mock):
-#    args = MagicMock()
-#
-#    f = MagicMock()
-#    f.readline.return_value = 42
-#    openMock.return_value = f
-#
-#    p = get_ambari_properties_mock.return_value
-#    p.get_property.return_value = 'False'
-#    search_file_mock.return_value = None
-#    is_server_running_mock.return_value = (True, 123)
-#    pw = MagicMock()
-#    pw.setattr('pw_uid', 0)
-#    pw.setattr('pw_gid', 0)
-#    getpwnam_mock.return_value = pw
-#    os_chown_mock.return_value = None
-#    # Checking "server is running"
-#    pexistsMock.return_value = True
-#    try:
-#      ambari_server.start(args)
-#      self.fail("Should fail with 'Server is running'")
-#    except FatalException:
-#      # Expected
-#      pass
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    pexistsMock.return_value = False
-#
-#    # Checking situation when ambari user is not set up
-#    read_ambari_user_mock.return_value = None
-#    try:
-#      ambari_server.start(args)
-#      self.fail("Should fail with 'Can not detect a system user for Ambari'")
-#    except FatalException as e:
-#      # Expected
-#      self.assertTrue('Unable to detect a system user for Ambari Server.' in 
e.reason)
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Checking start from non-root when current user is not the same as a
-#    # custom user
-#    read_ambari_user_mock.return_value = "dummy-user"
-#    getuser_mock.return_value = "non_custom_user"
-#    is_root_mock.return_value = False
-#    try:
-#      ambari_server.start(args)
-#      self.fail("Should fail with 'Can not start ambari-server as user...'")
-#    except FatalException as e:
-#      # Expected
-#      self.assertTrue('Unable to start Ambari Server as user' in e.reason)
-#      self.assertFalse(parse_properties_file_mock.called)
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Checking "jdk not found"
-#    is_root_mock.return_value = True
-#    find_jdk_mock.return_value = None
-#    is_server_running_mock.return_value = (False, 0)
-#
-#    try:
-#      ambari_server.start(args)
-#      self.fail("Should fail with 'No JDK found'")
-#    except FatalException as e:
-#      # Expected
-#      self.assertTrue('No JDK found' in e.reason)
-#
-#    find_jdk_mock.return_value = "somewhere"
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    ## Testing workflow under root
-#    is_root_mock.return_value = True
-#
-#    # Remote DB
-#    args.persistence_type = "remote"
-#    args.dbms = "oracle"
-#
-#    # Case when jdbc driver is not used
-#    find_jdbc_driver_mock.return_value = -1
-#    try:
-#      ambari_server.start(args)
-#      self.fail("Should fail with exception")
-#    except FatalException as e:
-#      self.assertTrue('Before starting Ambari Server' in e.reason)
-#
-#    find_jdbc_driver_mock.reset_mock()
-#    find_jdbc_driver_mock.return_value = 0
-#    try:
-#      ambari_server.start(args)
-#    except FatalException as e:
-#      # Ignored
-#      pass
-#
-#    # Test exception handling on resource files housekeeping
-#    perform_housekeeping_mock.reset_mock()
-#    perform_housekeeping_mock.side_effect = KeeperException("some_reason")
-#    try:
-#      ambari_server.start(args)
-#      self.fail("Should fail with exception")
-#    except FatalException as e:
-#      self.assertTrue('some_reason' in e.reason)
-#    self.assertTrue(perform_housekeeping_mock.called)
-#    perform_housekeeping_mock.side_effect = lambda *v, **kv : None
-#    perform_housekeeping_mock.reset_mock()
-#
-#    self.assertFalse('Unable to start PostgreSQL server' in e.reason)
-#    self.assertFalse(check_postgre_up_mock.called)
-#
-#    check_postgre_up_mock.reset_mock()
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Local DB
-#    args.persistence_type = "local"
-#
-#    # case: postgres failed to start
-#    check_postgre_up_mock.return_value = 1
-#    try:
-#      ambari_server.start(args)
-#      self.fail("Should fail with 'Unable to start PostgreSQL server'")
-#    except FatalException as e:
-#      # Expected
-#      self.assertTrue('Unable to start PostgreSQL server' in e.reason)
-#      self.assertTrue(check_postgre_up_mock.called)
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    check_postgre_up_mock.return_value = 0
-#
-#    # Case: custom user is "root"
-#    read_ambari_user_mock.return_value = "root"
-#    ambari_server.start(args)
-#    self.assertTrue(popenMock.called)
-#    popen_arg = popenMock.call_args[0][0]
-#    self.assertTrue(popen_arg[0] == "/bin/sh")
-#    self.assertTrue(perform_housekeeping_mock.called)
-#    perform_housekeeping_mock.reset_mock()
-#    popenMock.reset_mock()
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Case: custom user is  not "root"
-#    read_ambari_user_mock.return_value = "not-root-user"
-#    ambari_server.start(args)
-#    self.assertTrue(chdir_mock.called)
-#    self.assertTrue(popenMock.called)
-#    popen_arg = popenMock.call_args[0][0]
-#    self.assertTrue(popen_arg[0] == "/bin/su")
-#    self.assertTrue(perform_housekeeping_mock.called)
-#    check_postgre_up_mock.reset_mock()
-#
-#    popenMock.reset_mock()
-#    parse_properties_file_mock.reset_mock()
-#
-#    ## Testing workflow under non-root
-#    is_root_mock.return_value = False
-#    read_ambari_user_mock.return_value = "not-root-user"
-#    getuser_mock.return_value = read_ambari_user_mock.return_value
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Local DB
-#    args.persistence_type = "local"
-#
-#    ambari_server.start(args)
-#
-#    self.assertFalse(check_postgre_up_mock.called)
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Remote DB
-#    args.persistence_type = "remote"
-#
-#    ambari_server.start(args)
-#
-#    self.assertFalse(check_postgre_up_mock.called)
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Checking call
-#    ambari_server.start(args)
-#    self.assertTrue(popenMock.called)
-#    popen_arg = popenMock.call_args[0][0]
-#    self.assertTrue(popen_arg[0] == "/bin/sh")
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Test start under wrong user
-#    read_ambari_user_mock.return_value = "not-root-user"
-#    getuser_mock.return_value = "non_custom_user"
-#    try:
-#      ambari_server.start(args)
-#      self.fail("Can not start ambari-server as user non_custom_user.")
-#    except FatalException as e:
-#      # Expected
-#      self.assertTrue('Unable to start Ambari Server as user' in e.reason)
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Check environ master key is set
-#    popenMock.reset_mock()
-#    os_environ_mock.copy.return_value = {"a": "b",
-#                                         
ambari_server.SECURITY_KEY_ENV_VAR_NAME: "masterkey"}
-#    args.persistence_type = "local"
-#    read_ambari_user_mock.return_value = "root"
-#    is_root_mock.return_value = True
-#
-#    ambari_server.start(args)
-#
-#    self.assertFalse(get_validated_string_input_method.called)
-#    self.assertFalse(save_master_key_method.called)
-#    popen_arg = popenMock.call_args[1]['env']
-#    self.assertEquals(os_environ_mock.copy.return_value, popen_arg)
-#
-#    parse_properties_file_mock.reset_mock()
-#
-#    # Check environ master key is not set
-#    popenMock.reset_mock()
-#    os_environ_mock.reset_mock()
-#    p.get_property.return_value = 'True'
-#    os_environ_mock.copy.return_value = {"a": "b"}
-#    args.persistence_type = "local"
-#    read_ambari_user_mock.return_value = "root"
-#    is_root_mock.return_value = True
-#    get_validated_string_input_method.return_value = "masterkey"
-#    os_chmod_method.return_value = None
-#
-#    ambari_server.start(args)
-#
-#    self.assertTrue(get_validated_string_input_method.called)
-#    self.assertTrue(save_master_key_method.called)
-#    popen_arg = popenMock.call_args[1]['env']
-#    self.assertEquals(os_environ_mock.copy.return_value, popen_arg)
+  @patch.object(ambari_server.utils, 'locate_file')
+  @patch.object(ambari_server, 'is_server_runing')
+  @patch("os.chown")
+  @patch("pwd.getpwnam")
+  @patch.object(ambari_server, 'get_master_key_location')
+  @patch.object(ambari_server, 'save_master_key')
+  @patch('os.chmod', autospec=True)
+  @patch.object(ambari_server, 'get_validated_string_input')
+  @patch("os.environ")
+  @patch.object(ambari_server, "get_ambari_properties")
+  @patch("os.path.exists")
+  @patch("__builtin__.open")
+  @patch("subprocess.Popen")
+  @patch.object(ambari_server, "print_info_msg")
+  @patch.object(ambari_server, "search_file")
+  @patch.object(ambari_server, "find_jdk")
+  @patch.object(ambari_server, "print_error_msg")
+  @patch.object(ambari_server, "check_postgre_up")
+  @patch.object(ambari_server, "parse_properties_file")
+  @patch.object(ambari_server, "read_ambari_user")
+  @patch.object(ambari_server, "is_root")
+  @patch.object(ambari_server, "find_jdbc_driver")
+  @patch("getpass.getuser")
+  @patch("os.chdir")
+  @patch.object(ResourceFilesKeeper, "perform_housekeeping")
+  def test_start(self, perform_housekeeping_mock, chdir_mock, getuser_mock,
+                  find_jdbc_driver_mock, is_root_mock, read_ambari_user_mock,
+                  parse_properties_file_mock, check_postgre_up_mock,
+                  print_error_msg_mock, find_jdk_mock, search_file_mock,
+                  print_info_msg_mock, popenMock, openMock, pexistsMock,
+                  get_ambari_properties_mock, os_environ_mock,
+                  get_validated_string_input_method, os_chmod_method,
+                  save_master_key_method, get_master_key_location_method,
+                  getpwnam_mock, os_chown_mock, is_server_running_mock, 
locate_file_mock):
+     args = MagicMock()
+     locate_file_mock.side_effect = lambda *args: '/bin/su' if args[0] == 'su' 
else '/bin/sh'
+     f = MagicMock()
+     f.readline.return_value = 42
+     openMock.return_value = f
+
+     p = get_ambari_properties_mock.return_value
+     p.get_property.return_value = 'False'
+     search_file_mock.return_value = None
+     is_server_running_mock.return_value = (True, 123)
+     pw = MagicMock()
+     pw.setattr('pw_uid', 0)
+     pw.setattr('pw_gid', 0)
+     getpwnam_mock.return_value = pw
+     os_chown_mock.return_value = None
+     # Checking "server is running"
+     pexistsMock.return_value = True
+     try:
+       ambari_server.start(args)
+       self.fail("Should fail with 'Server is running'")
+     except FatalException:
+       # Expected
+       pass
+
+     parse_properties_file_mock.reset_mock()
+
+     pexistsMock.return_value = False
+
+     # Checking situation when ambari user is not set up
+     read_ambari_user_mock.return_value = None
+     try:
+       ambari_server.start(args)
+       self.fail("Should fail with 'Can not detect a system user for Ambari'")
+     except FatalException as e:
+       # Expected
+       self.assertTrue('Unable to detect a system user for Ambari Server.' in 
e.reason)
+
+     parse_properties_file_mock.reset_mock()
+
+     # Checking start from non-root when current user is not the same as a
+     # custom user
+     read_ambari_user_mock.return_value = "dummy-user"
+     getuser_mock.return_value = "non_custom_user"
+     is_root_mock.return_value = False
+     try:
+       ambari_server.start(args)
+       self.fail("Should fail with 'Can not start ambari-server as user...'")
+     except FatalException as e:
+       # Expected
+       self.assertTrue('Unable to start Ambari Server as user' in e.reason)
+       self.assertFalse(parse_properties_file_mock.called)
+
+     parse_properties_file_mock.reset_mock()
+
+     # Checking "jdk not found"
+     is_root_mock.return_value = True
+     find_jdk_mock.return_value = None
+     is_server_running_mock.return_value = (False, 0)
+
+     try:
+       ambari_server.start(args)
+       self.fail("Should fail with 'No JDK found'")
+     except FatalException as e:
+       # Expected
+       self.assertTrue('No JDK found' in e.reason)
+
+     find_jdk_mock.return_value = "somewhere"
+
+     parse_properties_file_mock.reset_mock()
+
+     ## Testing workflow under root
+     is_root_mock.return_value = True
+
+     # Remote DB
+     args.persistence_type = "remote"
+     args.dbms = "oracle"
+
+     # Case when jdbc driver is not used
+     find_jdbc_driver_mock.return_value = -1
+     try:
+       ambari_server.start(args)
+       self.fail("Should fail with exception")
+     except FatalException as e:
+       self.assertTrue('Before starting Ambari Server' in e.reason)
+
+     find_jdbc_driver_mock.reset_mock()
+     find_jdbc_driver_mock.return_value = 0
+     try:
+       ambari_server.start(args)
+     except FatalException as e:
+       # Ignored
+       pass
+
+     # Test exception handling on resource files housekeeping
+     perform_housekeeping_mock.reset_mock()
+     perform_housekeeping_mock.side_effect = KeeperException("some_reason")
+     try:
+       ambari_server.start(args)
+       self.fail("Should fail with exception")
+     except FatalException as e:
+       self.assertTrue('some_reason' in e.reason)
+     self.assertTrue(perform_housekeeping_mock.called)
+     perform_housekeeping_mock.side_effect = lambda *v, **kv : None
+     perform_housekeeping_mock.reset_mock()
+
+     self.assertFalse('Unable to start PostgreSQL server' in e.reason)
+     self.assertFalse(check_postgre_up_mock.called)
+
+     check_postgre_up_mock.reset_mock()
+     parse_properties_file_mock.reset_mock()
+
+     # Local DB
+     args.persistence_type = "local"
+
+     # case: postgres failed to start
+     check_postgre_up_mock.return_value = 1
+     try:
+       ambari_server.start(args)
+       self.fail("Should fail with 'Unable to start PostgreSQL server'")
+     except FatalException as e:
+       # Expected
+       self.assertTrue('Unable to start PostgreSQL server' in e.reason)
+       self.assertTrue(check_postgre_up_mock.called)
+
+     parse_properties_file_mock.reset_mock()
+
+     check_postgre_up_mock.return_value = 0
+
+     # Case: custom user is "root"
+     read_ambari_user_mock.return_value = "root"
+     ambari_server.start(args)
+     self.assertTrue(popenMock.called)
+     popen_arg = popenMock.call_args[0][0]
+     self.assertTrue(popen_arg[0] == "/bin/sh")
+     self.assertTrue(perform_housekeeping_mock.called)
+     perform_housekeeping_mock.reset_mock()
+     popenMock.reset_mock()
+
+     parse_properties_file_mock.reset_mock()
+
+     # Case: custom user is  not "root"
+     read_ambari_user_mock.return_value = "not-root-user"
+     ambari_server.start(args)
+     self.assertTrue(chdir_mock.called)
+     self.assertTrue(popenMock.called)
+     popen_arg = popenMock.call_args[0][0]
+     self.assertTrue(popen_arg[0] == "/bin/su")
+     self.assertTrue(perform_housekeeping_mock.called)
+     check_postgre_up_mock.reset_mock()
+
+     popenMock.reset_mock()
+     parse_properties_file_mock.reset_mock()
+
+     ## Testing workflow under non-root
+     is_root_mock.return_value = False
+     read_ambari_user_mock.return_value = "not-root-user"
+     getuser_mock.return_value = read_ambari_user_mock.return_value
+
+     parse_properties_file_mock.reset_mock()
+
+     # Local DB
+     args.persistence_type = "local"
+
+     ambari_server.start(args)
+
+     self.assertFalse(check_postgre_up_mock.called)
+
+     parse_properties_file_mock.reset_mock()
+
+     # Remote DB
+     args.persistence_type = "remote"
+
+     ambari_server.start(args)
+
+     self.assertFalse(check_postgre_up_mock.called)
+
+     parse_properties_file_mock.reset_mock()
+
+     # Checking call
+     ambari_server.start(args)
+     self.assertTrue(popenMock.called)
+     popen_arg = popenMock.call_args[0][0]
+     self.assertTrue(popen_arg[0] == "/bin/sh")
+
+     parse_properties_file_mock.reset_mock()
+
+     # Test start under wrong user
+     read_ambari_user_mock.return_value = "not-root-user"
+     getuser_mock.return_value = "non_custom_user"
+     try:
+       ambari_server.start(args)
+       self.fail("Can not start ambari-server as user non_custom_user.")
+     except FatalException as e:
+       # Expected
+       self.assertTrue('Unable to start Ambari Server as user' in e.reason)
+
+     parse_properties_file_mock.reset_mock()
+
+     # Check environ master key is set
+     popenMock.reset_mock()
+     os_environ_mock.copy.return_value = {"a": "b",
+                                          
ambari_server.SECURITY_KEY_ENV_VAR_NAME: "masterkey"}
+     args.persistence_type = "local"
+     read_ambari_user_mock.return_value = "root"
+     is_root_mock.return_value = True
+
+     ambari_server.start(args)
+
+     self.assertFalse(get_validated_string_input_method.called)
+     self.assertFalse(save_master_key_method.called)
+     popen_arg = popenMock.call_args[1]['env']
+     self.assertEquals(os_environ_mock.copy.return_value, popen_arg)
+
+     parse_properties_file_mock.reset_mock()
+
+     # Check environ master key is not set
+     popenMock.reset_mock()
+     os_environ_mock.reset_mock()
+     p.get_property.return_value = 'True'
+     os_environ_mock.copy.return_value = {"a": "b"}
+     args.persistence_type = "local"
+     read_ambari_user_mock.return_value = "root"
+     is_root_mock.return_value = True
+     get_validated_string_input_method.return_value = "masterkey"
+     os_chmod_method.return_value = None
+
+     ambari_server.start(args)
+
+     self.assertTrue(get_validated_string_input_method.called)
+     self.assertTrue(save_master_key_method.called)
+     popen_arg = popenMock.call_args[1]['env']
+     self.assertEquals(os_environ_mock.copy.return_value, popen_arg)
 
 
   @patch.object(ambari_server, 'is_server_runing')

Reply via email to