SGF-863 - Add integration tests testing the addition of AsyncEventQueues and GatewaySenders declared as both objects and identifiers to an existing Region defined in cache.xml.

This commit is contained in:
John Blum
2019-07-16 18:23:03 -07:00
parent ba473805ca
commit 989dc38c56
6 changed files with 185 additions and 14 deletions

View File

@@ -0,0 +1,95 @@
/*
* Copyright 2018 the original author or authors.
*
* Licensed 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
*
* https://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.springframework.data.gemfire.config.xml;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.cache.asyncqueue.AsyncEventListener;
import org.springframework.data.gemfire.support.AbstractFactoryBeanSupport;
import org.springframework.lang.Nullable;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* The LookupRegionWithAsyncEventQueuesAndGatewaySendersIntegrationTests class...
*
* @author John Blum
* @since 1.0.0
*/
@RunWith(SpringRunner.class)
@ContextConfiguration
@SuppressWarnings("unused")
public class LookupRegionWithAsyncEventQueuesAndGatewaySendersIntegrationTests {
@Resource(name = "Example")
private Region<?, ?> example;
@Test
public void regionWithAsyncEventQueuesAndGatewaySenderConfigurationIsCorrect() {
assertThat(this.example).isNotNull();
assertThat(this.example.getName()).isEqualTo("Example");
RegionAttributes<?, ?> exampleAttributes = this.example.getAttributes();
assertThat(exampleAttributes).isNotNull();
assertThat(exampleAttributes.getDataPolicy()).isEqualTo(DataPolicy.REPLICATE);
assertThat(exampleAttributes.getAsyncEventQueueIds()).containsExactlyInAnyOrder(
"TestAsyncEventQueueZero",
"TestAsyncEventQueueOne",
"TestAsyncEventQueueTwo",
"TestAsyncEventQueueThree",
"TestAsyncEventQueueFour"
);
assertThat(exampleAttributes.getGatewaySenderIds()).containsExactlyInAnyOrder(
"TestGatewaySenderZero",
"TestGatewaySenderOne",
"TestGatewaySenderTwo",
"TestGatewaySenderThree",
"TestGatewaySenderFour"
);
}
public static final class AsyncEventListenerFactoryBean extends AbstractFactoryBeanSupport<AsyncEventListener> {
private final AsyncEventListener mockAsyncEventListener = mock(AsyncEventListener.class);
@Nullable @Override
public AsyncEventListener getObject() {
return this.mockAsyncEventListener;
}
@Nullable @Override
public Class<?> getObjectType() {
return this.mockAsyncEventListener != null
? this.mockAsyncEventListener.getClass()
: AsyncEventListener.class;
}
}
}

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:gfe="http://www.springframework.org/schema/geode"
xmlns:util="http://www.springframework.org/schema/util"
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/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/geode http://www.springframework.org/schema/geode/spring-geode.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
">
<context:property-placeholder/>
<util:properties id="gemfireProperties">
<prop key="name">LookupRegionWithAsyncEventQueuesAndGatewaySendersIntegrationTests</prop>
<prop key="log-level">error</prop>
</util:properties>
<gfe:cache cache-xml-location="region-with-asynceventqueues-gatewaysenders-cache.xml"
properties-ref="gemfireProperties"/>
<bean id="MockAsyncEventListener"
class="org.springframework.data.gemfire.config.xml.LookupRegionWithAsyncEventQueuesAndGatewaySendersIntegrationTests$AsyncEventListenerFactoryBean"/>
<gfe:async-event-queue id="TestAsyncEventQueueFour">
<gfe:async-event-listener ref="MockAsyncEventListener"/>
</gfe:async-event-queue>
<gfe:gateway-sender id="TestGatewaySenderFour" manual-start="true" remote-distributed-system-id="1"/>
<gfe:lookup-region id="Example"
async-event-queue-ids="TestAsyncEventQueueOne, TestAsyncEventQueueTwo, TestAsyncEventQueueFour"
gateway-sender-ids="TestGatewaySenderZero, TestGatewaySenderOne, TestGatewaySenderTwo">
<gfe:gateway-sender name="TestGatewaySenderThree" manual-start="true" remote-distributed-system-id="1"/>
<gfe:gateway-sender-ref bean="TestGatewaySenderFour"/>
<gfe:async-event-queue name="TestAsyncEventQueueThree">
<gfe:async-event-listener ref="MockAsyncEventListener"/>
</gfe:async-event-queue>
<gfe:async-event-queue-ref bean="TestAsyncEventQueueFour"/>
</gfe:lookup-region>
</beans>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<cache xmlns="http://geode.apache.org/schema/cache"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://geode.apache.org/schema/cache https://geode.apache.org/schema/cache/cache-1.0.xsd"
version="1.0">
<region name="Example" refid="REPLICATE">
<region-attributes async-event-queue-ids="TestAsyncEventQueueZero" gateway-sender-ids="TestGatewaySenderZero"/>
</region>
</cache>