diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2019-07-31 09:39:21 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2019-08-01 09:14:45 +0000 |
commit | c27b7f877b7727bbab1a314fe798df8a66732f0a (patch) | |
tree | 889878546f27d4c2be489be94c3d3163da6686f6 /config-model | |
parent | f2aaaf89a0f24790ff2322b7b4f88256940c2917 (diff) |
add API for explicitly allocating network ports
Diffstat (limited to 'config-model')
25 files changed, 280 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java index 4fe13c8bede..70df4cdedb9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java @@ -30,6 +30,12 @@ public class ConfigProxy extends AbstractService { setProp("clustername", "admin"); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.requirePort(start, "rpc"); + } + /** * Returns the desired base port for this service. */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java index 3f1202ccfd7..655c081c72e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java @@ -14,6 +14,8 @@ import com.yahoo.config.provision.Zone; */ public class ConfigSentinel extends AbstractService implements SentinelConfig.Producer { + static final int BASEPORT = 19097; + private final ApplicationId applicationId; private final Zone zone; @@ -32,6 +34,13 @@ public class ConfigSentinel extends AbstractService implements SentinelConfig.Pr setProp("clustername", "admin"); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.requirePort(start++, "rpc"); + from.requirePort(start++, "http"); + } + /** * Returns the desired base port for this service. */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Logd.java b/config-model/src/main/java/com/yahoo/vespa/model/Logd.java index 3c7f1ba6cfa..5253b4b54ec 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/Logd.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/Logd.java @@ -14,6 +14,7 @@ public class Logd extends AbstractService implements LogdConfig.Producer { + static final int BASEPORT = 19089; /** * Creates a new Logd instance. @@ -25,6 +26,12 @@ public class Logd portsMeta.on(0).tag("http").tag("state"); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.wantPort(start, "http"); + } + /** * Logd needs a state port. * diff --git a/config-model/src/main/java/com/yahoo/vespa/model/NetworkPortRequestor.java b/config-model/src/main/java/com/yahoo/vespa/model/NetworkPortRequestor.java index 96870ee30d8..10a236e42c6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/NetworkPortRequestor.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/NetworkPortRequestor.java @@ -26,6 +26,9 @@ public interface NetworkPortRequestor { */ default int getWantedPort() { return 0; } + /** allocate the ports you need */ + void allocatePorts(int start, PortAllocBridge from); + /** * Returns the number of ports needed by this service. * User-defined ports for container http servers should not be counted, as those diff --git a/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java b/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java new file mode 100644 index 00000000000..ac518b3a7d9 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java @@ -0,0 +1,48 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +package com.yahoo.vespa.model; + +import java.util.ArrayList; +import java.util.List; + +/** + * API for allocating network ports + * This class acts as a bridge between NetworkPortRequestor and HostPorts + * for a single call to allocatePorts(), gathering the resulting port + * allocations in a list of integers. + * @author arnej + */ +public class PortAllocBridge { + + private HostPorts host; + private NetworkPortRequestor service; + private List<Integer> ports = new ArrayList<>(); + + public PortAllocBridge(HostPorts host, NetworkPortRequestor service) { + this.host = host; + this.service = service; + } + + public int requirePort(int port, String suffix) { + int got = host.requireNetworkPort(port, service, suffix); + ports.add(got); + return got; + } + + public int wantPort(int port, String suffix) { + int got = host.wantNetworkPort(port, service, suffix); + ports.add(got); + return got; + } + + public int allocatePort(String suffix) { + int got = host.allocateNetworkPort(service, suffix); + ports.add(got); + return got; + } + + public List<Integer> result() { + return ports; + } + +} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java index e8ca03b277d..bf0a9b00ded 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java @@ -3,6 +3,8 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; + /** * Represents a Configserver. There may be one or more Configservers in a @@ -30,6 +32,21 @@ public class Configserver extends AbstractService { setProp("clustername", "admin"); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (requiresWantedPort()) { + from.requirePort(start++, "rpc"); + from.requirePort(start++, "http"); + } else if (start == 0) { + from.allocatePort("rpc"); + from.allocatePort("http"); + } else { + from.wantPort(start++, "rpc"); + from.wantPort(start++, "http"); + } + } + + /** * Returns the desired base port for this service. */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java index 1f77b96244f..5e8e0e3acc2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.cloud.config.LogforwarderConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; public class LogForwarder extends AbstractService implements LogforwarderConfig.Producer { @@ -50,6 +51,10 @@ public class LogForwarder extends AbstractService implements LogforwarderConfig. return new Config(null, null, null, null); } + // LogForwarder does not need any ports. + @Override + public void allocatePorts(int start, PortAllocBridge from) { } + /** * LogForwarder does not need any ports. * diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java index eca8fd40e69..31ea1d3902b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; /** * Represents the Logserver. There is exactly one logserver in a Vespa @@ -72,4 +73,13 @@ public class Logserver extends AbstractService { return new String[]{ "rpc", "unused/1", "unused/2", "unused/3" }; } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + int port = (start == 0) ? getWantedPort() : start; + from.requirePort(port++, "unused"); + from.requirePort(port++, "logtp"); + from.requirePort(port++, "last.errors"); + from.requirePort(port++, "replicator"); + } + } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java index 2c4fa83d02b..da157798767 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.config.core.StateserverConfig; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; /** * Represents a Slobrok service. @@ -13,6 +14,8 @@ import com.yahoo.vespa.model.AbstractService; public class Slobrok extends AbstractService implements StateserverConfig.Producer { private static final long serialVersionUID = 1L; + public final static int BASEPORT = 19099; + @Override public void getConfig(StateserverConfig.Builder builder) { builder.httpport(getHealthPort()); @@ -39,7 +42,7 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc @Override public int getWantedPort() { if (getId() == 1) { - return 19099; + return BASEPORT; } else { return 0; } @@ -49,6 +52,13 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc return "exec $ROOT/sbin/vespa-slobrok -p " + getRpcPort() + " -c " + getConfigId(); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.wantPort(start, "rpc"); + from.allocatePort("http"); + } + /** * @return The number of ports needed by the slobrok. */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java index 2a698233713..73ec43ae8fc 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java @@ -13,6 +13,7 @@ import ai.vespa.metricsproxy.service.VespaServicesConfig; import com.yahoo.config.model.api.container.ContainerServiceType; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.config.provision.ClusterMembership; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.container.Container; import java.util.LinkedHashMap; @@ -58,6 +59,15 @@ public class MetricsProxyContainer extends Container implements } int metricsRpcPortOffset() { + if (numHttpServerPorts != 2) { + throw new IllegalArgumentException("expecting 2 http server ports"); + } + if (numMessageBusPorts() != 0) { + throw new IllegalArgumentException("expecting 0 message bus ports"); + } + if (numRpcPorts() != 1) { + throw new IllegalArgumentException("expecting 1 rpc port"); + } return numHttpServerPorts + numMessageBusPorts() + numRpcPorts(); } @@ -66,9 +76,11 @@ public class MetricsProxyContainer extends Container implements return METRICS_PROXY_CONTAINER; } + static public int BASEPORT = 19092; + @Override public int getWantedPort() { - return 19092; + return BASEPORT; } @Override @@ -83,6 +95,15 @@ public class MetricsProxyContainer extends Container implements } @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.wantPort(start++, "http"); + from.wantPort(start++, "http/1"); + from.wantPort(start++, "rpc/admin"); + from.wantPort(start++, "rpc/metrics"); + } + + @Override public int getPortCount() { return metricsRpcPortOffset() + 1; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java index 52abe8e8fde..12c72cecd14 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java @@ -14,6 +14,7 @@ import com.yahoo.osgi.provider.model.ComponentModel; import com.yahoo.search.config.QrStartConfig; import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.application.validation.RestartConfigs; import com.yahoo.vespa.model.container.component.Component; import com.yahoo.vespa.model.container.component.ComponentGroup; @@ -273,6 +274,42 @@ public abstract class Container extends AbstractService implements return suffixes; } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + int off = 2; + if (getHttp() == null) { + if (requireSpecificPorts) { + from.requirePort(start, "http"); + } else { + from.allocatePort("http"); + } + from.allocatePort("http/1"); + } else if (getHttp().getHttpServer() == null) { + // no http server ports + } else { + for (ConnectorFactory connectorFactory : getHttp().getHttpServer().getConnectorFactories()) { + int port = getPort(connectorFactory); + String name = "http/" + connectorFactory.getName(); + from.requirePort(port, name); + } + } + if (messageBusEnabled()) { + from.allocatePort("messaging"); + ++off; + } + if (rpcServerEnabled()) { + from.allocatePort("rpc/admin"); + ++off; + } + // TODO: remove this + if (getHttp() == null) { + from.allocatePort("unused/" + off); + ++off; + from.allocatePort("unused/" + off); + } + } + /** * @return the actual search port * TODO: Remove. Use {@link #getPortsMeta()} and check tags in conjunction with {@link #getRelativePort(int)}. diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java index d25396c6a50..17e85e47c4e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java @@ -8,6 +8,7 @@ import com.yahoo.vespa.config.content.core.StorServerConfig; import com.yahoo.vespa.config.content.core.StorStatusConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.application.validation.RestartConfigs; /** @@ -61,6 +62,19 @@ public abstract class ContentNode extends AbstractService } @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) { + from.allocatePort("messaging"); + from.allocatePort("rpc"); + from.allocatePort("http"); + } else { + from.wantPort(start++, "messaging"); + from.wantPort(start++, "rpc"); + from.wantPort(start++, "http"); + } + } + + @Override public void getConfig(StorCommunicationmanagerConfig.Builder builder) { builder.mbusport(getRelativePort(0)); builder.rpcport(getRelativePort(1)); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java index 0d30bade53c..4dfca39004a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.generic.service; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.HostResource; +import com.yahoo.vespa.model.PortAllocBridge; /** * An application specific generic service @@ -29,6 +30,9 @@ public class Service extends AbstractService { } @Override + public void allocatePorts(int start, PortAllocBridge from) { } + + @Override public String getStartupCommand() { return ((ServiceCluster) getParent()).getCommand(); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java b/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java index c50f772d8d0..6073f338683 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java @@ -5,6 +5,7 @@ import com.yahoo.vespa.config.search.core.FdispatchrcConfig; import com.yahoo.vespa.config.search.core.PartitionsConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.application.validation.RestartConfigs; import com.yahoo.vespa.model.content.SearchCoverage; @@ -230,6 +231,14 @@ public class Dispatch extends AbstractService implements SearchInterface, } } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + // NB: ignore "start" + from.allocatePort("rpc"); + from.allocatePort("fs4"); + from.allocatePort("health"); + } + /** * @return the number of ports needed */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java index 21882ee640a..9fe016b95df 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java @@ -16,6 +16,7 @@ import com.yahoo.vespa.config.content.core.StorStatusConfig; import com.yahoo.vespa.config.search.core.ProtonConfig; import static com.yahoo.vespa.defaults.Defaults.getDefaults; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.admin.monitoring.Monitoring; import com.yahoo.vespa.model.application.validation.RestartConfigs; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -158,6 +159,16 @@ public class SearchNode extends AbstractService implements return nodeSpec; } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + // NB: ignore "start" + from.allocatePort("rpc"); + from.allocatePort("fs4"); + from.allocatePort("future/4"); + from.allocatePort("unused/3"); + from.allocatePort("health"); + } + /** * Returns the number of ports needed by this service. * diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java index 4f854800c05..7f3391865ed 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java @@ -5,6 +5,7 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.searchlib.TranslogserverConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import org.w3c.dom.Element; @@ -43,6 +44,12 @@ public class TransactionLogServer extends AbstractService { return new String[]{"tls"}; } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + // NB: ignore "start" + from.allocatePort("tls"); + } + /** * Returns the port used by the TLS. * diff --git a/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java index 1ded447993c..0c737bce2f3 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/HostPortsTest.java @@ -116,6 +116,11 @@ public class HostPortsTest { @Override public int getPortCount() { return 1; } @Override public String[] getPortSuffixes() { return new String[]{"http"}; } @Override public String getServiceType() { return "slobrok"; } + + @Override + public void allocatePorts(int start, PortAllocBridge from) { + from.allocatePort("http"); + } } private static int counter = 0; @@ -145,5 +150,18 @@ public class HostPortsTest { } return suffixes; } + + @Override + public void allocatePorts(int start, PortAllocBridge from) { + for (int i = 0; i < portCount; i++) { + String suffix = "generic." + i; + if (start == 0) { + from.allocatePort(suffix); + } else { + from.requirePort(start++, suffix); + } + } + } + } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java index 02b77bdb375..f582417815b 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java @@ -129,5 +129,18 @@ public class HostResourceTest { } return suffixes; } + + @Override + public void allocatePorts(int start, PortAllocBridge from) { + for (int i = 0; i < portCount; i++) { + String suffix = "generic." + i; + if (start == 0) { + from.allocatePort(suffix); + } else { + from.requirePort(start++, suffix); + } + } + } + } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java index 9318130bb4f..be2ac91391c 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java @@ -12,6 +12,7 @@ import com.yahoo.config.model.test.MockRoot; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.Host; import com.yahoo.vespa.model.HostResource; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.application.validation.RestartConfigs; import com.yahoo.config.application.api.ValidationOverrides; @@ -249,6 +250,8 @@ public class ConfigValueChangeValidatorTest { @Override public String[] getPortSuffixes() { return null; } + + @Override public void allocatePorts(int start, PortAllocBridge from) { } } private static class SimpleConfigProducer extends AbstractConfigProducer<AbstractConfigProducer<?>> diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java index 2b04b026ee7..a42b04b8342 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java @@ -8,6 +8,7 @@ import com.yahoo.config.model.test.MockRoot; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.Host; import com.yahoo.vespa.model.HostResource; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.application.validation.change.StartupCommandChangeValidator; import org.junit.Test; @@ -78,5 +79,7 @@ public class StartupCommandChangeValidatorTest { @Override public String[] getPortSuffixes() { return null; } + + @Override public void allocatePorts(int start, PortAllocBridge from) { } } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java index 6f06eb3e482..016c8b84347 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ApiService.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.test; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; /** * This is a service for testing the plugin exchange mechanism in the @@ -38,4 +39,6 @@ public class ApiService extends AbstractService implements com.yahoo.test.Standa @Override public String[] getPortSuffixes() { return null; } + + @Override public void allocatePorts(int start, PortAllocBridge from) { } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java index a8e946bcea1..42ce91c3c51 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java @@ -13,6 +13,7 @@ import com.yahoo.config.model.builder.xml.ConfigModelId; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.HostResource; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.container.ContainerCluster; import com.yahoo.vespa.model.container.ContainerModel; @@ -129,6 +130,8 @@ public class ModelAmendingTestCase { @Override public String[] getPortSuffixes() { return null; } + + @Override public void allocatePorts(int start, PortAllocBridge from) { } } public static class AdminModelAmender extends ConfigModel { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java index b7887262ed5..3c3c11a7773 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ParentService.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.test; import com.yahoo.test.StandardConfig.Builder; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -59,4 +60,6 @@ public class ParentService extends AbstractService implements com.yahoo.test.Sta @Override public String[] getPortSuffixes() { return null; } + + @Override public void allocatePorts(int start, PortAllocBridge from) { } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java index 8a5bbe36a73..155fc4709ef 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.test; import com.yahoo.test.StandardConfig.Builder; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import java.util.HashMap; @@ -43,6 +44,16 @@ public class SimpleService extends AbstractService implements com.yahoo.test.Sta return new String[]{ "a", "b", "c", "d", "e" }; } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = getWantedPort(); + from.wantPort(start++, "a"); + from.wantPort(start++, "b"); + from.wantPort(start++, "c"); + from.wantPort(start++, "d"); + from.wantPort(start++, "e"); + } + // Make sure this service is listed in the sentinel config public String getStartupCommand() { return "sleep 0"; } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java index 79646dacaa9..363baccf33f 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/utils/FileSenderTest.java @@ -9,6 +9,7 @@ import com.yahoo.config.model.producer.UserConfigRepo; import com.yahoo.config.model.test.MockRoot; import com.yahoo.vespa.config.*; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.SimpleConfigProducer; import org.junit.Before; import org.junit.Test; @@ -175,5 +176,7 @@ public class FileSenderTest { @Override public String[] getPortSuffixes() { return null; } + + @Override public void allocatePorts(int start, PortAllocBridge from) { } } } |