From de3e9d5c1feec29149bac6ac0e1d9f3c65e00332 Mon Sep 17 00:00:00 2001 From: Ulf Adams Date: Wed, 10 Feb 2016 12:07:44 +0000 Subject: Fix SkyframeLoadingPhaseRunner posting of EventBus events. The TargetParsingCompleteEvent was posting the post-expansion targets, and the LoadingPhaseCompleteEvent was missing the test-suite targets. -- MOS_MIGRATED_REVID=114312273 --- .../build/lib/pkgcache/LoadingPhaseRunnerTest.java | 77 +++++++++++++++------- 1 file changed, 52 insertions(+), 25 deletions(-) (limited to 'src/test') diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java index 1e0b234d89..65c10cb007 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java @@ -27,6 +27,7 @@ import com.google.common.base.Predicates; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; @@ -230,8 +231,8 @@ public class LoadingPhaseRunnerTest { tester.addFile("my_test/BUILD", "sh_test(name = 'my_test', srcs = ['test.cc'])"); assertNoErrors(tester.loadTests("-//my_test")); - assertThat(tester.filteredTargets).containsExactlyElementsIn(getTargets()); - assertThat(tester.testFilteredTargets).containsExactlyElementsIn(getTargets()); + assertThat(tester.getFilteredTargets()).containsExactlyElementsIn(getTargets()); + assertThat(tester.getTestFilteredTargets()).containsExactlyElementsIn(getTargets()); } @Test @@ -239,8 +240,8 @@ public class LoadingPhaseRunnerTest { tester.addFile("my_library/BUILD", "cc_library(name = 'my_library', srcs = ['test.cc'])"); assertNoErrors(tester.loadTests("-//my_library")); - assertThat(tester.filteredTargets).containsExactlyElementsIn(getTargets()); - assertThat(tester.testFilteredTargets).containsExactlyElementsIn(getTargets()); + assertThat(tester.getFilteredTargets()).containsExactlyElementsIn(getTargets()); + assertThat(tester.getTestFilteredTargets()).containsExactlyElementsIn(getTargets()); } private void writeBuildFilesForTestFiltering() throws Exception { @@ -258,8 +259,8 @@ public class LoadingPhaseRunnerTest { .containsExactlyElementsIn(getTargets("//tests:t1", "//tests:t2")); assertThat(loadingResult.getTestsToRun()) .containsExactlyElementsIn(getTargets("//tests:t1", "//tests:t2")); - assertThat(tester.filteredTargets).containsExactlyElementsIn(getTargets()); - assertThat(tester.testFilteredTargets).containsExactlyElementsIn(getTargets()); + assertThat(tester.getFilteredTargets()).containsExactlyElementsIn(getTargets()); + assertThat(tester.getTestFilteredTargets()).containsExactlyElementsIn(getTargets()); } @Test @@ -271,8 +272,8 @@ public class LoadingPhaseRunnerTest { .containsExactlyElementsIn(getTargets("//tests:t1", "//tests:t2")); assertThat(loadingResult.getTestsToRun()) .containsExactlyElementsIn(getTargets("//tests:t1", "//tests:t2")); - assertThat(tester.filteredTargets).containsExactlyElementsIn(getTargets()); - assertThat(tester.testFilteredTargets).containsExactlyElementsIn(getTargets()); + assertThat(tester.getFilteredTargets()).containsExactlyElementsIn(getTargets()); + assertThat(tester.getTestFilteredTargets()).containsExactlyElementsIn(getTargets()); } @Test @@ -283,8 +284,8 @@ public class LoadingPhaseRunnerTest { assertThat(loadingResult.getTargets()) .containsExactlyElementsIn(getTargets("//tests:t1", "//tests:t2")); assertThat(loadingResult.getTestsToRun()).containsExactlyElementsIn(getTargets("//tests:t1")); - assertThat(tester.filteredTargets).containsExactlyElementsIn(getTargets()); - assertThat(tester.testFilteredTargets).containsExactlyElementsIn(getTargets()); + assertThat(tester.getFilteredTargets()).containsExactlyElementsIn(getTargets()); + assertThat(tester.getTestFilteredTargets()).containsExactlyElementsIn(getTargets()); } @Test @@ -294,8 +295,8 @@ public class LoadingPhaseRunnerTest { LoadingResult loadingResult = assertNoErrors(tester.loadTests("//tests:all")); assertThat(loadingResult.getTargets()).containsExactlyElementsIn(getTargets("//tests:t1")); assertThat(loadingResult.getTestsToRun()).containsExactlyElementsIn(getTargets("//tests:t1")); - assertThat(tester.filteredTargets).containsExactlyElementsIn(getTargets()); - assertThat(tester.testFilteredTargets).containsExactlyElementsIn(getTargets("//tests:t2")); + assertThat(tester.getFilteredTargets()).containsExactlyElementsIn(getTargets()); + assertThat(tester.getTestFilteredTargets()).containsExactlyElementsIn(getTargets("//tests:t2")); } @Test @@ -307,8 +308,8 @@ public class LoadingPhaseRunnerTest { .containsExactlyElementsIn(getTargets("//tests:t1", "//tests:t3")); assertThat(loadingResult.getTestsToRun()) .containsExactlyElementsIn(getTargets("//tests:t1", "//tests:t3")); - assertThat(tester.filteredTargets).containsExactlyElementsIn(getTargets()); - assertThat(tester.testFilteredTargets).containsExactlyElementsIn(getTargets("//tests:t2")); + assertThat(tester.getFilteredTargets()).containsExactlyElementsIn(getTargets()); + assertThat(tester.getTestFilteredTargets()).containsExactlyElementsIn(getTargets("//tests:t2")); } @Test @@ -324,6 +325,10 @@ public class LoadingPhaseRunnerTest { assertThat(loadingResult.getPackageRoots().entrySet()) .contains(entryFor(PackageIdentifier.createInDefaultRepo("cc"), tester.getWorkspace())); } + assertThat(tester.getOriginalTargets()) + .containsExactlyElementsIn(getTargets("//cc:tests", "//cc:my_test")); + assertThat(tester.getTestSuiteTargets()) + .containsExactlyElementsIn(getTargets("//cc:tests")); } @Test @@ -384,8 +389,9 @@ public class LoadingPhaseRunnerTest { .containsExactlyElementsIn(getTargets("//foo:foo", "//foo:baz")); assertThat(loadingResult.getTestsToRun()) .containsExactlyElementsIn(getTargets("//foo:foo", "//foo:baz")); - assertThat(tester.filteredTargets).containsExactlyElementsIn(getTargets()); - assertThat(tester.testFilteredTargets).containsExactlyElementsIn(getTargets("//foo:foo_suite")); + assertThat(tester.getFilteredTargets()).containsExactlyElementsIn(getTargets()); + assertThat(tester.getTestFilteredTargets()) + .containsExactlyElementsIn(getTargets("//foo:foo_suite")); } /** Regression test for bug: "subtracting tests from test doesn't work" */ @@ -630,8 +636,8 @@ public class LoadingPhaseRunnerTest { private final StoredEventHandler storedErrors; private LoadingCallback loadingCallback; - private Set filteredTargets; - private Set testFilteredTargets; + private TargetParsingCompleteEvent targetParsingCompleteEvent; + private LoadingPhaseCompleteEvent loadingPhaseCompleteEvent; private MockToolsConfig mockToolsConfig; @@ -709,8 +715,8 @@ public class LoadingPhaseRunnerTest { result = loadingPhaseRunner.execute(storedErrors, eventBus, ImmutableList.copyOf(patterns), options, ImmutableListMultimap.of(), keepGoing, /*enableLoading=*/true, determineTests, loadingCallback); - this.filteredTargets = listener.filteredTargets; - this.testFilteredTargets = listener.testFilteredTargets; + this.targetParsingCompleteEvent = listener.targetParsingCompleteEvent; + this.loadingPhaseCompleteEvent = listener.loadingPhaseCompleteEvent; } catch (LoadingFailedException e) { System.err.println(storedErrors.getEvents()); throw e; @@ -780,6 +786,22 @@ public class LoadingPhaseRunnerTest { return skyframeExecutor.getPackageManager(); } + public ImmutableSet getFilteredTargets() { + return targetParsingCompleteEvent.getFilteredTargets(); + } + + public ImmutableSet getTestFilteredTargets() { + return targetParsingCompleteEvent.getTestFilteredTargets(); + } + + public ImmutableSet getOriginalTargets() { + return targetParsingCompleteEvent.getTargets(); + } + + public ImmutableSet getTestSuiteTargets() { + return loadingPhaseCompleteEvent.getFilteredTargets(); + } + private Iterable filteredEvents() { return Iterables.filter(storedErrors.getEvents(), new Predicate() { @Override @@ -808,12 +830,17 @@ public class LoadingPhaseRunnerTest { } public static class FilteredTargetListener { - private Set filteredTargets; - private Set testFilteredTargets; + private TargetParsingCompleteEvent targetParsingCompleteEvent; + private LoadingPhaseCompleteEvent loadingPhaseCompleteEvent; + + @Subscribe + public void targetParsingComplete(TargetParsingCompleteEvent event) { + this.targetParsingCompleteEvent = event; + } + @Subscribe - public void notifyFilteredTargets(TargetParsingCompleteEvent event) { - filteredTargets = event.getFilteredTargets(); - testFilteredTargets = event.getTestFilteredTargets(); + public void loadingPhaseComplete(LoadingPhaseCompleteEvent event) { + this.loadingPhaseCompleteEvent = event; } } } -- cgit v1.2.3