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");
         }
     }

Reply via email to