summaryrefslogtreecommitdiff
path: root/java/test
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2015-09-14 15:43:34 +0200
committerBenoit Foucher <benoit@zeroc.com>2015-09-14 15:43:34 +0200
commit13bed6dec104b53fadf723aead0dc15dc3f2afd8 (patch)
treed6401dbe7d70d65e04e448439e4056c1fa4d7e8c /java/test
parentRemoved ARM configuraton from WinRT testsuite solutions (diff)
downloadice-13bed6dec104b53fadf723aead0dc15dc3f2afd8.tar.bz2
ice-13bed6dec104b53fadf723aead0dc15dc3f2afd8.tar.xz
ice-13bed6dec104b53fadf723aead0dc15dc3f2afd8.zip
Fixed ICE-6812 - JavaScript ACM monitor bug
Diffstat (limited to 'java/test')
-rw-r--r--java/test/src/main/java/test/Ice/acm/AllTests.java19
-rw-r--r--java/test/src/main/java/test/Ice/acm/Test.ice1
-rw-r--r--java/test/src/main/java/test/Ice/acm/TestI.java32
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)
+ {
+ }
+ }
+ }
+ }
};