From b58d1766ec26dbb1bf8a6f1edb4125ebff472f31 Mon Sep 17 00:00:00 2001 From: Arun Venmany Date: Mon, 4 May 2026 12:42:28 +0530 Subject: [PATCH 1/3] adding ltpa_keys_password to common-server-parameters.md and merge server env logic --- docs/common-server-parameters.md | 2 +- .../maven/test/app/MergeServerEnvTest.java | 7 +- .../src/it/merge-server-env-ltpa-it/pom.xml | 181 ++++++++++++++++++ .../test/app/MergeServerEnvLtpaTest.java | 164 ++++++++++++++++ .../src/test/resources/configDir/server.env | 3 + .../src/test/resources/server.env | 2 + .../maven/test/app/MergeServerEnvTest.java | 7 +- 7 files changed, 361 insertions(+), 5 deletions(-) create mode 100644 liberty-maven-plugin/src/it/merge-server-env-ltpa-it/pom.xml create mode 100644 liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvLtpaTest.java create mode 100644 liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/configDir/server.env create mode 100644 liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/server.env diff --git a/docs/common-server-parameters.md b/docs/common-server-parameters.md index 7c6175070..5f0c4eee2 100644 --- a/docs/common-server-parameters.md +++ b/docs/common-server-parameters.md @@ -139,7 +139,7 @@ Starting with the 3.1 release of the liberty-maven-plugin, support is added to s If Liberty configuration is specified with Maven properties, the above indicated files are created in the target Liberty server. By default there is no merging behavior for the Maven properties with files located in the `configDirectory` or the specific configuration file parameters such as `bootstrapPropertiesFile`, `jvmOptionsFile` and `serverEnvFile`. However, the `liberty.env.{var}` Maven properties can be merged with other configured `server.env` files by setting the `mergeServerEnv` parameter to `true`. -As a special case when `mergeServerEnv` is `false`, an existing `keystore_password` property in the default generated `server.env` file in the target server will be merged in if there is no `serverEnvFile` configured nor `server.env` file located in the `configDirectory`, and the `keystore_password` env var is not defined as a Maven property. +As a special case when `mergeServerEnv` is `false`, existing `keystore_password` and `ltpa_keys_password` properties in the default generated `server.env` file in the target server will be merged in if there is no `serverEnvFile` configured nor `server.env` file located in the `configDirectory`, and these env vars are not defined as Maven properties. Note that properties specified with `-D` on the command line are also analyzed for the property name formats listed above and take precedence over Maven properties specified in the pom.xml. diff --git a/liberty-maven-plugin/src/it/merge-server-env-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvTest.java b/liberty-maven-plugin/src/it/merge-server-env-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvTest.java index 21226c0fe..4f445683d 100644 --- a/liberty-maven-plugin/src/it/merge-server-env-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvTest.java +++ b/liberty-maven-plugin/src/it/merge-server-env-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvTest.java @@ -32,6 +32,7 @@ public void testServerEnvFileExists() throws Exception { # default server.env keystore_password=sfKRrA1ioLdtIFQC9bEfkua + ltpa_keys_password= # Configured server.env CONFIG_SERVER_ENV=TEST @@ -47,6 +48,7 @@ public void testServerEnvFileExists() throws Exception { # Merged server.env # Generated by liberty-maven-plugin keystore_password=sfKRrA1ioLdtIFQC9bEfkua + ltpa_keys_password= CONFIG_SERVER_ENV=TEST ConfigDir=TEST TEST_PROP_3=blue @@ -78,9 +80,10 @@ public void check_server_env_contents() throws Exception { // The contents of the default server.env can change over time. // After 20.0.0.3, for example, the WLP_SKIP_MAXPERMSIZE was removed. - // Just confirm the keystore_password is present to prove the default server.env was merged with the plugin config. - Assert.assertTrue("Number of env properties should be >= 7, but is "+serverEnvContents.size(), serverEnvContents.size() >= 7); + // Just confirm the keystore_password and ltpa_keys_password are present to prove the default server.env was merged with the plugin config. + Assert.assertTrue("Number of env properties should be >= 8, but is "+serverEnvContents.size(), serverEnvContents.size() >= 8); Assert.assertTrue("keystore_password mapping found", serverEnvContents.containsKey("keystore_password")); + Assert.assertTrue("ltpa_keys_password mapping found", serverEnvContents.containsKey("ltpa_keys_password")); Assert.assertTrue("ConfigDir=TEST mapping found", serverEnvContents.get("ConfigDir").equals("TEST")); Assert.assertTrue("CONFIG_SERVER_ENV=TEST mapping found", serverEnvContents.get("CONFIG_SERVER_ENV").equals("TEST")); Assert.assertTrue("TEST_PROP_3=blue", serverEnvContents.get("TEST_PROP_3").equals("blue")); diff --git a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/pom.xml b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/pom.xml new file mode 100644 index 000000000..9815a5202 --- /dev/null +++ b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/pom.xml @@ -0,0 +1,181 @@ + + + 4.0.0 + + + io.openliberty.tools.it + tests + 1.0-SNAPSHOT + + + merge-server-env-ltpa-it + war + + + + commons-logging + commons-logging + 1.0.4 + test + + + junit + junit + 4.13.1 + test + + + + + customValue + + + + + + + org.apache.maven.plugins + maven-war-plugin + 3.4.0 + + + org.apache.maven.plugins + maven-failsafe-plugin + 3.1.2 + + + org.apache.maven.plugins + maven-surefire-plugin + 3.1.2 + + + + + + maven-war-plugin + + false + + + + io.openliberty.tools + liberty-maven-plugin + @pom.version@ + true + + true + test + project + false + true + src/test/resources/server.env + src/test/resources/configDir + + + + install-liberty + package + + install-server + + + + create-liberty-server + package + + create + + + + install-artifact + package + + deploy + + + true + + + + start-liberty-server + pre-integration-test + + install-feature + start + + + true + 40 + + + + check-liberty-server + pre-integration-test + + status + + + + stop-liberty-server + post-integration-test + + stop + + + + clean-server + post-integration-test + + clean + + + true + true + false + false + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + + true + once + 300 + -enableassertions + ${project.build.directory} + + **/*MergeServerEnvLtpaTest.java + + + + + integration-test + + integration-test + + + + verify + verify + + verify + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + + + diff --git a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvLtpaTest.java b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvLtpaTest.java new file mode 100644 index 000000000..40bbf5f2f --- /dev/null +++ b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvLtpaTest.java @@ -0,0 +1,164 @@ +package net.wasdev.wlp.maven.test.app; + +import static org.junit.Assert.*; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +import org.junit.Test; +import org.junit.Assert; + +public class MergeServerEnvLtpaTest { + + @Test + public void testServerEnvFileExists() throws Exception { + File f1 = new File("liberty/wlp/usr/servers/test", "server.env"); + assertTrue(f1.getCanonicalFile() + " doesn't exist", f1.exists()); + } + + /** + * Test the complete merge scenario with ltpa_keys_password. + * + * Merge order and expected values: + * 1. Default server.env: keystore_password=, ltpa_keys_password= + * 2. configDir/server.env: TEST_PROP_2=fromConfigDir, ltpa_keys_password=configDirLtpaPassword (overrides default) + * 3. serverEnvFile: TEST_PROP_1=fromServerEnvFile, ltpa_keys_password=myLtpaPassword123 (overrides configDir) + * 4. pom.xml: CUSTOM_PROP=customValue (highest priority) + * + * Final expected values: + * - keystore_password: + * - ltpa_keys_password: myLtpaPassword123 (from serverEnvFile, highest priority for this property) + * - TEST_PROP_1: fromServerEnvFile + * - TEST_PROP_2: fromConfigDir + * - CUSTOM_PROP: customValue + */ + @Test + public void testLtpaKeysPasswordMerging() throws Exception { + File serverEnv = new File("liberty/wlp/usr/servers/test", "server.env"); + try (Scanner s = new Scanner(serverEnv)) { + Map serverEnvContents = new HashMap(); + boolean commentFound = false; + + while (s.hasNextLine()) { + String line = s.nextLine(); + // Ignore comment lines + if (!line.startsWith("#") && !line.trim().isEmpty()) { + String[] keyValuePair = line.split("=", 2); + if (keyValuePair.length == 2) { + String key = keyValuePair[0].trim(); + String value = keyValuePair[1].trim(); + serverEnvContents.put(key, value); + } + } else if (line.startsWith("#")) { + if (line.contains("liberty-maven-plugin")) { + commentFound = true; + } + } + } + + // Verify the file was generated by liberty-maven-plugin + Assert.assertTrue("Expected 'Generated by liberty-maven-plugin' comment not found", commentFound); + + // Verify keystore_password from default server.env is preserved + Assert.assertTrue("keystore_password should be present from default server.env", + serverEnvContents.containsKey("keystore_password")); + + // Verify ltpa_keys_password is present and has the correct value from serverEnvFile + Assert.assertTrue("ltpa_keys_password should be present", + serverEnvContents.containsKey("ltpa_keys_password")); + Assert.assertEquals("ltpa_keys_password should have value from serverEnvFile (highest priority)", + "myLtpaPassword123", serverEnvContents.get("ltpa_keys_password")); + + // Verify other merged properties + Assert.assertTrue("TEST_PROP_1 should be present from serverEnvFile", + serverEnvContents.containsKey("TEST_PROP_1")); + Assert.assertEquals("TEST_PROP_1 should have value from serverEnvFile", + "fromServerEnvFile", serverEnvContents.get("TEST_PROP_1")); + + Assert.assertTrue("TEST_PROP_2 should be present from configDir", + serverEnvContents.containsKey("TEST_PROP_2")); + Assert.assertEquals("TEST_PROP_2 should have value from configDir", + "fromConfigDir", serverEnvContents.get("TEST_PROP_2")); + + Assert.assertTrue("CUSTOM_PROP should be present from pom.xml", + serverEnvContents.containsKey("CUSTOM_PROP")); + Assert.assertEquals("CUSTOM_PROP should have value from pom.xml", + "customValue", serverEnvContents.get("CUSTOM_PROP")); + + // Verify minimum number of properties (should have at least the ones we explicitly set plus defaults) + Assert.assertTrue("Number of env properties should be >= 5, but is " + serverEnvContents.size(), + serverEnvContents.size() >= 5); + } + } + + /** + * Test that both special properties (keystore_password and ltpa_keys_password) + * are preserved from the default server.env when mergeServerEnv is enabled. + */ + @Test + public void testBothSpecialPropertiesPreserved() throws Exception { + File serverEnv = new File("liberty/wlp/usr/servers/test", "server.env"); + try (Scanner s = new Scanner(serverEnv)) { + Map serverEnvContents = new HashMap(); + + while (s.hasNextLine()) { + String line = s.nextLine(); + if (!line.startsWith("#") && !line.trim().isEmpty()) { + String[] keyValuePair = line.split("=", 2); + if (keyValuePair.length == 2) { + String key = keyValuePair[0].trim(); + String value = keyValuePair[1].trim(); + serverEnvContents.put(key, value); + } + } + } + + // Both special properties should be present + Assert.assertTrue("keystore_password should be preserved from default server.env", + serverEnvContents.containsKey("keystore_password")); + Assert.assertTrue("ltpa_keys_password should be preserved/merged", + serverEnvContents.containsKey("ltpa_keys_password")); + + // Verify keystore_password has a non-empty value + Assert.assertFalse("keystore_password should have a non-empty value", + serverEnvContents.get("keystore_password").isEmpty()); + + // Verify ltpa_keys_password has the expected merged value + Assert.assertEquals("ltpa_keys_password should have the merged value", + "myLtpaPassword123", serverEnvContents.get("ltpa_keys_password")); + } + } + + /** + * Test that ltpa_keys_password from serverEnvFile takes precedence over configDir. + */ + @Test + public void testLtpaPasswordPrecedence() throws Exception { + File serverEnv = new File("liberty/wlp/usr/servers/test", "server.env"); + try (Scanner s = new Scanner(serverEnv)) { + Map serverEnvContents = new HashMap(); + + while (s.hasNextLine()) { + String line = s.nextLine(); + if (!line.startsWith("#") && !line.trim().isEmpty()) { + String[] keyValuePair = line.split("=", 2); + if (keyValuePair.length == 2) { + String key = keyValuePair[0].trim(); + String value = keyValuePair[1].trim(); + serverEnvContents.put(key, value); + } + } + } + + // ltpa_keys_password should have value from serverEnvFile, not from configDir + Assert.assertEquals("ltpa_keys_password should be from serverEnvFile (not configDirLtpaPassword)", + "myLtpaPassword123", serverEnvContents.get("ltpa_keys_password")); + Assert.assertNotEquals("ltpa_keys_password should not be from configDir", + "configDirLtpaPassword", serverEnvContents.get("ltpa_keys_password")); + } + } +} + +// Made with Bob diff --git a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/configDir/server.env b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/configDir/server.env new file mode 100644 index 000000000..7c7bb6380 --- /dev/null +++ b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/configDir/server.env @@ -0,0 +1,3 @@ +TEST_PROP_2=fromConfigDir +# Comment line to test implementation +ltpa_keys_password=configDirLtpaPassword \ No newline at end of file diff --git a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/server.env b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/server.env new file mode 100644 index 000000000..ac2a1f451 --- /dev/null +++ b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/server.env @@ -0,0 +1,2 @@ +ltpa_keys_password=myLtpaPassword123 +TEST_PROP_1=fromServerEnvFile \ No newline at end of file diff --git a/liberty-maven-plugin/src/it/merge-server-env-none-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvTest.java b/liberty-maven-plugin/src/it/merge-server-env-none-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvTest.java index d19b9e65f..9264e6c4c 100644 --- a/liberty-maven-plugin/src/it/merge-server-env-none-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvTest.java +++ b/liberty-maven-plugin/src/it/merge-server-env-none-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvTest.java @@ -28,10 +28,12 @@ public void testServerEnvFileExists() throws Exception { # default server.env keystore_password=sfKRrA1ioLdtIFQC9bEfkua + ltpa_keys_password= # Merged server.env # Generated by liberty-maven-plugin keystore_password=sfKRrA1ioLdtIFQC9bEfkua + ltpa_keys_password= */ @Test public void check_server_env_contents() throws Exception { @@ -54,9 +56,10 @@ public void check_server_env_contents() throws Exception { // The contents of the default server.env can change over time. // After 20.0.0.3, for example, the WLP_SKIP_MAXPERMSIZE was removed. - // Just confirm the keystore_password is present to prove the default server.env was maintained. - Assert.assertTrue("Number of env properties should be <= 2, but is "+serverEnvContents.size(), serverEnvContents.size() <= 2); + // Just confirm the keystore_password and ltpa_keys_password are present to prove the default server.env was maintained. + Assert.assertTrue("Number of env properties should be <= 3, but is "+serverEnvContents.size(), serverEnvContents.size() <= 3); Assert.assertTrue("keystore_password mapping found", serverEnvContents.containsKey("keystore_password")); + Assert.assertTrue("ltpa_keys_password mapping found", serverEnvContents.containsKey("ltpa_keys_password")); } } From 554c0ac47db333a18a2cdde56ae227817d702ac0 Mon Sep 17 00:00:00 2001 From: Arun Venmany Date: Mon, 4 May 2026 12:52:57 +0530 Subject: [PATCH 2/3] adding ltpa_keys_password to common-server-parameters.md and merge server env logic --- .../src/it/merge-server-env-ltpa-it/pom.xml | 12 ++- .../test/app/MergeServerEnvLtpaTest.java | 86 +++++++++++-------- .../src/test/resources/configDir/server.env | 3 +- .../src/test/resources/server.env | 1 - 4 files changed, 59 insertions(+), 43 deletions(-) diff --git a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/pom.xml b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/pom.xml index 9815a5202..6cc80ad15 100644 --- a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/pom.xml +++ b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/pom.xml @@ -79,6 +79,14 @@ install-server + + + io.openliberty + openliberty-runtime + [26.0.0.4,) + zip + + create-liberty-server @@ -176,6 +184,4 @@ - - - + \ No newline at end of file diff --git a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvLtpaTest.java b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvLtpaTest.java index 40bbf5f2f..f2ffd2572 100644 --- a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvLtpaTest.java +++ b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/java/net/wasdev/wlp/maven/test/app/MergeServerEnvLtpaTest.java @@ -19,23 +19,22 @@ public void testServerEnvFileExists() throws Exception { } /** - * Test the complete merge scenario with ltpa_keys_password. + * Test that ltpa_keys_password is automatically generated by Liberty 26.0.0.4 and merged. * - * Merge order and expected values: - * 1. Default server.env: keystore_password=, ltpa_keys_password= - * 2. configDir/server.env: TEST_PROP_2=fromConfigDir, ltpa_keys_password=configDirLtpaPassword (overrides default) - * 3. serverEnvFile: TEST_PROP_1=fromServerEnvFile, ltpa_keys_password=myLtpaPassword123 (overrides configDir) - * 4. pom.xml: CUSTOM_PROP=customValue (highest priority) + * This is the key test - verifying that: + * 1. Liberty 26.0.0.4 auto-generates ltpa_keys_password in default server.env + * 2. The auto-generated ltpa_keys_password is preserved during merge + * 3. User-provided properties are also merged correctly * * Final expected values: - * - keystore_password: - * - ltpa_keys_password: myLtpaPassword123 (from serverEnvFile, highest priority for this property) + * - keystore_password: + * - ltpa_keys_password: - THIS IS THE KEY VERIFICATION * - TEST_PROP_1: fromServerEnvFile * - TEST_PROP_2: fromConfigDir * - CUSTOM_PROP: customValue */ @Test - public void testLtpaKeysPasswordMerging() throws Exception { + public void testLtpaKeysPasswordAutoGenerated() throws Exception { File serverEnv = new File("liberty/wlp/usr/servers/test", "server.env"); try (Scanner s = new Scanner(serverEnv)) { Map serverEnvContents = new HashMap(); @@ -61,15 +60,17 @@ public void testLtpaKeysPasswordMerging() throws Exception { // Verify the file was generated by liberty-maven-plugin Assert.assertTrue("Expected 'Generated by liberty-maven-plugin' comment not found", commentFound); - // Verify keystore_password from default server.env is preserved - Assert.assertTrue("keystore_password should be present from default server.env", + // Verify keystore_password from Liberty 26.0.0.4 is preserved + Assert.assertTrue("keystore_password should be present (auto-generated by Liberty 26.0.0.4)", serverEnvContents.containsKey("keystore_password")); - // Verify ltpa_keys_password is present and has the correct value from serverEnvFile - Assert.assertTrue("ltpa_keys_password should be present", + // KEY VERIFICATION: ltpa_keys_password should be present and auto-generated by Liberty 26.0.0.4 + Assert.assertTrue("ltpa_keys_password should be present (auto-generated by Liberty 26.0.0.4)", serverEnvContents.containsKey("ltpa_keys_password")); - Assert.assertEquals("ltpa_keys_password should have value from serverEnvFile (highest priority)", - "myLtpaPassword123", serverEnvContents.get("ltpa_keys_password")); + + // Verify ltpa_keys_password has a non-empty value (auto-generated) + Assert.assertFalse("ltpa_keys_password should have a non-empty auto-generated value", + serverEnvContents.get("ltpa_keys_password").isEmpty()); // Verify other merged properties Assert.assertTrue("TEST_PROP_1 should be present from serverEnvFile", @@ -87,7 +88,7 @@ public void testLtpaKeysPasswordMerging() throws Exception { Assert.assertEquals("CUSTOM_PROP should have value from pom.xml", "customValue", serverEnvContents.get("CUSTOM_PROP")); - // Verify minimum number of properties (should have at least the ones we explicitly set plus defaults) + // Verify minimum number of properties (auto-generated + user-provided) Assert.assertTrue("Number of env properties should be >= 5, but is " + serverEnvContents.size(), serverEnvContents.size() >= 5); } @@ -95,10 +96,10 @@ public void testLtpaKeysPasswordMerging() throws Exception { /** * Test that both special properties (keystore_password and ltpa_keys_password) - * are preserved from the default server.env when mergeServerEnv is enabled. + * are auto-generated by Liberty 26.0.0.4 and preserved during merge. */ @Test - public void testBothSpecialPropertiesPreserved() throws Exception { + public void testBothSpecialPropertiesAutoGenerated() throws Exception { File serverEnv = new File("liberty/wlp/usr/servers/test", "server.env"); try (Scanner s = new Scanner(serverEnv)) { Map serverEnvContents = new HashMap(); @@ -115,27 +116,26 @@ public void testBothSpecialPropertiesPreserved() throws Exception { } } - // Both special properties should be present - Assert.assertTrue("keystore_password should be preserved from default server.env", + // Both special properties should be present (auto-generated by Liberty 26.0.0.4) + Assert.assertTrue("keystore_password should be auto-generated by Liberty 26.0.0.4", serverEnvContents.containsKey("keystore_password")); - Assert.assertTrue("ltpa_keys_password should be preserved/merged", + Assert.assertTrue("ltpa_keys_password should be auto-generated by Liberty 26.0.0.4", serverEnvContents.containsKey("ltpa_keys_password")); - // Verify keystore_password has a non-empty value - Assert.assertFalse("keystore_password should have a non-empty value", + // Verify both have non-empty values + Assert.assertFalse("keystore_password should have a non-empty auto-generated value", serverEnvContents.get("keystore_password").isEmpty()); - - // Verify ltpa_keys_password has the expected merged value - Assert.assertEquals("ltpa_keys_password should have the merged value", - "myLtpaPassword123", serverEnvContents.get("ltpa_keys_password")); + Assert.assertFalse("ltpa_keys_password should have a non-empty auto-generated value", + serverEnvContents.get("ltpa_keys_password").isEmpty()); } } /** - * Test that ltpa_keys_password from serverEnvFile takes precedence over configDir. + * Test that the merge preserves auto-generated ltpa_keys_password along with user properties. + * This verifies the mergeSpecialPropsFromInstallServerEnvIfAbsent functionality. */ @Test - public void testLtpaPasswordPrecedence() throws Exception { + public void testAutoGeneratedLtpaPasswordPreservedDuringMerge() throws Exception { File serverEnv = new File("liberty/wlp/usr/servers/test", "server.env"); try (Scanner s = new Scanner(serverEnv)) { Map serverEnvContents = new HashMap(); @@ -152,13 +152,25 @@ public void testLtpaPasswordPrecedence() throws Exception { } } - // ltpa_keys_password should have value from serverEnvFile, not from configDir - Assert.assertEquals("ltpa_keys_password should be from serverEnvFile (not configDirLtpaPassword)", - "myLtpaPassword123", serverEnvContents.get("ltpa_keys_password")); - Assert.assertNotEquals("ltpa_keys_password should not be from configDir", - "configDirLtpaPassword", serverEnvContents.get("ltpa_keys_password")); + // Verify ltpa_keys_password is present (auto-generated and preserved) + Assert.assertTrue("ltpa_keys_password should be preserved from Liberty 26.0.0.4 auto-generation", + serverEnvContents.containsKey("ltpa_keys_password")); + + // Verify user properties are also present (proving merge worked) + Assert.assertTrue("TEST_PROP_1 should be merged from serverEnvFile", + serverEnvContents.containsKey("TEST_PROP_1")); + Assert.assertTrue("TEST_PROP_2 should be merged from configDir", + serverEnvContents.containsKey("TEST_PROP_2")); + Assert.assertTrue("CUSTOM_PROP should be merged from pom.xml", + serverEnvContents.containsKey("CUSTOM_PROP")); + + // This proves that auto-generated ltpa_keys_password was preserved during merge + Assert.assertEquals("TEST_PROP_1 value should be correct", + "fromServerEnvFile", serverEnvContents.get("TEST_PROP_1")); + Assert.assertEquals("TEST_PROP_2 value should be correct", + "fromConfigDir", serverEnvContents.get("TEST_PROP_2")); + Assert.assertEquals("CUSTOM_PROP value should be correct", + "customValue", serverEnvContents.get("CUSTOM_PROP")); } } -} - -// Made with Bob +} \ No newline at end of file diff --git a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/configDir/server.env b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/configDir/server.env index 7c7bb6380..29147bd3f 100644 --- a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/configDir/server.env +++ b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/configDir/server.env @@ -1,3 +1,2 @@ TEST_PROP_2=fromConfigDir -# Comment line to test implementation -ltpa_keys_password=configDirLtpaPassword \ No newline at end of file +# Comment line to test implementation \ No newline at end of file diff --git a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/server.env b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/server.env index ac2a1f451..86bbea415 100644 --- a/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/server.env +++ b/liberty-maven-plugin/src/it/merge-server-env-ltpa-it/src/test/resources/server.env @@ -1,2 +1 @@ -ltpa_keys_password=myLtpaPassword123 TEST_PROP_1=fromServerEnvFile \ No newline at end of file From ef221338af953ba41c096d8c9c026d3c6ffc5a35 Mon Sep 17 00:00:00 2001 From: Arun Venmany Date: Mon, 4 May 2026 14:30:46 +0530 Subject: [PATCH 3/3] adding ltpa_keys_password to common-server-parameters.md and merge server env logic --- .../openliberty/tools/maven/server/StartDebugMojoSupport.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/liberty-maven-plugin/src/main/java/io/openliberty/tools/maven/server/StartDebugMojoSupport.java b/liberty-maven-plugin/src/main/java/io/openliberty/tools/maven/server/StartDebugMojoSupport.java index 7931950c0..37e91dd9e 100644 --- a/liberty-maven-plugin/src/main/java/io/openliberty/tools/maven/server/StartDebugMojoSupport.java +++ b/liberty-maven-plugin/src/main/java/io/openliberty/tools/maven/server/StartDebugMojoSupport.java @@ -596,9 +596,9 @@ protected void copyConfigFiles() throws IOException, MojoExecutionException { */ private Map mergeSpecialPropsFromInstallServerEnvIfAbsent(Map envProps) throws IOException { - String[] specialProps = { "keystore_password" }; + String[] specialProps = { "keystore_password", "ltpa_keys_password" }; - // Clone to avoid side effects + // Clone to avoid side effects Map mergedProps = new HashMap(envProps); // From install (target) dir