You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2019/04/12 22:14:10 UTC

[geode] 03/07: GEODE-6626: Expand GatewayReceiverFactoryImplTest

This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch GEODE-6626-gatewayReceiver-metrics
in repository https://gitbox.apache.org/repos/asf/geode.git

commit beb537362c37100be65b72674e0335dc8a1eff52
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Fri Apr 12 13:26:30 2019 -0700

    GEODE-6626: Expand GatewayReceiverFactoryImplTest
---
 .../wan/GatewayReceiverFactoryImplJUnitTest.java   | 135 ----------
 .../cache/wan/GatewayReceiverFactoryImplTest.java  | 293 +++++++++++++++++++++
 2 files changed, 293 insertions(+), 135 deletions(-)

diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewayReceiverFactoryImplJUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewayReceiverFactoryImplJUnitTest.java
deleted file mode 100644
index d01c874..0000000
--- a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewayReceiverFactoryImplJUnitTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * 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.internal.cache.wan;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-import org.apache.geode.cache.wan.GatewayReceiver;
-import org.apache.geode.cache.wan.GatewayTransportFilter;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.cache.xmlcache.CacheCreation;
-import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
-
-@RunWith(Parameterized.class)
-@Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
-public class GatewayReceiverFactoryImplJUnitTest {
-  @Parameterized.Parameter
-  public static InternalCache cache;
-  private GatewayReceiverFactoryImpl gatewayReceiverFactory;
-
-  @Parameterized.Parameters(name = "{0}")
-  public static Collection<InternalCache> cacheTypes() throws Exception {
-    InternalCache gemfireCacheImpl = spy(mock(GemFireCacheImpl.class, "GemFireCacheImpl"));
-    when(gemfireCacheImpl.getDistributedSystem()).thenReturn(mock(InternalDistributedSystem.class));
-
-    InternalCache declarativeCacheImpl = spy(mock(CacheCreation.class, "CacheCreation"));
-
-    return Arrays.asList(new InternalCache[] {gemfireCacheImpl, declarativeCacheImpl});
-  }
-
-  @Before
-  public void setUp() {
-    gatewayReceiverFactory = spy(new GatewayReceiverFactoryImpl(cache));
-    gatewayReceiverFactory.setManualStart(true);
-  }
-
-  @Test
-  public void createWithDefaultAttributes() {
-    GatewayReceiver receiver = gatewayReceiverFactory.create();
-
-    assertThat(receiver.isManualStart()).isTrue();
-    assertThat(receiver.getGatewayTransportFilters()).isEmpty();
-    assertThat(receiver.getEndPort()).isEqualTo(GatewayReceiver.DEFAULT_END_PORT);
-    assertThat(receiver.getStartPort()).isEqualTo(GatewayReceiver.DEFAULT_START_PORT);
-    assertThat(receiver.getBindAddress()).isEqualTo(GatewayReceiver.DEFAULT_BIND_ADDRESS);
-    assertThat(receiver.getSocketBufferSize())
-        .isEqualTo(GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE);
-    assertThat(receiver.getHostnameForSenders())
-        .isEqualTo(GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS);
-    assertThat(receiver.getMaximumTimeBetweenPings())
-        .isEqualTo(GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS);
-
-    verify(cache, times(1)).addGatewayReceiver(receiver);
-  }
-
-  @Test
-  public void createWithCustomAttributes() {
-    int endPort = 2500;
-    int startPort = 1500;
-    int socketBufferSize = 128;
-    int timeoutBetweenPings = 1;
-    String bindAddress = "kaos";
-    String hostnameForSenders = "kaos.com";
-    GatewayTransportFilter gatewayTransportFilter = mock(GatewayTransportFilter.class);
-
-    gatewayReceiverFactory.setEndPort(endPort);
-    gatewayReceiverFactory.setStartPort(startPort);
-    gatewayReceiverFactory.setBindAddress(bindAddress);
-    gatewayReceiverFactory.setSocketBufferSize(socketBufferSize);
-    gatewayReceiverFactory.setHostnameForSenders(hostnameForSenders);
-    gatewayReceiverFactory.setMaximumTimeBetweenPings(timeoutBetweenPings);
-    gatewayReceiverFactory.addGatewayTransportFilter(gatewayTransportFilter);
-    GatewayReceiver receiver = gatewayReceiverFactory.create();
-
-    assertThat(receiver.isManualStart()).isTrue();
-    assertThat(receiver.getEndPort()).isEqualTo(endPort);
-    assertThat(receiver.getStartPort()).isEqualTo(startPort);
-    assertThat(receiver.getBindAddress()).isEqualTo(bindAddress);
-    assertThat(receiver.getGatewayTransportFilters()).isNotEmpty();
-    assertThat(receiver.getSocketBufferSize()).isEqualTo(socketBufferSize);
-    assertThat(receiver.getHostnameForSenders()).isEqualTo(hostnameForSenders);
-    assertThat(receiver.getMaximumTimeBetweenPings()).isEqualTo(timeoutBetweenPings);
-    assertThat(receiver.getGatewayTransportFilters()).contains(gatewayTransportFilter);
-
-    verify(cache, times(1)).addGatewayReceiver(receiver);
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void createShouldThrowExceptionWhenPortRangeIsInvalid() {
-    gatewayReceiverFactory.setEndPort(1400);
-    gatewayReceiverFactory.setStartPort(1500);
-    gatewayReceiverFactory.create();
-
-    fail("Exception should have been thrown: endPort < startPort.");
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void createShouldThrownExceptionWhenGatewayReceiverAlreadyExists() {
-    Set mockReceivers = new HashSet();
-    mockReceivers.add(mock(GatewayReceiver.class));
-    when(cache.getGatewayReceivers()).thenReturn(mockReceivers);
-    gatewayReceiverFactory.create();
-
-    fail("Exception should have been thrown: a GatewayReceiver already exists on this cache.");
-  }
-}
diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewayReceiverFactoryImplTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewayReceiverFactoryImplTest.java
new file mode 100644
index 0000000..d164eb9
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/GatewayReceiverFactoryImplTest.java
@@ -0,0 +1,293 @@
+/*
+ * 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.internal.cache.wan;
+
+import static java.util.Collections.singleton;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.catchThrowable;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+import org.junit.runners.Parameterized.UseParametersRunnerFactory;
+
+import org.apache.geode.cache.wan.GatewayReceiver;
+import org.apache.geode.cache.wan.GatewayTransportFilter;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.internal.cache.CacheServerImpl;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.xmlcache.CacheCreation;
+import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+
+@RunWith(Parameterized.class)
+@UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
+public class GatewayReceiverFactoryImplTest {
+
+  @Parameter
+  public InternalCache cache;
+
+  private GatewayReceiverFactoryImpl gatewayReceiverFactory;
+
+  @Parameters(name = "{0}")
+  public static Collection<InternalCache> cacheTypes() {
+    InternalCache gemFireCacheImpl = mock(GemFireCacheImpl.class, "GemFireCacheImpl");
+    InternalCache cacheCreation = mock(CacheCreation.class, "CacheCreation");
+    InternalDistributedSystem system = mock(InternalDistributedSystem.class);
+
+    when(gemFireCacheImpl.addCacheServer(true)).thenReturn(mock(CacheServerImpl.class));
+    when(gemFireCacheImpl.getDistributedSystem()).thenReturn(system);
+    when(gemFireCacheImpl.getInternalDistributedSystem()).thenReturn(system);
+
+    return Arrays.asList(gemFireCacheImpl, cacheCreation);
+  }
+
+  @Before
+  public void setUp() {
+    when(cache.getGatewayReceivers()).thenReturn(Collections.emptySet());
+
+    gatewayReceiverFactory = new GatewayReceiverFactoryImpl(cache);
+  }
+
+  @Test
+  public void createDoesNotUseManualStartByDefault() {
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.isManualStart()).isFalse();
+  }
+
+  @Test
+  public void createUsesSpecifiedManualStart() {
+    gatewayReceiverFactory.setManualStart(true);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.isManualStart()).isTrue();
+  }
+
+  @Test
+  public void createDoesNotUseGatewayTransportFiltersByDefault() {
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getGatewayTransportFilters()).isEmpty();
+  }
+
+  @Test
+  public void createUsesSpecifiedGatewayTransportFilter() {
+    GatewayTransportFilter gatewayTransportFilter = mock(GatewayTransportFilter.class);
+    gatewayReceiverFactory.addGatewayTransportFilter(gatewayTransportFilter);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getGatewayTransportFilters()).containsOnly(gatewayTransportFilter);
+  }
+
+  @Test
+  public void createUsesMultipleSpecifiedGatewayTransportFilters() {
+    GatewayTransportFilter gatewayTransportFilter1 = mock(GatewayTransportFilter.class);
+    GatewayTransportFilter gatewayTransportFilter2 = mock(GatewayTransportFilter.class);
+    GatewayTransportFilter gatewayTransportFilter3 = mock(GatewayTransportFilter.class);
+    gatewayReceiverFactory.addGatewayTransportFilter(gatewayTransportFilter1);
+    gatewayReceiverFactory.addGatewayTransportFilter(gatewayTransportFilter2);
+    gatewayReceiverFactory.addGatewayTransportFilter(gatewayTransportFilter3);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getGatewayTransportFilters())
+        .containsExactlyInAnyOrder(gatewayTransportFilter1, gatewayTransportFilter2,
+            gatewayTransportFilter3);
+  }
+
+  @Test
+  public void createUsesEndPortDefault() {
+    int endPortDefault = 5500;
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getEndPort()).isEqualTo(endPortDefault);
+  }
+
+  @Test
+  public void createUsesSpecifiedEndPort() {
+    int endPort = 6000;
+    gatewayReceiverFactory.setEndPort(endPort);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getEndPort()).isEqualTo(endPort);
+  }
+
+  @Test
+  public void createThrowsIllegalStateExceptionIfEndPortIsLessThanStartPortDefault() {
+    int endPort = 2500;
+    gatewayReceiverFactory.setEndPort(endPort);
+
+    Throwable thrown = catchThrowable(() -> gatewayReceiverFactory.create());
+
+    assertThat(thrown).isInstanceOf(IllegalStateException.class);
+  }
+
+  @Test
+  public void createUsesStartPortDefault() {
+    int startPortDefault = 5000;
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getStartPort()).isEqualTo(startPortDefault);
+  }
+
+  @Test
+  public void createUsesSpecifiedStartPort() {
+    int startPort = 2500;
+    gatewayReceiverFactory.setStartPort(startPort);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getStartPort()).isEqualTo(startPort);
+  }
+
+  @Test
+  public void createThrowsIllegalStateExceptionIfSpecifiedStartPortIsGreaterThanEndPortDefault() {
+    int startPort = 6000;
+    gatewayReceiverFactory.setStartPort(startPort);
+
+    Throwable thrown = catchThrowable(() -> gatewayReceiverFactory.create());
+
+    assertThat(thrown).isInstanceOf(IllegalStateException.class);
+  }
+
+  @Test
+  public void createUsesSpecifiedStartPortAndEndPort() {
+    int startPort = 4000;
+    int endPort = 6000;
+    gatewayReceiverFactory.setStartPort(startPort);
+    gatewayReceiverFactory.setEndPort(endPort);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getStartPort()).isEqualTo(startPort);
+    assertThat(receiver.getEndPort()).isEqualTo(endPort);
+  }
+
+  @Test
+  public void createThrowsIllegalStateExceptionIfSpecifiedEndPortIsLessThanSpecifiedStartPort() {
+    int startPort = 6000;
+    int endPort = 4000;
+    gatewayReceiverFactory.setStartPort(startPort);
+    gatewayReceiverFactory.setEndPort(endPort);
+
+    Throwable thrown = catchThrowable(() -> gatewayReceiverFactory.create());
+
+    assertThat(thrown).isInstanceOf(IllegalStateException.class);
+  }
+
+  @Test
+  public void createUsesBindAddressDefault() {
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getBindAddress()).isEqualTo("");
+  }
+
+  @Test
+  public void createUsesSpecifiedBindAddress() {
+    String bindAddress = "kaos";
+    gatewayReceiverFactory.setBindAddress(bindAddress);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getBindAddress()).isEqualTo(bindAddress);
+  }
+
+  @Test
+  public void createUsesSocketBufferSizeDefault() {
+    String socketBufferSizeDefault = "524288";
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getSocketBufferSize()).isEqualTo(Integer.valueOf(socketBufferSizeDefault));
+  }
+
+  @Test
+  public void createUsesSpecifiedSocketBufferSize() {
+    int socketBufferSize = 128;
+    gatewayReceiverFactory.setSocketBufferSize(socketBufferSize);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getSocketBufferSize()).isEqualTo(socketBufferSize);
+  }
+
+  @Test
+  public void createUsesHostnameForSendersDefault() {
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getHostnameForSenders()).isEqualTo("");
+  }
+
+  @Test
+  public void createUsesSpecifiedHostnameForSenders() {
+    String hostnameForSenders = "kaos.com";
+    gatewayReceiverFactory.setHostnameForSenders(hostnameForSenders);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getHostnameForSenders()).isEqualTo(hostnameForSenders);
+  }
+
+  @Test
+  public void createUsesMaximumTimeBetweenPingsDefault() {
+    int maximumTimeBetweenPingsDefault = 60000;
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getMaximumTimeBetweenPings()).isEqualTo(maximumTimeBetweenPingsDefault);
+  }
+
+  @Test
+  public void createUsesSpecifiedMaximumTimeBetweenPings() {
+    int timeoutBetweenPings = 1;
+    gatewayReceiverFactory.setMaximumTimeBetweenPings(timeoutBetweenPings);
+
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    assertThat(receiver.getMaximumTimeBetweenPings()).isEqualTo(timeoutBetweenPings);
+  }
+
+  @Test
+  public void createAddsGatewayReceiverToCache() {
+    GatewayReceiver receiver = gatewayReceiverFactory.create();
+
+    verify(cache).addGatewayReceiver(receiver);
+  }
+
+  @Test
+  public void createThrowsIllegalStateExceptionIfGatewayReceiverAlreadyExists() {
+    when(cache.getGatewayReceivers()).thenReturn(singleton(mock(GatewayReceiver.class)));
+
+    Throwable thrown = catchThrowable(() -> gatewayReceiverFactory.create());
+
+    assertThat(thrown).isInstanceOf(IllegalStateException.class);
+  }
+}