X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2FConfigRegistryImplTest.java;fp=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2FConfigRegistryImplTest.java;h=928f2c18790e310be52f45decea364ec7b94accf;hp=0000000000000000000000000000000000000000;hb=9fb64948564e252018f9b1e13e7cea2c92f991aa;hpb=1742b3894614be478c333a1043ced8ef1bc5dc84 diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/ConfigRegistryImplTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/ConfigRegistryImplTest.java new file mode 100644 index 0000000000..928f2c1879 --- /dev/null +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/ConfigRegistryImplTest.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.manager; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verifyZeroInteractions; + +import java.lang.management.ManagementFactory; + +import org.junit.Test; +import org.opendaylight.controller.config.manager.impl.AbstractLockedPlatformMBeanServerTest; +import org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl; +import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; +import org.opendaylight.controller.config.manager.impl.factoriesresolver.ModuleFactoriesResolver; +import org.opendaylight.controller.config.manager.testingservices.threadpool.TestingFixedThreadPoolModuleFactory; +import org.opendaylight.controller.config.spi.ModuleFactory; +import org.osgi.framework.BundleContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ConfigRegistryImplTest extends + AbstractLockedPlatformMBeanServerTest { + private static final Logger logger = LoggerFactory + .getLogger(ConfigRegistryImplTest.class); + + @Test + public void testFailOnTwoFactoriesExportingSameImpl() { + ModuleFactory factory = new TestingFixedThreadPoolModuleFactory(); + ModuleFactoriesResolver resolver = new HardcodedModuleFactoriesResolver( + factory, factory); + + BundleContext context = mock(BundleContext.class); + + ConfigRegistryImpl configRegistry = new ConfigRegistryImpl(resolver, + context, ManagementFactory.getPlatformMBeanServer()); + try { + configRegistry.beginConfig(); + fail(); + } catch (IllegalArgumentException e) { + assertTrue( + e.getMessage(), + e.getMessage() + .startsWith("Module name is not unique. Found two conflicting factories with same name " + + "'fixed':")); + verifyZeroInteractions(context); + } finally { + try { + configRegistry.close(); + } catch (Exception e) { + // ignore + logger.warn("Ignoring exception", e); + } + } + } + +}