/**
  * Creates config dao that has custom remote configuration parts provided by partialConfig
  * argument
  */
 public static GoConfigDao createTestingDao(GoPartialConfig partialConfig) {
   SystemEnvironment systemEnvironment = new SystemEnvironment();
   try {
     ServerHealthService serverHealthService = new ServerHealthService();
     ConfigRepository configRepository = new ConfigRepository(systemEnvironment);
     configRepository.initialize();
     FullConfigSaveNormalFlow normalFlow =
         new FullConfigSaveNormalFlow(
             new ConfigCache(),
             com.thoughtworks.go.util.ConfigElementImplementationRegistryMother.withNoPlugins(),
             systemEnvironment,
             new ServerVersion(),
             new TimeProvider(),
             configRepository,
             new CachedGoPartials(serverHealthService));
     GoFileConfigDataSource dataSource =
         new GoFileConfigDataSource(
             new DoNotUpgrade(),
             configRepository,
             systemEnvironment,
             new TimeProvider(),
             new ConfigCache(),
             new ServerVersion(),
             com.thoughtworks.go.util.ConfigElementImplementationRegistryMother.withNoPlugins(),
             serverHealthService,
             new CachedGoPartials(serverHealthService),
             null,
             normalFlow);
     dataSource.upgradeIfNecessary();
     CachedGoPartials cachedGoPartials = new CachedGoPartials(serverHealthService);
     CachedGoConfig cachedConfigService =
         new CachedGoConfig(serverHealthService, dataSource, cachedGoPartials, null, null);
     cachedConfigService.loadConfigIfNull();
     return new GoConfigDao(cachedConfigService);
   } catch (IOException e) {
     throw new RuntimeException(e);
   }
 }
 public void getXml(CruiseConfig cruiseConfig, ByteArrayOutputStream buffer) throws Exception {
   new MagicalGoConfigXmlWriter(
           new ConfigCache(),
           com.thoughtworks.go.util.ConfigElementImplementationRegistryMother.withNoPlugins())
       .write(cruiseConfig, buffer, false);
 }