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 <stari...@gmail.com> Authored: Fri Dec 2 13:01:02 2016 +0300 Committer: Nikita Timofeev <stari...@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"); } }