use of org.kie.util.maven.support.ReleaseIdImpl in project drools by kiegroup.
the class DroolsModelProvider method generateRulesFiles.
/**
* This method depends on exec-model. Be aware in case of refactoring
* @param packageDescr
* @return
*/
protected List<GeneratedFile> generateRulesFiles(PackageDescr packageDescr) {
ModelBuilderImpl<PackageSources> modelBuilder = new ModelBuilderImpl<>(PackageSources::dumpSources, new KnowledgeBuilderConfigurationImpl(getClass().getClassLoader()), new ReleaseIdImpl("dummy:dummy:0.0.0"), false);
CompositeKnowledgeBuilder batch = modelBuilder.batch();
batch.add(new DescrResource(packageDescr), ResourceType.DESCR);
try {
batch.build();
if (modelBuilder.hasErrors()) {
StringBuilder builder = new StringBuilder();
for (DroolsError error : modelBuilder.getErrors().getErrors()) {
logger.error(error.toString());
builder.append(error.toString()).append(" ");
}
throw new KiePMMLException(builder.toString());
}
} catch (Exception e) {
logger.error(e.getMessage());
StringBuilder builder = new StringBuilder(e.getMessage()).append(" ");
for (DroolsError error : modelBuilder.getErrors().getErrors()) {
logger.error(error.toString());
builder.append(error.toString()).append(" ");
}
throw new RuntimeException(builder.toString(), e);
}
return generateModels(modelBuilder).stream().map(f -> new GeneratedFile(GeneratedFile.Type.RULE, f.getPath(), new String(f.getData()))).collect(toList());
}
use of org.kie.util.maven.support.ReleaseIdImpl in project drools by kiegroup.
the class KieBuilderTest method testInvalidPomXmlGAV.
@Test
public void testInvalidPomXmlGAV() throws ClassNotFoundException, InterruptedException, IOException {
String namespace = "org.kie.test";
KieModuleModel kProj = createKieProject(namespace);
ReleaseId releaseId = new ReleaseIdImpl("", "", "");
KieFileSystem kfs = KieServices.Factory.get().newKieFileSystem();
generatePomXML(kfs, releaseId);
generateMessageClass(kfs, namespace);
generateRule(kfs, namespace);
MemoryFileSystem mfs = ((KieFileSystemImpl) kfs).asMemoryFileSystem();
KieBuilder kieBuilder = createKieBuilder(kfs);
kieBuilder.buildAll();
assertTrue(kieBuilder.getResults().hasMessages(Level.ERROR));
}
use of org.kie.util.maven.support.ReleaseIdImpl in project drools by kiegroup.
the class KieModuleRepoTest method removeStoreArtifactMapTest.
// remove request followed by a store request on a high load system
// * remove does not completely finish before store starts
@Test(timeout = 5000)
public void removeStoreArtifactMapTest() throws Exception {
// actual test
final ReleaseIdImpl releaseId = new ReleaseIdImpl("org", "redeploy", "2.0");
final InternalKieModule originalKieModule = mock(InternalKieModule.class);
when(originalKieModule.getReleaseId()).thenReturn(releaseId);
when(originalKieModule.getCreationTimestamp()).thenReturn(0l);
final InternalKieModule redeployKieModule = mock(InternalKieModule.class);
when(redeployKieModule.getReleaseId()).thenReturn(releaseId);
when(redeployKieModule.getCreationTimestamp()).thenReturn(1l);
// 1. initial deploy ("long ago")
kieModuleRepo.store(originalKieModule);
final CyclicBarrier storeRemoveOperationBarrier = new CyclicBarrier(2);
final CyclicBarrier operationsSerializationBarrier = new CyclicBarrier(2);
final CyclicBarrier threadsFinishedBarrier = new CyclicBarrier(3);
final Runnable removeRunnable = () -> {
waitFor(storeRemoveOperationBarrier);
kieModuleRepo.remove(releaseId);
waitFor(operationsSerializationBarrier);
waitFor(threadsFinishedBarrier);
};
final Runnable redeployRunnable = () -> {
waitFor(storeRemoveOperationBarrier);
waitFor(operationsSerializationBarrier);
kieModuleRepo.store(redeployKieModule);
waitFor(threadsFinishedBarrier);
};
final ExecutorService executor = Executors.newFixedThreadPool(2);
try {
// 2. remove and redploy
executor.submit(removeRunnable);
executor.submit(redeployRunnable);
waitFor(threadsFinishedBarrier);
} finally {
executor.shutdownNow();
}
final String ga = releaseId.getGroupId() + ":" + releaseId.getArtifactId();
final Map<ComparableVersion, KieModule> artifactMap = kieModuleRepo.kieModules.get(ga);
assertNotNull("Artifact Map for GA '" + ga + "' not in KieModuleRepo!", artifactMap);
// never gets this far, but this is a good check
final KieModule redeployedKieModule = artifactMap.get(new ComparableVersion(releaseId.getVersion()));
assertNotNull("Redeployed module has disappeared from KieModuleRepo!", redeployedKieModule);
assertEquals("Original module retrieved instead of redeployed module!", 1l, redeployKieModule.getCreationTimestamp());
}
use of org.kie.util.maven.support.ReleaseIdImpl in project drools by kiegroup.
the class KieModuleRepoTest method storingNewProjectVersionsCausesOldVersionEvictionFromKieModuleRepoTest.
@Test
public void storingNewProjectVersionsCausesOldVersionEvictionFromKieModuleRepoTest() throws Exception {
// setup
// to test oldKieModules caching
setCacheSize(maxSizeGaCacheField, null, 2);
setCacheSize(maxSizeGaVersionsCacheField, null, 3);
final ReleaseIdImpl[] releaseIds = new ReleaseIdImpl[7];
for (int i = 0; i < releaseIds.length; ++i) {
releaseIds[i] = new ReleaseIdImpl("org", "test", "1." + i);
}
// store
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);
// in order to trigger storage to oldKieModules
kieModuleRepo.store(kieModule);
}
int numKieModules = countKieModules(kieModuleRepo.kieModules);
assertEquals("KieModuleRepo cache should not grow past " + KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE + ": ", KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE, numKieModules);
int oldKieModulesSize = kieModuleRepo.oldKieModules.size();
final int maxOldKieModules = KieModuleRepo.MAX_SIZE_GA_CACHE * KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE;
assertTrue("KieModuleRepo old KieModules map is not limited in it's growth: " + oldKieModulesSize + " > " + maxOldKieModules, oldKieModulesSize <= maxOldKieModules);
// store
for (int o = 0; o < 2; ++o) {
// loop 2 times in order to trigger storage to oldKieModules
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);
}
}
numKieModules = countKieModules(kieModuleRepo.kieModules);
assertEquals("KieModuleRepo cache should not grow past " + KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE + ": ", KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE, numKieModules);
oldKieModulesSize = kieModuleRepo.oldKieModules.size();
assertTrue("KieModuleRepo old KieModules map is not limited in it's growth: " + oldKieModulesSize + " > " + maxOldKieModules, oldKieModulesSize <= maxOldKieModules);
}
use of org.kie.util.maven.support.ReleaseIdImpl in project drools by kiegroup.
the class KieModuleRepoTest method testOldKieModulesLRUCache.
@Test
public void testOldKieModulesLRUCache() throws Exception {
// setup
setCacheSize(maxSizeGaCacheField, null, 2);
setCacheSize(maxSizeGaVersionsCacheField, null, 4);
final ReleaseIdImpl[] releaseIds = new ReleaseIdImpl[9];
for (int i = 0; i < releaseIds.length; ++i) {
final String artifactId = Character.toString((char) ('A' + i / 2));
releaseIds[i] = new ReleaseIdImpl("org", artifactId, "1." + i);
}
// store
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);
// in order to trigger storage to oldKieModules
kieModuleRepo.store(kieModule);
}
int maxSameGAModules = 0;
int maxGAs = 0;
for (final Map<ComparableVersion, KieModule> artifactMap : kieModuleRepo.kieModules.values()) {
maxGAs++;
if (artifactMap.size() > maxSameGAModules) {
maxSameGAModules = artifactMap.size();
}
}
assertTrue("The maximum of artifacts per GA should not grow past " + KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE + ": " + KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE + " < " + maxSameGAModules, KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE >= maxSameGAModules);
assertTrue("The number of GAs not grow past " + KieModuleRepo.MAX_SIZE_GA_CACHE + ": " + KieModuleRepo.MAX_SIZE_GA_CACHE + " > " + maxGAs, KieModuleRepo.MAX_SIZE_GA_CACHE >= maxGAs);
final int oldKieModulesSize = kieModuleRepo.oldKieModules.size();
final int maxOldKieModules = KieModuleRepo.MAX_SIZE_GA_CACHE * KieModuleRepo.MAX_SIZE_GA_VERSIONS_CACHE;
assertTrue("KieModuleRepo old KieModules map is not limited in it's growth: " + oldKieModulesSize + " > " + maxOldKieModules, oldKieModulesSize <= maxOldKieModules);
}
Aggregations