diff options
Diffstat (limited to 'java/test')
-rw-r--r-- | java/test/src/main/java/test/Ice/acm/AllTests.java | 19 | ||||
-rw-r--r-- | java/test/src/main/java/test/Ice/acm/Test.ice | 1 | ||||
-rw-r--r-- | java/test/src/main/java/test/Ice/acm/TestI.java | 32 |
3 files changed, 44 insertions, 8 deletions
diff --git a/java/test/src/main/java/test/Ice/acm/AllTests.java b/java/test/src/main/java/test/Ice/acm/AllTests.java index 5a23881dfba..3a496ec0de5 100644 --- a/java/test/src/main/java/test/Ice/acm/AllTests.java +++ b/java/test/src/main/java/test/Ice/acm/AllTests.java @@ -253,7 +253,7 @@ public class AllTests } } } - + public abstract void runTestCase(RemoteObjectAdapterPrx adapter, TestIntfPrx proxy); public void setClientACM(int timeout, int close, int heartbeat) @@ -567,7 +567,7 @@ public class AllTests public SetACMTest(Application app, RemoteCommunicatorPrx com, java.io.PrintWriter out) { super(app, "setACM/getACM", com, out); - setClientACM(15, 4, 2); + setClientACM(15, 4, 0); } public void runTestCase(RemoteObjectAdapterPrx adapter, TestIntfPrx proxy) @@ -576,22 +576,25 @@ public class AllTests acm = proxy.ice_getCachedConnection().getACM(); test(acm.timeout == 15); test(acm.close == Ice.ACMClose.CloseOnIdleForceful); - test(acm.heartbeat == Ice.ACMHeartbeat.HeartbeatOnIdle); + test(acm.heartbeat == Ice.ACMHeartbeat.HeartbeatOff); proxy.ice_getCachedConnection().setACM(null, null, null); acm = proxy.ice_getCachedConnection().getACM(); test(acm.timeout == 15); test(acm.close == Ice.ACMClose.CloseOnIdleForceful); - test(acm.heartbeat == Ice.ACMHeartbeat.HeartbeatOnIdle); + test(acm.heartbeat == Ice.ACMHeartbeat.HeartbeatOff); proxy.ice_getCachedConnection().setACM( - new Ice.IntOptional(20), + new Ice.IntOptional(1), new Ice.Optional<Ice.ACMClose>(Ice.ACMClose.CloseOnInvocationAndIdle), - new Ice.Optional<Ice.ACMHeartbeat>(Ice.ACMHeartbeat.HeartbeatOnInvocation)); + new Ice.Optional<Ice.ACMHeartbeat>(Ice.ACMHeartbeat.HeartbeatAlways)); acm = proxy.ice_getCachedConnection().getACM(); - test(acm.timeout == 20); + test(acm.timeout == 1); test(acm.close == Ice.ACMClose.CloseOnInvocationAndIdle); - test(acm.heartbeat == Ice.ACMHeartbeat.HeartbeatOnInvocation); + test(acm.heartbeat == Ice.ACMHeartbeat.HeartbeatAlways); + + // Make sure the client sends few heartbeats to the server + proxy.waitForHeartbeat(2); } } diff --git a/java/test/src/main/java/test/Ice/acm/Test.ice b/java/test/src/main/java/test/Ice/acm/Test.ice index fcc420b58ea..d3c1a83e37f 100644 --- a/java/test/src/main/java/test/Ice/acm/Test.ice +++ b/java/test/src/main/java/test/Ice/acm/Test.ice @@ -18,6 +18,7 @@ interface TestIntf void sleep(int seconds); void sleepAndHold(int seconds); void interruptSleep(); + void waitForHeartbeat(int count); }; interface RemoteObjectAdapter diff --git a/java/test/src/main/java/test/Ice/acm/TestI.java b/java/test/src/main/java/test/Ice/acm/TestI.java index 96ebf88ef40..4d06e74876b 100644 --- a/java/test/src/main/java/test/Ice/acm/TestI.java +++ b/java/test/src/main/java/test/Ice/acm/TestI.java @@ -48,4 +48,36 @@ public class TestI extends _TestIntfDisp notifyAll(); } } + + public void waitForHeartbeat(int count, Ice.Current current) + { + final Ice.Holder<Integer> c = new Ice.Holder<Integer>(count); + Ice.ConnectionCallback callback = new Ice.ConnectionCallback() + { + synchronized public void heartbeat(Ice.Connection connection) + { + --c.value; + notifyAll(); + } + + public void closed(Ice.Connection connection) + { + } + }; + current.con.setCallback(callback); + + synchronized(callback) + { + while(c.value > 0) + { + try + { + callback.wait(); + } + catch(InterruptedException ex) + { + } + } + } + } }; |