Skip to content

Commit

Permalink
Force runtime JDK in benchmarks
Browse files Browse the repository at this point in the history
With this commit we enforce a runtime JDK in benchmarks. This is
necessary because Rally will choose the JDK at runtime based on the
allowed / installed JDK versions. By default we stick to JDK 8 (as is).

Relates elastic/rally#518
Relates elastic#68
  • Loading branch information
danielmitterdorfer committed Jun 14, 2018
1 parent 272f693 commit b77d804
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 42 deletions.
6 changes: 6 additions & 0 deletions night_rally.sh
Expand Up @@ -37,6 +37,7 @@ MODE="nightly"
RELEASE="master"
# only needed for ad-hoc benchmarks
REVISION="latest"
RUNTIME_JDK="8"
TARGET_HOST="localhost:9200"
X_PACK=""
TRACKS_FILE=""
Expand Down Expand Up @@ -71,6 +72,10 @@ case ${i} in
REVISION="${i#*=}"
shift # past argument=value
;;
--runtime-jdk=*)
RUNTIME_JDK="${i#*=}"
shift # past argument=value
;;
--release=*)
RELEASE="${i#*=}"
shift # past argument=value
Expand Down Expand Up @@ -186,6 +191,7 @@ es-night-rally \
${NIGHT_RALLY_DRY_RUN} \
${SKIP_ANSIBLE_PARAM} \
--fixtures="${FIXTURES}" \
--runtime-jdk="${RUNTIME_JDK}" \
--revision="${REVISION}" \
--release="${RELEASE}" \
--tracks="${TRACKS_FILE}" \
Expand Down
14 changes: 10 additions & 4 deletions night_rally/night_rally.py
Expand Up @@ -342,9 +342,10 @@ class StandardParams:
"""
Extracts all parameters that are needed for all Rally invocations.
"""
def __init__(self, configuration_name, effective_start_date, user_tag):
def __init__(self, configuration_name, effective_start_date, runtime_jdk, user_tag):
self.configuration_name = configuration_name
self.effective_start_date = effective_start_date
self.runtime_jdk = runtime_jdk
self.user_tag = user_tag

def __call__(self, race_config):
Expand All @@ -358,6 +359,7 @@ def __call__(self, race_config):
"car": [race_config.car],
"user-tag": self.format_tag(additional_tags={"name": race_config.name})
}
add_if_present(params, "runtime-jdk", self.runtime_jdk)
add_if_present(params, "car-params", race_config.car_params)
add_if_present(params, "track-params", race_config.track_params)
add_if_present(params, "elasticsearch-plugins", race_config.plugins)
Expand Down Expand Up @@ -680,6 +682,10 @@ def parse_args():
"--release",
help="Specify release string to use for comparison reports",
default="master")
parser.add_argument(
"--runtime-jdk",
help="The major version of the runtime JDK to use.",
default=None)
parser.add_argument(
"--tracks",
help="Path to the tracks.json file that contains the tracks to run",
Expand Down Expand Up @@ -737,7 +743,7 @@ def main():
params.append(TelemetryParams(args.telemetry, args.telemetry_params))

if release_mode:
params.append(StandardParams(env_name, start_date, release_tag))
params.append(StandardParams(env_name, start_date, args.runtime_jdk, release_tag))
if docker_benchmark:
if x_pack:
raise RuntimeError("User specified x-pack configuration [%s] but this is not supported for Docker benchmarks." % x_pack)
Expand All @@ -749,11 +755,11 @@ def main():
command = ReleaseCommand(params, x_pack, release)
elif adhoc_mode:
logger.info("Running adhoc benchmarks for revision [%s] against %s." % (args.revision, target_hosts))
params.append(StandardParams(env_name, start_date, release_tag))
params.append(StandardParams(env_name, start_date, args.runtime_jdk, release_tag))
command = AdHocCommand(params, args.revision)
else:
logger.info("Running nightly benchmarks against %s." % target_hosts)
params.append(StandardParams(env_name, start_date, release_tag))
params.append(StandardParams(env_name, start_date, args.runtime_jdk, release_tag))
command = NightlyCommand(params, start_date)

rally_failure = run_rally(tracks, target_hosts, command, args.dry_run, args.skip_ansible)
Expand Down

0 comments on commit b77d804

Please sign in to comment.