Skip to content

Commit 29401a4

Browse files
artembilangaryrussell
authored andcommitted
INT-4176: Fix Gemfire tests
JIRA: https://jira.spring.io/browse/INT-4176 The `DelayerHandlerRescheduleIntegrationTests` doesn't close `context` in the end of test. That causes clashes for `beanFactoryResolver` in other tests. When those tests are fail, we come into condition when new processes can't be started/stopped because of effect of non-stopped context * Fix all the `DelayerHandlerRescheduleIntegrationTests` to stop `context` in the end of test * Remove unused files in the `gemfire/store` test package * Add current date value to the `CacheServerProcess` name to avoid clashes with other ran on the same host * Add NPE check for `region` in the `GemfireMetadataStoreTests` * Extract `@BeforeClass/@AfterClass` for the `CacheWritingMessageHandlerTests` to start only one Gemfire cache per class **Cherry-pick to 4.3.x & 4.2.x** Conflicts: spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/store/GemfireMessageStore-context.xml spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/store/common.properties spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/store/gfe-cache.properties Resolved.
1 parent 5485962 commit 29401a4

File tree

10 files changed

+63
-91
lines changed

10 files changed

+63
-91
lines changed

spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/fork/CacheServerProcess.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.io.BufferedReader;
2020
import java.io.InputStreamReader;
21+
import java.util.Date;
2122
import java.util.Properties;
2223

