From 5c44b8d8bdb2956a0879767de4afe54d508e29a8 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Mon, 3 Jan 2022 10:51:30 +0100 Subject: Simplify MockConnection No need to use thread, start() isn't called anyway. Collapse methods into one to simplify --- .../subscription/impl/JRTConfigSubscription.java | 1 - .../config/subscription/impl/MockConnection.java | 48 ++++------------------ .../subscription/impl/JRTConfigRequesterTest.java | 16 ++++---- .../config/protocol/JRTConfigRequestV3Test.java | 2 +- 4 files changed, 17 insertions(+), 50 deletions(-) diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java index 0b98e9cd1b2..489cc037a03 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java @@ -157,7 +157,6 @@ public class JRTConfigSubscription extends ConfigSubsc } @Override - @SuppressWarnings("serial") public void close() { super.close(); reqQueue = new LinkedBlockingQueue<>() { diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java b/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java index 6446758a9ba..24a080d5824 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/MockConnection.java @@ -40,10 +40,7 @@ public class MockConnection implements ConnectionPool, Connection { public void invokeAsync(Request request, double jrtTimeout, RequestWaiter requestWaiter) { numberOfRequests++; lastRequest = request; - responseHandler.requestWaiter(requestWaiter).request(request); - Thread t = new Thread(responseHandler); - t.setDaemon(true); - t.run(); + responseHandler.handle(request, requestWaiter); } @Override @@ -85,7 +82,7 @@ public class MockConnection implements ConnectionPool, Connection { long generation = 1; - protected void createResponse() { + protected void createResponse(Request request) { JRTServerConfigRequestV3 jrtReq = JRTServerConfigRequestV3.createFromRequest(request); Payload payload = Payload.from(ConfigPayload.empty()); jrtReq.addOkResponse(payload, generation, false, PayloadChecksums.fromPayload(payload)); @@ -94,51 +91,22 @@ public class MockConnection implements ConnectionPool, Connection { } - public interface ResponseHandler extends Runnable { + public interface ResponseHandler { - RequestWaiter requestWaiter(); + void handle(Request request, RequestWaiter requestWaiter); - Request request(); - - ResponseHandler requestWaiter(RequestWaiter requestWaiter); - - ResponseHandler request(Request request); } public abstract static class AbstractResponseHandler implements ResponseHandler { - private RequestWaiter requestWaiter; - protected Request request; - - @Override - public RequestWaiter requestWaiter() { - return requestWaiter; - } - - @Override - public Request request() { - return request; - } - - @Override - public ResponseHandler requestWaiter(RequestWaiter requestWaiter) { - this.requestWaiter = requestWaiter; - return this; - } - @Override - public ResponseHandler request(Request request) { - this.request = request; - return this; - } - - @Override - public void run() { - createResponse(); + public void handle(Request request, RequestWaiter requestWaiter) { + createResponse(request); requestWaiter.handleRequestDone(request); } - protected abstract void createResponse(); + protected abstract void createResponse(Request request); + } } diff --git a/config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java b/config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java index dca0c2d0018..07c3a5af56c 100644 --- a/config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java +++ b/config/src/test/java/com/yahoo/config/subscription/impl/JRTConfigRequesterTest.java @@ -4,6 +4,7 @@ package com.yahoo.config.subscription.impl; import com.yahoo.config.subscription.ConfigSourceSet; import com.yahoo.foo.SimpletypesConfig; import com.yahoo.jrt.Request; +import com.yahoo.jrt.RequestWaiter; import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.config.ConnectionPool; import com.yahoo.vespa.config.ErrorCode; @@ -209,10 +210,10 @@ public class JRTConfigRequesterTest { } @Override - public void run() { + public void handle(Request request, RequestWaiter requestWaiter) { System.out.println("Running error response handler"); - request().setError(errorCode, "error"); - requestWaiter().handleRequestDone(request()); + request.setError(errorCode, "error"); + requestWaiter.handleRequestDone(request); } } @@ -224,16 +225,15 @@ public class JRTConfigRequesterTest { } @Override - public void run() { - System.out.println("Running delayed response handler (waiting " + waitTimeMilliSeconds + - ") before responding"); + public void handle(Request request, RequestWaiter requestWaiter) { + System.out.println("Running delayed response handler (waiting " + waitTimeMilliSeconds + ") before responding"); try { Thread.sleep(waitTimeMilliSeconds); } catch (InterruptedException e) { e.printStackTrace(); } - request().setError(com.yahoo.jrt.ErrorCode.TIMEOUT, "error"); - requestWaiter().handleRequestDone(request()); + request.setError(com.yahoo.jrt.ErrorCode.TIMEOUT, "error"); + requestWaiter.handleRequestDone(request); } } diff --git a/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java b/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java index 8d160076db9..b3285e5157a 100644 --- a/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java +++ b/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java @@ -203,7 +203,7 @@ public class JRTConfigRequestV3Test { public void created_from_existing_subscription() { MockConnection connection = new MockConnection(new MockConnection.AbstractResponseHandler() { @Override - public void createResponse() { + public void createResponse(Request request) { JRTServerConfigRequest serverRequest = createReq(request); serverRequest.addOkResponse(createPayload(), currentGeneration, false, payloadChecksums); } -- cgit v1.2.3