From b832faf0c7982af4ad6cf776fb153614b5578383 Mon Sep 17 00:00:00 2001 From: Shwetha GS <sshivalingamurthy@hortonworks.com> Date: Tue, 21 Jul 2015 13:12:21 +0530 Subject: [PATCH] ATLAS-56 atlas_config.py should give an informative error if jar or java binaries can't be found (dossett@gmail.com via shwethags) --- release-log.txt | 1 + src/bin/atlas_config.py | 6 ++++++ src/test/python/scripts/TestMetadata.py | 23 +++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/release-log.txt b/release-log.txt index 912632e..d655478 100644 --- a/release-log.txt +++ b/release-log.txt @@ -8,6 +8,7 @@ ATLAS-54 Rename configs in hive hook (shwethags) ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags) ALL CHANGES: +ATLAS-56 atlas_config.py should give an informative error if jar or java binaries can't be found (dossett@gmail.com via shwethags) ATLAS-45 Entity submit fails (suma.shivaprasad via shwethags) ATLAS-46 Different data directory with restart (shwethags) ATLAS-81 atlas debian packaing fails in maven build (vijay_k via shwethags) diff --git a/src/bin/atlas_config.py b/src/bin/atlas_config.py index 8a1f83d..a3a23ef 100755 --- a/src/bin/atlas_config.py +++ b/src/bin/atlas_config.py @@ -116,6 +116,9 @@ def java(classname, args, classpath, jvm_opts_list, logdir=None): else: prg = which("java") + if prg is None: + raise EnvironmentError('The java binary could not be found in your path or JAVA_HOME') + commandline = [prg] commandline.extend(jvm_opts_list) commandline.append("-classpath") @@ -131,6 +134,9 @@ def jar(path): else: prg = which("jar") + if prg is None: + raise EnvironmentError('The jar binary could not be found in your path or JAVA_HOME') + commandline = [prg] commandline.append("-xf") commandline.append(path) diff --git a/src/test/python/scripts/TestMetadata.py b/src/test/python/scripts/TestMetadata.py index d4b0457..9ca346d 100644 --- a/src/test/python/scripts/TestMetadata.py +++ b/src/test/python/scripts/TestMetadata.py @@ -19,6 +19,7 @@ limitations under the License. ''' import sys +from os import environ from mock import patch import unittest import logging @@ -59,6 +60,28 @@ class TestMetadata(unittest.TestCase): ['-Datlas.log.dir=metadata_home/logs', '-Datlas.log.file=application.log', '-Datlas.home=metadata_home', '-Duser.dir=metadata_home', '-Datlas.conf=metadata_home/conf', '-Xmx1024m'], 'metadata_home/logs') pass + def test_jar_java_lookups_fail(self): + java_home = environ['JAVA_HOME'] + del environ['JAVA_HOME'] + orig_path = environ['PATH'] + environ['PATH'] = "/dev/null" + + self.assertRaises(EnvironmentError, mc.jar, "foo") + self.assertRaises(EnvironmentError, mc.java, "empty", "empty", "empty", "empty") + + environ['JAVA_HOME'] = java_home + environ['PATH'] = orig_path + + @patch.object(mc, "runProcess") + @patch.object(mc, "which", return_value="foo") + def test_jar_java_lookups_succeed_from_path(self, which_mock, runProcess_mock): + java_home = environ['JAVA_HOME'] + del environ['JAVA_HOME'] + + mc.jar("foo") + mc.java("empty", "empty", "empty", "empty") + + environ['JAVA_HOME'] = java_home if __name__ == "__main__": logging.basicConfig(format='%(asctime)s %(message)s', level=logging.DEBUG) -- libgit2 0.27.1