aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java27
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java18
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java4
6 files changed, 54 insertions, 18 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java
index d4f74e4d6e..c8fbc7160c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerModule.java
@@ -33,7 +33,8 @@ public final class SkylarkDebuggerModule extends BlazeModule {
SkylarkDebuggerOptions buildOptions = env.getOptions().getOptions(SkylarkDebuggerOptions.class);
boolean enabled = buildOptions != null && buildOptions.debugSkylark;
if (enabled) {
- initializeDebugging(env.getReporter(), buildOptions.debugServerPort);
+ initializeDebugging(
+ env.getReporter(), buildOptions.debugServerPort, buildOptions.verboseLogs);
} else {
disableDebugging();
}
@@ -61,10 +62,10 @@ public final class SkylarkDebuggerModule extends BlazeModule {
disableDebugging();
}
- private static void initializeDebugging(Reporter reporter, int debugPort) {
+ private static void initializeDebugging(Reporter reporter, int debugPort, boolean verboseLogs) {
try {
SkylarkDebugServer server =
- SkylarkDebugServer.createAndWaitForConnection(reporter, debugPort);
+ SkylarkDebugServer.createAndWaitForConnection(reporter, debugPort, verboseLogs);
DebugServerUtils.initializeDebugServer(server);
} catch (IOException e) {
reporter.handle(Event.error("Error while setting up the debug server: " + e.getMessage()));
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java
index 19fbc23450..4adc962aaf 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java
@@ -41,4 +41,13 @@ public final class SkylarkDebuggerOptions extends OptionsBase {
metadataTags = {OptionMetadataTag.EXPERIMENTAL},
help = "The port on which the Skylark debug server will listen for connections.")
public int debugServerPort;
+
+ @Option(
+ name = "experimental_skylark_debug_verbose_logging",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.TERMINAL_OUTPUT},
+ metadataTags = {OptionMetadataTag.EXPERIMENTAL},
+ help = "Show verbose logs for the debugger.")
+ public boolean verboseLogs;
}
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 5f5020f29a..34b2f3abec 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
@@ -23,7 +23,6 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
@@ -47,8 +46,6 @@ final class DebugServerTransport {
clientSocket.getOutputStream());
}
- private static final Logger logger = Logger.getLogger(DebugServerTransport.class.getName());
-
private final EventHandler eventHandler;
private final ServerSocket serverSocket;
private final Socket clientSocket;
@@ -77,7 +74,7 @@ final class DebugServerTransport {
synchronized (requestStream) {
try {
DebugRequest request = DebugRequest.parseDelimitedFrom(requestStream);
- logger.fine("Received debug client request:\n" + request);
+ eventHandler.handle(Event.debug("Received debug client request:\n" + request));
return request;
} catch (IOException e) {
handleParsingError(e);
@@ -98,7 +95,7 @@ final class DebugServerTransport {
/** Posts a debug event. */
void postEvent(DebugEvent event) {
- logger.fine("Sending debug event:\n" + event);
+ 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 433f4ef4cc..26f31793c2 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,6 +19,7 @@ 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;
@@ -30,7 +31,6 @@ import java.io.IOException;
import java.net.ServerSocket;
import java.util.List;
import java.util.function.Function;
-import java.util.logging.Logger;
import javax.annotation.Nullable;
/** Manages the network socket and debugging state for threads running Skylark code. */
@@ -41,29 +41,42 @@ 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
* @throws IOException if an I/O error occurs while opening the socket or waiting for a connection
*/
- public static SkylarkDebugServer createAndWaitForConnection(EventHandler eventHandler, int port)
- throws IOException {
+ public static SkylarkDebugServer createAndWaitForConnection(
+ EventHandler eventHandler, int port, boolean verboseLogging) throws IOException {
ServerSocket serverSocket = new ServerSocket(port, /* backlog */ 1);
- return createAndWaitForConnection(eventHandler, serverSocket);
+ return createAndWaitForConnection(eventHandler, serverSocket, verboseLogging);
}
/**
* 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
* @throws IOException if an I/O error occurs while waiting for a connection
*/
@VisibleForTesting
static SkylarkDebugServer createAndWaitForConnection(
- EventHandler eventHandler, ServerSocket serverSocket) throws IOException {
+ EventHandler eventHandler, ServerSocket serverSocket, boolean verboseLogging)
+ throws IOException {
+ if (!verboseLogging) {
+ eventHandler = getHandlerSuppressingDebugEvents(eventHandler);
+ }
DebugServerTransport transport =
DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket);
return new SkylarkDebugServer(eventHandler, transport);
}
- private static final Logger logger = Logger.getLogger(SkylarkDebugServer.class.getName());
+ /** Wraps an event handler, suppressing debug-level events. */
+ private static EventHandler getHandlerSuppressingDebugEvents(EventHandler handler) {
+ return event -> {
+ if (event.getKind() != EventKind.DEBUG) {
+ handler.handle(event);
+ }
+ };
+ }
private final EventHandler eventHandler;
/** Handles all thread-related state. */
@@ -120,7 +133,7 @@ public final class SkylarkDebugServer implements DebugServer {
@Override
public void close() {
try {
- logger.fine("Closing debug server");
+ 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 89a0405cd4..2dcdf2543e 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,6 +16,7 @@ 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;
@@ -47,6 +48,17 @@ 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 {
@@ -87,7 +99,8 @@ public class DebugServerTransportTest {
ServerSocket serverSocket = new ServerSocket(0, 1, InetAddress.getByName(null));
Future<DebugServerTransport> future =
executor.submit(
- () -> DebugServerTransport.createAndWaitForClient(events.reporter(), serverSocket));
+ () ->
+ DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket));
MockDebugClient client = new MockDebugClient();
client.connect(Duration.ofSeconds(10), serverSocket);
@@ -109,7 +122,8 @@ public class DebugServerTransportTest {
ServerSocket serverSocket = new ServerSocket(0, 1, InetAddress.getByName(null));
Future<DebugServerTransport> future =
executor.submit(
- () -> DebugServerTransport.createAndWaitForClient(events.reporter(), serverSocket));
+ () ->
+ DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket));
MockDebugClient client = new MockDebugClient();
client.connect(Duration.ofSeconds(10), serverSocket);
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
index d5cfe9bc81..5a7c12273c 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
@@ -79,7 +79,9 @@ public class SkylarkDebugServerTest {
ServerSocket serverSocket = new ServerSocket(0, 1, InetAddress.getByName(null));
Future<SkylarkDebugServer> future =
executor.submit(
- () -> SkylarkDebugServer.createAndWaitForConnection(events.reporter(), serverSocket));
+ () ->
+ SkylarkDebugServer.createAndWaitForConnection(
+ events.reporter(), serverSocket, false));
client = new MockDebugClient();
client.connect(serverSocket, Duration.ofSeconds(10));