blob: c841af738408595706910325f7b08dd4006f5c67 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.distributed;
import static org.apache.geode.distributed.ConfigurationProperties.NAME;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.function.Consumer;
import java.util.function.Supplier;
import joptsimple.OptionException;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.RestoreSystemProperties;
import org.apache.geode.cache.server.CacheServer;
import org.apache.geode.distributed.ServerLauncher.Builder;
import org.apache.geode.distributed.ServerLauncher.Command;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.internal.process.ControllableProcess;
/**
* Unit tests for {@link ServerLauncher.Builder}. Extracted from {@link ServerLauncherTest}.
*/
public class ServerLauncherBuilderTest {
private InetAddress localHost;
private String localHostName;
@Rule
public RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();
@Before
public void before() throws UnknownHostException {
localHost = InetAddress.getLocalHost();
localHostName = localHost.getCanonicalHostName();
}
@Test
public void defaultCommandIsUnspecified() {
assertThat(Builder.DEFAULT_COMMAND).isEqualTo(Command.UNSPECIFIED);
}
@Test
public void getCommandReturnsUnspecifiedByDefault() {
assertThat(new Builder().getCommand()).isEqualTo(Builder.DEFAULT_COMMAND);
}
@Test
public void getCriticalHeapPercentageReturnsNullByDefault() {
assertThat(new Builder().getCriticalHeapPercentage()).isNull();
}
@Test
public void getEvictionHeapPercentageReturnsNullByDefault() {
assertThat(new Builder().getEvictionHeapPercentage()).isNull();
}
@Test
public void getForceReturnsFalseByDefault() {
assertThat(new Builder().getForce()).isFalse();
}
@Test
public void getHostNameForClientsReturnsNullByDefault() {
Builder builder = new Builder();
assertThat(builder.getHostNameForClients()).isNull();
}
@Test
public void getMaxConnectionsReturnsNullByDefault() {
assertThat(new Builder().getMaxConnections()).isNull();
}
@Test
public void getMaxMessageCountReturnsNullByDefault() {
assertThat(new Builder().getMaxMessageCount()).isNull();
}
@Test
public void getMaxThreadsReturnsNullByDefault() {
assertThat(new Builder().getMaxThreads()).isNull();
}
@Test
public void getMessageTimeToLiveReturnsNullByDefault() {
assertThat(new Builder().getMessageTimeToLive()).isNull();
}
@Test
public void getMemberNameReturnsNullByDefault() {
assertThat(new Builder().getMemberName()).isNull();
}
@Test
public void getPidReturnsNullByDefault() {
assertThat(new Builder().getPid()).isNull();
}
@Test
public void getRedirectOutputReturnsNullByDefault() {
assertThat(new Builder().getRedirectOutput()).isNull();
}
@Test
public void getServerBindAddressReturnsNullByDefault() {
assertThat(new Builder().getServerBindAddress()).isNull();
}
@Test
public void getServerPortReturnsDefaultPortByDefault() {
assertThat(new Builder().getServerPort()).isEqualTo(Integer.valueOf(CacheServer.DEFAULT_PORT));
}
@Test
public void getSocketBufferSizeReturnsNullByDefault() {
assertThat(new Builder().getSocketBufferSize()).isNull();
}
@Test
public void setCommandReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setCommand(Command.STATUS)).isSameAs(builder);
}
@Test
public void setCriticalHeapPercentageReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setCriticalHeapPercentage(55.5f)).isSameAs(builder);
}
@Test
public void setEvictionHeapPercentageReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setEvictionHeapPercentage(55.55f)).isSameAs(builder);
}
@Test
public void setForceReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setForce(true)).isSameAs(builder);
}
@Test
public void setHostNameForClientsReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setHostNameForClients("Pegasus")).isSameAs(builder);
}
@Test
public void setMaxConnectionsReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setMaxConnections(1000)).isSameAs(builder);
}
@Test
public void setMaxMessageCountReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setMaxMessageCount(50)).isSameAs(builder);
}
@Test
public void setMaxThreadsReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setMaxThreads(16)).isSameAs(builder);
}
@Test
public void setMemberNameReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setMemberName("serverOne")).isSameAs(builder);
}
@Test
public void setPidReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setPid(0)).isSameAs(builder);
}
@Test
public void setServerBindAddressReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setServerBindAddress(null)).isSameAs(builder);
}
@Test
public void setRedirectOutputReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setRedirectOutput(Boolean.TRUE)).isSameAs(builder);
}
@Test
public void setServerPortReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setServerPort(null)).isSameAs(builder);
}
@Test
public void setMessageTimeToLiveReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setMessageTimeToLive(30000)).isSameAs(builder);
}
@Test
public void setSocketBufferSizeReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setSocketBufferSize(32768)).isSameAs(builder);
}
@Test
public void setCommandWithNullResultsInDefaultCommand() {
Builder builder = new Builder();
new Builder().setCommand(null);
assertThat(builder.getCommand()).isEqualTo(Builder.DEFAULT_COMMAND);
}
@Test
public void setCommandToStatusResultsInStatus() {
Builder builder = new Builder();
builder.setCommand(Command.STATUS);
assertThat(builder.getCommand()).isEqualTo(Command.STATUS);
}
@Test
public void setCriticalHeapPercentageToPercentileUsesValue() {
Builder builder = new Builder();
builder.setCriticalHeapPercentage(55.5f);
assertThat(builder.getCriticalHeapPercentage().floatValue()).isEqualTo(55.5f);
}
@Test
public void setCriticalHeapPercentageToNullResultsInNull() {
Builder builder = new Builder();
builder.setCriticalHeapPercentage(null);
assertThat(builder.getCriticalHeapPercentage()).isNull();
}
@Test
public void setCriticalHeapPercentageAbove100ThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setCriticalHeapPercentage(100.01f))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setCriticalHeapPercentageBelowZeroThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setCriticalHeapPercentage(-0.01f))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setEvictionHeapPercentageToPercentileUsesValue() {
Builder builder = new Builder();
builder.setEvictionHeapPercentage(55.55f);
assertThat(builder.getEvictionHeapPercentage().floatValue()).isEqualTo(55.55f);
}
@Test
public void setEvictionHeapPercentageToNullResultsInNull() {
Builder builder = new Builder();
builder.setEvictionHeapPercentage(null);
assertThat(builder.getEvictionHeapPercentage()).isNull();
}
@Test
public void setEvictionHeapPercentageAboveO100ThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setEvictionHeapPercentage(101.0f))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setEvictionHeapPercentageBelowZeroThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setEvictionHeapPercentage(-10.0f))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setForceToTrueUsesValue() {
Builder builder = new Builder();
builder.setForce(true);
assertThat(builder.getForce()).isTrue();
}
@Test
public void setHostNameForClientsToStringUsesValue() {
Builder builder = new Builder();
builder.setHostNameForClients("Pegasus");
assertThat(builder.getHostNameForClients()).isEqualTo("Pegasus");
}
@Test
public void setHostNameForClientsToBlankStringThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setHostNameForClients(" "))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setHostNameForClientsToEmptyStringThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setHostNameForClients(""))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setHostNameForClientsToNullThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setHostNameForClients(null))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setMaxConnectionsToPositiveIntegerUsesValue() {
Builder builder = new Builder();
builder.setMaxConnections(1000);
assertThat(builder.getMaxConnections().intValue()).isEqualTo(1000);
}
@Test
public void setMaxConnectionsToNullResultsInNull() {
Builder builder = new Builder();
builder.setMaxConnections(null);
assertThat(builder.getMaxConnections()).isNull();
}
@Test
public void setMaxConnectionsToNegativeValueThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setMaxConnections(-10))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setMaxMessageCountToPositiveIntegerUsesValue() {
Builder builder = new Builder();
builder.setMaxMessageCount(50);
assertThat(builder.getMaxMessageCount().intValue()).isEqualTo(50);
}
@Test
public void setMaxMessageCountToNullResultsInNull() {
Builder builder = new Builder();
builder.setMaxMessageCount(null);
assertThat(builder.getMaxMessageCount()).isNull();
}
@Test
public void setMaxMessageCountToZeroResultsInIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setMaxMessageCount(0))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setMaxThreadsToPositiveIntegerUsesValue() {
Builder builder = new Builder();
builder.setMaxThreads(16);
assertThat(builder.getMaxThreads().intValue()).isEqualTo(16);
}
@Test
public void setMaxThreadsToNullResultsInNull() {
Builder builder = new Builder();
builder.setMaxThreads(null);
assertThat(builder.getMaxThreads()).isNull();
}
@Test
public void setMaxThreadsToNegativeValueThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setMaxThreads(-4))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setMemberNameToStringUsesValue() {
Builder builder = new Builder();
builder.setMemberName("serverOne");
assertThat(builder.getMemberName()).isEqualTo("serverOne");
}
@Test
public void setMemberNameToBlankStringThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setMemberName(" "))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setMemberNameToEmptyStringThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setMemberName(""))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setMemberNameToNullStringThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setMemberName(null))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setMessageTimeToLiveToPositiveIntegerUsesValue() {
Builder builder = new Builder();
builder.setMessageTimeToLive(30000);
assertThat(builder.getMessageTimeToLive().intValue()).isEqualTo(30000);
}
@Test
public void setMessageTimeToNullResultsInNull() {
Builder builder = new Builder();
builder.setMessageTimeToLive(null);
assertThat(builder.getMessageTimeToLive()).isNull();
}
@Test
public void setMessageTimeToLiveToZeroThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setMessageTimeToLive(0))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setPidToZeroOrGreaterUsesValue() {
Builder builder = new Builder();
builder.setPid(0);
assertThat(builder.getPid().intValue()).isEqualTo(0);
builder.setPid(1);
assertThat(builder.getPid().intValue()).isEqualTo(1);
builder.setPid(1024);
assertThat(builder.getPid().intValue()).isEqualTo(1024);
builder.setPid(12345);
assertThat(builder.getPid().intValue()).isEqualTo(12345);
}
@Test
public void setPidToNullResultsInNull() {
Builder builder = new Builder();
builder.setPid(null);
assertThat(builder.getPid()).isNull();
}
@Test
public void setPidToNegativeValueThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setPid(-1)).isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setServerBindAddressToNullResultsInNull() {
Builder builder = new Builder();
builder.setServerBindAddress(null);
assertThat(builder.getServerBindAddress()).isNull();
}
@Test
public void setServerBindAddressToEmptyStringResultsInNull() {
Builder builder = new Builder();
builder.setServerBindAddress("");
assertThat(builder.getServerBindAddress()).isNull();
}
@Test
public void setServerBindAddressToBlankStringResultsInNull() {
Builder builder = new Builder();
builder.setServerBindAddress(" ");
assertThat(builder.getServerBindAddress()).isNull();
}
@Test
public void setServerBindAddressToCanonicalLocalHostUsesValue() {
Builder builder = new Builder();
builder.setServerBindAddress(localHostName);
assertThat(builder.getServerBindAddress()).isEqualTo(localHost);
}
@Test
public void setServerBindAddressToLocalHostNameUsesValue() throws UnknownHostException {
String host = InetAddress.getLocalHost().getHostName();
Builder builder = new Builder().setServerBindAddress(host);
assertThat(builder.getServerBindAddress()).isEqualTo(localHost);
}
@Test
public void setServerBindAddressToUnknownHostThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setServerBindAddress("badHostName.example.com"))
.isInstanceOf(IllegalArgumentException.class)
.hasCauseInstanceOf(UnknownHostException.class);
}
@Test
public void setServerBindAddressToNonLocalHostThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setServerBindAddress("yahoo.com"))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setServerPortToNullResultsInDefaultPort() {
Builder builder = new Builder();
builder.setServerPort(null);
assertThat(builder.getServerPort()).isEqualTo(Integer.valueOf(CacheServer.DEFAULT_PORT));
}
@Test
public void setServerPortToZeroOrGreaterUsesValue() {
Builder builder = new Builder();
builder.setServerPort(0);
assertThat(builder.getServerPort().intValue()).isEqualTo(0);
assertThat(builder.isServerPortSetByUser()).isFalse();
builder.setServerPort(1);
assertThat(builder.getServerPort().intValue()).isEqualTo(1);
assertThat(builder.isServerPortSetByUser()).isTrue();
builder.setServerPort(80);
assertThat(builder.getServerPort().intValue()).isEqualTo(80);
assertThat(builder.isServerPortSetByUser()).isTrue();
builder.setServerPort(1024);
assertThat(builder.getServerPort().intValue()).isEqualTo(1024);
assertThat(builder.isServerPortSetByUser()).isTrue();
builder.setServerPort(65535);
assertThat(builder.getServerPort().intValue()).isEqualTo(65535);
assertThat(builder.isServerPortSetByUser()).isTrue();
builder.setServerPort(0);
assertThat(builder.getServerPort().intValue()).isEqualTo(0);
assertThat(builder.isServerPortSetByUser()).isFalse();
}
@Test
public void setServerPortAboveMaxValueThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setServerPort(65536))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setServerPortToNegativeValueThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setServerPort(-1))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void setSocketBufferSizeToPositiveIntegerUsesValue() {
Builder builder = new Builder();
builder.setSocketBufferSize(32768);
assertThat(builder.getSocketBufferSize().intValue()).isEqualTo(32768);
}
@Test
public void setSocketBufferSizeToNullResultsInNull() {
Builder builder = new Builder();
builder.setSocketBufferSize(null);
assertThat(builder.getSocketBufferSize()).isNull();
}
@Test
public void setSocketBufferSizeToNegativeValueThrowsIllegalArgumentException() {
assertThatThrownBy(() -> new Builder().setSocketBufferSize(-8192))
.isInstanceOf(IllegalArgumentException.class);
}
@Test
public void parseArgumentsWithForceSetsForceToTrue() {
Builder builder = new Builder();
builder.parseArguments("start", "--force");
assertThat(builder.getForce()).isTrue();
}
@Test
public void parseArgumentsWithNonNumericPortThrowsIllegalArgumentException() {
assertThatThrownBy(
() -> new Builder().parseArguments("start", "server1", "--server-port", "oneTwoThree"))
.isInstanceOf(IllegalArgumentException.class).hasCauseInstanceOf(OptionException.class);
}
@Test
public void parseArgumentsParsesValuesSeparatedWithCommas() throws UnknownHostException {
// given: fresh builder
Builder builder = new Builder();
// when: parsing comma-separated arguments
builder.parseArguments("start", "serverOne", "--assign-buckets", "--disable-default-server",
"--debug", "--force", "--rebalance", "--redirect-output", "--pid", "1234",
"--server-bind-address", InetAddress.getLocalHost().getHostAddress(), "--server-port",
"11235", "--hostname-for-clients", "192.168.99.100", "--max-connections", "300",
"--max-message-count", "1000", "--message-time-to-live", "10000", "--socket-buffer-size",
"1024", "--max-threads", "900");
// then: getters should return parsed values
assertThat(builder.getCommand()).isEqualTo(Command.START);
assertThat(builder.getMemberName()).isEqualTo("serverOne");
assertThat(builder.getHostNameForClients()).isEqualTo("192.168.99.100");
assertThat(builder.getAssignBuckets()).isTrue();
assertThat(builder.getDisableDefaultServer()).isTrue();
assertThat(builder.getDebug()).isTrue();
assertThat(builder.getForce()).isTrue();
assertThat(builder.getHelp()).isFalse();
assertThat(builder.getRebalance()).isTrue();
assertThat(builder.getRedirectOutput()).isTrue();
assertThat(builder.getPid().intValue()).isEqualTo(1234);
assertThat(builder.getServerBindAddress()).isEqualTo(InetAddress.getLocalHost());
assertThat(builder.getServerPort().intValue()).isEqualTo(11235);
assertThat(builder.getMaxConnections()).isEqualTo(300);
assertThat(builder.getMaxMessageCount()).isEqualTo(1000);
assertThat(builder.getMessageTimeToLive()).isEqualTo(10000);
assertThat(builder.getSocketBufferSize()).isEqualTo(1024);
assertThat(builder.getMaxThreads()).isEqualTo(900);
}
@Test
public void parseArgumentsParsesValuesSeparatedWithEquals() throws UnknownHostException {
// given: fresh builder
Builder builder = new Builder();
// when: parsing equals-separated arguments
builder.parseArguments("start", "serverOne", "--assign-buckets", "--disable-default-server",
"--debug", "--force", "--rebalance", "--redirect-output", "--pid=1234",
"--server-bind-address=" + InetAddress.getLocalHost().getHostAddress(),
"--server-port=11235", "--hostname-for-clients=192.168.99.100", "--max-connections=300",
"--max-message-count=1000", "--message-time-to-live=10000", "--socket-buffer-size=1024",
"--max-threads=900");
// then: getters should return parsed values
assertThat(builder.getCommand()).isEqualTo(Command.START);
assertThat(builder.getMemberName()).isEqualTo("serverOne");
assertThat(builder.getHostNameForClients()).isEqualTo("192.168.99.100");
assertThat(builder.getAssignBuckets()).isTrue();
assertThat(builder.getDisableDefaultServer()).isTrue();
assertThat(builder.getDebug()).isTrue();
assertThat(builder.getForce()).isTrue();
assertThat(builder.getHelp()).isFalse();
assertThat(builder.getRebalance()).isTrue();
assertThat(builder.getRedirectOutput()).isTrue();
assertThat(builder.getPid().intValue()).isEqualTo(1234);
assertThat(builder.getServerBindAddress()).isEqualTo(InetAddress.getLocalHost());
assertThat(builder.getServerPort().intValue()).isEqualTo(11235);
assertThat(builder.getMaxConnections()).isEqualTo(300);
assertThat(builder.getMaxMessageCount()).isEqualTo(1000);
assertThat(builder.getMessageTimeToLive()).isEqualTo(10000);
assertThat(builder.getSocketBufferSize()).isEqualTo(1024);
assertThat(builder.getMaxThreads()).isEqualTo(900);
}
@Test
public void parseCommandWithNullStringArrayResultsInDefaultCommand() {
Builder builder = new Builder();
builder.parseCommand((String[]) null);
assertThat(builder.getCommand()).isEqualTo(Builder.DEFAULT_COMMAND);
}
@Test
public void parseCommandWithEmptyStringArrayResultsInDefaultCommand() {
Builder builder = new Builder();
builder.parseCommand(); // empty String array
assertThat(builder.getCommand()).isEqualTo(Builder.DEFAULT_COMMAND);
}
@Test
public void parseCommandWithStartResultsInStartCommand() {
Builder builder = new Builder();
builder.parseCommand(Command.START.getName());
assertThat(builder.getCommand()).isEqualTo(Command.START);
}
@Test
public void parseCommandWithStatusResultsInStatusCommand() {
Builder builder = new Builder();
builder.parseCommand("Status");
assertThat(builder.getCommand()).isEqualTo(Command.STATUS);
}
@Test
public void parseCommandWithMixedCaseResultsInCorrectCase() {
Builder builder = new Builder();
builder.parseCommand("sToP");
assertThat(builder.getCommand()).isEqualTo(Command.STOP);
}
@Test
public void parseCommandWithTwoCommandsWithSwitchesUsesFirstCommand() {
Builder builder = new Builder();
builder.parseCommand("--opt", "START", "-o", Command.STATUS.getName());
assertThat(builder.getCommand()).isEqualTo(Command.START);
}
@Test
public void parseCommandWithTwoCommandsWithoutSwitchesUsesFirstCommand() {
Builder builder = new Builder();
builder.parseCommand("START", Command.STATUS.getName());
assertThat(builder.getCommand()).isEqualTo(Command.START);
}
@Test
public void parseCommandWithBadInputResultsInDefaultCommand() {
Builder builder = new Builder();
builder.parseCommand("badCommandName", "--start", "stat");
assertThat(builder.getCommand()).isEqualTo(Builder.DEFAULT_COMMAND);
}
@Test
public void parseMemberNameWithNullStringArrayResultsInNull() {
Builder builder = new Builder();
builder.parseMemberName((String[]) null);
assertThat(builder.getMemberName()).isNull();
}
@Test
public void parseMemberNameWithEmptyStringArrayResultsInNull() {
Builder builder = new Builder();
builder.parseMemberName(); // empty String array
assertThat(builder.getMemberName()).isNull();
}
@Test
public void parseMemberNameWithCommandAndOptionsResultsInNull() {
Builder builder = new Builder();
builder.parseMemberName(Command.START.getName(), "--opt", "-o");
assertThat(builder.getMemberName()).isNull();
}
@Test
public void parseMemberNameWithStringUsesValue() {
Builder builder = new Builder();
builder.parseMemberName("memberOne");
assertThat(builder.getMemberName()).isEqualTo("memberOne");
}
@Test
public void buildCreatesServerLauncherWithBuilderValues() throws UnknownHostException {
ServerLauncher launcher = new Builder().setCommand(Command.STOP).setAssignBuckets(true)
.setForce(true).setMemberName("serverOne").setRebalance(true)
.setServerBindAddress(InetAddress.getLocalHost().getHostAddress()).setServerPort(11235)
.setCriticalHeapPercentage(90.0f).setEvictionHeapPercentage(75.0f).setMaxConnections(100)
.setMaxMessageCount(512).setMaxThreads(8).setMessageTimeToLive(120000)
.setSocketBufferSize(32768).setRedirectOutput(Boolean.TRUE).build();
assertThat(launcher.getCommand()).isEqualTo(Command.STOP);
assertThat(launcher.getMemberName()).isEqualTo("serverOne");
assertThat(launcher.getServerBindAddress()).isEqualTo(InetAddress.getLocalHost());
assertThat(launcher.getServerPort().intValue()).isEqualTo(11235);
assertThat(launcher.getCriticalHeapPercentage().floatValue()).isEqualTo(90.0f);
assertThat(launcher.getEvictionHeapPercentage().floatValue()).isEqualTo(75.0f);
assertThat(launcher.getMaxConnections().intValue()).isEqualTo(100);
assertThat(launcher.getMaxMessageCount().intValue()).isEqualTo(512);
assertThat(launcher.getMaxThreads().intValue()).isEqualTo(8);
assertThat(launcher.getMessageTimeToLive().intValue()).isEqualTo(120000);
assertThat(launcher.getSocketBufferSize().intValue()).isEqualTo(32768);
assertThat(launcher.isAssignBuckets()).isTrue();
assertThat(launcher.isDebugging()).isFalse();
assertThat(launcher.isDisableDefaultServer()).isFalse();
assertThat(launcher.isForcing()).isTrue();
assertThat(launcher.isHelping()).isFalse();
assertThat(launcher.isRebalancing()).isTrue();
assertThat(launcher.isRedirectingOutput()).isTrue();
assertThat(launcher.isRunning()).isFalse();
}
@Test
public void buildUsesMemberNameSetInApiProperties() {
ServerLauncher launcher =
new Builder().setCommand(ServerLauncher.Command.START).set(NAME, "serverABC").build();
assertThat(launcher.getMemberName()).isNull();
assertThat(launcher.getProperties().getProperty(NAME)).isEqualTo("serverABC");
}
@Test
public void buildUsesMemberNameSetInSystemProperties() {
System.setProperty(DistributionConfig.GEMFIRE_PREFIX + NAME, "serverXYZ");
ServerLauncher launcher = new Builder().setCommand(ServerLauncher.Command.START).build();
assertThat(launcher.getMemberName()).isNull();
}
@Test
public void getStartupCompletionActionReturnsNullByDefault() {
assertThat(new Builder().getStartupCompletionAction()).isNull();
}
@Test
public void setStartupCompletionActionReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setStartupCompletionAction(null)).isSameAs(builder);
}
@Test
public void setStartupCompletionActionUsesValue() {
Runnable myRunnable = () -> {
};
Builder builder = new Builder();
builder.setStartupCompletionAction(myRunnable);
assertThat(builder.getStartupCompletionAction())
.isSameAs(myRunnable);
}
@Test
public void getStartupExceptionActionReturnsNullByDefault() {
assertThat(new Builder().getStartupExceptionAction()).isNull();
}
@Test
public void setStartupExceptionActionReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setStartupExceptionAction(null)).isSameAs(builder);
}
@Test
public void setStartupExceptionActionUsesValue() {
Consumer<Throwable> myThrowable = (throwable) -> {
};
Builder builder = new Builder();
builder.setStartupExceptionAction(myThrowable);
assertThat(builder.getStartupExceptionAction())
.isSameAs(myThrowable);
}
@Test
public void getServerLauncherCacheProviderReturnsNullByDefault() {
assertThat(new Builder().getServerLauncherCacheProvider()).isNull();
}
@Test
public void setServerLauncherCacheProviderReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setServerLauncherCacheProvider(null)).isSameAs(builder);
}
@Test
public void setServerLauncherCacheProviderUsesValue() {
Builder builder = new Builder();
ServerLauncherCacheProvider value = mock(ServerLauncherCacheProvider.class);
builder.setServerLauncherCacheProvider(value);
assertThat(builder.getServerLauncherCacheProvider()).isSameAs(value);
}
@Test
public void getControllableProcessFactoryReturnsNullByDefault() {
assertThat(new Builder().getControllableProcessFactory()).isNull();
}
@Test
public void setControllableProcessFactoryReturnsBuilderInstance() {
Builder builder = new Builder();
assertThat(builder.setControllableProcessFactory(null)).isSameAs(builder);
}
@Test
public void setControllableProcessFactoryUsesValue() {
Builder builder = new Builder();
Supplier<ControllableProcess> controllableProcessFactory =
() -> mock(ControllableProcess.class);
builder.setControllableProcessFactory(controllableProcessFactory);
assertThat(builder.getControllableProcessFactory()).isSameAs(controllableProcessFactory);
}
}