Skip to content

Run smoke tests on windows 2022 #2344

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,12 @@ jobs:
packages: read
strategy:
matrix:
os: [ windows-2019, ubuntu-22.04 ]
os: [ windows-2022, ubuntu-22.04 ]
suite: [ "glassfish", "jboss", "jetty", "liberty", "profiler", "tomcat", "tomee", "weblogic", "websphere", "wildfly", "other" ]
exclude:
- os: windows-2019
- os: windows-2022
suite: websphere
- os: windows-2019
- os: windows-2022
suite: profiler
fail-fast: false
steps:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,12 @@ jobs:
packages: read
strategy:
matrix:
os: [ windows-2019, ubuntu-22.04 ]
os: [ windows-2022, ubuntu-22.04 ]
suite: [ "glassfish", "jboss", "jetty", "liberty", "profiler", "tomcat", "tomee", "weblogic", "websphere", "wildfly", "other" ]
exclude:
- os: windows-2019
- os: windows-2022
suite: websphere
- os: windows-2019
- os: windows-2022
suite: profiler
fail-fast: false
steps:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,13 @@ jobs:
packages: read
strategy:
matrix:
os: [ windows-2019, ubuntu-22.04 ]
os: [ windows-2022, ubuntu-22.04 ]
suite: [ "glassfish", "jboss", "jetty", "liberty", "profiler", "tomcat", "tomee", "weblogic", "websphere", "wildfly", "other" ]
exclude:
- os: ${{ !contains(github.event.pull_request.labels.*.name, 'test windows') && 'windows-2019' || '' }}
- os: windows-2019
- os: ${{ !contains(github.event.pull_request.labels.*.name, 'test windows') && 'windows-2022' || '' }}
- os: windows-2022
suite: websphere
- os: windows-2019
- os: windows-2022
suite: profiler
fail-fast: false
steps:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ public static class Instrumentation implements TypeInstrumentation {

@Override
public ElementMatcher<TypeDescription> typeMatcher() {
return named("org.apache.tomee.catalina.ServerListener");
return named("org.apache.tomee.loader.TomcatHelper");
}

@Override
public void transform(TypeTransformer typeTransformer) {
typeTransformer.applyAdviceToMethod(
isMethod().and(named("installServerInfo")),
isMethod().and(named("setServer")),
TomeeAttributesInstrumentationModule.class.getName() + "$WebengineInitializedAdvice");
}
}
Expand Down
4 changes: 1 addition & 3 deletions smoke-tests/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ dependencies {

tasks {
test {
maxParallelForks = 2

testLogging.showStandardStreams = true

develocity.testRetry {
Expand All @@ -39,7 +37,7 @@ tasks {
"jboss" to listOf("**/JBossEapSmokeTest.*"),
"jetty" to listOf("**/JettySmokeTest.*"),
"liberty" to listOf("**/LibertySmokeTest.*"),
"profiler" to listOf("**/Profiler*"),
"profiler" to listOf("**/Profiler*", "**/SnapshotProfiler*"),
"tomcat" to listOf("**/TomcatSmokeTest.*"),
"tomee" to listOf("**/TomeeSmokeTest.*"),
"weblogic" to listOf("**/WebLogicSmokeTest.*"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ public ExpectedServerAttributes(
}
}

protected static final String OTEL_IMAGE_VERSION = "20220824.2917166903";
protected static final String OTEL_IMAGE_VERSION = "20241014.11321808438";
protected static final String OTEL_REPO_PREFIX =
"ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-servlet-";
protected static final String SPLUNK_REPO_PREFIX = "ghcr.io/signalfx/splunk-otel-";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,17 @@ public class GlassFishSmokeTest extends AppServerTest {
new ExpectedServerAttributes("GET /*", "Payara Server", "5.2020.6");
public static final ExpectedServerAttributes PAYARA21_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET /*", "Payara Server", "5.2021.8");
public static final ExpectedServerAttributes PAYARA23_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET /*", "Payara Server", "6.2023.12");

private static Stream<Arguments> supportedConfigurations() {
return configurations("payara")
.otelLinux("5.2020.6", PAYARA20_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("5.2021.8", PAYARA21_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelWindows("5.2020.6", PAYARA20_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelWindows("5.2021.8", PAYARA21_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("6.2023.12", PAYARA23_SERVER_ATTRIBUTES, VMS_ALL, "11", "17")
.otelWindows("5.2020.6", PAYARA20_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11")
.otelWindows("5.2021.8", PAYARA21_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11")
.otelWindows("6.2023.12", PAYARA23_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17")
.stream();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,26 +26,24 @@
public class JettySmokeTest extends AppServerTest {

public static final ExpectedServerAttributes JETTY9_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET", "jetty", "9.4.39.v20210325");
new ExpectedServerAttributes("GET", "jetty", "9.4.53.v20231009");
public static final ExpectedServerAttributes JETTY10_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET", "jetty", "10.0.7");
new ExpectedServerAttributes("GET", "jetty", "10.0.19");
public static final ExpectedServerAttributes JETTY11_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET", "jetty", "11.0.7");
new ExpectedServerAttributes("GET", "jetty", "11.0.19");
public static final ExpectedServerAttributes JETTY12_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET", "jetty", "12.0.6");

private static Stream<Arguments> supportedConfigurations() {
return configurations("jetty")
.otelLinux("9.4.39", JETTY9_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17")
.otelLinux("9.4.39", JETTY9_SERVER_ATTRIBUTES, VMS_OPENJ9, "8", "11", "16")
.otelLinux("10.0.7", JETTY10_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17")
.otelLinux("10.0.7", JETTY10_SERVER_ATTRIBUTES, VMS_OPENJ9, "11", "16")
.otelLinux("11.0.7", JETTY11_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17")
.otelLinux("11.0.7", JETTY11_SERVER_ATTRIBUTES, VMS_OPENJ9, "11", "16")
.otelWindows("9.4.39", JETTY9_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17")
.otelWindows("9.4.39", JETTY9_SERVER_ATTRIBUTES, VMS_OPENJ9, "8", "11", "16")
.otelWindows("10.0.7", JETTY10_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17")
.otelWindows("10.0.7", JETTY10_SERVER_ATTRIBUTES, VMS_OPENJ9, "11", "16")
.otelWindows("11.0.7", JETTY11_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17")
.otelWindows("11.0.7", JETTY11_SERVER_ATTRIBUTES, VMS_OPENJ9, "11", "16")
.otelLinux("9.4.53", JETTY9_SERVER_ATTRIBUTES, VMS_ALL, "8", "11", "17", "21")
.otelLinux("10.0.19", JETTY10_SERVER_ATTRIBUTES, VMS_ALL, "11", "17", "21")
.otelLinux("11.0.19", JETTY11_SERVER_ATTRIBUTES, VMS_ALL, "11", "17", "21")
.otelLinux("12.0.6", JETTY12_SERVER_ATTRIBUTES, VMS_ALL, "17", "21")
.otelWindows("9.4.53", JETTY9_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17", "21")
.otelWindows("10.0.19", JETTY10_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17", "21")
.otelWindows("11.0.19", JETTY11_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17", "21")
.otelWindows("12.0.6", JETTY12_SERVER_ATTRIBUTES, VMS_HOTSPOT, "17", "21")
.stream();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,22 @@ public class LibertySmokeTest extends AppServerTest {
public static final ExpectedServerAttributes LIBERTY20_SERVER_ATTRIBUTES =
new LibertyAttributes("20.0.0.12");
public static final ExpectedServerAttributes LIBERTY21_SERVER_ATTRIBUTES =
new LibertyAttributes("21.0.0.10");
new LibertyAttributes("21.0.0.12");
public static final ExpectedServerAttributes LIBERTY22_SERVER_ATTRIBUTES =
new LibertyAttributes("22.0.0.12");
public static final ExpectedServerAttributes LIBERTY23_SERVER_ATTRIBUTES =
new LibertyAttributes("23.0.0.12");

private static Stream<Arguments> supportedConfigurations() {
return configurations("liberty")
.otelLinux("20.0.0.12", LIBERTY20_SERVER_ATTRIBUTES, VMS_ALL, "8", "11", "16")
.otelLinux("21.0.0.10", LIBERTY21_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17")
.otelLinux("21.0.0.10", LIBERTY21_SERVER_ATTRIBUTES, VMS_OPENJ9, "8", "11", "16")
.otelWindows("20.0.0.12", LIBERTY20_SERVER_ATTRIBUTES, VMS_ALL, "8", "11", "16")
.otelWindows("21.0.0.10", LIBERTY21_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17")
.otelWindows("21.0.0.10", LIBERTY21_SERVER_ATTRIBUTES, VMS_OPENJ9, "8", "11", "16")
.otelLinux("20.0.0.12", LIBERTY20_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("21.0.0.12", LIBERTY21_SERVER_ATTRIBUTES, VMS_ALL, "8", "11", "17")
.otelLinux("22.0.0.12", LIBERTY22_SERVER_ATTRIBUTES, VMS_ALL, "8", "11", "17")
.otelLinux("23.0.0.12", LIBERTY23_SERVER_ATTRIBUTES, VMS_ALL, "8", "11", "17")
.otelWindows("20.0.0.12", LIBERTY20_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11")
.otelWindows("21.0.0.12", LIBERTY21_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17")
.otelWindows("22.0.0.12", LIBERTY22_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17")
.otelWindows("23.0.0.12", LIBERTY23_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17")
.stream();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,24 +28,23 @@ public class TomcatSmokeTest extends AppServerTest {
public static final ExpectedServerAttributes TOMCAT7_SERVER_ATTRIBUTES =
new TomcatAttributes("7.0.109.0");
public static final ExpectedServerAttributes TOMCAT8_SERVER_ATTRIBUTES =
new TomcatAttributes("8.5.72.0");
new TomcatAttributes("8.5.98.0");
public static final ExpectedServerAttributes TOMCAT9_SERVER_ATTRIBUTES =
new TomcatAttributes("9.0.54.0");
new TomcatAttributes("9.0.85.0");
public static final ExpectedServerAttributes TOMCAT10_SERVER_ATTRIBUTES =
new TomcatAttributes("10.0.12.0");
new TomcatAttributes("10.1.18.0");

private static Stream<Arguments> supportedConfigurations() {
return configurations("tomcat")
.otelLinux("7.0.109", TOMCAT7_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8")
.otelLinux("8.5.72", TOMCAT8_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("9.0.54", TOMCAT9_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11")
.otelLinux("10.0.12", TOMCAT10_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17")
.otelLinux("10.0.12", TOMCAT10_SERVER_ATTRIBUTES, VMS_OPENJ9, "11")
.otelWindows("7.0.109", TOMCAT7_SERVER_ATTRIBUTES, VMS_ALL, "8")
.otelWindows("8.5.72", TOMCAT8_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelWindows("9.0.54", TOMCAT9_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelWindows("10.0.12", TOMCAT10_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17")
.otelWindows("10.0.12", TOMCAT10_SERVER_ATTRIBUTES, VMS_OPENJ9, "11")
.otelLinux("8.5.98", TOMCAT8_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("9.0.85", TOMCAT9_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11")
.otelLinux("10.1.18", TOMCAT10_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17", "21")
.otelLinux("10.1.18", TOMCAT10_SERVER_ATTRIBUTES, VMS_OPENJ9, "11")
.otelWindows("7.0.109", TOMCAT7_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8")
.otelWindows("8.5.98", TOMCAT8_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11")
.otelWindows("9.0.85", TOMCAT9_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11")
.otelWindows("10.1.18", TOMCAT10_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17", "21")
.stream();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ public class TomeeSmokeTest extends AppServerTest {
public static final ExpectedServerAttributes TOMEE7_SERVER_ATTRIBUTES =
new TomeeAttributes("7.0.9");
public static final ExpectedServerAttributes TOMEE8_SERVER_ATTRIBUTES =
new TomeeAttributes("8.0.8");
new TomeeAttributes("8.0.16");

private static Stream<Arguments> supportedConfigurations() {
return configurations("tomee")
.otelLinux("7.0.9", TOMEE7_SERVER_ATTRIBUTES, VMS_ALL, "8")
.otelLinux("8.0.8", TOMEE8_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelWindows("7.0.9", TOMEE7_SERVER_ATTRIBUTES, VMS_ALL, "8")
.otelWindows("8.0.8", TOMEE8_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("8.0.16", TOMEE8_SERVER_ATTRIBUTES, VMS_ALL, "8", "11", "17", "21")
.otelWindows("7.0.9", TOMEE7_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8")
.otelWindows("8.0.16", TOMEE8_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17", "21")
.stream();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@
public class WebSphereSmokeTest extends AppServerTest {

public static final ExpectedServerAttributes WEBSPHERE8_SERVER_ATTRIBUTES =
new WebSphereAttributes("8.5.5.19");
new WebSphereAttributes("8.5.5.22");
public static final ExpectedServerAttributes WEBSPHERE9_SERVER_ATTRIBUTES =
new WebSphereAttributes("9.0.5.9");
new WebSphereAttributes("9.0.5.14");

private static Stream<Arguments> supportedConfigurations() {
return configurations("websphere")
.otelLinux("8.5.5.19", WEBSPHERE8_SERVER_ATTRIBUTES, VMS_OPENJ9, "8")
.otelLinux("9.0.5.9", WEBSPHERE9_SERVER_ATTRIBUTES, VMS_OPENJ9, "8")
.otelLinux("8.5.5.22", WEBSPHERE8_SERVER_ATTRIBUTES, VMS_OPENJ9, "8")
.otelLinux("9.0.5.14", WEBSPHERE9_SERVER_ATTRIBUTES, VMS_OPENJ9, "8")
.stream();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,20 @@ public class WildFlySmokeTest extends AppServerTest {
new ExpectedServerAttributes("GET", "WildFly Full", "17.0.1.Final");
public static final ExpectedServerAttributes WILDFLY_21_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET", "WildFly Full", "21.0.0.Final");
public static final ExpectedServerAttributes WILDFLY_25_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET", "WildFly Full", "25.0.1.Final");
public static final ExpectedServerAttributes WILDFLY_28_SERVER_ATTRIBUTES =
new ExpectedServerAttributes("GET", "WildFly Full", "28.0.1.Final");

private static Stream<Arguments> supportedConfigurations() {
return configurations("wildfly")
.otelLinux("13.0.0.Final", WILDFLY_13_SERVER_ATTRIBUTES, VMS_ALL, "8")
.otelLinux("17.0.1.Final", WILDFLY_17_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("21.0.0.Final", WILDFLY_21_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("25.0.1.Final", WILDFLY_25_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelWindows("13.0.0.Final", WILDFLY_13_SERVER_ATTRIBUTES, VMS_ALL, "8")
.otelWindows("17.0.1.Final", WILDFLY_17_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelWindows("21.0.0.Final", WILDFLY_21_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelWindows("25.0.1.Final", WILDFLY_25_SERVER_ATTRIBUTES, VMS_ALL, "8", "11")
.otelLinux("21.0.0.Final", WILDFLY_21_SERVER_ATTRIBUTES, VMS_ALL, "8", "11", "17", "21")
.otelLinux("28.0.1.Final", WILDFLY_28_SERVER_ATTRIBUTES, VMS_ALL, "11", "17", "21")
.otelWindows("13.0.0.Final", WILDFLY_13_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8")
.otelWindows("17.0.1.Final", WILDFLY_17_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11")
.otelWindows(
"21.0.0.Final", WILDFLY_21_SERVER_ATTRIBUTES, VMS_HOTSPOT, "8", "11", "17", "21")
.otelWindows("28.0.1.Final", WILDFLY_28_SERVER_ATTRIBUTES, VMS_HOTSPOT, "11", "17", "21")
.stream();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@ protected Map<String, String> getAgentEnvironment(
// while modern JVMs understand linux container memory limits, they do not understand windows
// container memory limits yet, so we need to explicitly set max heap in order to prevent the
// JVM from taking too much memory and hitting the windows container memory limit
environment.put(jvmArgsEnvVarName, "-Xmx512m -javaagent:/" + TARGET_AGENT_FILENAME);
environment.put(
jvmArgsEnvVarName,
"-Xmx512m -javaagent:/"
+ TARGET_AGENT_FILENAME
// Liberty20Jdk11, Payara6Jdk11 and Payara6Jdk17 fail with
// java.util.zip.ZipException: Invalid CEN header (invalid zip64 extra data field size)
+ " -Djdk.util.zip.disableZip64ExtraFieldValidation=true");
environment.put("OTEL_BSP_MAX_EXPORT_BATCH_SIZE", "1");
environment.put("OTEL_BSP_SCHEDULE_DELAY", "10ms");
environment.put(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void startEnvironment() {
backend =
new GenericContainer<>(
DockerImageName.parse(
"ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-fake-backend:20220411.2147767274"))
"ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-fake-backend:20221127.3559314891"))
.withExposedPorts(BACKEND_PORT)
.withEnv("JAVA_TOOL_OPTIONS", "-Xmx128m")
.waitingFor(Wait.forHttp("/health").forPort(BACKEND_PORT))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public void startEnvironment() {
.getId();

String backendImageName =
"ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-fake-backend-windows:20220411.2147767274";
"ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-fake-backend-windows:20221127.3559314891";

if (!imageExists(backendImageName)) {
pullImage(backendImageName);
Expand Down Expand Up @@ -125,6 +125,7 @@ public void startEnvironment() {
pullImage(collectorImageName);
}

logger.info("Starting collector");
collector =
createAndStartContainer(
collectorImageName,
Expand Down Expand Up @@ -152,6 +153,7 @@ public void startEnvironment() {
},
new PortWaiter(COLLECTOR_PORT, Duration.ofMinutes(1)),
true);
logger.info("Started collector");
}

@Override
Expand Down Expand Up @@ -323,7 +325,10 @@ private void pullImage(String imageName) {
logger.info("Pulling {}", imageName);

try {
client.pullImageCmd(imageName).exec(new PullImageResultCallback()).awaitCompletion();
client
.pullImageCmd(imageName)
.exec(new PullImageResultCallback())
.awaitCompletion(10, TimeUnit.MINUTES);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
Expand Down