Fixes JIRA issue SGF-244 involving the use of a ref attribute on the GatewaySender element's nested inner EventFilter element.
This commit is contained in:
@@ -72,7 +72,6 @@ use inner bean declarations.
|
||||
</xsd:attribute>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
<xsd:element name="dynamic-region-factory" minOccurs="0"
|
||||
maxOccurs="1">
|
||||
<xsd:annotation>
|
||||
@@ -2335,19 +2334,25 @@ A gateway event filter for this gateway sender
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:any namespace="##other" processContents="skip"
|
||||
minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:any namespace="##other" processContents="skip" minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Inner bean definition of the event filter
|
||||
]]></xsd:documentation>
|
||||
Inner bean definition for the event filter.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:any>
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="ref" type="xsd:string" use="optional">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
The name of the event filter bean referred to by this declaration. Used for convenience. If no reference exists,
|
||||
use inner bean declarations.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:attribute>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="transport-filter" type="gatewayTransportFilterType"
|
||||
minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="transport-filter" type="gatewayTransportFilterType" minOccurs="0" maxOccurs="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attributeGroup ref="commonWANQueueAttributes" />
|
||||
<xsd:attribute name="name" type="xsd:string" use="optional">
|
||||
@@ -2772,8 +2777,7 @@ A transport filter for this gateway component
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:sequence>
|
||||
<xsd:any namespace="##other" processContents="skip"
|
||||
minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:any namespace="##other" processContents="skip" minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
Inner bean definition of the transport filter.
|
||||
@@ -2784,7 +2788,7 @@ Inner bean definition of the transport filter.
|
||||
<xsd:attribute name="ref" type="xsd:string" use="optional">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
The name of the transport filter bean referred by this declaration. Used as a convenience method. If no reference exists,
|
||||
The name of the transport filter bean referred to by this declaration. Used for convenience. If no reference exists,
|
||||
use inner bean declarations.
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.data.gemfire.config;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.File;
|
||||
@@ -50,11 +51,11 @@ import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
|
||||
|
||||
/**
|
||||
* This test is only valid for GF 7.0 and above
|
||||
*
|
||||
* <p/>
|
||||
* @author David Turanski
|
||||
*
|
||||
* @author John Blum
|
||||
*/
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class GemfireV7GatewayNamespaceTest extends RecreatingContextTest {
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -107,73 +108,113 @@ public class GemfireV7GatewayNamespaceTest extends RecreatingContextTest {
|
||||
|
||||
@Test
|
||||
public void testGatewaySender() throws Exception {
|
||||
GatewaySenderFactoryBean gwsfb = ctx.getBean("&gateway-sender", GatewaySenderFactoryBean.class);
|
||||
Cache cache = TestUtils.readField("cache", gwsfb);
|
||||
assertNotNull(cache);
|
||||
List<GatewayEventFilter> eventFilters = TestUtils.readField("eventFilters", gwsfb);
|
||||
GatewaySenderFactoryBean gatewaySenderFactoryBean = ctx.getBean("&gateway-sender", GatewaySenderFactoryBean.class);
|
||||
|
||||
assertNotNull(gatewaySenderFactoryBean);
|
||||
assertNotNull(TestUtils.readField("cache", gatewaySenderFactoryBean));
|
||||
assertEquals(2, TestUtils.readField("remoteDistributedSystemId", gatewaySenderFactoryBean));
|
||||
assertEquals(10, TestUtils.readField("alertThreshold", gatewaySenderFactoryBean));
|
||||
assertEquals(11, TestUtils.readField("batchSize", gatewaySenderFactoryBean));
|
||||
assertEquals(12, TestUtils.readField("dispatcherThreads", gatewaySenderFactoryBean));
|
||||
assertEquals(true, TestUtils.readField("manualStart", gatewaySenderFactoryBean));
|
||||
|
||||
List<GatewayEventFilter> eventFilters = TestUtils.readField("eventFilters", gatewaySenderFactoryBean);
|
||||
|
||||
assertNotNull(eventFilters);
|
||||
assertEquals(2, eventFilters.size());
|
||||
assertTrue(eventFilters.get(0) instanceof TestEventFilter);
|
||||
|
||||
List<GatewayTransportFilter> transportFilters = TestUtils.readField("transportFilters", gwsfb);
|
||||
List<GatewayTransportFilter> transportFilters = TestUtils.readField("transportFilters", gatewaySenderFactoryBean);
|
||||
|
||||
assertNotNull(transportFilters);
|
||||
assertEquals(2, transportFilters.size());
|
||||
assertTrue(transportFilters.get(0) instanceof TestTransportFilter);
|
||||
|
||||
assertEquals(2, TestUtils.readField("remoteDistributedSystemId", gwsfb));
|
||||
assertEquals(10, TestUtils.readField("alertThreshold", gwsfb));
|
||||
assertEquals(11, TestUtils.readField("batchSize", gwsfb));
|
||||
assertEquals(12, TestUtils.readField("dispatcherThreads", gwsfb));
|
||||
assertEquals(true, TestUtils.readField("manualStart", gwsfb));
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Test
|
||||
public void testInnerGatewaySender() throws Exception {
|
||||
Region<?, ?> region = ctx.getBean("region-inner-gateway-sender", Region.class);
|
||||
GatewaySender gws = ctx.getBean("gateway-sender", GatewaySender.class);
|
||||
|
||||
assertNotNull(region.getAttributes().getGatewaySenderIds());
|
||||
assertEquals(2, region.getAttributes().getGatewaySenderIds().size());
|
||||
|
||||
RegionFactoryBean rfb = ctx.getBean("®ion-inner-gateway-sender", RegionFactoryBean.class);
|
||||
Object[] gwsenders = TestUtils.readField("gatewaySenders", rfb);
|
||||
gws = (GatewaySender) gwsenders[0];
|
||||
List<GatewayEventFilter> eventFilters = gws.getGatewayEventFilters();
|
||||
RegionFactoryBean regionFactoryBean = ctx.getBean("®ion-inner-gateway-sender", RegionFactoryBean.class);
|
||||
|
||||
Object[] gatewaySenders = TestUtils.readField("gatewaySenders", regionFactoryBean);
|
||||
|
||||
assertNotNull(gatewaySenders);
|
||||
assertEquals(2, gatewaySenders.length);
|
||||
|
||||
GatewaySender gatewaySender = (GatewaySender) gatewaySenders[0];
|
||||
|
||||
assertNotNull(gatewaySender);
|
||||
assertEquals(1, gatewaySender.getRemoteDSId());
|
||||
assertEquals(false, gatewaySender.isManualStart());
|
||||
assertEquals(true,gatewaySender.isRunning());
|
||||
assertEquals(10, gatewaySender.getAlertThreshold());
|
||||
assertEquals(11, gatewaySender.getBatchSize());
|
||||
assertEquals(3000, gatewaySender.getBatchTimeInterval());
|
||||
assertEquals(2, gatewaySender.getDispatcherThreads());
|
||||
assertEquals("diskstore", gatewaySender.getDiskStoreName());
|
||||
assertTrue(gatewaySender.isBatchConflationEnabled());
|
||||
assertEquals(50, gatewaySender.getMaximumQueueMemory());
|
||||
assertEquals(OrderPolicy.THREAD, gatewaySender.getOrderPolicy());
|
||||
assertTrue(gatewaySender.isPersistenceEnabled());
|
||||
assertFalse(gatewaySender.isParallel());
|
||||
assertEquals(16536, gatewaySender.getSocketBufferSize());
|
||||
assertEquals(3000, gatewaySender.getSocketReadTimeout());
|
||||
|
||||
List<GatewayEventFilter> eventFilters = gatewaySender.getGatewayEventFilters();
|
||||
|
||||
assertNotNull(eventFilters);
|
||||
assertEquals(1, eventFilters.size());
|
||||
assertTrue(eventFilters.get(0) instanceof TestEventFilter);
|
||||
|
||||
List<GatewayTransportFilter> transportFilters = gws.getGatewayTransportFilters();
|
||||
List<GatewayTransportFilter> transportFilters = gatewaySender.getGatewayTransportFilters();
|
||||
|
||||
assertNotNull(transportFilters);
|
||||
assertEquals(1, transportFilters.size());
|
||||
assertTrue(transportFilters.get(0) instanceof TestTransportFilter);
|
||||
|
||||
assertEquals(1, gws.getRemoteDSId());
|
||||
assertEquals(false, gws.isManualStart());
|
||||
assertEquals(true,gws.isRunning());
|
||||
assertEquals(10, gws.getAlertThreshold());
|
||||
assertEquals(11, gws.getBatchSize());
|
||||
assertEquals(3000, gws.getBatchTimeInterval());
|
||||
assertEquals(2, gws.getDispatcherThreads());
|
||||
assertEquals("diskstore", gws.getDiskStoreName());
|
||||
assertTrue(gws.isBatchConflationEnabled());
|
||||
assertEquals(50, gws.getMaximumQueueMemory());
|
||||
assertEquals(OrderPolicy.THREAD, gws.getOrderPolicy());
|
||||
assertTrue(gws.isPersistenceEnabled());
|
||||
assertFalse(gws.isParallel());
|
||||
assertEquals(16536, gws.getSocketBufferSize());
|
||||
assertEquals(3000, gws.getSocketReadTimeout());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInnerGatewayReceiver() {
|
||||
GatewayReceiver gwr = ctx.getBean("gateway-receiver", GatewayReceiver.class);
|
||||
assertEquals(12345, gwr.getStartPort());
|
||||
assertEquals(23456, gwr.getEndPort());
|
||||
assertEquals("192.168.0.1", gwr.getBindAddress());
|
||||
assertEquals(3000, gwr.getMaximumTimeBetweenPings());
|
||||
assertEquals(16536, gwr.getSocketBufferSize());
|
||||
public void testGatewaySenderWithEventTransportFilterRefs() throws Exception {
|
||||
GatewaySenderFactoryBean gatewaySenderFactoryBean = ctx.getBean("&gateway-sender-with-event-transport-filter-refs",
|
||||
GatewaySenderFactoryBean.class);
|
||||
|
||||
assertNotNull(gatewaySenderFactoryBean);
|
||||
assertNotNull(TestUtils.readField("cache", gatewaySenderFactoryBean));
|
||||
assertEquals(3, TestUtils.readField("remoteDistributedSystemId", gatewaySenderFactoryBean));
|
||||
assertEquals(50, TestUtils.readField("batchSize", gatewaySenderFactoryBean));
|
||||
assertEquals(10, TestUtils.readField("dispatcherThreads", gatewaySenderFactoryBean));
|
||||
assertEquals(true, TestUtils.readField("manualStart", gatewaySenderFactoryBean));
|
||||
|
||||
List<GatewayEventFilter> eventFilters = TestUtils.readField("eventFilters", gatewaySenderFactoryBean);
|
||||
|
||||
assertNotNull(eventFilters);
|
||||
assertEquals(1, eventFilters.size());
|
||||
assertTrue(eventFilters.get(0) instanceof TestEventFilter);
|
||||
assertSame(ctx.getBean("event-filter"), eventFilters.get(0));
|
||||
|
||||
List<GatewayTransportFilter> transportFilters = TestUtils.readField("transportFilters", gatewaySenderFactoryBean);
|
||||
|
||||
assertNotNull(transportFilters);
|
||||
assertEquals(1, transportFilters.size());
|
||||
assertTrue(transportFilters.get(0) instanceof TestTransportFilter);
|
||||
assertSame(ctx.getBean("transport-filter"), transportFilters.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayReceiver() {
|
||||
GatewayReceiver gatewayReceiver = ctx.getBean("gateway-receiver", GatewayReceiver.class);
|
||||
|
||||
assertNotNull(gatewayReceiver);
|
||||
assertEquals("192.168.0.1", gatewayReceiver.getBindAddress());
|
||||
assertEquals(12345, gatewayReceiver.getStartPort());
|
||||
assertEquals(23456, gatewayReceiver.getEndPort());
|
||||
assertEquals(3000, gatewayReceiver.getMaximumTimeBetweenPings());
|
||||
assertEquals(16536, gatewayReceiver.getSocketBufferSize());
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@@ -181,49 +222,38 @@ public class GemfireV7GatewayNamespaceTest extends RecreatingContextTest {
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterAcknowledgement(GatewayQueueEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean beforeEnqueue(GatewayQueueEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean beforeTransmit(GatewayQueueEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class TestTransportFilter implements GatewayTransportFilter {
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getInputStream(InputStream arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputStream getOutputStream(OutputStream arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@@ -231,15 +261,12 @@ public class GemfireV7GatewayNamespaceTest extends RecreatingContextTest {
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processEvents(List<AsyncEvent> arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,83 +1,83 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:gfe="http://www.springframework.org/schema/gemfire"
|
||||
xmlns:p="http://www.springframework.org/schema/p"
|
||||
xmlns:util="http://www.springframework.org/schema/util"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
|
||||
xmlns:gfe="http://www.springframework.org/schema/gemfire"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" default-lazy-init="true">
|
||||
http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
|
||||
" default-lazy-init="true">
|
||||
|
||||
<gfe:cache/>
|
||||
|
||||
<gfe:partitioned-region id="region-inner-gateway-sender" >
|
||||
<gfe:gateway-sender
|
||||
manual-start="false"
|
||||
remote-distributed-system-id="1"
|
||||
alert-threshold="10"
|
||||
batch-size="11"
|
||||
batch-time-interval="3000"
|
||||
dispatcher-threads="2"
|
||||
disk-store-ref="diskstore"
|
||||
enable-batch-conflation="true"
|
||||
maximum-queue-memory="50"
|
||||
order-policy="THREAD"
|
||||
persistent="true"
|
||||
parallel="false"
|
||||
socket-buffer-size="16536"
|
||||
socket-read-timeout="3000">
|
||||
<gfe:event-filter>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestEventFilter"/>
|
||||
</gfe:event-filter>
|
||||
<gfe:transport-filter>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestTransportFilter"/>
|
||||
</gfe:transport-filter>
|
||||
</gfe:gateway-sender>
|
||||
<gfe:gateway-sender-ref bean="gateway-sender"/>
|
||||
<gfe:gateway-sender remote-distributed-system-id="1"
|
||||
manual-start="false"
|
||||
alert-threshold="10"
|
||||
batch-size="11"
|
||||
batch-time-interval="3000"
|
||||
dispatcher-threads="2"
|
||||
disk-store-ref="diskstore"
|
||||
enable-batch-conflation="true"
|
||||
maximum-queue-memory="50"
|
||||
order-policy="THREAD"
|
||||
persistent="true"
|
||||
parallel="false"
|
||||
socket-buffer-size="16536"
|
||||
socket-read-timeout="3000">
|
||||
<gfe:event-filter>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestEventFilter"/>
|
||||
</gfe:event-filter>
|
||||
<gfe:transport-filter>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestTransportFilter"/>
|
||||
</gfe:transport-filter>
|
||||
</gfe:gateway-sender>
|
||||
<gfe:gateway-sender-ref bean="gateway-sender"/>
|
||||
</gfe:partitioned-region>
|
||||
|
||||
<gfe:async-event-queue id="async-event-queue"
|
||||
batch-size="10"
|
||||
persistent="true"
|
||||
disk-store-ref="diskstore"
|
||||
maximum-queue-memory="50"
|
||||
parallel="false"
|
||||
batch-conflation-enabled="true"
|
||||
batch-time-interval="3"
|
||||
dispatcher-threads="4"
|
||||
disk-synchronous="true"
|
||||
order-policy="KEY">
|
||||
<gfe:async-event-listener>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestAsyncEventListener"/>
|
||||
</gfe:async-event-listener>
|
||||
batch-conflation-enabled="true"
|
||||
batch-size="10"
|
||||
batch-time-interval="3"
|
||||
dispatcher-threads="4"
|
||||
disk-store-ref="diskstore"
|
||||
disk-synchronous="true"
|
||||
maximum-queue-memory="50"
|
||||
parallel="false"
|
||||
persistent="true"
|
||||
order-policy="KEY">
|
||||
<gfe:async-event-listener>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestAsyncEventListener"/>
|
||||
</gfe:async-event-listener>
|
||||
</gfe:async-event-queue>
|
||||
|
||||
<gfe:disk-store id="diskstore"/>
|
||||
|
||||
<gfe:gateway-receiver id="gateway-receiver"
|
||||
start-port="12345" end-port="23456" bind-address="192.168.0.1" maximum-time-between-pings="3000" socket-buffer-size="16536">
|
||||
<gfe:gateway-receiver id="gateway-receiver" bind-address="192.168.0.1" start-port="12345" end-port="23456"
|
||||
maximum-time-between-pings="3000" socket-buffer-size="16536">
|
||||
<gfe:transport-filter>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestTransportFilter"/>
|
||||
</gfe:transport-filter>
|
||||
</gfe:gateway-receiver>
|
||||
|
||||
<!-- need manual-start=true for the unit test because GF will throw an exception if no locators are configured -->
|
||||
<gfe:gateway-sender id="gateway-sender"
|
||||
remote-distributed-system-id="2"
|
||||
alert-threshold="10"
|
||||
batch-size="11"
|
||||
dispatcher-threads="12"
|
||||
manual-start="true">
|
||||
<gfe:event-filter>
|
||||
<ref bean="event-filter"/>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestEventFilter"/>
|
||||
</gfe:event-filter>
|
||||
<gfe:transport-filter>
|
||||
<ref bean="transport-filter"/>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestTransportFilter"/>
|
||||
</gfe:transport-filter>
|
||||
<gfe:gateway-sender id="gateway-sender" remote-distributed-system-id="2" alert-threshold="10" batch-size="11"
|
||||
dispatcher-threads="12" manual-start="true">
|
||||
<gfe:event-filter>
|
||||
<ref bean="event-filter"/>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestEventFilter"/>
|
||||
</gfe:event-filter>
|
||||
<gfe:transport-filter>
|
||||
<ref bean="transport-filter"/>
|
||||
<bean class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestTransportFilter"/>
|
||||
</gfe:transport-filter>
|
||||
</gfe:gateway-sender>
|
||||
|
||||
<gfe:gateway-sender id="gateway-sender-with-event-transport-filter-refs" remote-distributed-system-id="3"
|
||||
batch-size="50" dispatcher-threads="10" manual-start="true">
|
||||
<gfe:event-filter ref="event-filter"/>
|
||||
<gfe:transport-filter ref="transport-filter"/>
|
||||
</gfe:gateway-sender>
|
||||
|
||||
<bean id="event-filter" class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestEventFilter"/>
|
||||
<bean id="transport-filter" class="org.springframework.data.gemfire.config.GemfireV7GatewayNamespaceTest.TestTransportFilter"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user