Skip to content

Commit 04df1ff

Browse files
authored
IGNITE-20903 [ducktests] Support running on JDK 17 (#11059)
1 parent 8fc1c3b commit 04df1ff

File tree

9 files changed

+62
-201
lines changed

9 files changed

+62
-201
lines changed

Diff for: modules/ducktests/tests/certs/functions.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ function makeRoot() {
2929
rm -f "${ALIAS}.pem"
3030

3131
keytool -genkeypair -keystore "${ALIAS}.jks" -alias "${ALIAS}" -dname "${DNAME}" -ext bc:c -storepass "${PSWD}" \
32-
-keypass "${PSWD}" -storetype JKS -noprompt -v
32+
-keypass "${PSWD}" -storetype JKS -keyalg RSA -noprompt -v
3333

3434
keytool -keystore "${ALIAS}.jks" -storepass "${PSWD}" -keypass "${PSWD}" -alias "${ALIAS}" -exportcert \
3535
-rfc -file "${ALIAS}.pem" -v
@@ -50,7 +50,7 @@ function makeCA() {
5050
rm -f "${ALIAS}.pem"
5151

5252
keytool -genkeypair -keystore "${ALIAS}.jks" -alias "${ALIAS}" -dname "${DNAME}" -ext bc:c -storepass "${PSWD}" \
53-
-keypass "${PSWD}" -storetype JKS -noprompt -v
53+
-keypass "${PSWD}" -storetype JKS -keyalg RSA -noprompt -v
5454

5555
keytool -storepass "${PSWD}" -keypass "${PSWD}" -keystore "${ALIAS}.jks" -certreq -alias "${ALIAS}" \
5656
| keytool -storepass "${PSWD}" -keypass "${PSWD}" -keystore "${ROOT}.jks" -gencert -alias "${ROOT}" \

Diff for: modules/ducktests/tests/docker/Dockerfile

+2-10
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ ARG APACHE_MIRROR="https://apache-mirror.rbc.ru/pub/apache/"
4949
ARG APACHE_ARCHIVE="https://archive.apache.org/dist/"
5050

5151
# Install binary test dependencies.
52-
RUN for v in "2.7.6" "2.8.0" "2.8.1" "2.9.0" "2.9.1" "2.10.0" "2.11.0" "2.11.1" "2.12.0" "2.13.0" "2.14.0"; \
52+
RUN for v in "2.7.6" "2.15.0"; \
5353
do cd /opt; \
5454
curl -O $APACHE_ARCHIVE/ignite/$v/apache-ignite-$v-bin.zip;\
5555
unzip apache-ignite-$v-bin.zip && mv /opt/apache-ignite-$v-bin /opt/ignite-$v;\
@@ -67,14 +67,6 @@ RUN cd /opt && curl -O $APACHE_ARCHIVE/zookeeper/$ZOOKEEPER_NAME/$ZOOKEEPER_RELE
6767
&& tar xvf $ZOOKEEPER_RELEASE_ARTIFACT && rm $ZOOKEEPER_RELEASE_ARTIFACT
6868
RUN mv /opt/$ZOOKEEPER_RELEASE_NAME /opt/$ZOOKEEPER_NAME
6969

70-
# Install spark
71-
ARG SPARK_VERSION="2.3.4"
72-
ARG SPARK_NAME="spark-$SPARK_VERSION"
73-
ARG SPARK_RELEASE_NAME="spark-$SPARK_VERSION-bin-hadoop2.7"
74-
75-
RUN cd /opt && curl -O $APACHE_ARCHIVE/spark/$SPARK_NAME/$SPARK_RELEASE_NAME.tgz && tar xvf $SPARK_RELEASE_NAME.tgz && rm $SPARK_RELEASE_NAME.tgz
76-
RUN mv /opt/$SPARK_RELEASE_NAME /opt/$SPARK_NAME
77-
7870
# The version of Kibosh to use for testing.
7971
# If you update this, also update vagrant/base.sh
8072
ARG KIBOSH_VERSION="8841dd392e6fbf02986e2fb1f1ebf04df344b65a"
@@ -94,7 +86,7 @@ RUN cd /opt && curl -OL https://github.com/jiaqi/jmxterm/releases/download/v$JMX
9486
RUN useradd -ms /bin/bash ducker \
9587
&& mkdir -p /home/ducker/ \
9688
&& rsync -aiq /root/.ssh/ /home/ducker/.ssh \
97-
&& chown -R ducker /home/ducker/ /mnt/ /var/log/ \
89+
&& chown -R ducker /home/ducker/ /mnt/ /var/log/ /opt \
9890
&& echo "LANG=C.UTF-8" >> /home/ducker/.ssh/environment \
9991
&& echo "PATH=$(runuser -l ducker -c 'echo $PATH'):$JAVA_HOME/bin" >> /home/ducker/.ssh/environment \
10092
&& echo 'PATH=$PATH:'"$JAVA_HOME/bin" >> /home/ducker/.profile \

Diff for: modules/ducktests/tests/ignitetest/services/spark.py

-175
This file was deleted.

Diff for: modules/ducktests/tests/ignitetest/services/utils/ignite_aware.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@
3838
from ignitetest.services.utils.concurrent import CountDownLatch, AtomicValue
3939
from ignitetest.services.utils.ignite_spec import resolve_spec, SHARED_PREPARED_FILE
4040
from ignitetest.services.utils.jmx_utils import ignite_jmx_mixin, JmxClient
41-
from ignitetest.services.utils.jvm_utils import JvmProcessMixin
41+
from ignitetest.services.utils.jvm_utils import JvmProcessMixin, JvmVersionMixin
4242
from ignitetest.services.utils.log_utils import monitor_log
4343
from ignitetest.services.utils.path import IgnitePathAware
4444
from ignitetest.utils.enum import constructible
4545

4646

47-
class IgniteAwareService(BackgroundThreadService, IgnitePathAware, JvmProcessMixin, metaclass=ABCMeta):
47+
class IgniteAwareService(BackgroundThreadService, IgnitePathAware, JvmProcessMixin, JvmVersionMixin, metaclass=ABCMeta):
4848
"""
4949
The base class to build services aware of Ignite.
5050
"""

Diff for: modules/ducktests/tests/ignitetest/services/utils/jmx_utils.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import re
2222

2323
from ignitetest.services.utils.decorators import memoize
24+
from ignitetest.services.utils.jvm_utils import java_version, java_major_version
2425

2526

2627
def ignite_jmx_mixin(node, service):
@@ -60,13 +61,16 @@ def __init__(self, node):
6061
self.node = node
6162
self.install_root = node.install_root
6263
self.pid = node.pids[0]
64+
self.java_major = java_major_version(java_version(self.node))
6365

6466
@property
6567
def jmx_util_cmd(self):
6668
"""
6769
:return: jmxterm prepared command line invocation.
6870
"""
69-
return os.path.join(f"java -jar {self.install_root}/jmxterm.jar -v silent -n")
71+
extra_flag = "--add-exports jdk.jconsole/sun.tools.jconsole=ALL-UNNAMED" if self.java_major >= 15 else ""
72+
73+
return os.path.join(f"java {extra_flag} -jar {self.install_root}/jmxterm.jar -v silent -n")
7074

7175
@memoize
7276
def find_mbean(self, pattern, negative_pattern=None, domain='org.apache'):

Diff for: modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py

+41
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
"""
1717
This module contains JVM utilities.
1818
"""
19+
20+
from ignitetest.services.utils.decorators import memoize
21+
1922
DEFAULT_HEAP = "768M"
2023

2124
JVM_PARAMS_GC_G1 = "-XX:+UseG1GC -XX:MaxGCPauseMillis=100 " \
@@ -74,6 +77,31 @@ def merge_jvm_settings(src_settings, additionals):
7477
return listed
7578

7679

80+
def java_major_version(version):
81+
"""
82+
:param version: Full java version
83+
:return: Java major version
84+
"""
85+
if version:
86+
version = version.split('.')
87+
88+
return int(version[1]) if version[0] == '1' else int(version[0])
89+
90+
return -1
91+
92+
93+
def java_version(node):
94+
"""
95+
:param node: Ducktape cluster node
96+
:return: java version
97+
"""
98+
cmd = r"java -version 2>&1 | awk -F[\"\-] '/version/ {print $2}'"
99+
100+
raw_version = list(node.account.ssh_capture(cmd, allow_fail=False))
101+
102+
return raw_version[0].strip() if raw_version else ''
103+
104+
77105
def _to_map(params):
78106
""""""
79107
assert isinstance(params, (str, list)), "JVM params an be string or list only."
@@ -107,6 +135,7 @@ class JvmProcessMixin:
107135
"""
108136
Mixin to work with JVM processes
109137
"""
138+
110139
@staticmethod
111140
def pids(node, java_class):
112141
"""
@@ -118,3 +147,15 @@ def pids(node, java_class):
118147
cmd = "ps -C java -wwo pid,args | grep '%s' | awk -F' ' '{print $1}'" % java_class
119148

120149
return [int(pid) for pid in node.account.ssh_capture(cmd, allow_fail=True)]
150+
151+
152+
class JvmVersionMixin:
153+
"""
154+
Mixin to get java version on node.
155+
"""
156+
@memoize
157+
def java_version(self):
158+
"""
159+
:return: Full java version of service.
160+
"""
161+
return java_version(self.nodes[0])

Diff for: modules/ducktests/tests/ignitetest/tests/persistence_upgrade_test.py

+5
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from ignitetest.services.utils.control_utility import ControlUtility
2323
from ignitetest.services.utils.ignite_configuration import IgniteConfiguration, DataStorageConfiguration
2424
from ignitetest.services.utils.ignite_configuration.data_storage import DataRegionConfiguration
25+
from ignitetest.services.utils.jvm_utils import java_major_version
2526
from ignitetest.services.utils.ssl.ssl_params import is_ssl_enabled
2627
from ignitetest.utils import cluster, ignite_versions, ignore_if
2728
from ignitetest.utils.ignite_test import IgniteTest
@@ -52,6 +53,10 @@ def upgrade_test(self, versions, ignite_version):
5253
"DataLoaderAndCheckerApplication"
5354
)
5455

56+
java_version = service.java_version()
57+
if java_major_version(java_version) > 11:
58+
return f"Skipped on java {java_version}"
59+
5560
for version in versions:
5661
service.config = IgniteConfiguration(
5762
data_storage=DataStorageConfiguration(default=DataRegionConfiguration(persistence_enabled=True)),

Diff for: modules/ducktests/tests/ignitetest/tests/smoke_test.py

-10
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
from ignitetest.services.ignite import IgniteService
2121
from ignitetest.services.ignite_app import IgniteApplicationService
22-
from ignitetest.services.spark import SparkService
2322
from ignitetest.services.utils.ignite_configuration.discovery import from_ignite_cluster
2423
from ignitetest.services.utils.ignite_configuration import IgniteConfiguration
2524
from ignitetest.services.zk.zookeeper import ZookeeperService
@@ -67,15 +66,6 @@ def test_ignite_app_start_stop(self, ignite_version):
6766
app.stop()
6867
ignite.stop()
6968

70-
@cluster(num_nodes=2)
71-
def test_spark_start_stop(self):
72-
"""
73-
Test that SparkService correctly start and stop
74-
"""
75-
spark = SparkService(self.test_context, num_nodes=2)
76-
spark.start()
77-
spark.stop()
78-
7969
@cluster(num_nodes=3)
8070
def test_zk_start_stop(self):
8171
"""

Diff for: modules/ducktests/tests/ignitetest/utils/version.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,11 @@ def __repr__(self):
108108
V_2_14_0 = IgniteVersion("2.14.0")
109109
LATEST_2_14 = V_2_14_0
110110

111+
# 2.15.x versions
112+
V_2_15_0 = IgniteVersion("2.15.0")
113+
LATEST_2_15 = V_2_15_0
114+
111115
# if you updated the LATEST version
112116
# please check DEV version in 'tests/ignitetest/__init__.py'
113-
LATEST = LATEST_2_14
117+
LATEST = LATEST_2_15
114118
OLDEST = V_2_7_6

0 commit comments

Comments
 (0)