You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by zh...@apache.org on 2018/12/21 19:06:00 UTC

[geode] branch feature/GEODE-6143-11 created (now aa33526)

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

zhouxj pushed a change to branch feature/GEODE-6143-11
in repository https://gitbox.apache.org/repos/asf/geode.git.


      at aa33526  GEODE-6143: remove PowerMock for GatewayReceiverXmlParsingValidationsJUnitTest

This branch includes the following new commits:

     new aa33526  GEODE-6143: remove PowerMock for GatewayReceiverXmlParsingValidationsJUnitTest

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[geode] 01/01: GEODE-6143: remove PowerMock for GatewayReceiverXmlParsingValidationsJUnitTest

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zhouxj pushed a commit to branch feature/GEODE-6143-11
in repository https://gitbox.apache.org/repos/asf/geode.git

commit aa3352662fe2cedc29bbbfed9272961a309e4748
Author: zhouxh <gz...@pivotal.io>
AuthorDate: Fri Dec 21 11:05:18 2018 -0800

    GEODE-6143: remove PowerMock for GatewayReceiverXmlParsingValidationsJUnitTest
---
 ...ewayReceiverXmlParsingValidationsJUnitTest.java |  55 ++++----
 .../geode/internal/cache/wan/MyWANFactoryImpl.java | 144 +++++++++++++++++++++
 ....apache.geode.internal.cache.wan.spi.WANFactory |  15 +++
 3 files changed, 181 insertions(+), 33 deletions(-)

diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/wan/GatewayReceiverXmlParsingValidationsJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/wan/GatewayReceiverXmlParsingValidationsJUnitTest.java
index 9461abd..e8592b1 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/wan/GatewayReceiverXmlParsingValidationsJUnitTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/wan/GatewayReceiverXmlParsingValidationsJUnitTest.java
@@ -16,48 +16,38 @@ package org.apache.geode.internal.cache.wan;
 
 import static org.apache.geode.distributed.ConfigurationProperties.CACHE_XML_FILE;
 import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.internal.Assert.assertTrue;
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.junit.Assert.assertEquals;
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Iterator;
+import java.util.ServiceLoader;
 
 import org.junit.After;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TestName;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.modules.junit4.PowerMockRunnerDelegate;
 
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.CacheXmlException;
-import org.apache.geode.cache.wan.GatewayReceiverFactory;
+import org.apache.geode.cache.wan.GatewayReceiver;
+import org.apache.geode.internal.cache.wan.spi.WANFactory;
 import org.apache.geode.test.junit.categories.WanTest;
 import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
 import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
 import org.apache.geode.util.test.TestUtil;
 
-@RunWith(PowerMockRunner.class)
 @Category({WanTest.class})
