aboutsummaryrefslogtreecommitdiffstats
path: root/jrt/tests
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-02-23 17:59:23 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-02-23 17:59:23 +0100
commitbaeeee73dc453a803376ac1bbc9e1c81813f7dcb (patch)
tree8411ae0d68f4226870b5a68f98a61844f6e058f7 /jrt/tests
parent09039a14a0f27e7d3dadfc22cb72a8d0d10f9d65 (diff)
GC unused SessionHandler
Diffstat (limited to 'jrt/tests')
-rw-r--r--jrt/tests/com/yahoo/jrt/ConnectTest.java19
-rw-r--r--jrt/tests/com/yahoo/jrt/SessionTest.java466
-rw-r--r--jrt/tests/com/yahoo/jrt/Test.java28
3 files changed, 5 insertions, 508 deletions
diff --git a/jrt/tests/com/yahoo/jrt/ConnectTest.java b/jrt/tests/com/yahoo/jrt/ConnectTest.java
index 31bb713595c..ae3c07eef69 100644
--- a/jrt/tests/com/yahoo/jrt/ConnectTest.java
+++ b/jrt/tests/com/yahoo/jrt/ConnectTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class ConnectTest {
@@ -11,33 +12,23 @@ public class ConnectTest {
Test.Orb client = new Test.Orb(new Transport());
Acceptor acceptor = server.listen(new Spec(0));
- assertTrue(server.checkLifeCounts(0, 0));
- assertTrue(client.checkLifeCounts(0, 0));
-
Target target = client.connect(new Spec("localhost", acceptor.port()));
for (int i = 0; i < 100; i++) {
- if (client.initCount == 1 && server.initCount == 1) {
+ if (target.isValid()) {
break;
}
try { Thread.sleep(100); } catch (InterruptedException e) {}
}
-
- assertTrue(server.checkLifeCounts(1, 0));
- assertTrue(client.checkLifeCounts(1, 0));
-
+ assertTrue(target.isValid());
target.close();
-
for (int i = 0; i < 100; i++) {
- if (client.finiCount == 1 && server.finiCount == 1) {
+ if (!target.isValid()) {
break;
}
try { Thread.sleep(100); } catch (InterruptedException e) {}
}
-
- assertTrue(server.checkLifeCounts(1, 1));
- assertTrue(client.checkLifeCounts(1, 1));
-
+ assertFalse(target.isValid());
acceptor.shutdown().join();
client.transport().shutdown().join();
server.transport().shutdown().join();
diff --git a/jrt/tests/com/yahoo/jrt/SessionTest.java b/jrt/tests/com/yahoo/jrt/SessionTest.java
deleted file mode 100644
index 61db0438959..00000000000
--- a/jrt/tests/com/yahoo/jrt/SessionTest.java
+++ /dev/null
@@ -1,466 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.jrt;
-
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
-
-import static com.yahoo.jrt.CryptoUtils.createTestTlsContext;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-@RunWith(Parameterized.class)
-public class SessionTest implements SessionHandler {
-
- @Parameter public CryptoEngine crypto;
- @Parameters(name = "{0}") public static Object[] engines() {
- return new Object[] { new NullCryptoEngine(), new XorCryptoEngine(), new TlsCryptoEngine(createTestTlsContext()) };
- }
-
- private static class Session {
- private static volatile int cnt = 0;
- private static boolean error = false;
-
- private int value = 0;
- private boolean gotInit = false;
- private boolean gotLive = false;
- private boolean gotDown = false;
- private boolean gotFini = false;
-
- private static synchronized void add() {
- cnt++;
- }
-
- private static synchronized void sub() {
- cnt--;
- }
-
- public Session() {
- add();
- }
-
- public void init() {
- if (gotInit || gotLive || gotDown || gotFini) {
- setError();
- }
- gotInit = true;
- }
-
- public void live() {
- if (!gotInit || gotLive || gotDown || gotFini) {
- setError();
- }
- gotLive = true;
- }
-
- public void touch() {
- if (!gotInit || gotFini) {
- setError();
- }
- }
-
- public int value() {
- if (!gotInit || gotFini) {
- setError();
- }
- return value;
- }
-
- public void value(int value) {
- if (!gotInit || gotFini) {
- setError();
- }
- this.value = value;
- }
-
- public void down() {
- if (!gotInit || gotDown || gotFini) {
- setError();
- }
- gotDown = true;
- }
-
- public void fini() {
- if (!gotInit || !gotDown || gotFini) {
- setError();
- }
- gotFini = true;
- sub();
- }
-
- public static int cnt() {
- return cnt;
- }
-
- public static void setError() {
- error = true;
- Throwable e = new RuntimeException("ERROR TRACE");
- e.printStackTrace();
- }
-
- public static boolean getError() {
- return error;
- }
-
- public static void reset() {
- error = false;
- cnt = 0;
- }
- }
-
- Test.Orb server;
- Acceptor acceptor;
- Test.Orb client;
- Target target;
- Test.Receptor receptor;
-
- @Before
- public void setUp() throws ListenFailedException {
- Session.reset();
- server = new Test.Orb(new Transport("server", crypto, 1));
- server.setSessionHandler(this);
- client = new Test.Orb(new Transport("client", crypto, 1));
- client.setSessionHandler(this);
- acceptor = server.listen(new Spec(0));
- target = client.connect(new Spec("localhost", acceptor.port()), new Session());
-
- server.addMethod(new Method("set", "i", "", this::rpc_set));
- server.addMethod(new Method("get", "", "i", this::rpc_get));
- server.addMethod(new Method("call_detach", "", "", this::rpc_call_detach));
- client.addMethod(new Method("detach", "", "", this::rpc_detach));
- receptor = new Test.Receptor();
- }
-
- @After
- public void tearDown() {
- target.close();
- acceptor.shutdown().join();
- client.transport().shutdown().join();
- server.transport().shutdown().join();
- }
-
- public void handleSessionInit(Target t) {
- Object ctx = t.getContext();
- if (t.isClient()) {
- if (ctx == null) {
- Session.setError();
- }
- }
- if (t.isServer()) {
- if (ctx != null) {
- Session.setError();
- }
- t.setContext(new Session());
- }
- Session s = (Session) t.getContext();
- if (s == null) {
- Session.setError();
- } else {
- s.init();
- }
- }
-
- public void handleSessionLive(Target t) {
- Session s = (Session) t.getContext();
- if (s == null) {
- Session.setError();
- } else {
- s.live();
- }
- }
-
- public void handleSessionDown(Target t) {
- Session s = (Session) t.getContext();
- if (s == null) {
- Session.setError();
- } else {
- s.down();
- }
- }
-
- public void handleSessionFini(Target t) {
- Session s = (Session) t.getContext();
- if (s == null) {
- Session.setError();
- } else {
- s.fini();
- }
- }
-
- private void rpc_set(Request req) {
- Session s = (Session) req.target().getContext();
- s.value(req.parameters().get(0).asInt32());
- }
-
- private void rpc_get(Request req) {
- Session s = (Session) req.target().getContext();
- req.returnValues().add(new Int32Value(s.value()));
- }
-
- private void rpc_call_detach(Request req) {
- Session s = (Session) req.target().getContext();
- s.touch();
- req.target().invokeVoid(new Request("detach"));
- }
-
- private void rpc_detach(Request req) {
- Session s = (Session) req.target().getContext();
- if (s == null) {
- Session.setError();
- } else {
- s.touch();
- }
- req.detach();
- receptor.put(req);
- }
-
- public void waitState(int sessionCount,
- int serverInitCount,
- int serverLiveCount,
- int serverDownCount,
- int serverFiniCount,
- int clientInitCount,
- int clientLiveCount,
- int clientDownCount,
- int clientFiniCount) {
- server.transport().sync().sync();
- client.transport().sync().sync();
- for (int i = 0; i < 12000; i++) {
- if ((sessionCount == Session.cnt() || sessionCount < 0) &&
- (serverInitCount == server.initCount || serverInitCount < 0) &&
- (serverLiveCount == server.liveCount || serverLiveCount < 0) &&
- (serverDownCount == server.downCount || serverDownCount < 0) &&
- (serverFiniCount == server.finiCount || serverFiniCount < 0) &&
- (clientInitCount == client.initCount || clientInitCount < 0) &&
- (clientLiveCount == client.liveCount || clientLiveCount < 0) &&
- (clientDownCount == client.downCount || clientDownCount < 0) &&
- (clientFiniCount == client.finiCount || clientFiniCount < 0)) {
- break;
- }
- try { Thread.sleep(10); } catch (InterruptedException e) {}
- }
- server.transport().sync().sync();
- client.transport().sync().sync();
- }
-
- @org.junit.Test
- public void testConnDownLast() {
- waitState(2, 1, 1, 0, 0, 1, 1, 0, 0);
- assertEquals(2, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(0, server.downCount);
- assertEquals(0, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(0, client.downCount);
- assertEquals(0, client.finiCount);
-
- Request req = new Request("get");
- target.invokeSync(req, 5.0);
- assertEquals(0, req.returnValues().get(0).asInt32());
-
- req = new Request("set");
- req.parameters().add(new Int32Value(42));
- target.invokeSync(req, 5.0);
- assertTrue(!req.isError());
-
- req = new Request("get");
- target.invokeSync(req, 5.0);
- assertEquals(42, req.returnValues().get(0).asInt32());
-
- assertEquals(2, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(0, server.downCount);
- assertEquals(0, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(0, client.downCount);
- assertEquals(0, client.finiCount);
-
- target.close();
- waitState(0, 1, 1, 1, 1, 1, 1, 1, 1);
- assertEquals(0, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(1, server.downCount);
- assertEquals(1, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(1, client.downCount);
- assertEquals(1, client.finiCount);
- assertFalse(Session.getError());
- }
-
- @org.junit.Test
- public void testReqDoneLast() {
- waitState(2, 1, 1, 0, 0, 1, 1, 0, 0);
- assertEquals(2, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(0, server.downCount);
- assertEquals(0, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(0, client.downCount);
- assertEquals(0, client.finiCount);
-
- Request req = new Request("get");
- target.invokeSync(req, 5.0);
- assertEquals(0, req.returnValues().get(0).asInt32());
-
- req = new Request("set");
- req.parameters().add(new Int32Value(42));
- target.invokeSync(req, 5.0);
- assertTrue(!req.isError());
-
- req = new Request("get");
- target.invokeSync(req, 5.0);
- assertEquals(42, req.returnValues().get(0).asInt32());
-
- assertEquals(2, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(0, server.downCount);
- assertEquals(0, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(0, client.downCount);
- assertEquals(0, client.finiCount);
-
- req = new Request("call_detach");
- target.invokeSync(req, 5.0);
- assertTrue(!req.isError());
- Request detached = (Request) receptor.get();
-
- target.close();
- waitState(1, 1, 1, 1, 1, 1, 1, 1, 0);
- assertEquals(1, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(1, server.downCount);
- assertEquals(1, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(1, client.downCount);
- assertEquals(0, client.finiCount);
-
- detached.returnRequest();
- waitState(0, 1, 1, 1, 1, 1, 1, 1, 1);
- assertEquals(0, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(1, server.downCount);
- assertEquals(1, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(1, client.downCount);
- assertEquals(1, client.finiCount);
- assertFalse(Session.getError());
- }
-
- @org.junit.Test
- public void testNeverLive() {
- waitState(2, 1, 1, 0, 0, 1, 1, 0, 0);
- assertEquals(2, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(0, server.downCount);
- assertEquals(0, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(0, client.downCount);
- assertEquals(0, client.finiCount);
-
- target.close();
- waitState(0, 1, 1, 1, 1, 1, 1, 1, 1);
- assertEquals(0, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(1, server.downCount);
- assertEquals(1, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(1, client.downCount);
- assertEquals(1, client.finiCount);
-
- Target bogus = client.connect(new Spec("bogus"),
- new Session());
- waitState(0, 1, 1, 1, 1, 2, 1, 2, 2);
- assertEquals(0, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(1, server.downCount);
- assertEquals(1, server.finiCount);
- assertEquals(2, client.initCount);
- assertEquals(1, client.liveCount); // <--- NB
- assertEquals(2, client.downCount);
- assertEquals(2, client.finiCount);
- assertFalse(Session.getError());
- }
-
- @org.junit.Test
- public void testTransportDown() {
- waitState(2, 1, 1, 0, 0, 1, 1, 0, 0);
- assertEquals(2, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(0, server.downCount);
- assertEquals(0, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(0, client.downCount);
- assertEquals(0, client.finiCount);
-
- server.transport().shutdown().join();
-
- waitState(0, 1, 1, 1, 1, 1, 1, 1, 1);
- assertEquals(0, Session.cnt());
- assertEquals(1, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(1, server.downCount);
- assertEquals(1, server.finiCount);
- assertEquals(1, client.initCount);
- assertEquals(1, client.liveCount);
- assertEquals(1, client.downCount);
- assertEquals(1, client.finiCount);
-
- target = client.connect(new Spec("localhost", acceptor.port()),
- new Session());
-
- waitState(0, 2, 1, 2, 2, 2, -1, 2, 2);
- assertEquals(0, Session.cnt());
- assertEquals(2, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(2, server.downCount);
- assertEquals(2, server.finiCount);
- assertEquals(2, client.initCount);
- int oldClientLive = client.liveCount;
- assertEquals(2, client.downCount);
- assertEquals(2, client.finiCount);
-
- client.transport().shutdown().join();
-
- target = client.connect(new Spec("localhost", acceptor.port()),
- new Session());
-
- waitState(0, 2, 1, 2, 2, 3, oldClientLive, 3, 3);
- assertEquals(0, Session.cnt());
- assertEquals(2, server.initCount);
- assertEquals(1, server.liveCount);
- assertEquals(2, server.downCount);
- assertEquals(2, server.finiCount);
- assertEquals(3, client.initCount);
- assertEquals(oldClientLive, client.liveCount);
- assertEquals(3, client.downCount);
- assertEquals(3, client.finiCount);
- assertFalse(Session.getError());
- }
-
-}
diff --git a/jrt/tests/com/yahoo/jrt/Test.java b/jrt/tests/com/yahoo/jrt/Test.java
index 59edd31ecea..ed2566a7ec2 100644
--- a/jrt/tests/com/yahoo/jrt/Test.java
+++ b/jrt/tests/com/yahoo/jrt/Test.java
@@ -13,8 +13,6 @@ public class Test {
* testing.
**/
public static class Orb extends Supervisor {
- public volatile int initCount = 0;
- public volatile int liveCount = 0;
public volatile int readRequestCount = 0;
public volatile int readReplyCount = 0;
public volatile int readErrorCount = 0;
@@ -23,8 +21,6 @@ public class Test {
public volatile int writeReplyCount = 0;
public volatile int writeErrorCount = 0;
public volatile long writeBytes = 0;
- public volatile int downCount = 0;
- public volatile int finiCount = 0;
public Orb(Transport t) {
super(t);
@@ -42,30 +38,6 @@ public class Test {
error == writeErrorCount);
}
- public boolean checkLifeCounts(int init, int fini) {
- return (init == initCount && fini == finiCount);
- }
-
- public void sessionInit(Target target) {
- initCount++;
- super.sessionInit(target);
- }
-
- public void sessionLive(Target target) {
- liveCount++;
- super.sessionLive(target);
- }
-
- public void sessionDown(Target target) {
- downCount++;
- super.sessionDown(target);
- }
-
- public void sessionFini(Target target) {
- finiCount++;
- super.sessionFini(target);
- }
-
public void readPacket(PacketInfo info) {
if (info.packetCode() == Packet.PCODE_REQUEST) {
readRequestCount++;