diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
12 files changed, 68 insertions, 111 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java index 53009de1e9..8f9e44311b 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java @@ -221,13 +221,11 @@ public class BuildConfigurationTest extends ConfigurationTestCase { @Override public Fragment create(ConfigurationEnvironment env, BuildOptions buildOptions) - throws InvalidConfigurationException { + throws InvalidConfigurationException, InterruptedException { for (Class<? extends Fragment> fragmentType : dependsOn) { env.getFragment(buildOptions, fragmentType); } - return new Fragment() { - - }; + return new Fragment() {}; } }; } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java index eca845975c..58eab302a4 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ActionTester.java @@ -31,14 +31,15 @@ public class ActionTester { /** * Returns a new action instance. The parameter {@code i} is used to vary the parameters used to - * create the action. Implementations should do something like this: - * <code><pre> + * create the action. Implementations should do something like this: <code> + * <pre> * return new MyAction(owner, inputs, outputs, configuration, * (i & 1) == 0 ? a1 : a2, * (i & 2) == 0 ? b1 : b2, * (i & 4) == 0 ? c1 : c2); * (i & 16) == 0 ? d1 : d2); - * </pre></code> + * </pre> + * </code> * * <p>The wrap-around (in this case at 32) is intentional and is checked for by the testing * method. @@ -50,7 +51,7 @@ public class ActionTester { * <p>Furthermore, when called with identical parameters, this method should return different * instances (i.e. according to {@code ==}), but they should have the same key. */ - Action generate(int i); + Action generate(int i) throws InterruptedException; } /** diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java index 304d964fdf..d046a234d0 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java @@ -52,7 +52,6 @@ import com.google.devtools.build.lib.testutil.TestConstants; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.SkyFunction; - import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -165,18 +164,19 @@ public final class AnalysisTestUtil { } @Override - public Artifact getStableWorkspaceStatusArtifact() { + public Artifact getStableWorkspaceStatusArtifact() throws InterruptedException { return original.getStableWorkspaceStatusArtifact(); } @Override - public Artifact getVolatileWorkspaceStatusArtifact() { + public Artifact getVolatileWorkspaceStatusArtifact() throws InterruptedException { return original.getVolatileWorkspaceStatusArtifact(); } @Override - public ImmutableList<Artifact> getBuildInfo(RuleContext ruleContext, BuildInfoKey key, - BuildConfiguration config) { + public ImmutableList<Artifact> getBuildInfo( + RuleContext ruleContext, BuildInfoKey key, BuildConfiguration config) + throws InterruptedException { return original.getBuildInfo(ruleContext, key, config); } diff --git a/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java b/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java index 8f6d389b98..7be04c4547 100644 --- a/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java +++ b/src/test/java/com/google/devtools/build/lib/concurrent/AbstractQueueVisitorTest.java @@ -26,21 +26,18 @@ import com.google.common.util.concurrent.Uninterruptibles; import com.google.devtools.build.lib.concurrent.ErrorClassifier.ErrorClassification; import com.google.devtools.build.lib.testutil.TestThread; import com.google.devtools.build.lib.testutil.TestUtils; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; /** * Tests for AbstractQueueVisitor. @@ -350,20 +347,8 @@ public class AbstractQueueVisitorTest { ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 3, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()); - final AtomicBoolean throwableSeen = new AtomicBoolean(false); - ErrorHandler errorHandler = new ErrorHandler() { - @Override - public void handle(Throwable t, ErrorClassification classification) { - if (t == THROWABLE) { - assertThat(classification).isEqualTo(ErrorClassification.CRITICAL); - throwableSeen.compareAndSet(false, true); - } else { - fail(); - } - } - }; - final AbstractQueueVisitor visitor = createQueueVisitorWithConstantErrorClassification( - executor, ErrorClassification.CRITICAL, errorHandler); + final AbstractQueueVisitor visitor = + createQueueVisitorWithConstantErrorClassification(executor, ErrorClassification.CRITICAL); final CountDownLatch latch1 = new CountDownLatch(1); final AtomicBoolean wasInterrupted = new AtomicBoolean(false); @@ -386,6 +371,7 @@ public class AbstractQueueVisitorTest { visitor.execute(r1); latch1.await(); visitor.execute(throwingRunnable()); + CountDownLatch exnLatch = visitor.getExceptionLatchForTestingOnly(); try { visitor.awaitQuiescence(/*interruptWorkers=*/ true); @@ -396,7 +382,7 @@ public class AbstractQueueVisitorTest { assertTrue(wasInterrupted.get()); assertTrue(executor.isShutdown()); - assertTrue(throwableSeen.get()); + assertTrue(exnLatch.await(0, TimeUnit.MILLISECONDS)); } @Test @@ -404,20 +390,9 @@ public class AbstractQueueVisitorTest { ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 2, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()); final Error error = new Error("bad!"); - final AtomicBoolean criticalErrorSeen = new AtomicBoolean(false); - ErrorHandler errorHandler = new ErrorHandler() { - @Override - public void handle(Throwable t, ErrorClassification classification) { - if (t == error) { - assertThat(classification).isEqualTo(ErrorClassification.AS_CRITICAL_AS_POSSIBLE); - criticalErrorSeen.compareAndSet(false, true); - } else { - fail(); - } - } - }; - AbstractQueueVisitor visitor = createQueueVisitorWithConstantErrorClassification( - executor, ErrorClassification.NOT_CRITICAL, errorHandler); + AbstractQueueVisitor visitor = + createQueueVisitorWithConstantErrorClassification( + executor, ErrorClassification.NOT_CRITICAL); final CountDownLatch latch = new CountDownLatch(1); final AtomicBoolean sleepFinished = new AtomicBoolean(false); final AtomicBoolean sleepInterrupted = new AtomicBoolean(false); @@ -444,6 +419,7 @@ public class AbstractQueueVisitorTest { } } }; + CountDownLatch exnLatch = visitor.getExceptionLatchForTestingOnly(); visitor.execute(errorRunnable); visitor.execute(sleepRunnable); Error thrownError = null; @@ -457,7 +433,7 @@ public class AbstractQueueVisitorTest { assertTrue(sleepInterrupted.get()); assertFalse(sleepFinished.get()); assertEquals(error, thrownError); - assertTrue(criticalErrorSeen.get()); + assertTrue(exnLatch.await(0, TimeUnit.MILLISECONDS)); } private static class ClassifiedException extends RuntimeException { @@ -472,7 +448,6 @@ public class AbstractQueueVisitorTest { public void mostSevereErrorPropagated() throws Exception { ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 2, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()); - final Set<Throwable> seenErrors = Sets.newConcurrentHashSet(); final ClassifiedException criticalException = new ClassifiedException(ErrorClassification.CRITICAL); final ClassifiedException criticalAndLogException = @@ -485,21 +460,13 @@ public class AbstractQueueVisitorTest { : ErrorClassification.NOT_CRITICAL; } }; - ErrorHandler errorHandler = new ErrorHandler() { - @Override - public void handle(Throwable t, ErrorClassification classification) { - assertThat(classification).isEqualTo(errorClassifier.classify(t)); - seenErrors.add(t); - } - }; AbstractQueueVisitor visitor = new AbstractQueueVisitor( - /*concurrent=*/ true, - executor, - /*shutdownOnCompletion=*/ true, - /*failFastOnException=*/ false, - errorClassifier, - errorHandler); + /*concurrent=*/ true, + executor, + /*shutdownOnCompletion=*/ true, + /*failFastOnException=*/ false, + errorClassifier); final CountDownLatch exnLatch = visitor.getExceptionLatchForTestingOnly(); Runnable criticalExceptionRunnable = new Runnable() { @Override @@ -532,7 +499,6 @@ public class AbstractQueueVisitorTest { exn = e; } assertEquals(criticalAndLogException, exn); - assertThat(seenErrors).containsExactly(criticalException, criticalAndLogException); } private static Runnable throwingRunnable() { @@ -636,8 +602,7 @@ public class AbstractQueueVisitorTest { } private static AbstractQueueVisitor createQueueVisitorWithConstantErrorClassification( - ThreadPoolExecutor executor, final ErrorClassification classification, - ErrorHandler errorHandler) { + ThreadPoolExecutor executor, final ErrorClassification classification) { return new AbstractQueueVisitor( /*concurrent=*/ true, executor, @@ -648,7 +613,6 @@ public class AbstractQueueVisitorTest { protected ErrorClassification classifyException(Exception e) { return classification; } - }, - errorHandler); + }); } } diff --git a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java index ef81f436ed..84a6a29c31 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTest.java @@ -28,14 +28,12 @@ import com.google.devtools.build.lib.syntax.ParserInputSource; import com.google.devtools.build.lib.testutil.Scratch; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; import com.google.devtools.build.lib.vfs.Path; - +import java.io.IOException; +import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import java.io.IOException; -import java.util.List; - /** * Tests for WorkspaceFactory. */ @@ -137,7 +135,7 @@ public class WorkspaceFactoryTest { this.exception = exception; } - public Package getPackage() { + public Package getPackage() throws InterruptedException { return builder.build(); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java index d16068eee6..b2bd91a8b8 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java @@ -158,10 +158,10 @@ public class CppLinkActionTest extends BuildViewTestCase { new ActionCombinationFactory() { @Override - public Action generate(int i) { + public Action generate(int i) throws InterruptedException { CppLinkActionBuilder builder = - new CppLinkActionBuilder(ruleContext, (i & 2) == 0 - ? dynamicOutputFile : staticOutputFile) { + new CppLinkActionBuilder( + ruleContext, (i & 2) == 0 ? dynamicOutputFile : staticOutputFile) { @Override protected Artifact getInterfaceSoBuilder() { return interfaceSoBuilder; @@ -209,10 +209,10 @@ public class CppLinkActionTest extends BuildViewTestCase { new ActionCombinationFactory() { @Override - public Action generate(int i) { + public Action generate(int i) throws InterruptedException { CppLinkActionBuilder builder = - new CppLinkActionBuilder(ruleContext, (i & 2) == 0 - ? staticOutputFile : dynamicOutputFile) { + new CppLinkActionBuilder( + ruleContext, (i & 2) == 0 ? staticOutputFile : dynamicOutputFile) { @Override protected Artifact getInterfaceSoBuilder() { return interfaceSoBuilder; @@ -372,7 +372,8 @@ public class CppLinkActionTest extends BuildViewTestCase { } } - private void assertError(String expectedSubstring, CppLinkActionBuilder builder) { + private static void assertError(String expectedSubstring, CppLinkActionBuilder builder) + throws InterruptedException { try { builder.build(); fail(); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionTest.java index a21c6f5826..869423e55b 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsFunctionTest.java @@ -30,13 +30,11 @@ import com.google.devtools.build.skyframe.EvaluationResult; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import com.google.devtools.build.skyframe.WalkableGraph; - +import java.io.IOException; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import java.io.IOException; - /** Tests for {@link com.google.devtools.build.lib.skyframe.PrepareDepsOfPatternsFunction}. */ @RunWith(JUnit4.class) public class PrepareDepsOfPatternsFunctionTest extends BuildViewTestCase { @@ -250,16 +248,18 @@ public class PrepareDepsOfPatternsFunctionTest extends BuildViewTestCase { scratch.file("bar/BUILD"); } - private void assertValidValue(WalkableGraph graph, SkyKey key) { + private static void assertValidValue(WalkableGraph graph, SkyKey key) + throws InterruptedException { assertValidValue(graph, key, /*expectTransitiveException=*/ false); } /** - * A node in the walkable graph may have both a value and an exception. This happens when one - * of a node's transitive dependencies throws an exception, but its parent recovers from it. + * A node in the walkable graph may have both a value and an exception. This happens when one of a + * node's transitive dependencies throws an exception, but its parent recovers from it. */ - private void assertValidValue( - WalkableGraph graph, SkyKey key, boolean expectTransitiveException) { + private static void assertValidValue( + WalkableGraph graph, SkyKey key, boolean expectTransitiveException) + throws InterruptedException { assertTrue(graph.exists(key)); assertNotNull(graph.getValue(key)); if (expectTransitiveException) { @@ -269,7 +269,8 @@ public class PrepareDepsOfPatternsFunctionTest extends BuildViewTestCase { } } - private Exception assertException(WalkableGraph graph, SkyKey key) { + private static Exception assertException(WalkableGraph graph, SkyKey key) + throws InterruptedException { assertTrue(graph.exists(key)); assertNull(graph.getValue(key)); Exception exception = graph.getException(key); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java index de989417da..7f08e04d95 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java @@ -248,7 +248,8 @@ public class SkyframeAwareActionTest extends TimestampBuilderTestCase { } @Override - public void establishSkyframeDependencies(Environment env) throws ExceptionBase { + public void establishSkyframeDependencies(Environment env) + throws ExceptionBase, InterruptedException { // Establish some Skyframe dependency. A real action would then use this to compute and // cache data for the execute(...) method. env.getValue(actionDepKey); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTestCase.java index 25ddfc3b3c..80650fdf84 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeLabelVisitorTestCase.java @@ -48,9 +48,6 @@ import com.google.devtools.build.skyframe.DelegatingWalkableGraph; import com.google.devtools.build.skyframe.InMemoryMemoizingEvaluator; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.WalkableGraph; - -import org.junit.Before; - import java.io.IOException; import java.util.ArrayList; import java.util.Collection; @@ -58,8 +55,8 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; - import javax.annotation.Nullable; +import org.junit.Before; abstract public class SkyframeLabelVisitorTestCase extends PackageLoadingTestCase { // Convenience constants, so test args are readable vs true/false @@ -179,7 +176,8 @@ abstract public class SkyframeLabelVisitorTestCase extends PackageLoadingTestCas * loaded targets. */ public static Set<Label> getVisitedLabels( - Iterable<Label> startingLabels, SkyframeExecutor skyframeExecutor) { + Iterable<Label> startingLabels, SkyframeExecutor skyframeExecutor) + throws InterruptedException { final WalkableGraph graph = new DelegatingWalkableGraph( ((InMemoryMemoizingEvaluator) skyframeExecutor.getEvaluatorForTesting()) diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunctionTest.java index 4d61274456..832cb1c5c7 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunctionTest.java @@ -27,7 +27,8 @@ import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; - +import java.io.IOException; +import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -35,9 +36,6 @@ import org.junit.runners.JUnit4; import org.mockito.Matchers; import org.mockito.Mockito; -import java.io.IOException; -import java.util.List; - /** * Test for WorkspaceASTFunction. */ @@ -65,7 +63,7 @@ public class WorkspaceASTFunctionTest extends BuildViewTestCase { workspacePath.getParentDirectory(), new PathFragment(workspacePath.getBaseName())); } - private SkyFunction.Environment getEnv() { + private SkyFunction.Environment getEnv() throws InterruptedException { SkyFunction.Environment env = Mockito.mock(SkyFunction.Environment.class); Mockito.when(env.getValue(Matchers.argThat(new SkyKeyMatchers(SkyFunctions.FILE)))) .thenReturn(fakeWorkspaceFileValue); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java index 612debd861..6a5955721a 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunctionTest.java @@ -36,7 +36,7 @@ import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - +import java.io.IOException; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.junit.Before; @@ -48,8 +48,6 @@ import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; -import java.io.IOException; - /** * Test for {@link WorkspaceFileFunction}. */ @@ -148,7 +146,7 @@ public class WorkspaceFileFunctionTest extends BuildViewTestCase { public void describeTo(Description description) {} } - private SkyFunction.Environment getEnv() { + private SkyFunction.Environment getEnv() throws InterruptedException { SkyFunction.Environment env = Mockito.mock(SkyFunction.Environment.class); Mockito.when(env.getValue(Matchers.argThat(new SkyKeyMatchers(SkyFunctions.FILE)))) .thenReturn(fakeWorkspaceFileValue); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java b/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java index 34218e67c8..34fb706b09 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java @@ -34,10 +34,8 @@ import com.google.devtools.build.skyframe.EvaluationResult; import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.Collection; import java.util.List; - import javax.annotation.Nullable; /** @@ -57,11 +55,11 @@ public class SkyframeExecutorTestUtils { } /** - * Returns an existing error info, or {@code null} if the given key is not currently in the - * graph. + * Returns an existing error info, or {@code null} if the given key is not currently in the graph. */ @Nullable - public static ErrorInfo getExistingError(SkyframeExecutor skyframeExecutor, SkyKey key) { + public static ErrorInfo getExistingError(SkyframeExecutor skyframeExecutor, SkyKey key) + throws InterruptedException { return skyframeExecutor.getEvaluatorForTesting().getExistingErrorForTesting(key); } @@ -165,10 +163,11 @@ public class SkyframeExecutorTestUtils { * Returns the error info for an existing target value, or {@code null} if there is not an * appropriate target value key in the graph. * - * This helper is provided so legacy tests don't need to know about details of skyframe keys. + * <p>This helper is provided so legacy tests don't need to know about details of skyframe keys. */ @Nullable - public static ErrorInfo getExistingFailedTarget(SkyframeExecutor skyframeExecutor, Label label) { + public static ErrorInfo getExistingFailedTarget(SkyframeExecutor skyframeExecutor, Label label) + throws InterruptedException { SkyKey key = TargetMarkerValue.key(label); return getExistingError(skyframeExecutor, key); } |