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

Reply via email to