private ArquillianConfig getArquillianConfig(final String className, long timeout) { synchronized (deployedTests) { log.debugf("Getting Arquillian config for: %s", className); for (ArquillianConfig arqConfig : deployedTests) { for (String aux : arqConfig.getTestClasses()) { if (aux.equals(className)) { log.debugf("Found Arquillian config for: %s", className); return arqConfig; } } } if (timeout <= 0) { throw new IllegalStateException("Cannot obtain Arquillian config for: " + className); } try { log.debugf("Waiting on Arquillian config for: %s", className); deployedTests.wait(timeout); } catch (InterruptedException e) { // ignore } } return getArquillianConfig(className, -1); }
@Override public Class<?> loadTestClass(final String className) throws ClassNotFoundException { final ArquillianConfig arqConfig = getArquillianConfig(className, -1); if (arqConfig == null) throw new ClassNotFoundException("No Arquillian config found for: " + className); // Make the BundleContext available to the {@link OSGiTestEnricher} BundleContext bundleContext = arqConfig.getBundleContext(); BundleContextAssociation.setBundleContext(bundleContext); return arqConfig.loadClass(className); }
void registerArquillianConfig(ArquillianConfig arqConfig) { synchronized (deployedTests) { log.debugf("Register Arquillian config: %s", arqConfig.getServiceName()); deployedTests.add(arqConfig); deployedTests.notifyAll(); } }
private ContextManager initializeContextManager( final ArquillianConfig config, final Map<String, Object> properties) { final ContextManagerBuilder builder = new ContextManagerBuilder(); final DeploymentUnit deployment = config.getDeploymentUnit(); final Module module = deployment.getAttachment(Attachments.MODULE); if (module != null) { builder.add(new TCCLSetupAction(module.getClassLoader())); } builder.addAll(deployment); ContextManager contextManager = builder.build(); contextManager.setup(properties); return contextManager; }
void unregisterArquillianConfig(ArquillianConfig arqConfig) { synchronized (deployedTests) { log.debugf("Unregister Arquillian config: %s", arqConfig.getServiceName()); deployedTests.remove(arqConfig); } }