You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2016/12/02 11:34:10 UTC
[1/3] cayenne git commit: Proper shutdown of DefaultEventManager and
CayenneRuntime in tests to prevent thread leakage.
Repository: cayenne
Updated Branches:
refs/heads/master ff1c1af4c -> 865ee2bf5
Proper shutdown of DefaultEventManager and CayenneRuntime in tests to prevent thread leakage.
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/860c80f8
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/860c80f8
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/860c80f8
Branch: refs/heads/master
Commit: 860c80f8542560ee1665fd0ce65d2d0dfba34704
Parents: fecb67f
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Dec 2 12:35:24 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Dec 2 12:35:24 2016 +0300
----------------------------------------------------------------------
.../access/DataContextSharedCacheEmpiricIT.java | 13 +++++++++-
.../org/apache/cayenne/access/DataDomainIT.java | 25 ++++++++++++--------
.../apache/cayenne/access/DataRowStoreIT.java | 24 +++++++++++++++----
.../rop/server/ROPServletTest.java | 20 ++++++++++++----
.../cayenne/event/DefaultEventManagerTest.java | 6 +++++
.../apache/cayenne/event/EventBridgeTest.java | 25 ++++++++++++++++----
6 files changed, 89 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/860c80f8/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
index 91c1ed1..dec040c 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
@@ -32,6 +32,7 @@ import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.unit.di.server.CayenneProjects;
import org.apache.cayenne.unit.di.server.ServerCase;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -59,12 +60,15 @@ public class DataContextSharedCacheEmpiricIT extends ServerCase {
private DataContext c1;
private DataContext c2;
+ private DefaultEventManager eventManager;
+
@Before
public void setUp() throws Exception {
+ eventManager = new DefaultEventManager();
DataRowStore cache = new DataRowStore(
"cacheTest",
Collections.EMPTY_MAP,
- new DefaultEventManager());
+ eventManager);
c1 = new DataContext(runtime.getDataDomain(),
objectStoreFactory.createObjectStore(cache));
@@ -77,6 +81,13 @@ public class DataContextSharedCacheEmpiricIT extends ServerCase {
tArtist.insert(1, "version1");
}
+ @After
+ public void tearDown() {
+ if(eventManager != null) {
+ eventManager.shutdown();
+ }
+ }
+
@Test
public void testSelectSelectCommitRefresh() throws Exception {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/860c80f8/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java
index 479ca3f..29991ab 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java
@@ -221,16 +221,21 @@ public class DataDomainIT extends ServerCase {
final boolean[] cacheShutdown = new boolean[1];
- DataRowStore cache = new DataRowStore("Y", Collections.EMPTY_MAP, new DefaultEventManager()) {
-
- @Override
- public void shutdown() {
- cacheShutdown[0] = true;
- }
- };
-
- domain.setSharedSnapshotCache(cache);
- domain.shutdown();
+ DefaultEventManager eventManager = new DefaultEventManager();
+ try {
+ DataRowStore cache = new DataRowStore("Y", Collections.EMPTY_MAP, eventManager) {
+
+ @Override
+ public void shutdown() {
+ cacheShutdown[0] = true;
+ }
+ };
+
+ domain.setSharedSnapshotCache(cache);
+ domain.shutdown();
+ } finally {
+ eventManager.shutdown();
+ }
assertTrue(cacheShutdown[0]);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/860c80f8/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
index 6a15123..f45babf 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
@@ -26,6 +26,8 @@ import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.unit.di.server.CayenneProjects;
import org.apache.cayenne.unit.di.server.ServerCase;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
import java.util.Collections;
@@ -40,12 +42,26 @@ import static org.junit.Assert.assertTrue;
@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
public class DataRowStoreIT extends ServerCase {
+ private DefaultEventManager eventManager;
+
+ @After
+ public void cleanEventManager() {
+ if(eventManager != null) {
+ eventManager.shutdown();
+ }
+ }
+
+ @Before
+ public void createEventManager() {
+ eventManager = new DefaultEventManager();
+ }
+
@Test
public void testDefaultConstructor() {
DataRowStore cache = new DataRowStore(
"cacheXYZ",
Collections.EMPTY_MAP,
- new DefaultEventManager());
+ eventManager);
assertEquals("cacheXYZ", cache.getName());
assertNotNull(cache.getSnapshotEventSubject());
assertTrue(cache.getSnapshotEventSubject().getSubjectName().contains("cacheXYZ"));
@@ -63,7 +79,7 @@ public class DataRowStoreIT extends ServerCase {
DataRowStore cache = new DataRowStore(
"cacheXYZ",
props,
- new DefaultEventManager());
+ eventManager);
assertEquals("cacheXYZ", cache.getName());
assertEquals(!DataRowStore.REMOTE_NOTIFICATION_DEFAULT, cache
.isNotifyingRemoteListeners());
@@ -74,7 +90,7 @@ public class DataRowStoreIT extends ServerCase {
DataRowStore cache = new DataRowStore(
"cacheXYZ",
Collections.EMPTY_MAP,
- new DefaultEventManager());
+ eventManager);
assertEquals(DataRowStore.REMOTE_NOTIFICATION_DEFAULT, cache
.isNotifyingRemoteListeners());
@@ -95,7 +111,7 @@ public class DataRowStoreIT extends ServerCase {
DataRowStore cache = new DataRowStore(
"cacheXYZ",
props,
- new DefaultEventManager());
+ eventManager);
assertEquals(2, cache.maximumSize());
assertEquals(0, cache.size());
http://git-wip-us.apache.org/repos/asf/cayenne/blob/860c80f8/cayenne-server/src/test/java/org/apache/cayenne/configuration/rop/server/ROPServletTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/configuration/rop/server/ROPServletTest.java b/cayenne-server/src/test/java/org/apache/cayenne/configuration/rop/server/ROPServletTest.java
index 569d703..8495e99 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/configuration/rop/server/ROPServletTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/configuration/rop/server/ROPServletTest.java
@@ -39,6 +39,7 @@ import org.apache.cayenne.configuration.web.WebUtil;
import org.apache.cayenne.di.Key;
import org.apache.cayenne.di.Module;
import org.apache.cayenne.rop.ROPServlet;
+import org.junit.After;
import org.junit.Test;
import com.mockrunner.mock.web.MockServletConfig;
@@ -46,6 +47,15 @@ import com.mockrunner.mock.web.MockServletContext;
public class ROPServletTest {
+ private CayenneRuntime runtime;
+
+ @After
+ public void shutdownRuntime() {
+ if(runtime != null) {
+ runtime.shutdown();
+ }
+ }
+
@Test
public void testInitWithServletName() throws Exception {
@@ -60,7 +70,7 @@ public class ROPServletTest {
assertNull(WebUtil.getCayenneRuntime(context));
servlet.init(config);
- CayenneRuntime runtime = WebUtil.getCayenneRuntime(context);
+ runtime = WebUtil.getCayenneRuntime(context);
assertNotNull(runtime);
List<?> locations = runtime.getInjector().getInstance(
@@ -82,7 +92,7 @@ public class ROPServletTest {
ROPServlet servlet = new ROPServlet();
servlet.init(config);
- CayenneRuntime runtime = WebUtil.getCayenneRuntime(context);
+ runtime = WebUtil.getCayenneRuntime(context);
assertNotNull(runtime);
List<?> locations = runtime.getInjector().getInstance(
Key.get(List.class, Constants.SERVER_PROJECT_LOCATIONS_LIST));
@@ -104,7 +114,7 @@ public class ROPServletTest {
ROPServlet servlet = new ROPServlet();
servlet.init(config);
- CayenneRuntime runtime = WebUtil.getCayenneRuntime(context);
+ runtime = WebUtil.getCayenneRuntime(context);
assertNotNull(runtime);
List<?> locations = runtime.getInjector().getInstance(
@@ -135,7 +145,7 @@ public class ROPServletTest {
ROPServlet servlet = new ROPServlet();
servlet.init(config);
- CayenneRuntime runtime = WebUtil.getCayenneRuntime(context);
+ runtime = WebUtil.getCayenneRuntime(context);
assertNotNull(runtime);
Collection<Module> modules = ((ModuleCollection) runtime.getModule()).getModules();
@@ -165,7 +175,7 @@ public class ROPServletTest {
ROPServlet servlet = new ROPServlet();
servlet.init(config);
- CayenneRuntime runtime = WebUtil.getCayenneRuntime(context);
+ runtime = WebUtil.getCayenneRuntime(context);
Collection<Module> modules = ((ModuleCollection) runtime.getModule()).getModules();
assertEquals(3, modules.size());
http://git-wip-us.apache.org/repos/asf/cayenne/blob/860c80f8/cayenne-server/src/test/java/org/apache/cayenne/event/DefaultEventManagerTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/event/DefaultEventManagerTest.java b/cayenne-server/src/test/java/org/apache/cayenne/event/DefaultEventManagerTest.java
index 93f8a3f..b30493d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/event/DefaultEventManagerTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/event/DefaultEventManagerTest.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.event;
import org.apache.cayenne.test.parallel.ParallelTestContainer;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -46,6 +47,11 @@ public class DefaultEventManagerTest implements EventListener {
numberOfReceivedEventsForClass = 0;
}
+ @After
+ public void tearDown() {
+ ((DefaultEventManager)eventManager).shutdown();
+ }
+
@Test
public void testSubjectListenerWouldRegisterListener() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/860c80f8/cayenne-server/src/test/java/org/apache/cayenne/event/EventBridgeTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/event/EventBridgeTest.java b/cayenne-server/src/test/java/org/apache/cayenne/event/EventBridgeTest.java
index dd76077..cc97eb1 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/event/EventBridgeTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/event/EventBridgeTest.java
@@ -21,9 +21,12 @@ package org.apache.cayenne.event;
import org.apache.cayenne.access.event.SnapshotEvent;
import org.apache.cayenne.test.parallel.ParallelTestContainer;
+import org.junit.After;
import org.junit.Test;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -34,6 +37,16 @@ import static org.junit.Assert.assertTrue;
*/
public class EventBridgeTest {
+ private List<DefaultEventManager> managersToClean = new ArrayList<>();
+
+ @After
+ public void cleanEventManagers() {
+ for(DefaultEventManager manager : managersToClean) {
+ manager.shutdown();
+ }
+ managersToClean.clear();
+ }
+
@Test
public void testConstructor() throws Exception {
EventSubject local = EventSubject
@@ -54,7 +67,8 @@ public class EventBridgeTest {
String external = "externalSubject";
TestBridge bridge = new TestBridge(local, external);
- EventManager manager = new DefaultEventManager();
+ DefaultEventManager manager = new DefaultEventManager();
+ managersToClean.add(manager);
bridge.startup(manager, EventBridge.RECEIVE_LOCAL_EXTERNAL);
assertSame(manager, bridge.eventManager);
@@ -62,7 +76,8 @@ public class EventBridgeTest {
assertEquals(0, bridge.shutdownCalls);
// try startup again
- EventManager newManager = new DefaultEventManager();
+ DefaultEventManager newManager = new DefaultEventManager();
+ managersToClean.add(newManager);
bridge.startup(newManager, EventBridge.RECEIVE_LOCAL_EXTERNAL);
assertSame(newManager, bridge.eventManager);
@@ -77,7 +92,8 @@ public class EventBridgeTest {
String external = "externalSubject";
TestBridge bridge = new TestBridge(local, external);
- EventManager manager = new DefaultEventManager();
+ DefaultEventManager manager = new DefaultEventManager();
+ managersToClean.add(manager);
bridge.startup(manager, EventBridge.RECEIVE_LOCAL_EXTERNAL);
bridge.shutdown();
@@ -95,7 +111,8 @@ public class EventBridgeTest {
String external = "externalSubject";
final TestBridge bridge = new TestBridge(local, external);
- EventManager manager = new DefaultEventManager(2);
+ DefaultEventManager manager = new DefaultEventManager(2);
+ managersToClean.add(manager);
bridge.startup(manager, EventBridge.RECEIVE_LOCAL_EXTERNAL);
final SnapshotEvent eventWithNoSubject = new SnapshotEvent(
[3/3] cayenne git commit: Merge branch '147'
Posted by sk...@apache.org.
Merge branch '147'
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/865ee2bf
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/865ee2bf
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/865ee2bf
Branch: refs/heads/master
Commit: 865ee2bf5c95c772ade0d4dd22e8401061b707ce
Parents: ff1c1af 391409d
Author: Savva Kolbachev <s....@gmail.com>
Authored: Fri Dec 2 14:28:34 2016 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Fri Dec 2 14:28:34 2016 +0300
----------------------------------------------------------------------
.../org/apache/cayenne/CayenneContextIT.java | 13 +++++++-
.../cayenne/remote/ClientChannelTest.java | 32 +++++++++++++++-----
.../access/DataContextSharedCacheEmpiricIT.java | 13 +++++++-
.../org/apache/cayenne/access/DataDomainIT.java | 25 +++++++++------
.../apache/cayenne/access/DataRowStoreIT.java | 24 ++++++++++++---
.../rop/server/ROPServletTest.java | 20 +++++++++---
.../cayenne/event/DefaultEventManagerTest.java | 6 ++++
.../apache/cayenne/event/EventBridgeTest.java | 25 ++++++++++++---
8 files changed, 125 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
[2/3] cayenne git commit: Proper shutdown of DefaultEventManager and
CayenneRuntime in tests to prevent thread leakage. - more tests in client
module fixed
Posted by sk...@apache.org.
Proper shutdown of DefaultEventManager and CayenneRuntime in tests to prevent thread leakage.
- more tests in client module fixed
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/391409dd
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/391409dd
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/391409dd
Branch: refs/heads/master
Commit: 391409dd79562fba018517339556bc918aee36cd
Parents: 860c80f
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Dec 2 13:01:02 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Dec 2 13:01:02 2016 +0300
----------------------------------------------------------------------
.../org/apache/cayenne/CayenneContextIT.java | 13 +++++++-
.../cayenne/remote/ClientChannelTest.java | 32 +++++++++++++++-----
2 files changed, 36 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/391409dd/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextIT.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextIT.java
index e8fdc08..ae607de 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextIT.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextIT.java
@@ -39,6 +39,7 @@ import org.apache.cayenne.unit.di.client.ClientCase;
import org.apache.cayenne.unit.di.server.CayenneProjects;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.apache.cayenne.util.GenericResponse;
+import org.junit.After;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -65,6 +66,16 @@ public class CayenneContextIT extends ClientCase {
@Inject
private ObjectContext serverContext;
+ private DefaultEventManager eventManager;
+
+ @After
+ public void cleanUp() {
+ if(eventManager != null) {
+ eventManager.shutdown();
+ eventManager = null;
+ }
+ }
+
@Test
public void testConstructor() {
@@ -121,7 +132,7 @@ public class CayenneContextIT extends ClientCase {
public void testCommitChangesNew() {
final CompoundDiff diff = new CompoundDiff();
final Object newObjectId = new ObjectId("test", "key", "generated");
- final EventManager eventManager = new DefaultEventManager(0);
+ eventManager = new DefaultEventManager(0);
// test that ids that are passed back are actually propagated to the
// right
http://git-wip-us.apache.org/repos/asf/cayenne/blob/391409dd/cayenne-client/src/test/java/org/apache/cayenne/remote/ClientChannelTest.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/remote/ClientChannelTest.java b/cayenne-client/src/test/java/org/apache/cayenne/remote/ClientChannelTest.java
index 3638ae8..ce022ba 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/remote/ClientChannelTest.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/remote/ClientChannelTest.java
@@ -35,10 +35,12 @@ import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.util.GenericResponse;
+import org.junit.After;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -55,6 +57,19 @@ import static org.mockito.Mockito.when;
public class ClientChannelTest {
+ private List<DefaultEventManager> managers = new ArrayList<>();
+
+ @After
+ public void cleanUp() {
+ if(managers.size() == 0) {
+ return;
+ }
+ for(DefaultEventManager manager : managers) {
+ manager.shutdown();
+ }
+ managers.clear();
+ }
+
@Test
public void testOnQuerySelect() {
@@ -221,23 +236,24 @@ public class ClientChannelTest {
try {
new ClientChannel(connection, false, new MockEventManager(), false);
fail("Channel didn't throw on broken EventBridge");
- }
- catch (CayenneRuntimeException e) {
+ } catch (CayenneRuntimeException e) {
// expected
}
try {
- new ClientChannel(connection, false, new DefaultEventManager(2), false);
+ DefaultEventManager manager = new DefaultEventManager(2);
+ managers.add(manager);
+ new ClientChannel(connection, false, manager, false);
fail("Channel didn't throw on broken EventBridge");
- }
- catch (CayenneRuntimeException e) {
+ } catch (CayenneRuntimeException e) {
// expected
}
try {
- new ClientChannel(connection, false, new DefaultEventManager(2), true);
- }
- catch (CayenneRuntimeException e) {
+ DefaultEventManager manager = new DefaultEventManager(2);
+ managers.add(manager);
+ new ClientChannel(connection, false, manager, true);
+ } catch (CayenneRuntimeException e) {
fail("Channel threw on broken EventBridge");
}
}