Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
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))
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
    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"
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 def java_home(self):
     if not self._java_home:
         _, self._java_home = jvm.resolve_path(self.build_jdk)
     return self._java_home