PluginConfigurationIT.java 文件源码

java
阅读 18 收藏 0 点赞 0 评论 0

项目:elpaaso-core 作者:
@Test
public void should_not_found_any_dependant_model_item_without_active_plugin_in_production() throws Exception {
    String datacenter = System.getProperty("datacenter", "hudson");
    initJndiValues("com/francetelecom/clara/cloud/commons/testconfigurations/credentials-" + datacenter + ".properties");

    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{
            "classpath:/spring-config/application-context-plugins.xml",
            "classpath:/spring-config/datasources-hsqldb-context.xml",
            "classpath:/com/francetelecom/clara/cloud/commons/testconfigurations/mock-liquibase-context.xml",
            "classpath:/META-INF/spring/paas-activation-stubbed-context.xml", "classpath:/spring-config/mock-spring-authentication-manager-context.xml"}) {
        @Override
        protected ConfigurableEnvironment createEnvironment() {
            return new StandardServletEnvironment();
        }
    };

    ActivationPluginStrategy strategy = (ActivationPluginStrategy) context.getBean("pluginStrategy");

    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
    provider.addIncludeFilter(new AssignableTypeFilter(DependantModelItem.class));

    Set<BeanDefinition> findCandidateComponents = provider.findCandidateComponents("com/francetelecom/clara/cloud/model");
    ActivationStepEnum[] steps = ActivationStepEnum.values();

    Set<Class<?>> errorItems = new HashSet<Class<?>>();

    for (BeanDefinition beanDefinition : findCandidateComponents) {
        ActivationPlugin foundPlugin = null;
        Class<?> testedClass = Class.forName(beanDefinition.getBeanClassName());
        LOGGER.info("Lookin for a plugin handling {}", testedClass.getSimpleName());
        for (ActivationStepEnum activationStepEnum : steps) {
            if (foundPlugin == null) {
                try {
                    foundPlugin = strategy.getPlugin(testedClass, activationStepEnum);
                } catch (TechnicalException e) {
                    //Ignore not found error
                }
            }
        }

        if (foundPlugin == null) {
            if (ignoredClasses.contains(testedClass)) {
                LOGGER.info("No plugin found for {} but ignored !", testedClass.getSimpleName());
            } else {
                LOGGER.info("No plugin found for {}", testedClass.getSimpleName());
            }
            errorItems.add(testedClass);
        } else {
            assertFalse(testedClass.getSimpleName() + " is ignored but a plugin has been found : " + foundPlugin.getClass().getSimpleName() + ".\nDid you activate new feature without refactoring this test specs ?", ignoredClasses.contains(testedClass));
            LOGGER.info("Plugin found for {} : {}", testedClass.getSimpleName(), foundPlugin.getClass().getSimpleName());
        }
    }

    errorItems.removeAll(ignoredClasses);

    assertTrue("No plugin found for some items " + errorItems.toString() + ".\nDid you miss some configuration in cloud-paas-webapp spring config?", errorItems.isEmpty());
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号