From 9ec61bfb52e6fb51e40d22b467df4ecff83570f7 Mon Sep 17 00:00:00 2001 From: Ruchika Jha Date: Tue, 24 Feb 2026 13:47:04 +0000 Subject: [PATCH] Added the shutdown delay and shutdown timeout for the testcases to default options Closes #46337 Signed-off-by: Ruchika --- .../resources/correct-podtemplate-keycloak.yml | 2 ++ .../resources/empty-podtemplate-keycloak.yml | 2 ++ .../src/test/resources/example-keycloak.yaml | 4 +++- .../it/cli/dist/BuildCommandDistTest.java | 7 ++++++- .../extension/KeycloakDistributionDecorator.java | 3 +-- .../server/KeycloakServerConfigBuilder.java | 16 ++++++++++++++++ .../AbstractQuarkusDeployableContainer.java | 2 ++ 7 files changed, 32 insertions(+), 4 deletions(-) diff --git a/operator/src/test/resources/correct-podtemplate-keycloak.yml b/operator/src/test/resources/correct-podtemplate-keycloak.yml index 97a0eb64973..f8a8fe0d593 100644 --- a/operator/src/test/resources/correct-podtemplate-keycloak.yml +++ b/operator/src/test/resources/correct-podtemplate-keycloak.yml @@ -13,6 +13,8 @@ spec: value: postgres - name: db-password value: testpassword + - name: shutdown-delay + value: "0s" hostname: hostname: example.com unsupported: diff --git a/operator/src/test/resources/empty-podtemplate-keycloak.yml b/operator/src/test/resources/empty-podtemplate-keycloak.yml index 02571ad8edd..e93842a6b92 100644 --- a/operator/src/test/resources/empty-podtemplate-keycloak.yml +++ b/operator/src/test/resources/empty-podtemplate-keycloak.yml @@ -13,6 +13,8 @@ spec: value: postgres - name: db-password value: testpassword + - name: shutdown-delay + value: "0s" hostname: hostname: example.com unsupported: diff --git a/operator/src/test/resources/example-keycloak.yaml b/operator/src/test/resources/example-keycloak.yaml index 4a85a74e523..85f03da6f85 100644 --- a/operator/src/test/resources/example-keycloak.yaml +++ b/operator/src/test/resources/example-keycloak.yaml @@ -21,4 +21,6 @@ spec: headers: xforwarded # default nginx ingress sets x-forwarded additionalOptions: - name: metrics-enabled - value: "true" \ No newline at end of file + value: "true" + - name: shutdown-delay + value: "0s" \ No newline at end of file diff --git a/quarkus/tests/integration/src/test/java/org/keycloak/it/cli/dist/BuildCommandDistTest.java b/quarkus/tests/integration/src/test/java/org/keycloak/it/cli/dist/BuildCommandDistTest.java index 2ca5790ef7a..907b6155d5d 100644 --- a/quarkus/tests/integration/src/test/java/org/keycloak/it/cli/dist/BuildCommandDistTest.java +++ b/quarkus/tests/integration/src/test/java/org/keycloak/it/cli/dist/BuildCommandDistTest.java @@ -66,7 +66,12 @@ class BuildCommandDistTest { @Test @Launch({ "build", "--db=postgres", "--db-username=myuser", "--db-password=mypassword", "--http-enabled=true" }) void testIgnoreRuntimeOptions(CLIResult cliResult) { - cliResult.assertMessage("The following run time options were found, but will be ignored during build time: kc.db-username, kc.http-enabled, kc.db-password"); + String output = cliResult.getOutput(); + assertTrue(output.contains("The following run time options were found, but will be ignored during build time:")); + assertTrue(output.contains("kc.db-username")); + assertTrue(output.contains("kc.http-enabled")); + assertTrue(output.contains("kc.db-password")); + assertTrue(output.contains("kc.shutdown-delay")); cliResult.assertBuild(); } diff --git a/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/KeycloakDistributionDecorator.java b/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/KeycloakDistributionDecorator.java index 59049fd5d04..6ea4b0c39db 100644 --- a/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/KeycloakDistributionDecorator.java +++ b/quarkus/tests/junit5/src/main/java/org/keycloak/it/junit5/extension/KeycloakDistributionDecorator.java @@ -41,9 +41,8 @@ public class KeycloakDistributionDecorator implements KeycloakDistribution { @Override public CLIResult run(List rawArgs) { List args = new ArrayList<>(rawArgs); - args.addAll(List.of(config.defaultOptions())); - + setEnvVar("KC_SHUTDOWN_DELAY", "0s"); return delegate.run(new ServerOptions(storageConfig, databaseConfig, args)); } diff --git a/test-framework/core/src/main/java/org/keycloak/testframework/server/KeycloakServerConfigBuilder.java b/test-framework/core/src/main/java/org/keycloak/testframework/server/KeycloakServerConfigBuilder.java index d0c2322d8bb..42da79b6370 100644 --- a/test-framework/core/src/main/java/org/keycloak/testframework/server/KeycloakServerConfigBuilder.java +++ b/test-framework/core/src/main/java/org/keycloak/testframework/server/KeycloakServerConfigBuilder.java @@ -27,6 +27,8 @@ public class KeycloakServerConfigBuilder { private final Set dependencies = new HashSet<>(); private CacheType cacheType = CacheType.LOCAL; private boolean externalInfinispan = false; + private String shutdownDelay = "0s"; + private String shutdownTimeout = "1s"; private KeycloakServerConfigBuilder(String command) { this.command = command; @@ -93,6 +95,16 @@ public class KeycloakServerConfigBuilder { return this.externalInfinispan; } + public KeycloakServerConfigBuilder shutdownDelay(String shutdownDelay) { + this.shutdownDelay = shutdownDelay; + return this; + } + + public KeycloakServerConfigBuilder shutdownTimeout(String shutdownTimeout) { + this.shutdownTimeout = shutdownTimeout; + return this; + } + /** * Configure logging * @@ -288,6 +300,10 @@ public class KeycloakServerConfigBuilder { // Cache setup -> supported values: local or ispn option("cache", cacheType.name().toLowerCase()); + // Shutdown options - defaults optimised for test speed + option("shutdown-delay", shutdownDelay); + option("shutdown-timeout", shutdownTimeout); + log.build(); List args = new LinkedList<>(); diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/AbstractQuarkusDeployableContainer.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/AbstractQuarkusDeployableContainer.java index 32d461f9be5..06f4a812f9a 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/AbstractQuarkusDeployableContainer.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/AbstractQuarkusDeployableContainer.java @@ -172,10 +172,12 @@ public abstract class AbstractQuarkusDeployableContainer implements DeployableCo commands.add("--http-relative-path=/auth"); commands.add("--health-enabled=true"); // expose something to management interface to turn it on + if (suiteContext.get().isAuthServerMigrationEnabled()) { commands.add("--hostname-strict=false"); } else { // Do not set management port for older versions of Keycloak for migration tests - available since Keycloak 25 commands.add("--http-management-port=" + configuration.getManagementPort()); + commands.add("--shutdown-delay=0"); } if (suiteContext.get().getMigrationContext().isRunningMigrationTest()) {