def test_resolve_path_for_one_version_no_matching_version(self, getenv): # JAVA8_HOME, JAVA_HOME getenv.side_effect = [None, "/opt/jdks/jdk/1.7"] with self.assertRaisesRegex(expected_exception=exceptions.SystemSetupError, expected_regex="JAVA_HOME points to JDK 7 but it should point to JDK 8."): jvm.resolve_path(majors=8, sysprop_reader=self.path_based_prop_version_reader)
def test_resolve_path_for_one_version_no_env_vars_defined(self, getenv): getenv.return_value = None with self.assertRaisesRegex( expected_exception=exceptions.SystemSetupError, expected_regex= "Neither JAVA8_HOME nor JAVA_HOME point to a JDK 8 installation." ): jvm.resolve_path( majors=8, sysprop_reader=self.path_based_prop_version_reader)
def test_resolve_path_for_one_version_via_java_x_home(self, getenv): # JAVA8_HOME, JAVA_HOME getenv.side_effect = ["/opt/jdks/jdk/1.8", None] major, resolved_path = jvm.resolve_path(majors=8, sysprop_reader=self.path_based_prop_version_reader) self.assertEqual(8, major) self.assertEqual("/opt/jdks/jdk/1.8", resolved_path)
def java_home(car_runtime_jdks, cfg): def determine_runtime_jdks(): override_runtime_jdk = cfg.opts("mechanic", "runtime.jdk") if override_runtime_jdk: return [override_runtime_jdk] else: return allowed_runtime_jdks logger = logging.getLogger(__name__) try: allowed_runtime_jdks = [int(v) for v in car_runtime_jdks.split(",")] except ValueError: raise exceptions.SystemSetupError( "Car config key \"runtime.jdk\" is invalid: \"{}\" (must be int)". format(car_runtime_jdks)) runtime_jdk_versions = determine_runtime_jdks() if runtime_jdk_versions[0] == "bundled": logger.info("Using JDK bundled with Elasticsearch.") # assume that the bundled JDK is the highest available; the path is irrelevant return allowed_runtime_jdks[0], None else: logger.info("Allowed JDK versions are %s.", runtime_jdk_versions) major, java_home = jvm.resolve_path(runtime_jdk_versions) logger.info("Detected JDK with major version [%s] in [%s].", major, java_home) return major, java_home
def _resolve_java_home(self, car): runtime_jdk_versions = self._determine_runtime_jdks(car) self.logger.info("Allowed JDK versions are %s.", runtime_jdk_versions) major, java_home = jvm.resolve_path(runtime_jdk_versions) self.logger.info("Detected JDK with major version [%s] in [%s].", major, java_home) return major, java_home
def _java_home(car): build_jdk = car.mandatory_var("build.jdk") try: _, path = jvm.resolve_path(int(build_jdk)) return path except ValueError: raise exceptions.SystemSetupError("Car config key \"build.jdk\" is invalid: \"{}\" (must be int)".format(build_jdk))
def java_home(car_runtime_jdks, specified_runtime_jdk=None, provides_bundled_jdk=False): def determine_runtime_jdks(): if specified_runtime_jdk: return [specified_runtime_jdk] else: return allowed_runtime_jdks logger = logging.getLogger(__name__) try: allowed_runtime_jdks = [int(v) for v in car_runtime_jdks.split(",")] except ValueError: raise exceptions.SystemSetupError( 'Car config key "runtime.jdk" is invalid: "{}" (must be int)'. format(car_runtime_jdks)) runtime_jdk_versions = determine_runtime_jdks() if runtime_jdk_versions[0] == "bundled": if not provides_bundled_jdk: raise exceptions.SystemSetupError( "This Elasticsearch version does not contain a bundled JDK. Please specify a different runtime JDK." ) logger.info("Using JDK bundled with Elasticsearch.") # assume that the bundled JDK is the highest available; the path is irrelevant return allowed_runtime_jdks[0], None else: logger.info("Allowed JDK versions are %s.", runtime_jdk_versions) major, java_home = jvm.resolve_path(runtime_jdk_versions) logger.info("Detected JDK with major version [%s] in [%s].", major, java_home) return major, java_home
def test_resolve_path_for_one_version_via_java_home(self, getenv): # JAVA8_HOME, JAVA_HOME getenv.side_effect = [None, "/opt/jdks/jdk/1.8"] major, resolved_path = jvm.resolve_path( majors=8, sysprop_reader=self.path_based_prop_version_reader) assert major == 8 assert resolved_path == "/opt/jdks/jdk/1.8"
def java_home(car_runtime_jdks, cfg): def determine_runtime_jdks(): override_runtime_jdk = cfg.opts("mechanic", "runtime.jdk") if override_runtime_jdk: return [override_runtime_jdk] else: try: return [int(v) for v in car_runtime_jdks.split(",")] except ValueError: raise exceptions.SystemSetupError( "Car config key \"runtime.jdk\" is invalid: \"{}\" (must be int)" .format(car_runtime_jdks)) logger = logging.getLogger(__name__) runtime_jdk_versions = determine_runtime_jdks() logger.info("Allowed JDK versions are %s.", runtime_jdk_versions) major, java_home = jvm.resolve_path(runtime_jdk_versions) logger.info("Detected JDK with major version [%s] in [%s].", major, java_home) return major, java_home
def test_resolve_path_for_multiple_versions(self, getenv): getenv.side_effect = [ # JAVA_HOME None, # JAVA11_HOME None, # JAVA_HOME None, # JAVA10_HOME, None, # JAVA_HOME None, # JAVA9_HOME "/opt/jdks/jdk/9", # JAVA_HOME None, # JAVA8_HOME "/opt/jdks/jdk/1.8", ] major, resolved_path = jvm.resolve_path(majors=[11, 10, 9, 8], sysprop_reader=self.path_based_prop_version_reader) self.assertEqual(9, major) self.assertEqual("/opt/jdks/jdk/9", resolved_path)
def java_home(self): if not self._java_home: _, self._java_home = jvm.resolve_path(self.build_jdk) return self._java_home