Remove ConfigurationFactory as part of the static configuration cleanup.

PiperOrigin-RevId: 165478994
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
index 7915bce..8d93d05 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
@@ -16,7 +16,6 @@
 import com.google.common.cache.Cache;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.analysis.config.PackageProviderForConfigurations;
 import com.google.devtools.build.lib.events.EventHandler;
@@ -33,7 +32,6 @@
    * configurations during a build should be accessible from this top-level configuration via
    * configuration transitions.
    *
-   * @param configurationFactory the configuration factory
    * @param cache a cache for BuildConfigurations
    * @param loadedPackageProvider the package provider
    * @param buildOptions top-level build options representing the command-line
@@ -44,7 +42,6 @@
    */
   @Nullable
   BuildConfiguration createConfigurations(
-      ConfigurationFactory configurationFactory,
       Cache<String, BuildConfiguration> cache,
       PackageProviderForConfigurations loadedPackageProvider,
       BuildOptions buildOptions,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index d06bb63..db9649d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -454,8 +454,7 @@
    * even if they don't affect the value of the BuildConfiguration instances.)
    *
    * <p>IMPORTANT: when adding new options, be sure to consider whether those
-   * values should be propagated to the host configuration or not (see
-   * {@link ConfigurationFactory#getConfiguration}.
+   * values should be propagated to the host configuration or not.
    *
    * <p>ALSO IMPORTANT: all option types MUST define a toString method that
    * gives identical results for semantically identical option values. The
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationFactory.java
deleted file mode 100644
index 0080786..0000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationFactory.java
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2014 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.analysis.config;
-
-import com.google.common.cache.Cache;
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
-import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadCompatible;
-import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.util.Preconditions;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.annotation.Nullable;
-
-/**
- * A factory class for {@link BuildConfiguration} instances. This is unfortunately more complex,
- * and should be simplified in the future, if
- * possible. Right now, creating a {@link BuildConfiguration} instance involves
- * creating the instance itself and the related configurations; the main method
- * is {@link #createConfigurations}.
- *
- * <p>Avoid calling into this class, and instead use the skyframe infrastructure to obtain
- * configuration instances.
- *
- * <p>Blaze currently relies on the fact that all {@link BuildConfiguration}
- * instances used in a build can be constructed ahead of time by this class.
- */
-@ThreadCompatible // safe as long as separate instances are used
-public final class ConfigurationFactory {
-  private final List<ConfigurationFragmentFactory> configurationFragmentFactories;
-  private final ConfigurationCollectionFactory configurationCollectionFactory;
-
-  public ConfigurationFactory(
-      ConfigurationCollectionFactory configurationCollectionFactory,
-      ConfigurationFragmentFactory... fragmentFactories) {
-    this(configurationCollectionFactory, ImmutableList.copyOf(fragmentFactories));
-  }
-
-  public ConfigurationFactory(
-      ConfigurationCollectionFactory configurationCollectionFactory,
-      List<ConfigurationFragmentFactory> fragmentFactories) {
-    this.configurationCollectionFactory =
-        Preconditions.checkNotNull(configurationCollectionFactory);
-    this.configurationFragmentFactories = ImmutableList.copyOf(fragmentFactories);
-  }
-
-  /**
-   * Creates a set of build configurations with top-level configuration having the given options.
-   *
-   * <p>The rest of the configurations are created based on the set of transitions available.
-   */
-  @Nullable
-  public BuildConfiguration createConfigurations(
-      Cache<String, BuildConfiguration> cache,
-      PackageProviderForConfigurations loadedPackageProvider,
-      BuildOptions buildOptions,
-      EventHandler errorEventListener,
-      String mainRepositoryName)
-      throws InvalidConfigurationException, InterruptedException {
-    return configurationCollectionFactory.createConfigurations(this, cache,
-        loadedPackageProvider, buildOptions, errorEventListener, mainRepositoryName);
-  }
-
-  /**
-   * Returns a {@link com.google.devtools.build.lib.analysis.config.BuildConfiguration} based on the
-   * given set of build options.
-   *
-   * <p>If the configuration has already been created, re-uses it, otherwise, creates a new one.
-   */
-  @Nullable
-  public BuildConfiguration getConfiguration(
-      PackageProviderForConfigurations loadedPackageProvider,
-      BuildOptions buildOptions,
-      Cache<String, BuildConfiguration> cache,
-      String repositoryName)
-      throws InvalidConfigurationException, InterruptedException {
-
-    String cacheKey = buildOptions.computeCacheKey();
-    BuildConfiguration result = cache.getIfPresent(cacheKey);
-    if (result != null) {
-      return result;
-    }
-
-    Map<Class<? extends Fragment>, Fragment> fragments = new HashMap<>();
-    // Create configuration fragments
-    for (ConfigurationFragmentFactory factory : configurationFragmentFactories) {
-      Class<? extends Fragment> fragmentType = factory.creates();
-      Fragment fragment = loadedPackageProvider.getFragment(buildOptions, fragmentType);
-      if (fragment != null && fragments.get(fragment.getClass()) == null) {
-        fragments.put(fragment.getClass(), fragment);
-      }
-    }
-    BlazeDirectories directories = loadedPackageProvider.getDirectories();
-    if (loadedPackageProvider.valuesMissing()) {
-      return null;
-    }
-
-    result = new BuildConfiguration(directories, fragments, buildOptions, repositoryName, null);
-    cache.put(cacheKey, result);
-    return result;
-  }
-
-  public List<ConfigurationFragmentFactory> getFactories() {
-    return configurationFragmentFactories;
-  }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
index 330e641..d740102 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
@@ -26,7 +26,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection.ConfigurationHolder;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection.Transitions;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.analysis.config.PackageProviderForConfigurations;
 import com.google.devtools.build.lib.events.EventHandler;
@@ -48,7 +47,6 @@
   @Override
   @Nullable
   public BuildConfiguration createConfigurations(
-      ConfigurationFactory configurationFactory,
       Cache<String, BuildConfiguration> cache,
       PackageProviderForConfigurations packageProvider,
       BuildOptions buildOptions,
@@ -56,8 +54,8 @@
       String mainRepositoryName)
       throws InvalidConfigurationException, InterruptedException {
     // Target configuration
-    BuildConfiguration targetConfiguration = configurationFactory.getConfiguration(
-        packageProvider, buildOptions, cache, mainRepositoryName);
+    // Dead code: being removed. The original value used a class that's already been deleted.
+    BuildConfiguration targetConfiguration = null;
     if (targetConfiguration == null) {
       return null;
     }
@@ -67,7 +65,7 @@
     // Host configuration
     // Note that this passes in the dataConfiguration, not the target
     // configuration. This is intentional.
-    BuildConfiguration hostConfiguration = getHostConfigurationFromRequest(configurationFactory,
+    BuildConfiguration hostConfiguration = getHostConfigurationFromRequest(
         packageProvider, dataConfiguration, buildOptions, cache, mainRepositoryName);
     if (hostConfiguration == null) {
       return null;
@@ -77,8 +75,8 @@
         ArrayListMultimap.create();
     for (SplitTransition<BuildOptions> transition : buildOptions.getPotentialSplitTransitions()) {
       for (BuildOptions splitOptions : transition.split(buildOptions)) {
-        BuildConfiguration splitConfig = configurationFactory.getConfiguration(
-            packageProvider, splitOptions, cache, mainRepositoryName);
+        // Dead code: being removed. The original value used a class that's already been deleted.
+        BuildConfiguration splitConfig = null;
         splitTransitionsTable.put(transition, splitConfig);
       }
     }
@@ -124,7 +122,6 @@
    */
   @Nullable
   private static BuildConfiguration getHostConfigurationFromRequest(
-      ConfigurationFactory configurationFactory,
       PackageProviderForConfigurations loadedPackageProvider,
       BuildConfiguration requestConfig,
       BuildOptions buildOptions,
@@ -135,8 +132,8 @@
     if (!commonOptions.useDistinctHostConfiguration) {
       return requestConfig;
     } else {
-      BuildConfiguration hostConfig = configurationFactory.getConfiguration(
-          loadedPackageProvider, buildOptions.createHostOptions(false), cache, repositoryName);
+      // Dead code: being removed. The original value used a class that's already been deleted.
+      BuildConfiguration hostConfig = null;
       if (hostConfig == null) {
         return null;
       }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java
index ccabf7d..e5d8d11 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionFunction.java
@@ -13,7 +13,6 @@
 // limitations under the License.
 package com.google.devtools.build.lib.skyframe;
 
-import com.google.common.base.Supplier;
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.collect.ImmutableSet;
@@ -21,7 +20,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
 import com.google.devtools.build.lib.analysis.config.HostTransition;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.analysis.config.PackageProviderForConfigurations;
@@ -45,13 +43,9 @@
  */
 @Deprecated
 public class ConfigurationCollectionFunction implements SkyFunction {
-
-  private final Supplier<ConfigurationFactory> configurationFactory;
   private final RuleClassProvider ruleClassProvider;
 
-  public ConfigurationCollectionFunction(Supplier<ConfigurationFactory> configurationFactory,
-      RuleClassProvider ruleClassProvider) {
-    this.configurationFactory = configurationFactory;
+  public ConfigurationCollectionFunction(RuleClassProvider ruleClassProvider) {
     this.ruleClassProvider = ruleClassProvider;
   }
 
@@ -169,8 +163,8 @@
           cpuOverride;
     }
 
-    BuildConfiguration targetConfig = configurationFactory.get().createConfigurations(
-        cache, loadedPackageProvider, buildOptions, eventHandler, repositoryName);
+    // Dead code: being removed. The original value used a class that's already been deleted.
+    BuildConfiguration targetConfig = null;
     if (targetConfig == null) {
       return null;
     }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index df32c0f..96e89fa 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -427,7 +427,7 @@
     map.put(SkyFunctions.BUILD_CONFIGURATION,
         new BuildConfigurationFunction(directories, ruleClassProvider));
     map.put(SkyFunctions.CONFIGURATION_COLLECTION, new ConfigurationCollectionFunction(
-        null, ruleClassProvider));
+        ruleClassProvider));
     map.put(SkyFunctions.CONFIGURATION_FRAGMENT, new ConfigurationFragmentFunction(
         configurationFragments, ruleClassProvider));
     map.put(SkyFunctions.WORKSPACE_NAME, new WorkspaceNameFunction());
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index d2864bb..72c18f2 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -34,7 +34,6 @@
 import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
-import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestBase;
 import com.google.devtools.build.lib.analysis.util.ExpectedDynamicConfigurationErrors;
 import com.google.devtools.build.lib.analysis.util.MockRule;
@@ -1109,7 +1108,6 @@
         "filegroup(name = 'jdk', srcs = [",
         "    '//does/not/exist:a-piii', '//does/not/exist:b-k8', '//does/not/exist:c-default'])");
     scratch.file("does/not/exist/BUILD");
-    useConfigurationFactory(AnalysisMock.get().createConfigurationFactory());
     useConfiguration("--javabase=//jdk");
     reporter.removeHandler(failFastHandler);
     try {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurationsForLateBoundTargetsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurationsForLateBoundTargetsTest.java
index 352fe31..3fc5127 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurationsForLateBoundTargetsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurationsForLateBoundTargetsTest.java
@@ -22,7 +22,6 @@
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
 import com.google.devtools.build.lib.analysis.config.PatchTransition;
 import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
 import com.google.devtools.build.lib.analysis.util.MockRule;
@@ -100,11 +99,6 @@
     builder.addConfigurationOptions(LateBoundSplitUtil.TestOptions.class);
     builder.addRuleDefinition(LATE_BOUND_DEP_RULE);
     useRuleClassProvider(builder.build());
-
-    // Register the latebound split fragment with the config creation environment.
-    useConfigurationFactory(new ConfigurationFactory(
-        ruleClassProvider.getConfigurationCollectionFactory(),
-        ruleClassProvider.getConfigurationFragments()));
   }
 
   @Test
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 4374c86..9577d1b 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
@@ -16,6 +16,7 @@
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
@@ -234,11 +235,9 @@
 
   @Test
   public void testCycleInFragments() throws Exception {
-    configurationFactory =
-        new ConfigurationFactory(
-            analysisMock.createConfigurationCollectionFactory(),
-            createMockFragment(CppConfiguration.class, JavaConfiguration.class),
-            createMockFragment(JavaConfiguration.class, CppConfiguration.class));
+    configurationFragmentFactories = ImmutableList.of(
+        createMockFragment(CppConfiguration.class, JavaConfiguration.class),
+        createMockFragment(JavaConfiguration.class, CppConfiguration.class));
     try {
       createCollection();
       fail();
@@ -249,10 +248,8 @@
 
   @Test
   public void testMissingFragment() throws Exception {
-    configurationFactory =
-        new ConfigurationFactory(
-            analysisMock.createConfigurationCollectionFactory(),
-            createMockFragment(CppConfiguration.class, JavaConfiguration.class));
+    configurationFragmentFactories = ImmutableList.of(
+        createMockFragment(CppConfiguration.class, JavaConfiguration.class));
     try {
       createCollection();
       fail();
@@ -394,10 +391,7 @@
 
   @Test
   public void depLabelCycleOnConfigurationLoading() throws Exception {
-    configurationFactory =
-        new ConfigurationFactory(
-            analysisMock.createConfigurationCollectionFactory(),
-            createMockFragmentWithLabelDep("//foo"));
+    configurationFragmentFactories = ImmutableList.of(createMockFragmentWithLabelDep("//foo"));
     getScratch().file("foo/BUILD",
         "load('//skylark:one.bzl', 'one')",
         "cc_library(name = 'foo')");
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index f15e092..5131112 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -22,7 +22,6 @@
 import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.PlatformConfigurationLoader;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
 import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
 import com.google.devtools.build.lib.analysis.featurecontrol.FeaturePolicyLoader;
 import com.google.devtools.build.lib.analysis.util.AnalysisMock;
@@ -236,19 +235,7 @@
   }
 
   @Override
-  public ConfigurationFactory createConfigurationFactory() {
-    return createConfigurationFactory(getDefaultConfigurationFactories());
-  }
-
-  @Override
-  public ConfigurationFactory createConfigurationFactory(
-      List<ConfigurationFragmentFactory> configurationFragmentFactories) {
-    return new ConfigurationFactory(
-        new BazelConfigurationCollection(),
-        configurationFragmentFactories);
-  }
-
-  private static List<ConfigurationFragmentFactory> getDefaultConfigurationFactories() {
+  public List<ConfigurationFragmentFactory> getDefaultConfigurationFragmentFactories() {
     return ImmutableList.<ConfigurationFragmentFactory>of(
         new BazelConfiguration.Loader(),
         new CppConfigurationLoader(Functions.<String>identity()),
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
index ff340b5..4c1d1d5 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
@@ -17,7 +17,6 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
 import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
 import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryFunction;
 import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryRule;
@@ -99,13 +98,11 @@
    */
   public abstract void setupMockWorkspaceFiles(Path embeddedBinariesRoot) throws IOException;
 
-  public abstract ConfigurationFactory createConfigurationFactory();
-
-  public abstract ConfigurationFactory createConfigurationFactory(
-      List<ConfigurationFragmentFactory> configurationFragmentFactories);
-
   public abstract ConfigurationCollectionFactory createConfigurationCollectionFactory();
 
+  /** Returns the default factories for configuration fragments used in tests. */
+  public abstract List<ConfigurationFragmentFactory> getDefaultConfigurationFragmentFactories();
+
   @Override
   public abstract ConfiguredRuleClassProvider createRuleClassProvider();
 
@@ -158,22 +155,16 @@
     }
 
     @Override
-    public ConfigurationFactory createConfigurationFactory() {
-      return delegate.createConfigurationFactory();
-    }
-
-    @Override
-    public ConfigurationFactory createConfigurationFactory(
-        List<ConfigurationFragmentFactory> configurationFragmentFactories) {
-      return delegate.createConfigurationFactory(configurationFragmentFactories);
-    }
-
-    @Override
     public ConfigurationCollectionFactory createConfigurationCollectionFactory() {
       return delegate.createConfigurationCollectionFactory();
     }
 
     @Override
+    public List<ConfigurationFragmentFactory> getDefaultConfigurationFragmentFactories() {
+      return delegate.getDefaultConfigurationFragmentFactories();
+    }
+
+    @Override
     public ConfiguredRuleClassProvider createRuleClassProvider() {
       return delegate.createRuleClassProvider();
     }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 6e3a0f1..ff655ba 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -34,7 +34,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
 import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
 import com.google.devtools.build.lib.buildtool.BuildRequest.BuildRequestOptions;
 import com.google.devtools.build.lib.cmdline.Label;
@@ -130,7 +129,6 @@
   private OptionsParser optionsParser;
   protected PackageManager packageManager;
   private LoadingPhaseRunner loadingPhaseRunner;
-  private ConfigurationFactory configurationFactory;
   private BuildView buildView;
 
   // Note that these configurations are virtual (they use only VFS)
@@ -155,7 +153,6 @@
     mockToolsConfig = new MockToolsConfig(rootDirectory);
     analysisMock.setupMockClient(mockToolsConfig);
     analysisMock.setupMockWorkspaceFiles(directories.getEmbeddedBinariesRoot());
-    configurationFactory = analysisMock.createConfigurationFactory();
 
     useRuleClassProvider(analysisMock.createRuleClassProvider());
   }
@@ -166,10 +163,6 @@
   protected void useRuleClassProvider(ConfiguredRuleClassProvider ruleClassProvider)
       throws Exception {
     this.ruleClassProvider = ruleClassProvider;
-    useConfigurationFactory(
-        new ConfigurationFactory(
-            ruleClassProvider.getConfigurationCollectionFactory(),
-            ruleClassProvider.getConfigurationFragments()));
     PackageFactory pkgFactory =
         analysisMock
             .getPackageFactoryBuilderForTesting()
@@ -224,10 +217,6 @@
     return ImmutableList.of();
   }
 
-  protected final void useConfigurationFactory(ConfigurationFactory configurationFactory) {
-    this.configurationFactory = configurationFactory;
-  }
-
   /**
    * Sets host and target configuration using the specified options, falling back to the default
    * options for unspecified ones, and recreates the build view.
@@ -361,8 +350,9 @@
 
     BuildRequestOptions requestOptions = optionsParser.getOptions(BuildRequestOptions.class);
     ImmutableSortedSet<String> multiCpu = ImmutableSortedSet.copyOf(requestOptions.multiCpus);
-    masterConfig = skyframeExecutor.createConfigurations(reporter,
-        configurationFactory.getFactories(), buildOptions, multiCpu, false);
+    masterConfig = skyframeExecutor.createConfigurations(
+        reporter, ruleClassProvider.getConfigurationFragments(), buildOptions,
+        multiCpu, false);
     analysisResult =
         buildView.update(
             loadingResult,
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 949b738..934082f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -77,7 +77,6 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Options.DynamicConfigsMode;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
 import com.google.devtools.build.lib.analysis.config.PatchTransition;
 import com.google.devtools.build.lib.analysis.extra.ExtraAction;
 import com.google.devtools.build.lib.analysis.test.BaselineCoverageAction;
@@ -170,7 +169,6 @@
 
   protected AnalysisMock analysisMock;
   protected ConfiguredRuleClassProvider ruleClassProvider;
-  protected ConfigurationFactory configurationFactory;
   protected BuildView view;
 
   protected SequencedSkyframeExecutor skyframeExecutor;
@@ -212,8 +210,6 @@
         new AnalysisTestUtil.DummyWorkspaceStatusActionFactory(directories);
     mutableActionGraph = new MapBasedActionGraph();
     ruleClassProvider = getRuleClassProvider();
-    configurationFactory =
-        analysisMock.createConfigurationFactory(ruleClassProvider.getConfigurationFragments());
 
     ImmutableList<PrecomputedValue.Injected> extraPrecomputedValues = ImmutableList.of(
         PrecomputedValue.injected(
@@ -320,8 +316,9 @@
 
     BuildOptions buildOptions = ruleClassProvider.createBuildOptions(optionsParser);
     skyframeExecutor.invalidateConfigurationCollection();
-    return skyframeExecutor.createConfigurations(reporter, configurationFactory.getFactories(),
-        buildOptions, ImmutableSet.<String>of(), false);
+    return skyframeExecutor.createConfigurations(
+        reporter, ruleClassProvider.getConfigurationFragments(), buildOptions,
+        ImmutableSet.<String>of(), false);
   }
 
   protected Target getTarget(String label)
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
index 3ccaea2..f01405e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
@@ -27,7 +27,7 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
+import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
 import com.google.devtools.build.lib.analysis.config.FragmentOptions;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -66,7 +66,7 @@
 import org.junit.runners.JUnit4;
 
 /**
- * Testing framework for tests which check ConfigurationFactory.
+ * Testing framework for tests which create configuration collections.
  */
 @RunWith(JUnit4.class)
 public abstract class ConfigurationTestCase extends FoundationTestCase {
@@ -89,7 +89,7 @@
   protected Path workspace;
   protected AnalysisMock analysisMock;
   protected SequencedSkyframeExecutor skyframeExecutor;
-  protected ConfigurationFactory configurationFactory;
+  protected List<ConfigurationFragmentFactory> configurationFragmentFactories;
   protected ImmutableList<Class<? extends FragmentOptions>> buildOptionClasses;
 
   @Before
@@ -147,7 +147,7 @@
     mockToolsConfig = new MockToolsConfig(rootDirectory);
     analysisMock.setupMockClient(mockToolsConfig);
     analysisMock.setupMockWorkspaceFiles(directories.getEmbeddedBinariesRoot());
-    configurationFactory = analysisMock.createConfigurationFactory();
+    configurationFragmentFactories = analysisMock.getDefaultConfigurationFragmentFactories();
     buildOptionClasses = ruleClassProvider.getConfigurationOptions();
   }
 
@@ -180,9 +180,9 @@
         parser.getOptions(TestOptions.class).multiCpus);
 
     skyframeExecutor.handleDiffs(reporter);
-    BuildConfigurationCollection collection = skyframeExecutor.createConfigurations(reporter,
-        configurationFactory.getFactories(), BuildOptions.of(buildOptionClasses, parser), multiCpu,
-        false);
+    BuildConfigurationCollection collection = skyframeExecutor.createConfigurations(
+        reporter, configurationFragmentFactories, BuildOptions.of(buildOptionClasses, parser),
+        multiCpu, false);
     return collection;
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
index 4852123..2547d35 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -32,7 +32,6 @@
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
 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.mock.BazelAnalysisMock;
 import com.google.devtools.build.lib.analysis.util.AnalysisMock;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
@@ -972,13 +971,6 @@
       final AnalysisMock original = BazelAnalysisMock.INSTANCE;
       return new AnalysisMock.Delegate(original) {
         @Override
-        public ConfigurationFactory createConfigurationFactory() {
-          return new ConfigurationFactory(
-              createRuleClassProvider().getConfigurationCollectionFactory(),
-              createRuleClassProvider().getConfigurationFragments());
-        }
-
-        @Override
         public ConfiguredRuleClassProvider createRuleClassProvider() {
           ConfiguredRuleClassProvider.Builder builder = new ConfiguredRuleClassProvider.Builder();
           builder.setToolsRepository("@bazel_tools");