SGF-371 - The GatewayReceiverFactoryBean needs to set GatewayReceiverFactory.setManualStart(false) in GemFire 8.1 in order to enable manual starts on a GatewayReceiver.
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
* 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.springframework.data.gemfire.test;
|
||||
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
@@ -19,6 +20,7 @@ import static org.mockito.Mockito.when;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.mockito.stubbing.Answer;
|
||||
@@ -38,6 +40,8 @@ public class StubGatewayReceiverFactory implements GatewayReceiverFactory {
|
||||
|
||||
private volatile boolean running;
|
||||
|
||||
private boolean manualStart;
|
||||
|
||||
private int endPort;
|
||||
private int maximumTimeBetweenPings;
|
||||
private int socketBufferSize;
|
||||
@@ -131,10 +135,25 @@ public class StubGatewayReceiverFactory implements GatewayReceiverFactory {
|
||||
return this;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.gemstone.gemfire.cache.wan.GatewayReceiverFactory#create()
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see com.gemstone.gemfire.cache.wan.GatewayReceiverFactory#setManualStart(boolean)
|
||||
*/
|
||||
@Override
|
||||
public GatewayReceiverFactory setManualStart(final boolean manualStart) {
|
||||
this.manualStart = manualStart;
|
||||
return this;
|
||||
}
|
||||
|
||||
private int generatePort() {
|
||||
final int portIncrement = new Random(System.currentTimeMillis()).nextInt(this.endPort - this.startPort);
|
||||
return Math.min(this.startPort + portIncrement, this.endPort);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.gemstone.gemfire.cache.wan.GatewayReceiverFactory#create()
|
||||
*/
|
||||
@Override
|
||||
public GatewayReceiver create() {
|
||||
GatewayReceiver gatewayReceiver = mock(GatewayReceiver.class);
|
||||
|
||||
@@ -143,19 +162,23 @@ public class StubGatewayReceiverFactory implements GatewayReceiverFactory {
|
||||
when(gatewayReceiver.getGatewayTransportFilters()).thenReturn(this.gatewayTransportFilters);
|
||||
when(gatewayReceiver.getHost()).thenReturn(StringUtils.hasText(this.hostnameForSenders)
|
||||
? this.hostnameForSenders : this.hostnameForClients);
|
||||
when(gatewayReceiver.isManualStart()).thenReturn(this.manualStart);
|
||||
when(gatewayReceiver.getMaximumTimeBetweenPings()).thenReturn(this.maximumTimeBetweenPings);
|
||||
when(gatewayReceiver.getPort()).thenReturn(generatePort());
|
||||
when(gatewayReceiver.getSocketBufferSize()).thenReturn(this.socketBufferSize);
|
||||
when(gatewayReceiver.getStartPort()).thenReturn(this.startPort);
|
||||
|
||||
when(gatewayReceiver.isRunning()).thenAnswer(new Answer<Boolean>() {
|
||||
@Override
|
||||
public Boolean answer(InvocationOnMock invocation) throws Throwable {
|
||||
return running;
|
||||
return StubGatewayReceiverFactory.this.running;
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
doAnswer(new Answer<Void>() {
|
||||
public Void answer(InvocationOnMock invocation) {
|
||||
running = true;
|
||||
StubGatewayReceiverFactory.this.running = true;
|
||||
return null;
|
||||
}
|
||||
}).when(gatewayReceiver).start();
|
||||
@@ -164,6 +187,13 @@ public class StubGatewayReceiverFactory implements GatewayReceiverFactory {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
doAnswer(new Answer<Void>() {
|
||||
public Void answer(final InvocationOnMock invocation) throws Throwable {
|
||||
StubGatewayReceiverFactory.this.running = false;
|
||||
return null;
|
||||
}
|
||||
}).when(gatewayReceiver).stop();
|
||||
|
||||
return gatewayReceiver;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,10 +32,12 @@ import com.gemstone.gemfire.cache.wan.GatewayReceiverFactory;
|
||||
import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
|
||||
|
||||
/**
|
||||
* The GatewayReceiverFactoryBeanTest class...
|
||||
* The GatewayReceiverFactoryBeanTest class is a test suite of test cases testing the contract and functionality
|
||||
* of the GatewayReceiverFactoryBean class.
|
||||
*
|
||||
* @author John Blum
|
||||
* @see org.springframework.data.gemfire.
|
||||
* @see org.springframework.data.gemfire.wan.GatewayReceiverFactoryBean
|
||||
* @see com.gemstone.gemfire.cache.wan.GatewayReceiverFactory
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public class GatewayReceiverFactoryBeanTest {
|
||||
@@ -65,6 +67,7 @@ public class GatewayReceiverFactoryBeanTest {
|
||||
verify(mockGatewayReceiverFactory).setHostnameForSenders(eq("skullbox"));
|
||||
verify(mockGatewayReceiverFactory).setStartPort(eq(2048));
|
||||
verify(mockGatewayReceiverFactory).setEndPort(eq(4096));
|
||||
verify(mockGatewayReceiverFactory).setManualStart(eq(true));
|
||||
verify(mockGatewayReceiverFactory).setMaximumTimeBetweenPings(eq(5000));
|
||||
verify(mockGatewayReceiverFactory).setSocketBufferSize(eq(16384));
|
||||
verify(mockGatewayReceiverFactory).addGatewayTransportFilter(same(mockGatewayTransportFilter));
|
||||
|
||||
@@ -26,6 +26,7 @@ import javax.annotation.Resource;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@@ -38,12 +39,13 @@ import com.gemstone.gemfire.cache.wan.GatewayReceiver;
|
||||
* @author John Blum
|
||||
* @see org.junit.Test
|
||||
* @see org.junit.runner.RunWith
|
||||
* @see org.springframework.data.gemfire.test.GemfireTestApplicationContextInitializer
|
||||
* @see org.springframework.test.context.ContextConfiguration
|
||||
* @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner
|
||||
* @since 1.5.0
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration
|
||||
@ContextConfiguration(initializers = GemfireTestApplicationContextInitializer.class)
|
||||
@SuppressWarnings("unused")
|
||||
public class ManualGatewayReceiverStartIntegrationTest {
|
||||
|
||||
@@ -53,17 +55,24 @@ public class ManualGatewayReceiverStartIntegrationTest {
|
||||
@Resource(name = "Manual")
|
||||
private GatewayReceiver manualGatewayReceiver;
|
||||
|
||||
protected void assertGreaterThanEqualToLessThanEqualTo(final String message,
|
||||
final int actualValue, final int lowerBound, final int upperBound) {
|
||||
assertTrue(message, actualValue >= lowerBound && actualValue <= upperBound);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoGatewayReceiver() {
|
||||
assertNotNull("The 'Auto' GatewayReceiver was not properly configured or initialized!", autoGatewayReceiver);
|
||||
assertTrue(autoGatewayReceiver.isRunning());
|
||||
assertEquals(7070, autoGatewayReceiver.getStartPort());
|
||||
assertEquals(7700, autoGatewayReceiver.getEndPort());
|
||||
assertTrue(autoGatewayReceiver.isRunning());
|
||||
|
||||
final int gatewayReceiverPort = autoGatewayReceiver.getPort();
|
||||
|
||||
assertTrue(gatewayReceiverPort >= autoGatewayReceiver.getStartPort()
|
||||
&& gatewayReceiverPort <= autoGatewayReceiver.getEndPort());
|
||||
assertGreaterThanEqualToLessThanEqualTo(String.format(
|
||||
"GatewayReceiver 'port' (%1$d) was not greater than equal to (%2$d) and less than equal to (%3$d)!",
|
||||
gatewayReceiverPort, autoGatewayReceiver.getStartPort(), autoGatewayReceiver.getEndPort()),
|
||||
gatewayReceiverPort, autoGatewayReceiver.getStartPort(), autoGatewayReceiver.getEndPort());
|
||||
|
||||
autoGatewayReceiver.stop();
|
||||
|
||||
@@ -81,10 +90,12 @@ public class ManualGatewayReceiverStartIntegrationTest {
|
||||
|
||||
assertTrue(manualGatewayReceiver.isRunning());
|
||||
|
||||
final int gateReceiverPort = manualGatewayReceiver.getPort();
|
||||
final int gatewayReceiverPort = manualGatewayReceiver.getPort();
|
||||
|
||||
assertTrue(gateReceiverPort >= manualGatewayReceiver.getStartPort()
|
||||
&& gateReceiverPort <= manualGatewayReceiver.getEndPort());
|
||||
assertGreaterThanEqualToLessThanEqualTo(String.format(
|
||||
"GatewayReceiver 'port' (%1$d) was not greater than equal to (%2$d) and less than equal to (%3$d)!",
|
||||
gatewayReceiverPort, manualGatewayReceiver.getStartPort(), manualGatewayReceiver.getEndPort()),
|
||||
gatewayReceiverPort, manualGatewayReceiver.getStartPort(), manualGatewayReceiver.getEndPort());
|
||||
|
||||
manualGatewayReceiver.stop();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user