// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.model.deploy; import com.google.common.collect.ImmutableList; import com.yahoo.config.model.api.ConfigServerSpec; import com.yahoo.config.model.api.ContainerEndpoint; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.TlsSecrets; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.Rotation; import com.yahoo.config.provision.Zone; import java.net.URI; import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.Set; /** * A test-only Properties class * *

Unfortunately this has to be placed in non-test source tree since lots of code already have test code (fix later) * * @author hakonhall */ public class TestProperties implements ModelContext.Properties { private boolean multitenant = false; private ApplicationId applicationId = ApplicationId.defaultId(); private List configServerSpecs = Collections.emptyList(); private HostName loadBalancerName = null; private URI ztsUrl = null; private String athenzDnsSuffix = null; private boolean hostedVespa = false; private Zone zone; private Set rotations; private Set endpoints = Collections.emptySet(); private boolean isBootstrap = false; private boolean isFirstTimeDeployment = false; private boolean useDedicatedNodeForLogserver = false; private boolean useAdaptiveDispatch = false; private double defaultTermwiseLimit = 1.0; private Optional tlsSecrets = Optional.empty(); @Override public boolean multitenant() { return multitenant; } @Override public ApplicationId applicationId() { return applicationId; } @Override public List configServerSpecs() { return configServerSpecs; } @Override public HostName loadBalancerName() { return loadBalancerName; } @Override public URI ztsUrl() { return ztsUrl; } @Override public String athenzDnsSuffix() { return athenzDnsSuffix; } @Override public boolean hostedVespa() { return hostedVespa; } @Override public Zone zone() { return zone; } @Override public Set rotations() { return rotations; } @Override public Set endpoints() { return endpoints; } @Override public boolean isBootstrap() { return isBootstrap; } @Override public boolean isFirstTimeDeployment() { return isFirstTimeDeployment; } @Override public boolean useAdaptiveDispatch() { return useAdaptiveDispatch; } @Override public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; } @Override public boolean useFdispatchByDefault() { return false; } @Override public boolean dispatchWithProtobuf() { return true; } @Override public Optional tlsSecrets() { return tlsSecrets; } @Override public double defaultTermwiseLimit() { return defaultTermwiseLimit; } public TestProperties setDefaultTermwiseLimit(double limit) { defaultTermwiseLimit = limit; return this; } public TestProperties setApplicationId(ApplicationId applicationId) { this.applicationId = applicationId; return this; } public TestProperties setHostedVespa(boolean hostedVespa) { this.hostedVespa = hostedVespa; return this; } public TestProperties setUseAdaptiveDispatch(boolean useAdaptiveDispatch) { this.useAdaptiveDispatch = useAdaptiveDispatch; return this; } public TestProperties setMultitenant(boolean multitenant) { this.multitenant = multitenant; return this; } public TestProperties setConfigServerSpecs(List configServerSpecs) { this.configServerSpecs = ImmutableList.copyOf(configServerSpecs); return this; } public TestProperties setUseDedicatedNodeForLogserver(boolean useDedicatedNodeForLogserver) { this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver; return this; } public TestProperties setTlsSecrets(Optional tlsSecrets) { this.tlsSecrets = tlsSecrets; return this; } public static class Spec implements ConfigServerSpec { private final String hostName; private final int configServerPort; private final int zooKeeperPort; public String getHostName() { return hostName; } public int getConfigServerPort() { return configServerPort; } public int getZooKeeperPort() { return zooKeeperPort; } @Override public boolean equals(Object o) { if (o instanceof ConfigServerSpec) { ConfigServerSpec other = (ConfigServerSpec)o; return hostName.equals(other.getHostName()) && configServerPort == other.getConfigServerPort() && zooKeeperPort == other.getZooKeeperPort(); } else { return false; } } @Override public int hashCode() { return hostName.hashCode(); } public Spec(String hostName, int configServerPort, int zooKeeperPort) { this.hostName = hostName; this.configServerPort = configServerPort; this.zooKeeperPort = zooKeeperPort; } } }