diff options
author | shahan <shahan@google.com> | 2018-06-18 08:14:01 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-18 08:15:26 -0700 |
commit | e35e8cfabd33e2e35b88d3693083350cf3c9d006 (patch) | |
tree | 2e05bb4f65801724b43fb6908cbdcb71438012f2 /src/test/java/com/google/devtools/build/lib | |
parent | 200837c2368d6b3383eb9dbcd25e293f818637bd (diff) |
Refactoring: uses OutputService for ActionFileSystem injection
Moves more Action-oriented from skyframe package, which has become very unwieldy, to action package. This is needed to avoid circular dependencies caused when build-base is needed for skyframe.
PiperOrigin-RevId: 200996982
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
5 files changed, 5 insertions, 140 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionFileSystemTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionFileSystemTest.java deleted file mode 100644 index f155883ad1..0000000000 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionFileSystemTest.java +++ /dev/null @@ -1,138 +0,0 @@ -// 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.skyframe; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.common.collect.ImmutableList; -import com.google.common.hash.HashCode; -import com.google.common.hash.Hashing; -import com.google.devtools.build.lib.actions.ActionInput; -import com.google.devtools.build.lib.actions.ActionInputHelper; -import com.google.devtools.build.lib.actions.ActionInputMap; -import com.google.devtools.build.lib.vfs.FileSystem; -import com.google.devtools.build.lib.vfs.FileSystemUtils; -import com.google.devtools.build.lib.vfs.Path; -import com.google.devtools.build.lib.vfs.PathFragment; -import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem; -import java.io.OutputStream; -import java.io.PrintStream; -import java.nio.charset.StandardCharsets; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -/** - * Tests for {@link ActionFileSystem}. - * - * It would be nice to derive from - * {@link com.google.devtools.build.lib.vfs.FileSystemTest;FileSystemTest} if/when ActionFileSystem - * becomes sufficiently general. - */ -@RunWith(JUnit4.class) -public class ActionFileSystemTest { - private ActionFileSystem actionFS; - private PathFragment execRootFragment; - private Path outputPath; - - @Before - public void freshFS() { - FileSystem delegateFS = new InMemoryFileSystem(); - execRootFragment = PathFragment.create("/path/to/execroot"); - String relativeOutputPath = "goog-out"; - actionFS = new ActionFileSystem(delegateFS, execRootFragment, relativeOutputPath, - ImmutableList.of(), new ActionInputMap(0), ImmutableList.of(), ImmutableList.of()); - outputPath = actionFS.getPath(execRootFragment.getRelative(relativeOutputPath)); - } - - @Test - public void testFileWrite() throws Exception { - String testData = "abc19"; - - Path file = outputPath.getRelative("foo/bar"); - FileSystemUtils.writeContentAsLatin1(file, testData); - assertThat(file.getFileSize()).isEqualTo(testData.length()); - assertThat(file.exists()).isTrue(); - assertThat(file.stat().isFile()).isTrue(); - assertThat(file.stat().isDirectory()).isFalse(); - - assertThat(file.delete()).isTrue(); - assertThat(file.exists()).isFalse(); - assertThat(file.delete()).isFalse(); - } - - @Test - public void testInjectUndeclaredOutput() throws Exception { - String testData = "abc19"; - byte[] fileContent = testData.getBytes(); - HashCode digest = Hashing.md5().hashBytes(fileContent); - Path file = outputPath.getRelative("foo/bar"); - assertThat(file.exists()).isFalse(); - actionFS.onInsert(asActionInput(file), digest.asBytes(), fileContent.length, 83); - - assertThat(file.exists()).isTrue(); - assertThat(file.stat().getSize()).isEqualTo(fileContent.length); - assertThat(file.getDigest()).isEqualTo(digest.asBytes()); - assertThat(file.getFastDigest()).isEqualTo(digest.asBytes()); - - assertThat(file.delete()).isTrue(); - assertThat(file.exists()).isFalse(); - assertThat(file.delete()).isFalse(); - } - - private ActionInput asActionInput(Path path) { - return ActionInputHelper.fromPath(path.asFragment().relativeTo(execRootFragment)); - } - - @Test - public void testAppendLocalFile() throws Exception { - String testData = "abc"; - - Path file = outputPath.getRelative("foo/bar"); - FileSystemUtils.writeContentAsLatin1(file, testData); - assertThat(new String(FileSystemUtils.readContentAsLatin1(file))).isEqualTo(testData); - - try (OutputStream out = file.getOutputStream(true)) { - PrintStream printStream = new PrintStream(out); - printStream.append("defg"); - printStream.flush(); - } - assertThat(new String(FileSystemUtils.readContentAsLatin1(file))).isEqualTo("abcdefg"); - - // Now make sure we can still overwrite the file in non-append mode. - FileSystemUtils.writeContentAsLatin1(file, "cheesy"); - assertThat(new String(FileSystemUtils.readContentAsLatin1(file))).isEqualTo("cheesy"); - } - - @Test - public void testFlushedButNotClosedFileWrite() throws Exception { - String testData = "abc19"; - - Path file = outputPath.getRelative("foo/bar"); - try (OutputStream out = file.getOutputStream()) { - assertThat(file.exists()).isFalse(); - - out.write(testData.getBytes(StandardCharsets.ISO_8859_1)); - assertThat(file.exists()).isFalse(); - - out.flush(); - assertThat(file.getFileSize()).isEqualTo(testData.length()); - assertThat(file.exists()).isTrue(); - assertThat(file.stat().isFile()).isTrue(); - assertThat(file.stat().isDirectory()).isFalse(); - } - assertThat(file.getFileSize()).isEqualTo(testData.length()); - } -} diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java index da66c930e5..925056e593 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java @@ -33,6 +33,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactSkyKey; import com.google.devtools.build.lib.actions.BasicActionLookupValue; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileValue; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java index ecce7ea5a0..fbb64fee80 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java @@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactSkyKey; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileStateValue; import com.google.devtools.build.lib.actions.FileValue; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java index 2b87fb9232..b4075b35f1 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java @@ -41,6 +41,7 @@ import com.google.devtools.build.lib.actions.Actions; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactSkyKey; import com.google.devtools.build.lib.actions.BasicActionLookupValue; import com.google.devtools.build.lib.actions.BuildFailedException; import com.google.devtools.build.lib.actions.Executor; @@ -192,8 +193,7 @@ public abstract class TimestampBuilderTestCase extends FoundationTestCase { new SkyframeActionExecutor( actionKeyContext, new AtomicReference<>(statusReporter), - /*sourceRootSupplier=*/ () -> ImmutableList.of(), - /*usesActionFileSystem=*/ () -> false); + /*sourceRootSupplier=*/ () -> ImmutableList.of()); Path actionOutputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/action_out/"); skyframeActionExecutor.setActionLogBufferPathGenerator( diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java index b27a520002..97816e33bd 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java @@ -33,6 +33,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactSkyKey; import com.google.devtools.build.lib.actions.BasicActionLookupValue; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileValue; |