@Test
public void storingNewProjectsCausesOldProjectEvictionFromKieModuleRepoTest() throws Exception {
setFinalField(maxSizeGaCacheField, null, 3);
setFinalField(maxSizeGaVersionsCacheField, null, 2);
final ReleaseIdImpl [] releaseIds = new ReleaseIdImpl[7];
for( int i = 0; i < releaseIds.length; ++i ) {
final String artifactId = Character.toString((char)('A'+i));
releaseIds[i] = new ReleaseIdImpl("org", artifactId, "1.0");
}
for( int i = 0; i < releaseIds.length; ++i ) {
final InternalKieModule kieModule = mock(InternalKieModule.class);
when(kieModule.getReleaseId()).thenReturn(releaseIds[i]);
when(kieModule.getCreationTimestamp()).thenReturn(10l);
kieModuleRepo.store(kieModule);
kieModuleRepo.store(kieModule);
}
final int numKieModules = countKieModules(kieModuleRepo.kieModules);
assertEquals( "KieModuleRepo cache should not grow past " + KieModuleRepo.MAX_SIZE_GA_CACHE + ": ",
KieModuleRepo.MAX_SIZE_GA_CACHE, numKieModules );
final int oldKieModulesSize = kieModuleRepo.oldKieModules.size();
final int max = KieModuleRepo.MAX_SIZE_GA_CACHE * KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE;
assertTrue( "KieModuleRepot old KieModules map is not limited in it's growth: " + oldKieModulesSize + " > " + max,
oldKieModulesSize <= max );
}