summaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/test/java/com/yahoo')
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java61
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java35
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java41
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java2
4 files changed, 109 insertions, 30 deletions
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 4a9a6d3dff3..839ddcecde3 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
@@ -87,7 +87,7 @@ public class ModelProvisioningTest {
" <handler id='myHandler'>" +
" <component id='injected' />" +
" </handler>" +
- " <nodes count='2' allocated-memory='45%' jvmargs='-verbosegc' preload='lib/blablamalloc.so'/>" +
+ " <nodes count='2' allocated-memory='45%' gcopts='-XX:+UseParNewGC' jvmargs='-verbosegc' preload='lib/blablamalloc.so'/>" +
"</jdisc>" +
"</services>";
String hosts ="<hosts>"
@@ -112,35 +112,38 @@ public class ModelProvisioningTest {
+ "</hosts>";
VespaModelCreatorWithMockPkg creator = new VespaModelCreatorWithMockPkg(null, services);
VespaModel model = creator.create(new DeployState.Builder().modelHostProvisioner(new InMemoryProvisioner(Hosts.readFrom(new StringReader(hosts)), true)));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().size(), is(3));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(0).getConfigId(), is("mydisc/container.0"));
- assertTrue(model.getContainerClusters().get("mydisc").getContainers().get(0).isInitialized());
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(1).getConfigId(), is("mydisc/container.1"));
- assertTrue(model.getContainerClusters().get("mydisc").getContainers().get(1).isInitialized());
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(2).getConfigId(), is("mydisc/container.2"));
- assertTrue(model.getContainerClusters().get("mydisc").getContainers().get(2).isInitialized());
-
- assertThat(model.getContainerClusters().get("mydisc2").getContainers().size(), is(2));
- assertThat(model.getContainerClusters().get("mydisc2").getContainers().get(0).getConfigId(), is("mydisc2/container.0"));
- assertTrue(model.getContainerClusters().get("mydisc2").getContainers().get(0).isInitialized());
- assertThat(model.getContainerClusters().get("mydisc2").getContainers().get(1).getConfigId(), is("mydisc2/container.1"));
- assertTrue(model.getContainerClusters().get("mydisc2").getContainers().get(1).isInitialized());
-
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(0).getJvmArgs(), is(""));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(1).getJvmArgs(), is(""));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(2).getJvmArgs(), is(""));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(0).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(1).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
- assertThat(model.getContainerClusters().get("mydisc").getContainers().get(2).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
- assertThat(model.getContainerClusters().get("mydisc").getMemoryPercentage(), is(Optional.empty()));
-
- assertThat(model.getContainerClusters().get("mydisc2").getContainers().get(0).getJvmArgs(), is("-verbosegc"));
- assertThat(model.getContainerClusters().get("mydisc2").getContainers().get(1).getJvmArgs(), is("-verbosegc"));
- assertThat(model.getContainerClusters().get("mydisc2").getContainers().get(0).getPreLoad(), is("lib/blablamalloc.so"));
- assertThat(model.getContainerClusters().get("mydisc2").getContainers().get(1).getPreLoad(), is("lib/blablamalloc.so"));
- assertThat(model.getContainerClusters().get("mydisc2").getMemoryPercentage(), is(Optional.of(45)));
+ ContainerCluster mydisc = model.getContainerClusters().get("mydisc");
+ ContainerCluster mydisc2 = model.getContainerClusters().get("mydisc2");
+ assertThat(mydisc.getContainers().size(), is(3));
+ assertThat(mydisc.getContainers().get(0).getConfigId(), is("mydisc/container.0"));
+ assertTrue(mydisc.getContainers().get(0).isInitialized());
+ assertThat(mydisc.getContainers().get(1).getConfigId(), is("mydisc/container.1"));
+ assertTrue(mydisc.getContainers().get(1).isInitialized());
+ assertThat(mydisc.getContainers().get(2).getConfigId(), is("mydisc/container.2"));
+ assertTrue(mydisc.getContainers().get(2).isInitialized());
+
+ assertThat(mydisc2.getContainers().size(), is(2));
+ assertThat(mydisc2.getContainers().get(0).getConfigId(), is("mydisc2/container.0"));
+ assertTrue(mydisc2.getContainers().get(0).isInitialized());
+ assertThat(mydisc2.getContainers().get(1).getConfigId(), is("mydisc2/container.1"));
+ assertTrue(mydisc2.getContainers().get(1).isInitialized());
+
+ assertThat(mydisc.getContainers().get(0).getJvmArgs(), is(""));
+ assertThat(mydisc.getContainers().get(1).getJvmArgs(), is(""));
+ assertThat(mydisc.getContainers().get(2).getJvmArgs(), is(""));
+ assertThat(mydisc.getContainers().get(0).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
+ assertThat(mydisc.getContainers().get(1).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
+ assertThat(mydisc.getContainers().get(2).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so")));
+ assertThat(mydisc.getMemoryPercentage(), is(Optional.empty()));
+
+ assertThat(mydisc2.getContainers().get(0).getJvmArgs(), is("-verbosegc"));
+ assertThat(mydisc2.getContainers().get(1).getJvmArgs(), is("-verbosegc"));
+ assertThat(mydisc2.getContainers().get(0).getPreLoad(), is("lib/blablamalloc.so"));
+ assertThat(mydisc2.getContainers().get(1).getPreLoad(), is("lib/blablamalloc.so"));
+ assertThat(mydisc2.getMemoryPercentage(), is(Optional.of(45)));
+ assertThat(mydisc2.getGCOpts(), is(Optional.of("-XX:+UseParNewGC")));
QrStartConfig.Builder qrStartBuilder = new QrStartConfig.Builder();
- model.getContainerClusters().get("mydisc2").getConfig(qrStartBuilder);
+ mydisc2.getConfig(qrStartBuilder);
QrStartConfig qrsStartConfig = new QrStartConfig(qrStartBuilder);
assertEquals(45, qrsStartConfig.jvm().heapSizeAsPercentageOfPhysicalMemory());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
index 8e096b14d85..7051ffda84a 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
@@ -107,6 +107,10 @@ public class ContainerClusterTest {
DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(isHosted).build()).build();
return new MockRoot("foo", state);
}
+ private MockRoot createRoot(boolean isHosted, Zone zone) {
+ DeployState state = new DeployState.Builder().zone(zone).properties(new DeployProperties.Builder().hostedVespa(isHosted).build()).build();
+ return new MockRoot("foo", state);
+ }
private ContainerCluster createContainerCluster(MockRoot root, boolean isCombinedCluster,
Integer memoryPercentage, Optional<ContainerClusterVerifier> extraComponents) {
@@ -154,6 +158,7 @@ public class ContainerClusterTest {
assertEquals(expectedArgs, jvmArgs);
}
}
+
private void verifyJvmArgs(boolean isHosted, boolean hasDocProc) {
MockRoot root = createRoot(isHosted);
ContainerCluster cluster = createContainerCluster(root, false);
@@ -174,6 +179,36 @@ public class ContainerClusterTest {
verifyJvmArgs(isHosted, hasDocProc, "", container.getJvmArgs());
}
+ private void verifyGCOpts(boolean isHosted, String override, Zone zone, String expected) {
+ MockRoot root = createRoot(isHosted, zone);
+ ContainerCluster cluster = createContainerCluster(root, false);
+ addContainer(root.deployLogger(), cluster, "c1", "host-c1");
+ cluster.setGCOpts(override);
+ assertEquals(1, cluster.getContainers().size());
+ QrStartConfig.Builder qsB = new QrStartConfig.Builder();
+ cluster.getSearch().getConfig(qsB);
+ QrStartConfig qsC= new QrStartConfig(qsB);
+ assertEquals(expected, qsC.jvm().gcopts());
+ }
+
+ private void verifyGCOpts(boolean isHosted, Zone zone, String expected) {
+ verifyGCOpts(isHosted, null, zone, expected);
+ verifyGCOpts(isHosted, "-XX:+UseG1GC", zone, "-XX:+UseG1GC");
+ Zone DEV = new Zone(SystemName.dev, zone.environment(), zone.region());
+ verifyGCOpts(isHosted, null, DEV, ContainerCluster.G1GC);
+ verifyGCOpts(isHosted, "-XX:+UseConcMarkSweepGC", DEV, "-XX:+UseConcMarkSweepGC");
+
+ }
+
+ @Test
+ public void requireThatGCOptsIsHonoured() {
+ final Zone US_EAST_3 = new Zone(Environment.prod, RegionName.from("us-east-3"));
+ verifyGCOpts(false, Zone.defaultZone(),ContainerCluster.CMS);
+ verifyGCOpts(false, US_EAST_3, ContainerCluster.CMS);
+ verifyGCOpts(true, Zone.defaultZone(), ContainerCluster.CMS);
+ verifyGCOpts(true, US_EAST_3, ContainerCluster.G1GC);
+ }
+
@Test
public void testContainerClusterMaxThreads() {
MockRoot root = createRoot(false);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
index f94ebab42a9..5d708dcddf4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
@@ -28,6 +28,7 @@ import com.yahoo.container.usability.BindingsOverviewHandler;
import com.yahoo.jdisc.http.ServletPathsConfig;
import com.yahoo.net.HostName;
import com.yahoo.prelude.cluster.QrMonitorConfig;
+import com.yahoo.search.config.QrStartConfig;
import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.Container;
@@ -68,6 +69,46 @@ import static org.junit.Assert.fail;
public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
@Test
+ public void detect_conflicting_gcoptions_in_jvmargs() {
+ assertFalse(ContainerModelBuilder.incompatibleGCOptions(""));
+ assertFalse(ContainerModelBuilder.incompatibleGCOptions("UseG1GC"));
+ assertTrue(ContainerModelBuilder.incompatibleGCOptions("-XX:+UseG1GC"));
+ assertTrue(ContainerModelBuilder.incompatibleGCOptions("abc -XX:+UseParNewGC xyz"));
+ }
+
+ @Test
+ public void honours_gcopts() {
+ Element clusterElem = DomBuilderTest.parse(
+ "<jdisc version='1.0'>",
+ " <search/>",
+ " <nodes gcopts='-XX:+UseG1GC'>",
+ " <node hostalias='mockhost'/>",
+ " </nodes>",
+ "</jdisc>" );
+ createModel(root, clusterElem);
+ QrStartConfig.Builder qrStartBuilder = new QrStartConfig.Builder();
+ root.getConfig(qrStartBuilder, "jdisc/container.0");
+ QrStartConfig qrStartConfig = new QrStartConfig(qrStartBuilder);
+ assertEquals("-XX:+UseG1GC", qrStartConfig.jvm().gcopts());
+ }
+
+ @Test
+ public void ignores_gcopts_on_conflicting_jvargs() {
+ Element clusterElem = DomBuilderTest.parse(
+ "<jdisc version='1.0'>",
+ " <search/>",
+ " <nodes gcopts='-XX:+UseG1GC' jvmargs='-XX:+UseParNewGC'>",
+ " <node hostalias='mockhost'/>",
+ " </nodes>",
+ "</jdisc>" );
+ createModel(root, clusterElem);
+ QrStartConfig.Builder qrStartBuilder = new QrStartConfig.Builder();
+ root.getConfig(qrStartBuilder, "jdisc/container.0");
+ QrStartConfig qrStartConfig = new QrStartConfig(qrStartBuilder);
+ assertEquals(ContainerCluster.CMS, qrStartConfig.jvm().gcopts());
+ }
+
+ @Test
public void default_port_is_4080() throws Exception {
Element clusterElem = DomBuilderTest.parse(
"<jdisc version='1.0'>",
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
index f4d3fbc782c..5acfe9312f6 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/DocprocBuilderTest.java
@@ -217,7 +217,7 @@ public class DocprocBuilderTest extends DomBuilderTest {
QrStartConfig.Jvm jvm = qrStartConfig.jvm();
assertThat(jvm.server(), is(true));
assertThat(jvm.verbosegc(), is(true));
- assertThat(jvm.gcopts(), is(""));
+ assertThat(jvm.gcopts(), is("-XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=15 -XX:NewRatio=1"));
assertThat(jvm.heapsize(), is(1536));
assertThat(jvm.stacksize(), is(512));
assertThat(qrStartConfig.ulimitv(), is(""));