use of org.guvnor.common.services.project.builder.events.InvalidateDMOModuleCacheEvent in project kie-wb-common by kiegroup.
the class KieModuleServiceImplTest method setup.
@Before
public void setup() {
rootPath = PathFactory.newPath("root", "file:///root");
activeModule = new Module(rootPath, mock(Path.class));
final Event<NewModuleEvent> newModuleEvent = mock(Event.class);
final Event<NewPackageEvent> newPackageEvent = mock(Event.class);
final Event<InvalidateDMOModuleCacheEvent> invalidateDMOCache = mock(Event.class);
moduleService = new KieModuleServiceImpl(mock(IOService.class), mock(ModuleSaver.class), mock(POMService.class), mock(RepositoryService.class), newModuleEvent, newPackageEvent, invalidateDMOCache, mock(SessionInfo.class), mock(CommentedOptionFactory.class), mock(ModuleFinder.class), packageServiceLoader, resourceResolver, mock(ModuleRepositoryResolver.class)) {
};
}
use of org.guvnor.common.services.project.builder.events.InvalidateDMOModuleCacheEvent in project kie-wb-common by kiegroup.
the class AbstractGetModelsTest method clearCache.
protected void clearCache() {
modelOracleCache.invalidateModuleCache(new InvalidateDMOModuleCacheEvent(sessionInfo, module, rootPath));
buildService.build(module);
}
use of org.guvnor.common.services.project.builder.events.InvalidateDMOModuleCacheEvent in project kie-wb-common by kiegroup.
the class DataModelServiceConstructorTest method testConstructor.
@Test
public void testConstructor() throws IllegalArgumentException, FileSystemNotFoundException, SecurityException, URISyntaxException {
final URL packageUrl = this.getClass().getResource("/DataModelServiceConstructorTest/src/main/java/t1p1");
final RenameService renameService = mock(RenameService.class);
final SaveAndRenameServiceImpl saveAndRenameService = mock(SaveAndRenameServiceImpl.class);
RepositoryService repoService = mock(RepositoryService.class);
IOService ioService = new IOServiceDotFileImpl();
Collection<Role> roles = new ArrayList<>();
Collection<Group> groups = new ArrayList<>();
User user = new UserImpl("admin", roles, groups);
SessionInfo sessionInfo = new SessionInfoImpl("admin", user);
Instance<User> userInstance = mock(Instance.class);
when(userInstance.get()).thenReturn(user);
ConfigIOServiceProducer cfiosProducer = new ConfigIOServiceProducer();
cfiosProducer.setup();
IOService configIOService = cfiosProducer.configIOService();
MetadataService metadataService = new MetadataServiceImpl(ioService, configIOService, mock(CommentedOptionFactory.class), sessionInfo);
POMContentHandler pomContentHandler = new POMContentHandler();
M2RepoServiceImpl m2RepoService = new M2RepoServiceImpl();
PomEnhancer pomEnhancer = new DefaultPomEnhancer();
POMService pomService = new POMServiceImpl(ioService, pomContentHandler, m2RepoService, metadataService, new EventSourceMock<>(), mock(ModuleService.class), mock(CommentedOptionFactory.class), pomEnhancer);
KModuleContentHandler moduleContentHandler = new KModuleContentHandler();
CommentedOptionFactory commentedOptionFactory = new CommentedOptionFactoryImpl(sessionInfo);
ProjectConfigurationContentHandler moduleConfigurationContentHandler = new ProjectConfigurationContentHandler();
ProjectImportsService moduleImportsService = new ProjectImportsServiceImpl(ioService, moduleConfigurationContentHandler, renameService, saveAndRenameService);
Event<NewModuleEvent> newModuleEvent = new EventSourceMock<>();
Event<NewPackageEvent> newPackageEvent = new EventSourceMock<>();
Event<InvalidateDMOModuleCacheEvent> invalidateDMOCache = new EventSourceMock<>();
PermissionTypeRegistry permissionTypeRegistry = new DefaultPermissionTypeRegistry();
DotNamedPermissionType permissionType = new DotNamedPermissionType(REPOSITORY_TYPE.getName());
permissionType.createPermission(REPOSITORY_TYPE, RepositoryAction.READ, true);
permissionType.createPermission(REPOSITORY_TYPE, RepositoryAction.CREATE, true);
permissionType.createPermission(REPOSITORY_TYPE, RepositoryAction.UPDATE, true);
permissionType.createPermission(REPOSITORY_TYPE, RepositoryAction.DELETE, true);
permissionTypeRegistry.register(permissionType);
ModuleRepositoryResolver repositoryResolver = new ModuleRepositoryResolverImpl(ioService, null, null);
FileDiscoveryService fileDiscoveryService = new FileDiscoveryServiceImpl();
HackedKieModuleServiceImpl moduleService = null;
HackedKModuleServiceImpl kModuleService = new HackedKModuleServiceImpl(ioService, moduleService, metadataService, moduleContentHandler);
KieResourceResolver resourceResolver = new KieResourceResolver(ioService, pomService, commentedOptionFactory, kModuleService, resourcePathResolversInstance);
ModuleSaver moduleSaver = null;
moduleService = new HackedKieModuleServiceImpl(ioService, moduleSaver, pomService, repoService, newModuleEvent, newPackageEvent, invalidateDMOCache, sessionInfo, commentedOptionFactory, mock(ModuleFinder.class), mock(PackageServiceLoader.class), resourceResolver, repositoryResolver);
ModuleRepositoriesContentHandler contentHandler = new ModuleRepositoriesContentHandler();
ModuleRepositoriesService moduleRepositoriesService = new KieModuleRepositoriesServiceImpl(ioService, repositoryResolver, resourceResolver, contentHandler, commentedOptionFactory);
DependencyService dependencyService = new DependencyServiceImpl();
PackageNameSearchProvider packageNameSearchProvider = new PackageNameSearchProvider(dependencyService);
PackageNameAllowListLoader loader = new PackageNameAllowListLoader(packageNameSearchProvider, ioService);
MetadataServerSideService serverSideMetdataService = new MetadataServiceImpl(ioService, configIOService, commentedOptionFactory, sessionInfo);
PackageNameAllowListSaver saver = new PackageNameAllowListSaver(ioService, serverSideMetdataService, commentedOptionFactory);
PackageNameAllowListService packageNameAllowListService = new PackageNameAllowListServiceImpl(ioService, moduleService, loader, saver);
moduleSaver = new ModuleSaver(ioService, pomService, kModuleService, newModuleEvent, newPackageEvent, resourceResolver, moduleImportsService, moduleRepositoriesService, packageNameAllowListService, commentedOptionFactory, sessionInfo);
moduleService.setModuleSaver(moduleSaver);
kModuleService.setModuleService(moduleService);
ProjectImportsService importsService = new ProjectImportsServiceImpl(ioService, moduleConfigurationContentHandler, renameService, saveAndRenameService);
Instance<BuildValidationHelper> buildValidationHelperBeans = null;
Instance<Predicate<String>> classFilterBeans = null;
HackedLRUModuleDependenciesClassLoaderCache dependenciesClassLoaderCache = new HackedLRUModuleDependenciesClassLoaderCache();
LRUPomModelCache pomModelCache = new LRUPomModelCache();
LRUBuilderCache builderCache = new LRUBuilderCache(ioService, moduleService, importsService, buildValidationHelperBeans, dependenciesClassLoaderCache, pomModelCache, packageNameAllowListService, classFilterBeans);
Instance<PostBuildHandler> handlerInstance = mock(Instance.class);
Iterator<PostBuildHandler> mockIterator = mock(Iterator.class);
when(handlerInstance.iterator()).thenReturn(mockIterator);
when(mockIterator.hasNext()).thenReturn(false);
DeploymentVerifier deploymentVerifier = new DeploymentVerifier(repositoryResolver, moduleRepositoriesService);
BuildHelper buildHelper = new BuildHelper(pomService, m2RepoService, moduleService, deploymentVerifier, builderCache, handlerInstance, userInstance);
PipelineRegistry pipelineRegistry = new InMemoryPipelineRegistry();
BuildPipelineInitializer pipelineInitializer = new BuildPipelineInitializer(pipelineRegistry, getConfigExecutors(moduleService, buildHelper));
BuildPipelineInvoker pipelineInvoker = new BuildPipelineInvoker(pipelineInitializer.getExecutor(), pipelineRegistry);
BuildServiceHelper buildServiceHelper = new BuildServiceHelper(pipelineInvoker, deploymentVerifier);
BuildService buildService = new BuildServiceImpl(moduleService, buildServiceHelper, builderCache);
BuildInfoService buildInfoService = new BuildInfoService(buildService, builderCache);
ModuleDataModelOracleBuilderProvider builderProvider = new ModuleDataModelOracleBuilderProvider(packageNameAllowListService, importsService);
LRUModuleDataModelOracleCache cacheModules = new LRUModuleDataModelOracleCache(builderProvider, moduleService, buildInfoService);
dependenciesClassLoaderCache.setBuildInfoService(buildInfoService);
LRUDataModelOracleCache cachePackages = new LRUDataModelOracleCache(ioService, fileDiscoveryService, cacheModules, moduleService, buildInfoService, dataModelExtensionProvider, new RawMVELEvaluator());
DataModelService dataModelService = new DataModelServiceImpl(cachePackages, cacheModules, moduleService);
final org.uberfire.java.nio.file.Path nioPackagePath = fs.getPath(packageUrl.toURI());
final Path packagePath = Paths.convert(nioPackagePath);
final ModuleDataModelOracle oracle = dataModelService.getModuleDataModel(packagePath);
assertNotNull(oracle);
assertEquals(4, oracle.getModuleModelFields().size());
assertContains("t1p1.Bean1", oracle.getModuleModelFields().keySet());
assertContains("t1p1.DRLBean", oracle.getModuleModelFields().keySet());
assertContains("t1p2.Bean2", oracle.getModuleModelFields().keySet());
assertContains("java.lang.String", oracle.getModuleModelFields().keySet());
assertEquals(TypeSource.JAVA_PROJECT, oracle.getModuleTypeSources().get("t1p1.Bean1"));
assertEquals(TypeSource.DECLARED, oracle.getModuleTypeSources().get("t1p1.DRLBean"));
assertEquals(TypeSource.JAVA_PROJECT, oracle.getModuleTypeSources().get("t1p2.Bean2"));
assertEquals(TypeSource.JAVA_DEPENDENCY, oracle.getModuleTypeSources().get("java.lang.String"));
}
use of org.guvnor.common.services.project.builder.events.InvalidateDMOModuleCacheEvent in project kie-wb-common by kiegroup.
the class BuilderConcurrencyIntegrationTest method testBuilderConcurrency.
@Test
public // https://bugzilla.redhat.com/show_bug.cgi?id=1145105
void testBuilderConcurrency() throws URISyntaxException {
final URL pomUrl = this.getClass().getResource("/BuilderConcurrencyRepo/pom.xml");
final org.uberfire.java.nio.file.Path nioPomPath = fs.getPath(pomUrl.toURI());
final Path pomPath = paths.convert(nioPomPath);
final URL resourceUrl = this.getClass().getResource("/BuilderConcurrencyRepo/src/main/resources/update.drl");
final org.uberfire.java.nio.file.Path nioResourcePath = fs.getPath(resourceUrl.toURI());
final Path resourcePath = paths.convert(nioResourcePath);
final SessionInfo sessionInfo = mock(SessionInfo.class);
// Force full build before attempting incremental changes
final KieModule project = moduleService.resolveModule(resourcePath);
final BuildResults buildResults = buildService.build(project);
assertNotNull(buildResults);
assertEquals(0, buildResults.getErrorMessages().size());
assertEquals(1, buildResults.getInformationMessages().size());
// Perform incremental build
final int THREADS = 200;
final Result result = new Result();
ExecutorService es = Executors.newCachedThreadPool();
for (int i = 0; i < THREADS; i++) {
switch(i % 3) {
case 0:
es.execute(new Runnable() {
@Override
public void run() {
try {
logger.debug("Thread " + Thread.currentThread().getName() + " has started: BuildService.build( project )");
buildService.build(project);
logger.debug("Thread " + Thread.currentThread().getName() + " has completed.");
} catch (Throwable e) {
result.setFailed(true);
result.setMessage(e.getMessage());
logger.debug(e.getMessage());
}
}
});
break;
case 1:
es.execute(new Runnable() {
@Override
public void run() {
try {
logger.debug("Thread " + Thread.currentThread().getName() + " has started: LRUModuleDataModelOracleCache.invalidateModuleCache(...)");
moduleDMOCache.invalidateModuleCache(new InvalidateDMOModuleCacheEvent(sessionInfo, project, pomPath));
logger.debug("Thread " + Thread.currentThread().getName() + " has completed.");
} catch (Throwable e) {
result.setFailed(true);
result.setMessage(e.getMessage());
logger.debug(e.getMessage());
}
}
});
break;
default:
es.execute(new Runnable() {
@Override
public void run() {
try {
logger.debug("Thread " + Thread.currentThread().getName() + " has started: LRUBuilderCache.assertBuilder( project ).getKieModuleIgnoringErrors();");
builderCache.assertBuilder(project).getKieModuleIgnoringErrors();
logger.debug("Thread " + Thread.currentThread().getName() + " has completed.");
} catch (Throwable e) {
result.setFailed(true);
result.setMessage(e.getMessage());
logger.debug(e.getMessage());
}
}
});
}
}
es.shutdown();
try {
es.awaitTermination(5, TimeUnit.MINUTES);
} catch (InterruptedException e) {
}
if (result.isFailed()) {
fail(result.getMessage());
}
}
use of org.guvnor.common.services.project.builder.events.InvalidateDMOModuleCacheEvent in project kie-wb-common by kiegroup.
the class LRUPomModelCacheTest method testCacheIsInvalidatedWhenResourceThatMapsToProject.
@Test
public void testCacheIsInvalidatedWhenResourceThatMapsToProject() {
final InvalidateDMOModuleCacheEvent event = new InvalidateDMOModuleCacheEvent(sessionInfo, module, resourcePath);
doReturn(module).when(moduleService).resolveModule(resourcePath);
cache.invalidateProjectCache(event);
verify(cache).invalidateCache(eq(module));
verify(cache, never()).invalidateCache(eq(otherModule));
}
Aggregations