diff options
4 files changed, 14 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java index 04977ed157..9808264655 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java +++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java @@ -126,6 +126,7 @@ final class RemoteSpawnCache implements SpawnCache { new SpawnResult.Builder() .setStatus(Status.SUCCESS) .setExitCode(result.getExitCode()) + .setCacheHit(true) .build(); return SpawnCache.success(spawnResult); } diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java index f8ad087902..91b59186d8 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java +++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java @@ -156,7 +156,9 @@ class RemoteSpawnRunner implements SpawnRunner { + actionKey.getDigest()); } try { - return downloadRemoteResults(cachedResult, policy.getFileOutErr()); + return downloadRemoteResults(cachedResult, policy.getFileOutErr()) + .setCacheHit(true) + .build(); } catch (CacheNotFoundException e) { // No cache hit, so we fall through to local or remote execution. // We set acceptCachedResult to false in order to force the action re-execution. @@ -193,7 +195,7 @@ class RemoteSpawnRunner implements SpawnRunner { } try { - return downloadRemoteResults(result, policy.getFileOutErr()); + return downloadRemoteResults(result, policy.getFileOutErr()).build(); } catch (IOException e) { return execLocallyOrFail(spawn, policy, inputMap, actionKey, uploadLocalResults, e); } @@ -202,14 +204,13 @@ class RemoteSpawnRunner implements SpawnRunner { } } - private SpawnResult downloadRemoteResults(ActionResult result, FileOutErr outErr) + private SpawnResult.Builder downloadRemoteResults(ActionResult result, FileOutErr outErr) throws ExecException, IOException, InterruptedException { remoteCache.download(result, execRoot, outErr); int exitCode = result.getExitCode(); return new SpawnResult.Builder() .setStatus(exitCode == 0 ? Status.SUCCESS : Status.NON_ZERO_EXIT) - .setExitCode(exitCode) - .build(); + .setExitCode(exitCode); } private SpawnResult execLocallyOrFail( diff --git a/src/test/java/com/google/devtools/build/lib/remote/GrpcRemoteExecutionClientTest.java b/src/test/java/com/google/devtools/build/lib/remote/GrpcRemoteExecutionClientTest.java index 25229f6d19..be7a4e5bda 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/GrpcRemoteExecutionClientTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/GrpcRemoteExecutionClientTest.java @@ -276,6 +276,7 @@ public class GrpcRemoteExecutionClientTest { SpawnResult result = client.exec(simpleSpawn, simplePolicy); assertThat(result.setupSuccess()).isTrue(); + assertThat(result.isCacheHit()).isTrue(); assertThat(result.exitCode()).isEqualTo(0); assertThat(outErr.hasRecordedOutput()).isFalse(); assertThat(outErr.hasRecordedStderr()).isFalse(); @@ -304,6 +305,7 @@ public class GrpcRemoteExecutionClientTest { SpawnResult result = client.exec(simpleSpawn, simplePolicy); assertThat(result.setupSuccess()).isTrue(); assertThat(result.exitCode()).isEqualTo(0); + assertThat(result.isCacheHit()).isTrue(); assertThat(outErr.outAsLatin1()).isEqualTo("stdout"); assertThat(outErr.errAsLatin1()).isEqualTo("stderr"); } @@ -327,6 +329,7 @@ public class GrpcRemoteExecutionClientTest { SpawnResult result = client.exec(simpleSpawn, simplePolicy); assertThat(result.setupSuccess()).isTrue(); assertThat(result.exitCode()).isEqualTo(0); + assertThat(result.isCacheHit()).isTrue(); assertThat(outErr.outAsLatin1()).isEqualTo("stdout"); assertThat(outErr.errAsLatin1()).isEqualTo("stderr"); } @@ -482,6 +485,7 @@ public class GrpcRemoteExecutionClientTest { SpawnResult result = client.exec(simpleSpawn, simplePolicy); assertThat(result.setupSuccess()).isTrue(); assertThat(result.exitCode()).isEqualTo(0); + assertThat(result.isCacheHit()).isFalse(); assertThat(outErr.outAsLatin1()).isEqualTo("stdout"); assertThat(outErr.errAsLatin1()).isEqualTo("stderr"); } @@ -679,6 +683,7 @@ public class GrpcRemoteExecutionClientTest { SpawnResult result = client.exec(simpleSpawn, simplePolicy); assertThat(result.setupSuccess()).isTrue(); assertThat(result.exitCode()).isEqualTo(0); + assertThat(result.isCacheHit()).isFalse(); assertThat(outErr.outAsLatin1()).isEqualTo("stdout"); assertThat(outErr.errAsLatin1()).isEqualTo("stderr"); Mockito.verify(mockExecutionImpl, Mockito.times(4)) @@ -933,6 +938,7 @@ public class GrpcRemoteExecutionClientTest { SpawnResult result = client.exec(simpleSpawn, simplePolicy); assertThat(result.setupSuccess()).isTrue(); assertThat(result.exitCode()).isEqualTo(0); + assertThat(result.isCacheHit()).isFalse(); assertThat(outErr.outAsLatin1()).isEqualTo("stdout"); } } diff --git a/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnCacheTest.java b/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnCacheTest.java index 3e8bb83f4b..4ed3dafb69 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnCacheTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnCacheTest.java @@ -236,6 +236,7 @@ public class RemoteSpawnCacheTest { any(Boolean.class)); assertThat(result.setupSuccess()).isTrue(); assertThat(result.exitCode()).isEqualTo(0); + assertThat(result.isCacheHit()).isTrue(); // We expect the CachedLocalSpawnRunner to _not_ write to outErr at all. assertThat(outErr.hasRecordedOutput()).isFalse(); assertThat(outErr.hasRecordedStderr()).isFalse(); |