From d7257bbbdbcf205b2a907c587274f13fee710656 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Mon, 13 Dec 2021 15:01:53 +0100 Subject: Minor changes to log warning --- .../com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java | 4 ++-- .../java/com/yahoo/config/model/provision/ModelProvisioningTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 562ccc44a37..d81aa2cfbe8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -683,12 +683,12 @@ public class ContainerModelBuilder extends ConfigModelBuilder { if (nodesElement.hasAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME)) { String jvmArgs = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); throw new IllegalArgumentException("You have specified both jvm-options='" + jvmOptions + "'" + - " and deprecated jvmargs='" + jvmArgs + "'. Merge jvmargs into jvm-options."); + " and deprecated jvmargs='" + jvmArgs + "'. Merge jvmargs into 'options' in 'jvm' element."); } } else { jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); if (incompatibleGCOptions(jvmOptions)) { - deployLogger.logApplicationPackage(WARNING, "You need to move out your GC-related options from deprecated 'jvmargs' to 'jvm-gc-options'"); + deployLogger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs' to 'gc-options' in 'jvm' element"); cluster.setJvmGCOptions(ContainerCluster.G1GC); } } diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java index 2fcb9632357..77e3aa516dc 100644 --- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java @@ -1488,7 +1488,7 @@ public class ModelProvisioningTest { fail("Expected exception"); } catch (IllegalArgumentException e) { - assertEquals("You have specified both jvm-options='xyz' and deprecated jvmargs='abc'. Merge jvmargs into jvm-options.", e.getMessage()); + assertEquals("You have specified both jvm-options='xyz' and deprecated jvmargs='abc'. Merge jvmargs into 'options' in 'jvm' element.", e.getMessage()); } } -- cgit v1.2.3 From 2da6a5d405d9df1cc88a755735c47a0b74546f14 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Tue, 14 Dec 2021 09:22:33 +0100 Subject: Log JVM GC options to deploy log Refactor and prepare for validating JVM options. Logging only for now to see what is actually in use in hosted Vespa --- .../model/container/xml/ContainerModelBuilder.java | 93 ++++++++++++++++------ .../vespa/model/container/xml/JvmOptionsTest.java | 34 ++++++++ 2 files changed, 102 insertions(+), 25 deletions(-) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index d81aa2cfbe8..6092d5dfba2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -100,6 +100,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.function.Consumer; +import java.util.logging.Level; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -667,32 +668,12 @@ public class ContainerModelBuilder extends ConfigModelBuilder { return (gcAlgorithm.matcher(jvmargs).find() || cmsArgs.matcher(jvmargs).find()); } - private static String buildJvmGCOptions(DeployState deployState, String jvmGCOptions) { - String options = (jvmGCOptions != null) - ? jvmGCOptions - : deployState.getProperties().jvmGCOptions(); - return (options == null || options.isEmpty()) - ? (deployState.isHosted() ? ContainerCluster.PARALLEL_GC : ContainerCluster.G1GC) - : options; + private static String buildJvmGCOptions(ConfigModelContext context, String jvmGCOptions) { + return new JvmGcOptions(context.getDeployState(), jvmGCOptions, context.getDeployLogger()).build(); } private static String getJvmOptions(ApplicationContainerCluster cluster, Element nodesElement, DeployLogger deployLogger) { - String jvmOptions; - if (nodesElement.hasAttribute(VespaDomBuilder.JVM_OPTIONS)) { - jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVM_OPTIONS); - if (nodesElement.hasAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME)) { - String jvmArgs = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); - throw new IllegalArgumentException("You have specified both jvm-options='" + jvmOptions + "'" + - " and deprecated jvmargs='" + jvmArgs + "'. Merge jvmargs into 'options' in 'jvm' element."); - } - } else { - jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); - if (incompatibleGCOptions(jvmOptions)) { - deployLogger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs' to 'gc-options' in 'jvm' element"); - cluster.setJvmGCOptions(ContainerCluster.G1GC); - } - } - return jvmOptions; + return new JvmOptions(cluster, nodesElement, deployLogger).build(); } private static String extractAttribute(Element element, String attrName) { @@ -705,7 +686,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder { if (cluster.getJvmGCOptions().isEmpty()) { String jvmGCOptions = extractAttribute(nodesElement, VespaDomBuilder.JVM_GC_OPTIONS); - cluster.setJvmGCOptions(buildJvmGCOptions(context.getDeployState(), jvmGCOptions)); + cluster.setJvmGCOptions(buildJvmGCOptions(context, jvmGCOptions)); } applyMemoryPercentage(cluster, nodesElement.getAttribute(VespaDomBuilder.Allocated_MEMORY_ATTRIB_NAME)); @@ -716,7 +697,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder { applyNodesTagJvmArgs(nodes, jvmElement.getAttribute(VespaDomBuilder.OPTIONS)); applyMemoryPercentage(cluster, jvmElement.getAttribute(VespaDomBuilder.Allocated_MEMORY_ATTRIB_NAME)); String jvmGCOptions = extractAttribute(jvmElement, VespaDomBuilder.GC_OPTIONS); - cluster.setJvmGCOptions(buildJvmGCOptions(context.getDeployState(), jvmGCOptions)); + cluster.setJvmGCOptions(buildJvmGCOptions(context, jvmGCOptions)); } /** @@ -1077,4 +1058,66 @@ public class ContainerModelBuilder extends ConfigModelBuilder { return CONTAINER_TAG.equals(element.getTagName()) || DEPRECATED_CONTAINER_TAG.equals(element.getTagName()); } + private static class JvmOptions { + + private final ContainerCluster cluster; + private final Element nodesElement; + private final DeployLogger deployLogger; + + public JvmOptions(ContainerCluster cluster, Element nodesElement, DeployLogger deployLogger) { + this.cluster = cluster; + this.nodesElement = nodesElement; + this.deployLogger = deployLogger; + } + + String build() { + String jvmOptions; + if (nodesElement.hasAttribute(VespaDomBuilder.JVM_OPTIONS)) { + jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVM_OPTIONS); + if (nodesElement.hasAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME)) { + String jvmArgs = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); + throw new IllegalArgumentException("You have specified both jvm-options='" + jvmOptions + "'" + + " and deprecated jvmargs='" + jvmArgs + + "'. Merge jvmargs into 'options' in 'jvm' element."); + } + } else { + jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); + if (incompatibleGCOptions(jvmOptions)) { + deployLogger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs' to 'gc-options' in 'jvm' element"); + cluster.setJvmGCOptions(ContainerCluster.G1GC); + } + } + return jvmOptions; + } + } + + private static class JvmGcOptions { + + private final DeployState deployState; + private final String jvmGcOptions; + private final DeployLogger logger; + + public JvmGcOptions(DeployState deployState, String jvmGcOptions, DeployLogger logger) { + this.deployState = deployState; + this.jvmGcOptions = jvmGcOptions; + this.logger = logger; + } + + private String build() { + String options = deployState.getProperties().jvmGCOptions(); + if (jvmGcOptions != null) { + options = jvmGcOptions; + if (deployState.isHosted()) + logger.logApplicationPackage(Level.INFO, "JVM GC options from services.xml: " + jvmGcOptions); + // TODO: Verify options against lists of allowed and/or disallowed options + } + + if (options == null || options.isEmpty()) + options = deployState.isHosted() ? ContainerCluster.PARALLEL_GC : ContainerCluster.G1GC; + + return options; + } + + } + } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java index 9fda6016969..815062fb8d9 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.container.xml; +import com.yahoo.collections.Pair; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.model.NullConfigModelRegistry; import com.yahoo.config.model.builder.xml.test.DomBuilderTest; @@ -17,6 +18,7 @@ import org.w3c.dom.Element; import org.xml.sax.SAXException; import java.io.IOException; +import java.util.logging.Level; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -142,4 +144,36 @@ public class JvmOptionsTest extends ContainerModelBuilderTestBase { verifyJvmGCOptions(false, null, "-XX:+UseParallelGC", "-XX:+UseParallelGC"); } + @Test + public void requireThatJvmGcOptionsAreLogged() throws IOException, SAXException { + verifyLoggingOfJvmGCOptions(true, "-XX:+UseCMSInitiatingOccupancyOnly foo bar"); + verifyLoggingOfJvmGCOptions(true, "-XX:+UseConcMarkSweepGC"); + verifyLoggingOfJvmGCOptions(false, "-XX:+UseConcMarkSweepGC"); + } + + private void verifyLoggingOfJvmGCOptions(boolean isHosted, String override) throws IOException, SAXException { + String servicesXml = + "" + + " " + + " " + + " " + + " " + + ""; + ApplicationPackage app = new MockApplicationPackage.Builder().withServices(servicesXml).build(); + TestLogger logger = new TestLogger(); + new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder() + .applicationPackage(app) + .deployLogger(logger) + .properties(new TestProperties().setHostedVespa(isHosted)) + .build()); + if (isHosted) { + Pair firstOption = logger.msgs.get(0); + assertEquals(Level.INFO, firstOption.getFirst()); + assertEquals("JVM GC options from services.xml: " + override, firstOption.getSecond()); + } else { + assertEquals(0, logger.msgs.size()); + } + } + + } -- cgit v1.2.3 From 19365f7ef81f7b30eb4b734d2996dc28339939d6 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Tue, 14 Dec 2021 10:05:41 +0100 Subject: Add links to doc in log and excpetion messages --- .../com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java | 6 ++++-- .../com/yahoo/config/model/provision/ModelProvisioningTest.java | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 6092d5dfba2..05449083817 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -1078,12 +1078,14 @@ public class ContainerModelBuilder extends ConfigModelBuilder { String jvmArgs = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); throw new IllegalArgumentException("You have specified both jvm-options='" + jvmOptions + "'" + " and deprecated jvmargs='" + jvmArgs + - "'. Merge jvmargs into 'options' in 'jvm' element."); + "'. Merge jvmargs into 'options' in 'jvm' element." + + " See https://docs.vespa.ai/en/reference/services-container.html#jvm"); } } else { jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); if (incompatibleGCOptions(jvmOptions)) { - deployLogger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs' to 'gc-options' in 'jvm' element"); + deployLogger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs' to 'gc-options' in 'jvm' element." + + " See https://docs.vespa.ai/en/reference/services-container.html#jvm"); cluster.setJvmGCOptions(ContainerCluster.G1GC); } } diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java index 77e3aa516dc..0866e1174ee 100644 --- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java @@ -1488,7 +1488,10 @@ public class ModelProvisioningTest { fail("Expected exception"); } catch (IllegalArgumentException e) { - assertEquals("You have specified both jvm-options='xyz' and deprecated jvmargs='abc'. Merge jvmargs into 'options' in 'jvm' element.", e.getMessage()); + assertEquals("You have specified both jvm-options='xyz' and deprecated jvmargs='abc'. " + + "Merge jvmargs into 'options' in 'jvm' element. " + + "See https://docs.vespa.ai/en/reference/services-container.html#jvm", + e.getMessage()); } } -- cgit v1.2.3 From a454ee83d670418b8ab0a12e7869d9ccdbb66278 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Tue, 14 Dec 2021 11:05:40 +0100 Subject: Log JVM opions to deploy log as well --- .../model/container/xml/ContainerModelBuilder.java | 85 ++++++++++++++++------ .../vespa/model/container/xml/JvmOptionsTest.java | 18 +++-- 2 files changed, 74 insertions(+), 29 deletions(-) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 05449083817..6d184666bdb 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -669,20 +669,35 @@ public class ContainerModelBuilder extends ConfigModelBuilder { } private static String buildJvmGCOptions(ConfigModelContext context, String jvmGCOptions) { - return new JvmGcOptions(context.getDeployState(), jvmGCOptions, context.getDeployLogger()).build(); + return new JvmGcOptions(context.getDeployState(), jvmGCOptions).build(); } - private static String getJvmOptions(ApplicationContainerCluster cluster, Element nodesElement, DeployLogger deployLogger) { - return new JvmOptions(cluster, nodesElement, deployLogger).build(); + private static String getJvmOptions(ApplicationContainerCluster cluster, + Element nodesElement, + DeployState deployState, + boolean legacyOptions) { + return new JvmOptions(cluster, nodesElement, deployState, legacyOptions).build(); } private static String extractAttribute(Element element, String attrName) { return element.hasAttribute(attrName) ? element.getAttribute(attrName) : null; } - void extractJvmFromLegacyNodesTag(List nodes, ApplicationContainerCluster cluster, - Element nodesElement, ConfigModelContext context) { - applyNodesTagJvmArgs(nodes, getJvmOptions(cluster, nodesElement, context.getDeployLogger())); + private void extractJvmOptions(List nodes, + ApplicationContainerCluster cluster, + Element nodesElement, + ConfigModelContext context) { + Element jvmElement = XML.getChild(nodesElement, "jvm"); + if (jvmElement == null) { + extractJvmFromLegacyNodesTag(nodes, cluster, nodesElement, context); + } else { + extractJvmTag(nodes, cluster, nodesElement, jvmElement, context); + } + } + + private void extractJvmFromLegacyNodesTag(List nodes, ApplicationContainerCluster cluster, + Element nodesElement, ConfigModelContext context) { + applyNodesTagJvmArgs(nodes, getJvmOptions(cluster, nodesElement, context.getDeployState(), true)); if (cluster.getJvmGCOptions().isEmpty()) { String jvmGCOptions = extractAttribute(nodesElement, VespaDomBuilder.JVM_GC_OPTIONS); @@ -692,9 +707,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder { applyMemoryPercentage(cluster, nodesElement.getAttribute(VespaDomBuilder.Allocated_MEMORY_ATTRIB_NAME)); } - void extractJvmTag(List nodes, ApplicationContainerCluster cluster, - Element jvmElement, ConfigModelContext context) { - applyNodesTagJvmArgs(nodes, jvmElement.getAttribute(VespaDomBuilder.OPTIONS)); + private void extractJvmTag(List nodes, ApplicationContainerCluster cluster, + Element nodesElement, Element jvmElement, ConfigModelContext context) { + applyNodesTagJvmArgs(nodes, getJvmOptions(cluster, nodesElement, context.getDeployState(), false)); applyMemoryPercentage(cluster, jvmElement.getAttribute(VespaDomBuilder.Allocated_MEMORY_ATTRIB_NAME)); String jvmGCOptions = extractAttribute(jvmElement, VespaDomBuilder.GC_OPTIONS); cluster.setJvmGCOptions(buildJvmGCOptions(context, jvmGCOptions)); @@ -714,12 +729,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder { } else { List nodes = createNodes(cluster, containerElement, nodesElement, context); - Element jvmElement = XML.getChild(nodesElement, "jvm"); - if (jvmElement == null) { - extractJvmFromLegacyNodesTag(nodes, cluster, nodesElement, context); - } else { - extractJvmTag(nodes, cluster, jvmElement, context); - } + extractJvmOptions(nodes, cluster, nodesElement, context); applyRoutingAliasProperties(nodes, cluster); applyDefaultPreload(nodes, nodesElement); String environmentVars = getEnvironmentVariables(XML.getChild(nodesElement, ENVIRONMENT_VARIABLES_ELEMENT)); @@ -1062,18 +1072,35 @@ public class ContainerModelBuilder extends ConfigModelBuilder { private final ContainerCluster cluster; private final Element nodesElement; - private final DeployLogger deployLogger; + private final DeployLogger logger; + private final boolean isHosted; + private final boolean legacyOptions; - public JvmOptions(ContainerCluster cluster, Element nodesElement, DeployLogger deployLogger) { + public JvmOptions(ContainerCluster cluster, Element nodesElement, DeployState deployState, boolean legacyOptions) { this.cluster = cluster; this.nodesElement = nodesElement; - this.deployLogger = deployLogger; + this.logger = deployState.getDeployLogger(); + this.isHosted = deployState.isHosted(); + this.legacyOptions = legacyOptions; } String build() { + if (legacyOptions) + return buildLegacyOptions(); + + Element jvmElement = XML.getChild(nodesElement, "jvm"); + if (jvmElement == null) return ""; + String jvmOptions = jvmElement.getAttribute(VespaDomBuilder.OPTIONS); + if (jvmOptions == null) return ""; + log(jvmOptions); + return jvmOptions; + } + + String buildLegacyOptions() { String jvmOptions; if (nodesElement.hasAttribute(VespaDomBuilder.JVM_OPTIONS)) { jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVM_OPTIONS); + log(jvmOptions); if (nodesElement.hasAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME)) { String jvmArgs = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); throw new IllegalArgumentException("You have specified both jvm-options='" + jvmOptions + "'" + @@ -1083,14 +1110,20 @@ public class ContainerModelBuilder extends ConfigModelBuilder { } } else { jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); + log(jvmOptions); if (incompatibleGCOptions(jvmOptions)) { - deployLogger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs' to 'gc-options' in 'jvm' element." + + logger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs' to 'gc-options' in 'jvm' element." + " See https://docs.vespa.ai/en/reference/services-container.html#jvm"); cluster.setJvmGCOptions(ContainerCluster.G1GC); } } return jvmOptions; } + + private void log(String jvmOptions) { + if (isHosted && jvmOptions != null && !jvmOptions.isEmpty()) + logger.logApplicationPackage(Level.INFO, "JVM options from services.xml: " + jvmOptions); + } } private static class JvmGcOptions { @@ -1098,19 +1131,20 @@ public class ContainerModelBuilder extends ConfigModelBuilder { private final DeployState deployState; private final String jvmGcOptions; private final DeployLogger logger; + private final boolean isHosted; - public JvmGcOptions(DeployState deployState, String jvmGcOptions, DeployLogger logger) { + public JvmGcOptions(DeployState deployState, String jvmGcOptions) { this.deployState = deployState; this.jvmGcOptions = jvmGcOptions; - this.logger = logger; + this.logger = deployState.getDeployLogger(); + this.isHosted = deployState.isHosted(); } private String build() { String options = deployState.getProperties().jvmGCOptions(); if (jvmGcOptions != null) { + log(jvmGcOptions); options = jvmGcOptions; - if (deployState.isHosted()) - logger.logApplicationPackage(Level.INFO, "JVM GC options from services.xml: " + jvmGcOptions); // TODO: Verify options against lists of allowed and/or disallowed options } @@ -1120,6 +1154,11 @@ public class ContainerModelBuilder extends ConfigModelBuilder { return options; } + private void log(String jvmGcOptions) { + if (isHosted) + logger.logApplicationPackage(Level.INFO, "JVM GC options from services.xml: " + jvmGcOptions); + } + } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java index 815062fb8d9..a674a06d45e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JvmOptionsTest.java @@ -146,16 +146,16 @@ public class JvmOptionsTest extends ContainerModelBuilderTestBase { @Test public void requireThatJvmGcOptionsAreLogged() throws IOException, SAXException { - verifyLoggingOfJvmGCOptions(true, "-XX:+UseCMSInitiatingOccupancyOnly foo bar"); - verifyLoggingOfJvmGCOptions(true, "-XX:+UseConcMarkSweepGC"); - verifyLoggingOfJvmGCOptions(false, "-XX:+UseConcMarkSweepGC"); + verifyLoggingOfJvmOptions(true, "gc-options", "-XX:+UseCMSInitiatingOccupancyOnly foo bar"); + verifyLoggingOfJvmOptions(true, "gc-options", "-XX:+UseConcMarkSweepGC"); + verifyLoggingOfJvmOptions(false, "gc-options", "-XX:+UseConcMarkSweepGC"); } - private void verifyLoggingOfJvmGCOptions(boolean isHosted, String override) throws IOException, SAXException { + private void verifyLoggingOfJvmOptions(boolean isHosted, String optionName, String override) throws IOException, SAXException { String servicesXml = "" + " " + - " " + + " " + " " + " " + ""; @@ -169,11 +169,17 @@ public class JvmOptionsTest extends ContainerModelBuilderTestBase { if (isHosted) { Pair firstOption = logger.msgs.get(0); assertEquals(Level.INFO, firstOption.getFirst()); - assertEquals("JVM GC options from services.xml: " + override, firstOption.getSecond()); + assertEquals("JVM " + (optionName.equals("gc-options") ? "GC " : "") + + "options from services.xml: " + override, firstOption.getSecond()); } else { assertEquals(0, logger.msgs.size()); } } + @Test + public void requireThatJvmOptionsAreLogged() throws IOException, SAXException { + verifyLoggingOfJvmOptions(true, "options", "-Xms2G"); + verifyLoggingOfJvmOptions(false, "options", "-Xms2G"); + } } -- cgit v1.2.3