2324
import com.gemstone.gemfire.cache.Cache;
@@ -41,7 +42,7 @@ public class CacheServerProcess {
4142
public static void main(String[] args) throws Exception {
4243

4344
Properties props = new Properties();
44-
props.setProperty("name", "CacheServer");
45+
props.setProperty("name", "CacheServer at " + new Date());
4546
props.setProperty("log-level", "info");
4647

4748
System.out.println("\nConnecting to the distributed system and creating the cache.");
@@ -65,6 +66,6 @@ public static void main(String[] args) throws Exception {
6566

6667
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
6768
bufferedReader.readLine();
68-
6969
}
70+
7071
}

spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/metadata/GemfireMetadataStoreTests.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,24 @@
4040
*/
4141
public class GemfireMetadataStoreTests {
4242

43-
public static Cache cache;
43+
private static Cache cache;
4444

45-
public static ConcurrentMetadataStore metadataStore;
45+
private static ConcurrentMetadataStore metadataStore;
46+
47+
private static Region<Object, Object> region;
4648

4749
@BeforeClass
4850
public static void startUp() throws Exception {
4951
cache = new CacheFactory().create();
5052
metadataStore = new GemfireMetadataStore(cache);
53+
region = cache.getRegion(GemfireMetadataStore.KEY);
5154
}
5255

5356
@AfterClass
5457
public static void cleanUp() {
55-
getRegion().close();
58+
if (region != null) {
59+
region.close();
60+
}
5661
if (cache != null) {
5762
cache.close();
5863
Assert.isTrue(cache.isClosed(), "Cache did not close after close() call");
@@ -62,7 +67,9 @@ public static void cleanUp() {
6267
@Before
6368
@After
6469
public void setup() {
65-
getRegion().clear();
70+
if (region != null) {
71+
region.clear();
72+
}
6673
}
6774

6875
@Test
@@ -75,7 +82,7 @@ public void testGetNonExistingKeyValue() {
7582
public void testPersistKeyValue() {
7683
metadataStore.put("GemfireMetadataStoreTests-Spring", "Integration");
7784

78-
GemfireTemplate gemfireTemplate = new GemfireTemplate(getRegion());
85+
GemfireTemplate gemfireTemplate = new GemfireTemplate(region);
7986

8087
assertEquals("Integration", gemfireTemplate.get("GemfireMetadataStoreTests-Spring"));
8188
}
@@ -155,13 +162,9 @@ public void testRemoveFromMetadataStore() {
155162
public void testPersistKeyValueIfAbsent() {
156163
metadataStore.putIfAbsent("GemfireMetadataStoreTests-Spring", "Integration");
157164

158-
GemfireTemplate gemfireTemplate = new GemfireTemplate(getRegion());
165+
GemfireTemplate gemfireTemplate = new GemfireTemplate(region);
159166

160167
assertEquals("Integration", gemfireTemplate.get("GemfireMetadataStoreTests-Spring"));
161168
}
162169

163-
private static Region<Object, Object> getRegion() {
164-
return cache.getRegion(GemfireMetadataStore.KEY);
165-
}
166-
167170
}

spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/outbound/CacheWritingMessageHandlerTests.java

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@
2323
import java.util.HashMap;
2424
import java.util.Map;
2525

26+
import org.junit.AfterClass;
27+
import org.junit.Before;
28+
import org.junit.BeforeClass;
2629
import org.junit.Test;
27-
2830
import org.springframework.beans.factory.BeanFactory;
2931
import org.springframework.data.gemfire.CacheFactoryBean;
30-
import org.springframework.data.gemfire.RegionFactoryBean;
3132
import org.springframework.expression.Expression;
3233
import org.springframework.expression.common.LiteralExpression;
3334
import org.springframework.integration.expression.ValueExpression;
@@ -37,6 +38,7 @@
3738

3839
import com.gemstone.gemfire.cache.Cache;
3940
import com.gemstone.gemfire.cache.Region;
41+
import com.gemstone.gemfire.cache.Scope;
4042

4143
/**
4244
* @author Mark Fisher
@@ -48,17 +50,38 @@
4850
*/
4951
public class CacheWritingMessageHandlerTests {
5052

51-
@Test
52-
public void mapPayloadWritesToCache() throws Exception {
53-
CacheFactoryBean cacheFactoryBean = new CacheFactoryBean();
53+
private static CacheFactoryBean cacheFactoryBean;
54+
55+
private static Region<Object, Object> region;
56+
57+
@BeforeClass
58+
public static void startUp() throws Exception {
59+
cacheFactoryBean = new CacheFactoryBean();
60+
cacheFactoryBean.afterPropertiesSet();
5461
Cache cache = cacheFactoryBean.getObject();
62+
region = cache.createRegionFactory().setScope(Scope.LOCAL).create("sig-tests");
63+
}
64+
65+
@AfterClass
66+
public static void cleanUp() throws Exception {
67+
if (region != null) {
68+
region.close();
69+
}
70+
if (cacheFactoryBean != null) {
71+
cacheFactoryBean.destroy();
72+
}
73+
}
5574

56-
RegionFactoryBean<String, String> regionFactoryBean = new RegionFactoryBean<String, String>() { };
57-
regionFactoryBean.setName("test.mapPayloadWritesToCache");
58-
regionFactoryBean.setCache(cache);
59-
regionFactoryBean.afterPropertiesSet();
60-
Region<String, String> region = regionFactoryBean.getObject();
75+
@Before
76+
public void prepare() {
77+
if (region != null) {
78+
region.clear();
79+
}
80+
}
6181

82+
83+
@Test
84+
public void mapPayloadWritesToCache() throws Exception {
6285
assertEquals(0, region.size());
6386

6487
CacheWritingMessageHandler handler = new CacheWritingMessageHandler(region);
@@ -71,23 +94,10 @@ public void mapPayloadWritesToCache() throws Exception {
7194
handler.handleMessage(message);
7295
assertEquals(1, region.size());
7396
assertEquals("bar", region.get("foo"));
74-
75-
regionFactoryBean.destroy();
76-
cacheFactoryBean.destroy();
7797
}
7898

7999
@Test
80-
@SuppressWarnings("unchecked")
81100
public void ExpressionsWriteToCache() throws Exception {
82-
CacheFactoryBean cacheFactoryBean = new CacheFactoryBean();
83-
Cache cache = cacheFactoryBean.getObject();
84-
85-
RegionFactoryBean<String, Object> regionFactoryBean = new RegionFactoryBean<String, Object>() { };
86-
regionFactoryBean.setName("test.expressionsWriteToCache");
87-
regionFactoryBean.setCache(cache);
88-
regionFactoryBean.afterPropertiesSet();
89-
Region<String, Object> region = regionFactoryBean.getObject();
90-
91101
assertEquals(0, region.size());
92102

93103
CacheWritingMessageHandler handler = new CacheWritingMessageHandler(region);
@@ -113,9 +123,6 @@ public void ExpressionsWriteToCache() throws Exception {
113123
handler.handleMessage(new GenericMessage<String>("test"));
114124
assertEquals(3, region.size());
115125
assertEquals(10L, region.get("baz"));
116-
117-
regionFactoryBean.destroy();
118-
cacheFactoryBean.destroy();
119126
}
120127

121128
}

spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/store/DelayerHandlerRescheduleIntegrationTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ public void testDelayerHandlerRescheduleWithGemfireMessageStore() throws Excepti
9494

9595
// Emulate restart and check Cache state before next start
9696
// Interrupt taskScheduler as quickly as possible
97-
ThreadPoolTaskScheduler taskScheduler = (ThreadPoolTaskScheduler) IntegrationContextUtils.getTaskScheduler(context);
97+
ThreadPoolTaskScheduler taskScheduler =
98+
(ThreadPoolTaskScheduler) IntegrationContextUtils.getTaskScheduler(context);
9899
taskScheduler.shutdown();
99100
taskScheduler.getScheduledExecutor().awaitTermination(10, TimeUnit.SECONDS);
100101
context.destroy();
@@ -141,6 +142,7 @@ public void testDelayerHandlerRescheduleWithGemfireMessageStore() throws Excepti
141142
}
142143
assertEquals(0, messageStore.messageGroupSize(delayerMessageGroupId));
143144

145+
context.destroy();
144146
}
145147

146148
}

spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/store/GemfireMessageStore-context.xml

Lines changed: 0 additions & 36 deletions
This file was deleted.

spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/store/common.properties

Lines changed: 0 additions & 5 deletions
This file was deleted.

spring-integration-gemfire/src/test/java/org/springframework/integration/gemfire/store/gfe-cache.properties

Lines changed: 0 additions & 3 deletions
This file was deleted.

spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/DelayerHandlerRescheduleIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public void testDelayerHandlerRescheduleWithJdbcMessageStore() throws Exception
132132

133133
assertEquals(1, messageStore.getMessageGroupCount());
134134
assertEquals(0, messageStore.messageGroupSize(delayerMessageGroupId));
135-
135+
context.destroy();
136136
}
137137

138138
@Test //INT-2649

spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/DelayerHandlerRescheduleIntegrationTests.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ public class DelayerHandlerRescheduleIntegrationTests extends MongoDbAvailableTe
5656
@Test
5757
@MongoDbAvailable
5858
public void testWithMongoDbMessageStore() throws Exception {
59-
this.testDelayerHandlerRescheduleWithMongoDbMessageStore("DelayerHandlerRescheduleIntegrationTests-context.xml");
59+
testDelayerHandlerRescheduleWithMongoDbMessageStore("DelayerHandlerRescheduleIntegrationTests-context.xml");
6060
}
6161

6262
@Test
6363
@MongoDbAvailable
6464
public void testWithConfigurableMongoDbMessageStore() throws Exception {
65-
this.testDelayerHandlerRescheduleWithMongoDbMessageStore("DelayerHandlerRescheduleIntegrationConfigurableTests-context.xml");
65+
testDelayerHandlerRescheduleWithMongoDbMessageStore("DelayerHandlerRescheduleIntegrationConfigurableTests-context.xml");
6666
}
6767

6868
@SuppressWarnings("unchecked")
@@ -81,7 +81,8 @@ private void testDelayerHandlerRescheduleWithMongoDbMessageStore(String config)
8181

8282
// Emulate restart and check DB state before next start
8383
// Interrupt taskScheduler as quickly as possible
84-
ThreadPoolTaskScheduler taskScheduler = (ThreadPoolTaskScheduler) IntegrationContextUtils.getTaskScheduler(context);
84+
ThreadPoolTaskScheduler taskScheduler =
85+
(ThreadPoolTaskScheduler) IntegrationContextUtils.getTaskScheduler(context);
8586
taskScheduler.shutdown();
8687
taskScheduler.getScheduledExecutor().awaitTermination(10, TimeUnit.SECONDS);
8788
context.destroy();
@@ -107,7 +108,8 @@ private void testDelayerHandlerRescheduleWithMongoDbMessageStore(String config)
107108

108109
Message<String> original1 = (Message<String>) ((DelayHandler.DelayedMessageWrapper) payload).getOriginal();
109110
messageInStore = iterator.next();
110-
Message<String> original2 = (Message<String>) ((DelayHandler.DelayedMessageWrapper) messageInStore.getPayload()).getOriginal();
111+
Message<String> original2 = (Message<String>) ((DelayHandler.DelayedMessageWrapper) messageInStore.getPayload())
112+
.getOriginal();
111113
assertThat(message1, Matchers.anyOf(Matchers.is(original1), Matchers.is(original2)));
112114

113115
context.refresh();
@@ -125,7 +127,7 @@ private void testDelayerHandlerRescheduleWithMongoDbMessageStore(String config)
125127
assertNotSame(payload1, payload2);
126128

127129
assertEquals(0, messageStore.messageGroupSize(delayerMessageGroupId));
128-
130+
context.destroy();
129131
}
130132

131133
}

spring-integration-redis/src/test/java/org/springframework/integration/redis/store/DelayerHandlerRescheduleIntegrationTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public void testDelayerHandlerRescheduleWithRedisMessageStore() throws Exception
7070

7171
// Emulate restart and check DB state before next start
7272
// Interrupt taskScheduler as quickly as possible
73-
ThreadPoolTaskScheduler taskScheduler = (ThreadPoolTaskScheduler) IntegrationContextUtils.getTaskScheduler(context);
73+
ThreadPoolTaskScheduler taskScheduler =
74+
(ThreadPoolTaskScheduler) IntegrationContextUtils.getTaskScheduler(context);
7475
taskScheduler.shutdown();
7576
taskScheduler.getScheduledExecutor().awaitTermination(10, TimeUnit.SECONDS);
7677
context.destroy();
@@ -118,7 +119,7 @@ public void testDelayerHandlerRescheduleWithRedisMessageStore() throws Exception
118119
assertEquals(0, messageStore.messageGroupSize(delayerMessageGroupId));
119120

120121
messageStore.removeMessageGroup(delayerMessageGroupId);
121-
122+
context.destroy();
122123
}
123124

124125
}

0 commit comments

Comments
 (0)