aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/remote/logging/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/remote/logging/LoggingInterceptor.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/remote/logging/ReadHandler.java45
-rw-r--r--src/main/java/com/google/devtools/build/lib/remote/logging/WriteHandler.java51
4 files changed, 103 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/remote/logging/BUILD b/src/main/java/com/google/devtools/build/lib/remote/logging/BUILD
index d2998ae152..dc1caa6266 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/logging/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/remote/logging/BUILD
@@ -16,6 +16,8 @@ java_library(
"//src/main/protobuf:remote_execution_log_java_proto",
"//third_party:guava",
"//third_party/grpc:grpc-jar",
+ "@googleapis//:google_bytestream_bytestream_java_grpc",
+ "@googleapis//:google_bytestream_bytestream_java_proto",
"@googleapis//:google_devtools_remoteexecution_v1test_remote_execution_java_grpc",
"@googleapis//:google_devtools_remoteexecution_v1test_remote_execution_java_proto",
"@googleapis//:google_longrunning_operations_java_proto",
diff --git a/src/main/java/com/google/devtools/build/lib/remote/logging/LoggingInterceptor.java b/src/main/java/com/google/devtools/build/lib/remote/logging/LoggingInterceptor.java
index fa657ba19a..a805eae83b 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/logging/LoggingInterceptor.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/logging/LoggingInterceptor.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.remote.logging;
+import com.google.bytestream.ByteStreamGrpc;
import com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.LogEntry;
import com.google.devtools.build.lib.remote.util.TracingMetadataUtils;
import com.google.devtools.build.lib.util.io.AsynchronousFileOutputStream;
@@ -59,6 +60,10 @@ public class LoggingInterceptor implements ClientInterceptor {
return new GetActionResultHandler();
} else if (method == ContentAddressableStorageGrpc.getFindMissingBlobsMethod()) {
return new FindMissingBlobsHandler();
+ } else if (method == ByteStreamGrpc.getReadMethod()) {
+ return new ReadHandler();
+ } else if (method == ByteStreamGrpc.getWriteMethod()) {
+ return new WriteHandler();
}
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/remote/logging/ReadHandler.java b/src/main/java/com/google/devtools/build/lib/remote/logging/ReadHandler.java
new file mode 100644
index 0000000000..8c43f40e5c
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/remote/logging/ReadHandler.java
@@ -0,0 +1,45 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.remote.logging;
+
+import com.google.bytestream.ByteStreamProto.ReadRequest;
+import com.google.bytestream.ByteStreamProto.ReadResponse;
+import com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.ReadDetails;
+import com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.RpcCallDetails;
+
+/** LoggingHandler for {@link google.bytestream.Read} gRPC call. */
+public class ReadHandler implements LoggingHandler<ReadRequest, ReadResponse> {
+ private final ReadDetails.Builder builder = ReadDetails.newBuilder();
+ private long numReads = 0;
+ private long bytesRead = 0;
+
+ @Override
+ public void handleReq(ReadRequest message) {
+ builder.setRequest(message);
+ }
+
+ @Override
+ public void handleResp(ReadResponse message) {
+ numReads++;
+ bytesRead += message.getData().size();
+ }
+
+ @Override
+ public RpcCallDetails getDetails() {
+ builder.setNumReads(numReads);
+ builder.setBytesRead(bytesRead);
+ return RpcCallDetails.newBuilder().setRead(builder).build();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/remote/logging/WriteHandler.java b/src/main/java/com/google/devtools/build/lib/remote/logging/WriteHandler.java
new file mode 100644
index 0000000000..67e9e378e2
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/remote/logging/WriteHandler.java
@@ -0,0 +1,51 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.remote.logging;
+
+import com.google.bytestream.ByteStreamProto.WriteRequest;
+import com.google.bytestream.ByteStreamProto.WriteResponse;
+import com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.RpcCallDetails;
+import com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.WriteDetails;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/** LoggingHandler for {@link google.bytestream.Write} gRPC call. */
+public class WriteHandler implements LoggingHandler<WriteRequest, WriteResponse> {
+ private final WriteDetails.Builder builder = WriteDetails.newBuilder();
+ private final Set<String> resources = new LinkedHashSet<>();
+ private long numWrites = 0;
+ private long bytesSent = 0;
+
+ @Override
+ public void handleReq(WriteRequest message) {
+ resources.add(message.getResourceName());
+
+ numWrites++;
+ bytesSent += message.getData().size();
+ }
+
+ @Override
+ public void handleResp(WriteResponse message) {
+ builder.setResponse(message);
+ }
+
+ @Override
+ public RpcCallDetails getDetails() {
+ builder.addAllResourceNames(resources);
+ builder.setNumWrites(numWrites);
+ builder.setBytesSent(bytesSent);
+ return RpcCallDetails.newBuilder().setWrite(builder).build();
+ }
+}