Fixes JIRA issues SGF-230 and SGF-233 involving the persistence on a Async Event Queue or Gateway Sender when a logical Disk Store name has been specified, or the disk-synchronous attribute has been set, requiring persistence to be enabled when all the user wanted was overflow.

This commit is contained in:
John Blum
2013-11-16 14:01:59 -08:00
parent 9a57b0579c
commit f3b22622b1
4 changed files with 195 additions and 68 deletions

View File

@@ -23,6 +23,7 @@ import static org.junit.Assert.assertSame;
import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.notNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -45,6 +46,7 @@ import com.gemstone.gemfire.cache.util.Gateway;
* @see org.springframework.data.gemfire.TestUtils
* @see org.springframework.data.gemfire.wan.AsyncEventQueueFactoryBean
* @see com.gemstone.gemfire.cache.Cache
* @see com.gemstone.gemfire.cache.asyncqueue.AsyncEventListener
* @see com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueue
* @see com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueueFactory
* @since 1.3.3
@@ -90,6 +92,27 @@ public class AsyncEventQueueFactoryBeanTest {
if (dispatcherThreads != null) {
verify(mockAsyncEventQueueFactory).setDispatcherThreads(eq(dispatcherThreads));
}
String diskStoreReference = TestUtils.readField("diskStoreReference", factoryBean);
if (diskStoreReference != null) {
verify(mockAsyncEventQueueFactory).setDiskStoreName(eq(diskStoreReference));
}
Boolean diskSynchronous = TestUtils.readField("diskSynchronous", factoryBean);
if (diskSynchronous != null) {
verify(mockAsyncEventQueueFactory).setDiskSynchronous(eq(diskSynchronous));
}
Boolean persistent = TestUtils.readField("persistent", factoryBean);
if (persistent != null) {
verify(mockAsyncEventQueueFactory).setPersistent(eq(persistent));
}
else {
verify(mockAsyncEventQueueFactory, never()).setPersistent(true);
}
}
@Test
@@ -262,4 +285,45 @@ public class AsyncEventQueueFactoryBeanTest {
assertEquals("789", eventQueue.getId());
}
@Test
public void testAsyncEventQueueWithOverflowDiskStoreNoPersistence() throws Exception {
AsyncEventQueueFactory mockAsyncEventQueueFactory = createMockAsyncEventQueueFactory("123abc");
AsyncEventQueueFactoryBean factoryBean = new AsyncEventQueueFactoryBean(
createMockCacheWithAsyncEventQueueInfrastructure(mockAsyncEventQueueFactory));
factoryBean.setName("123abc");
factoryBean.setAsyncEventListener(createMockAsyncEventListener());
factoryBean.setDiskStoreRef("queueOverflowDiskStore");
factoryBean.setPersistent(false);
factoryBean.doInit();
verifyExpectations(mockAsyncEventQueueFactory, factoryBean);
AsyncEventQueue evenQueue = factoryBean.getObject();
assertNotNull(evenQueue);
assertEquals("123abc", evenQueue.getId());
}
@Test
public void testAsyncEventQueueWithDiskSynchronousSetPersistenceUnset() throws Exception {
AsyncEventQueueFactory mockAsyncEventQueueFactory = createMockAsyncEventQueueFactory("12345");
AsyncEventQueueFactoryBean factoryBean = new AsyncEventQueueFactoryBean(
createMockCacheWithAsyncEventQueueInfrastructure(mockAsyncEventQueueFactory));
factoryBean.setName("12345");
factoryBean.setAsyncEventListener(createMockAsyncEventListener());
factoryBean.setDiskSynchronous(true);
factoryBean.doInit();
verifyExpectations(mockAsyncEventQueueFactory, factoryBean);
AsyncEventQueue evenQueue = factoryBean.getObject();
assertNotNull(evenQueue);
assertEquals("12345", evenQueue.getId());
}
}

View File

@@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -83,6 +84,27 @@ public class GatewaySenderFactoryBeanTest {
if (dispatcherThreads != null) {
verify(mockGatewaySenderFactory).setDispatcherThreads(eq(dispatcherThreads));
}
String diskStoreReference = TestUtils.readField("diskStoreReference", factoryBean);
if (diskStoreReference != null) {
verify(mockGatewaySenderFactory).setDiskStoreName(eq(diskStoreReference));
}
Boolean diskSynchronous = TestUtils.readField("diskSynchronous", factoryBean);
if (diskSynchronous != null) {
verify(mockGatewaySenderFactory).setDiskSynchronous(eq(diskSynchronous));
}
Boolean persistent = TestUtils.readField("persistent", factoryBean);
if (persistent != null) {
verify(mockGatewaySenderFactory).setPersistenceEnabled(eq(persistent));
}
else {
verify(mockGatewaySenderFactory, never()).setPersistenceEnabled(true);
}
}
@Test
@@ -193,4 +215,47 @@ public class GatewaySenderFactoryBeanTest {
assertEquals(42, gatewaySender.getRemoteDSId());
}
@Test
public void testGatewaySenderWithOverflowDiskStoreNoPersistence() throws Exception {
GatewaySenderFactory mockGatewaySenderFactory = createMockGatewaySenderFactory("g6", 51);
GatewaySenderFactoryBean factoryBean = new GatewaySenderFactoryBean(
createMockCacheWithGatewayInfrastructure(mockGatewaySenderFactory));
factoryBean.setName("g6");
factoryBean.setRemoteDistributedSystemId(51);
factoryBean.setPersistent(false);
factoryBean.setDiskStoreRef("queueOverflowDiskStore");
factoryBean.doInit();
verifyExpectations(factoryBean, mockGatewaySenderFactory);
GatewaySender gatewaySender = factoryBean.getObject();
assertNotNull(gatewaySender);
assertEquals("g6", gatewaySender.getId());
assertEquals(51, gatewaySender.getRemoteDSId());
}
@Test
public void testGatewaySenderWithDiskSynchronousSetPersistenceUnset() throws Exception {
GatewaySenderFactory mockGatewaySenderFactory = createMockGatewaySenderFactory("g7", 51);
GatewaySenderFactoryBean factoryBean = new GatewaySenderFactoryBean(
createMockCacheWithGatewayInfrastructure(mockGatewaySenderFactory));
factoryBean.setName("g7");
factoryBean.setRemoteDistributedSystemId(51);
factoryBean.setDiskSynchronous(true);
factoryBean.doInit();
verifyExpectations(factoryBean, mockGatewaySenderFactory);
GatewaySender gatewaySender = factoryBean.getObject();
assertNotNull(gatewaySender);
assertEquals("g7", gatewaySender.getId());
assertEquals(51, gatewaySender.getRemoteDSId());
}
}