-@PrepareForTest(WANServiceProvider.class)
-@PowerMockRunnerDelegate(Parameterized.class)
-@PowerMockIgnore({"javax.management.*", "javax.security.*", "*.IntegrationTest"})
+@RunWith(Parameterized.class)
 @Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
 public class GatewayReceiverXmlParsingValidationsJUnitTest {
   private Cache cache;
-  private GatewayReceiverFactory receiverFactory;
 
   @Parameterized.Parameter
   public static String validationStrategy;
@@ -70,13 +60,6 @@ public class GatewayReceiverXmlParsingValidationsJUnitTest {
     return Arrays.asList("DTD", "XSD");
   }
 
-  @Before
-  public void setUp() throws Exception {
-    mockStatic(WANServiceProvider.class);
-    receiverFactory = spy(GatewayReceiverFactory.class);
-    when(WANServiceProvider.createGatewayReceiverFactory(any())).thenReturn(receiverFactory);
-  }
-
   @Test(expected = CacheXmlException.class)
   public void multipleReceiversShouldThrowException() {
     String cacheXmlFileName = TestUtil.getResourcePath(getClass(),
@@ -90,15 +73,20 @@ public class GatewayReceiverXmlParsingValidationsJUnitTest {
         getClass().getSimpleName() + "." + testName.getMethodName() + ".cache.xml");
     cache = new CacheFactory().set(MCAST_PORT, "0").set(CACHE_XML_FILE, cacheXmlFileName).create();
 
-    assertThat(cache.getGatewayReceivers()).isNotNull();
-    verify(receiverFactory, times(1)).setEndPort(1501);
-    verify(receiverFactory, times(1)).setStartPort(1500);
-    verify(receiverFactory, times(1)).setManualStart(true);
-    verify(receiverFactory, times(1)).setSocketBufferSize(32768);
-    verify(receiverFactory, times(1)).setBindAddress("localhost");
-    verify(receiverFactory, times(1)).setHostnameForSenders("localhost");
-    verify(receiverFactory, times(1)).setMaximumTimeBetweenPings(60000);
-    verify(receiverFactory, times(1)).create();
+    assertThat(cache.getGatewayReceivers()).isNotEmpty();
+    GatewayReceiver receiver = cache.getGatewayReceivers().iterator().next();
+
+    ServiceLoader<WANFactory> loader = ServiceLoader.load(WANFactory.class);
+    Iterator<WANFactory> itr = loader.iterator();
+    assertThat(itr.hasNext()).isTrue();
+
+    assertEquals(1501, receiver.getEndPort());
+    assertEquals(1500, receiver.getStartPort());
+    assertTrue(receiver.isManualStart());
+    assertEquals(32768, receiver.getSocketBufferSize());
+    assertTrue(receiver.getBindAddress().equals("localhost"));
+    assertTrue(receiver.getHostnameForSenders().equals("localhost"));
+    assertEquals(60000, receiver.getMaximumTimeBetweenPings());
   }
 
   @After
@@ -107,4 +95,5 @@ public class GatewayReceiverXmlParsingValidationsJUnitTest {
       cache.close();
     }
   }
+
 }
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/wan/MyWANFactoryImpl.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/wan/MyWANFactoryImpl.java
new file mode 100644
index 0000000..39272d2
--- /dev/null
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/cache/wan/MyWANFactoryImpl.java
@@ -0,0 +1,144 @@
+/*
+ * 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.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import org.apache.geode.cache.client.internal.locator.wan.LocatorMembershipListener;
+import org.apache.geode.cache.wan.GatewayReceiver;
+import org.apache.geode.cache.wan.GatewayReceiverFactory;
+import org.apache.geode.cache.wan.GatewaySenderFactory;
+import org.apache.geode.cache.wan.GatewayTransportFilter;
+import org.apache.geode.distributed.internal.WanLocatorDiscoverer;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.cache.wan.spi.WANFactory;
+
+public class MyWANFactoryImpl implements WANFactory {
+
+  public GatewayReceiverFactory myReceiverFactory;
+
+  @Override
+  public GatewaySenderFactory createGatewaySenderFactory(InternalCache cache) {
+    return null;
+  }
+
+  @Override
+  public GatewayReceiverFactory createGatewayReceiverFactory(InternalCache cache) {
+    myReceiverFactory = spy(new MyGatewayReceiverFactoryImpl(cache));
+    return myReceiverFactory;
+  }
+
+  @Override
+  public WanLocatorDiscoverer createLocatorDiscoverer() {
+    return null;
+  }
+
+  @Override
+  public LocatorMembershipListener createLocatorMembershipListener() {
+    return null;
+  }
+
+  @Override
+  public void initialize() {
+
+  }
+
+  static class MyGatewayReceiverFactoryImpl implements GatewayReceiverFactory {
+    InternalCache cache;
+    int startPort;
+    int endPort;
+    int socketBuffSize;
+    int timeBetPings;
+    boolean manualStart;
+    String bindAdd;
+    String hostnameForSenders;
+
+    public MyGatewayReceiverFactoryImpl(InternalCache cache) {
+      this.cache = cache;
+    }
+
+    @Override
+    public GatewayReceiverFactory setStartPort(int startPort) {
+      this.startPort = startPort;
+      return this;
+    }
+
+    @Override
+    public GatewayReceiverFactory setEndPort(int endPort) {
+      this.endPort = endPort;
+      return this;
+    }
+
+    @Override
+    public GatewayReceiverFactory setSocketBufferSize(int socketBufferSize) {
+      this.socketBuffSize = socketBufferSize;
+      return this;
+    }
+
+    @Override
+    public GatewayReceiverFactory setBindAddress(String address) {
+      this.bindAdd = address;
+      return this;
+    }
+
+    @Override
+    public GatewayReceiverFactory addGatewayTransportFilter(GatewayTransportFilter filter) {
+      return null;
+    }
+
+    @Override
+    public GatewayReceiverFactory removeGatewayTransportFilter(GatewayTransportFilter filter) {
+      return null;
+    }
+
+    @Override
+    public GatewayReceiverFactory setMaximumTimeBetweenPings(int time) {
+      this.timeBetPings = time;
+      return this;
+    }
+
+    @Override
+    public GatewayReceiverFactory setHostnameForSenders(String address) {
+      this.hostnameForSenders = address;
+      return this;
+    }
+
+    @Override
+    public GatewayReceiverFactory setManualStart(boolean start) {
+      this.manualStart = start;
+      return this;
+    }
+
+    @Override
+    public GatewayReceiver create() {
+      GatewayReceiver receiver = mock(GatewayReceiver.class);
+      when(receiver.isManualStart()).thenReturn(this.manualStart);
+      when(receiver.getBindAddress()).thenReturn(this.bindAdd);
+      when(receiver.getEndPort()).thenReturn(this.endPort);
+      when(receiver.getStartPort()).thenReturn(this.startPort);
+      when(receiver.getSocketBufferSize()).thenReturn(this.socketBuffSize);
+      when(receiver.getHostnameForSenders()).thenReturn(this.hostnameForSenders);
+      when(receiver.getMaximumTimeBetweenPings()).thenReturn(this.timeBetPings);
+      this.cache.addGatewayReceiver(receiver);
+      return receiver;
+    }
+
+    public boolean isManualStart() {
+      return this.manualStart;
+    }
+  }
+}
diff --git a/geode-core/src/main/resources/META-INF/services/org.apache.geode.internal.cache.wan.spi.WANFactory b/geode-core/src/main/resources/META-INF/services/org.apache.geode.internal.cache.wan.spi.WANFactory
new file mode 100644
index 0000000..be99572
--- /dev/null
+++ b/geode-core/src/main/resources/META-INF/services/org.apache.geode.internal.cache.wan.spi.WANFactory
@@ -0,0 +1,15 @@
+# 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.
+org.apache.geode.internal.cache.wan.MyWANFactoryImpl