Repository: ambari Updated Branches: refs/heads/trunk 68147d53c -> f83d95df7
AMBARI-5497. Ambari-server states it has started but it actually errored. (dlysnichenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f83d95df Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f83d95df Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f83d95df Branch: refs/heads/trunk Commit: f83d95df736e83c02d5f2d4c97e2493b96b33768 Parents: 68147d5 Author: Lisnichenko Dmitro <[email protected]> Authored: Fri Apr 18 15:32:58 2014 +0300 Committer: Lisnichenko Dmitro <[email protected]> Committed: Fri Apr 18 15:35:10 2014 +0300 ---------------------------------------------------------------------- ambari-server/src/main/python/ambari-server.py | 31 +++++++++++++++----- .../src/test/python/TestAmbariServer.py | 23 ++++++++++++++- 2 files changed, 46 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/f83d95df/ambari-server/src/main/python/ambari-server.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/python/ambari-server.py b/ambari-server/src/main/python/ambari-server.py index fb8c311..f74ef29 100755 --- a/ambari-server/src/main/python/ambari-server.py +++ b/ambari-server/src/main/python/ambari-server.py @@ -2008,21 +2008,38 @@ def get_JAVA_HOME(): # +# Checks jdk path for correctness +# +def validate_jdk(jdk_path): + if jdk_path: + return os.path.exists(jdk_path) and os.path.exists( + jdk_path + os.sep + 'bin' + os.sep + 'java') + else: + return False + + +# # Finds the available JDKs. # def find_jdk(): - if get_JAVA_HOME(): - return get_JAVA_HOME() + jdkPath = get_JAVA_HOME() + if jdkPath: + if validate_jdk(jdkPath): + return jdkPath print "Looking for available JDKs at " + JDK_INSTALL_DIR jdks = glob.glob(JDK_INSTALL_DIR + os.sep + "jdk*") jdks.sort() print "Found: " + str(jdks) - count = len(jdks) - if count == 0: + if len(jdks) == 0: return - jdkPath = jdks[count - 1] - print "Selected JDK {0}".format(jdkPath) - return jdkPath + for jdkPath in jdks: + print "Trying to use JDK {0}".format(jdkPath) + if validate_jdk(jdkPath): + print "Selected JDK {0}".format(jdkPath) + return jdkPath + else: + print "JDK {0} is invalid".format(jdkPath) + return # http://git-wip-us.apache.org/repos/asf/ambari/blob/f83d95df/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 f1b52cc..56814a2 100644 --- a/ambari-server/src/test/python/TestAmbariServer.py +++ b/ambari-server/src/test/python/TestAmbariServer.py @@ -2173,10 +2173,26 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV self.assertEqual(args.database_username, "ambari-server") self.assertEqual(args.sid_or_sname, "sname") + @patch.object(os.path, "exists") + def test_validate_jdk(self, exists_mock): + exists_mock.side_effect = [False] + result = ambari_server.validate_jdk("path") + self.assertFalse(result) + + exists_mock.side_effect = [True, False] + result = ambari_server.validate_jdk("path") + self.assertFalse(result) + + exists_mock.side_effect = [True, True] + result = ambari_server.validate_jdk("path") + self.assertTrue(result) + @patch("glob.glob") @patch.object(ambari_server, "get_JAVA_HOME") - def test_find_jdk(self, get_JAVA_HOME_mock, globMock): + @patch.object(ambari_server, "validate_jdk") + def test_find_jdk(self, validate_jdk_mock, get_JAVA_HOME_mock, globMock): get_JAVA_HOME_mock.return_value = "somewhere" + validate_jdk_mock.return_value = True result = ambari_server.find_jdk() self.assertEqual("somewhere", result) @@ -2189,6 +2205,11 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV result = ambari_server.find_jdk() self.assertNotEqual(None, result) + globMock.return_value = ["one", "two"] + validate_jdk_mock.side_effect = [False, True] + result = ambari_server.find_jdk() + self.assertEqual(result, "two") + @patch("os.path.exists") @patch.object(ambari_server, "remove_file") @patch.object(ambari_server, "is_jdbc_user_changed")
