use of com.thoughtworks.go.config.remote.ConfigReposConfig in project gocd by gocd.
the class PartialConfigServiceTest method setUp.
@BeforeEach
void setUp() {
ConfigRepoService configRepoService = mock(ConfigRepoService.class);
serverHealthService = mock(ServerHealthService.class);
GoConfigPluginService configPluginService = mock(GoConfigPluginService.class);
partialConfigHelper = mock(PartialConfigHelper.class);
plugin = mock(PartialConfigProvider.class);
when(configPluginService.partialConfigProviderFor(any(ConfigRepoConfig.class))).thenReturn(plugin);
cruiseConfig = new BasicCruiseConfig();
configRepoConfig = ConfigRepoConfig.createConfigRepoConfig(git("url"), "plugin", "id");
cruiseConfig.setConfigRepos(new ConfigReposConfig(configRepoConfig));
CachedGoConfig cachedGoConfig = mock(CachedGoConfig.class);
when(cachedGoConfig.currentConfig()).thenReturn(cruiseConfig);
configWatchList = new GoConfigWatchList(cachedGoConfig, mock(GoConfigService.class));
goConfigService = mock(GoConfigService.class);
repoConfigDataSource = new GoConfigRepoConfigDataSource(configWatchList, configPluginService, serverHealthService, configRepoService, goConfigService);
cachedGoPartials = new CachedGoPartials(serverHealthService);
serverHealthService = mock(ServerHealthService.class);
updateCommand = null;
service = new PartialConfigService(repoConfigDataSource, configWatchList, goConfigService, cachedGoPartials, serverHealthService, partialConfigHelper) {
@Override
protected PartialConfigUpdateCommand buildUpdateCommand(PartialConfig partial, String fingerprint) {
if (null == updateCommand) {
return super.buildUpdateCommand(partial, fingerprint);
}
return updateCommand;
}
};
when(configRepoService.findByFingerprint(anyString())).thenReturn(configRepoConfig);
}
use of com.thoughtworks.go.config.remote.ConfigReposConfig in project gocd by gocd.
the class GoConfigWatchList method onConfigChange.
@Override
public void onConfigChange(CruiseConfig newCruiseConfig) {
ConfigReposConfig partSources = newCruiseConfig.getConfigRepos();
this.reposConfig = partSources;
notifyListeners(partSources);
}
use of com.thoughtworks.go.config.remote.ConfigReposConfig in project gocd by gocd.
the class GoConfigWatchListTest method shouldReturnFalseWhenDoesNotHaveConfigRepoWithFingerprint.
@Test
public void shouldReturnFalseWhenDoesNotHaveConfigRepoWithFingerprint() {
GitMaterialConfig gitrepo = git("http://configrepo.git");
when(cruiseConfig.getConfigRepos()).thenReturn(new ConfigReposConfig(ConfigRepoConfig.createConfigRepoConfig(gitrepo, "myplugin", "id")));
watchList = new GoConfigWatchList(cachedGoConfig, mock(GoConfigService.class));
GitMaterialConfig gitrepo2 = git("http://configrepo.git", "dev");
assertFalse(watchList.hasConfigRepoWithFingerprint(gitrepo2.getFingerprint()));
}
use of com.thoughtworks.go.config.remote.ConfigReposConfig in project gocd by gocd.
the class GoConfigWatchListTest method shouldReturnTrueWhenHasConfigRepoWithFingerprint.
@Test
public void shouldReturnTrueWhenHasConfigRepoWithFingerprint() {
GitMaterialConfig gitrepo = git("http://configrepo.git");
when(cruiseConfig.getConfigRepos()).thenReturn(new ConfigReposConfig(ConfigRepoConfig.createConfigRepoConfig(gitrepo, "myplugin", "id")));
watchList = new GoConfigWatchList(cachedGoConfig, goConfigService);
assertTrue(watchList.hasConfigRepoWithFingerprint(gitrepo.getFingerprint()));
}
use of com.thoughtworks.go.config.remote.ConfigReposConfig in project gocd by gocd.
the class ConfigSaveDeadlockDetectionIntegrationTest method shouldNotDeadlockWhenAllPossibleWaysOfUpdatingTheConfigAreBeingUsedAtTheSameTime.
@Test
@Timeout(value = 3, unit = TimeUnit.MINUTES)
public void shouldNotDeadlockWhenAllPossibleWaysOfUpdatingTheConfigAreBeingUsedAtTheSameTime() throws Exception {
int EXISTING_ENV_COUNT = goConfigService.cruiseConfig().getEnvironments().size();
final ArrayList<Thread> group1 = new ArrayList<>();
final ArrayList<Thread> group2 = new ArrayList<>();
final ArrayList<Thread> group3 = new ArrayList<>();
final ArrayList<Thread> group4 = new ArrayList<>();
final ArrayList<Thread> group5 = new ArrayList<>();
int count = 100;
final int pipelineCreatedThroughApiCount = count;
final int pipelineCreatedThroughUICount = count;
final int configRepoAdditionThreadCount = count;
final int configRepoDeletionThreadCount = count;
final int fullConfigSaveThreadCount = count;
for (int i = 0; i < pipelineCreatedThroughUICount; i++) {
Thread thread = configSaveThread(i);
group1.add(thread);
}
for (int i = 0; i < pipelineCreatedThroughApiCount; i++) {
Thread thread = pipelineSaveThread(i);
group2.add(thread);
}
ConfigReposConfig configRepos = new ConfigReposConfig();
for (int i = 0; i < configRepoAdditionThreadCount; i++) {
ConfigRepoConfig configRepoConfig = ConfigRepoConfig.createConfigRepoConfig(git("url" + i), "plugin", "id-" + i);
configRepoConfig.getRules().add(new Allow("refer", "*", "*"));
configRepos.add(configRepoConfig);
Thread thread = configRepoSaveThread(configRepoConfig, i);
group3.add(thread);
}
for (int i = 0; i < configRepoDeletionThreadCount; i++) {
ConfigRepoConfig configRepoConfig = ConfigRepoConfig.createConfigRepoConfig(git("to-be-deleted-url" + i), "plugin", "to-be-deleted-" + i);
cachedGoPartials.cacheAsLastKnown(configRepoConfig.getRepo().getFingerprint(), PartialConfigMother.withPipeline("to-be-deleted" + i, new RepoConfigOrigin(configRepoConfig, "plugin")));
configRepos.add(configRepoConfig);
Thread thread = configRepoDeleteThread(configRepoConfig, i);
group4.add(thread);
}
for (int i = 0; i < fullConfigSaveThreadCount; i++) {
Thread thread = fullConfigSaveThread(i);
group5.add(thread);
}
configHelper.setConfigRepos(configRepos);
for (int i = 0; i < count; i++) {
Thread timerThread = null;
try {
timerThread = createThread(new Runnable() {
@Override
public void run() {
try {
writeConfigToFile(new File(goConfigDao.fileLocation()));
} catch (Exception e) {
e.printStackTrace();
fail("Failed with error: " + e.getMessage());
}
cachedGoConfig.forceReload();
}
}, "timer-thread");
} catch (InterruptedException e) {
fail(e.getMessage());
}
try {
group1.get(i).start();
group2.get(i).start();
group3.get(i).start();
group4.get(i).start();
group5.get(i).start();
timerThread.start();
group1.get(i).join();
group2.get(i).join();
group3.get(i).join();
group4.get(i).join();
group5.get(i).join();
timerThread.join();
} catch (InterruptedException e) {
fail(e.getMessage());
}
}
assertThat(goConfigService.getAllPipelineConfigs().size(), is(pipelineCreatedThroughApiCount + pipelineCreatedThroughUICount + configRepoAdditionThreadCount));
assertThat(goConfigService.getConfigForEditing().getAllPipelineConfigs().size(), is(pipelineCreatedThroughApiCount + pipelineCreatedThroughUICount));
assertThat(goConfigService.getConfigForEditing().getEnvironments().size(), is(fullConfigSaveThreadCount + EXISTING_ENV_COUNT));
}
Aggregations