diff options
Diffstat (limited to 'src')
3 files changed, 30 insertions, 38 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java index 34b2f3abec..e8c3852acb 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java @@ -33,7 +33,8 @@ final class DebugServerTransport { /** Sets up the server transport and blocks while waiting for an incoming connection. */ static DebugServerTransport createAndWaitForClient( - EventHandler eventHandler, ServerSocket serverSocket) throws IOException { + EventHandler eventHandler, ServerSocket serverSocket, boolean verboseLogging) + throws IOException { // TODO(bazel-team): reject all connections after the first eventHandler.handle(Event.progress("Waiting for debugger...")); Socket clientSocket = serverSocket.accept(); @@ -43,7 +44,8 @@ final class DebugServerTransport { serverSocket, clientSocket, clientSocket.getInputStream(), - clientSocket.getOutputStream()); + clientSocket.getOutputStream(), + verboseLogging); } private final EventHandler eventHandler; @@ -51,18 +53,21 @@ final class DebugServerTransport { private final Socket clientSocket; private final InputStream requestStream; private final OutputStream eventStream; + private final boolean verboseLogging; private DebugServerTransport( EventHandler eventHandler, ServerSocket serverSocket, Socket clientSocket, InputStream requestStream, - OutputStream eventStream) { + OutputStream eventStream, + boolean verboseLogging) { this.eventHandler = eventHandler; this.serverSocket = serverSocket; this.clientSocket = clientSocket; this.requestStream = requestStream; this.eventStream = eventStream; + this.verboseLogging = verboseLogging; } /** @@ -74,7 +79,9 @@ final class DebugServerTransport { synchronized (requestStream) { try { DebugRequest request = DebugRequest.parseDelimitedFrom(requestStream); - eventHandler.handle(Event.debug("Received debug client request:\n" + request)); + if (verboseLogging) { + eventHandler.handle(Event.debug("Received debug client request:\n" + request)); + } return request; } catch (IOException e) { handleParsingError(e); @@ -95,7 +102,9 @@ final class DebugServerTransport { /** Posts a debug event. */ void postEvent(DebugEvent event) { - eventHandler.handle(Event.debug("Sending debug event:\n" + event)); + if (verboseLogging) { + eventHandler.handle(Event.debug("Sending debug event:\n" + event)); + } synchronized (eventStream) { try { event.writeDelimitedTo(eventStream); diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java index 26f31793c2..6e605895ef 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java @@ -19,7 +19,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Throwables; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; -import com.google.devtools.build.lib.events.EventKind; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos; import com.google.devtools.build.lib.syntax.DebugServer; @@ -41,7 +40,7 @@ public final class SkylarkDebugServer implements DebugServer { * debug server socket and blocks waiting for an incoming connection. * * @param port the port on which the server should listen for connections - * @param verboseLogging if false, debug-level events will be suppressed + * @param verboseLogging if true, debug-level events will be logged * @throws IOException if an I/O error occurs while opening the socket or waiting for a connection */ public static SkylarkDebugServer createAndWaitForConnection( @@ -54,28 +53,16 @@ public final class SkylarkDebugServer implements DebugServer { * Initializes debugging support, setting up any debugging-specific overrides, then opens the * debug server socket and blocks waiting for an incoming connection. * - * @param verboseLogging if false, debug-level events will be suppressed + * @param verboseLogging if true, debug-level events will be logged * @throws IOException if an I/O error occurs while waiting for a connection */ @VisibleForTesting static SkylarkDebugServer createAndWaitForConnection( EventHandler eventHandler, ServerSocket serverSocket, boolean verboseLogging) throws IOException { - if (!verboseLogging) { - eventHandler = getHandlerSuppressingDebugEvents(eventHandler); - } DebugServerTransport transport = - DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket); - return new SkylarkDebugServer(eventHandler, transport); - } - - /** Wraps an event handler, suppressing debug-level events. */ - private static EventHandler getHandlerSuppressingDebugEvents(EventHandler handler) { - return event -> { - if (event.getKind() != EventKind.DEBUG) { - handler.handle(event); - } - }; + DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket, verboseLogging); + return new SkylarkDebugServer(eventHandler, transport, verboseLogging); } private final EventHandler eventHandler; @@ -84,10 +71,14 @@ public final class SkylarkDebugServer implements DebugServer { /** The server socket for the debug server. */ private final DebugServerTransport transport; - private SkylarkDebugServer(EventHandler eventHandler, DebugServerTransport transport) { + private final boolean verboseLogging; + + private SkylarkDebugServer( + EventHandler eventHandler, DebugServerTransport transport, boolean verboseLogging) { this.eventHandler = eventHandler; this.threadHandler = new ThreadHandler(); this.transport = transport; + this.verboseLogging = verboseLogging; listenForClientRequests(); } @@ -133,7 +124,9 @@ public final class SkylarkDebugServer implements DebugServer { @Override public void close() { try { - eventHandler.handle(Event.debug("Closing debug server")); + if (verboseLogging) { + eventHandler.handle(Event.debug("Closing debug server")); + } transport.close(); } catch (IOException e) { diff --git a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java index 2dcdf2543e..e5c119deaa 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java @@ -16,7 +16,6 @@ package com.google.devtools.build.lib.skylarkdebug.server; import static com.google.common.truth.Truth.assertThat; -import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.EventKind; import com.google.devtools.build.lib.events.util.EventCollectionApparatus; import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos.ContinueExecutionResponse; @@ -48,17 +47,6 @@ public class DebugServerTransportTest { private final EventCollectionApparatus events = new EventCollectionApparatus(EventKind.ALL_EVENTS); - /** - * The default fail-fast {@link EventHandler} fails on debug-level events, so we instead use a - * handler suppressing those events. - */ - private final EventHandler eventHandler = - event -> { - if (event.getKind() != EventKind.DEBUG) { - events.reporter().handle(event); - } - }; - /** A simple debug client for testing purposes. */ private static class MockDebugClient { @@ -100,7 +88,8 @@ public class DebugServerTransportTest { Future<DebugServerTransport> future = executor.submit( () -> - DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket)); + DebugServerTransport.createAndWaitForClient( + events.reporter(), serverSocket, false)); MockDebugClient client = new MockDebugClient(); client.connect(Duration.ofSeconds(10), serverSocket); @@ -123,7 +112,8 @@ public class DebugServerTransportTest { Future<DebugServerTransport> future = executor.submit( () -> - DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket)); + DebugServerTransport.createAndWaitForClient( + events.reporter(), serverSocket, false)); MockDebugClient client = new MockDebugClient(); client.connect(Duration.ofSeconds(10), serverSocket); |