From 1d899604614c63a79a22c67b4cf2cb6583f2f463 Mon Sep 17 00:00:00 2001 From: Janak Ramakrishnan Date: Thu, 28 Apr 2016 03:48:55 +0000 Subject: Precompute defaults package content to save ~milliseconds every time BlazeRuntime#getDefaultsPackageContent is called. Thanks to nharmata for the suggestion. -- MOS_MIGRATED_REVID=120984951 --- .../BlazeCommandDispatcherRcoptionsTest.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src/test/java') diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java index 1c757a3021..ad2d864a33 100644 --- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java +++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java @@ -17,13 +17,20 @@ import static org.junit.Assert.assertEquals; import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.ConfigurationFactory; +import com.google.devtools.build.lib.analysis.config.FragmentOptions; +import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.runtime.BlazeCommandDispatcher.LockingMode; import com.google.devtools.build.lib.runtime.BlazeCommandDispatcher.ShutdownBlazeServerException; +import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass; import com.google.devtools.build.lib.testutil.Scratch; import com.google.devtools.build.lib.util.ExitCode; import com.google.devtools.build.lib.util.io.RecordingOutErr; @@ -39,6 +46,8 @@ import org.junit.runners.JUnit4; import org.mockito.Mockito; import java.util.List; +import java.util.Map; +import java.util.Set; /** * Tests the handling of rc-options in {@link BlazeCommandDispatcher}. @@ -129,6 +138,17 @@ public class BlazeCommandDispatcherRcoptionsTest { OptionsParser.newOptionsParser(BlazeServerStartupOptions.class)) .setConfigurationFactory( new ConfigurationFactory(Mockito.mock(ConfigurationCollectionFactory.class))) + .addBlazeModule( + new BlazeModule() { + @Override + public void initializeRuleClasses(ConfiguredRuleClassProvider.Builder builder) { + // We must add these options so that the defaults package can be created. + builder.addConfigurationOptions(BuildConfiguration.Options.class); + // The defaults package asserts that it is not empty, so we provide options. + builder.addConfigurationOptions(MockFragmentOptions.class); + } + }) + .setInvocationPolicy(InvocationPolicyOuterClass.InvocationPolicy.getDefaultInstance()) .build(); } @@ -270,4 +290,18 @@ public class BlazeCommandDispatcherRcoptionsTest { out); } } + + /** Options class for testing, so that defaults package has some content. */ + public static class MockFragmentOptions extends FragmentOptions { + public MockFragmentOptions() {} + + @Option(name = "fake_opt", defaultValue = "false") + public boolean fakeOpt; + + @Override + public Map> getDefaultsLabels(BuildConfiguration.Options commonOptions) { + return ImmutableMap.>of( + "mock_target", ImmutableSet.of(Label.parseAbsoluteUnchecked("//mock:target"))); + } + } } -- cgit v1.2.3