X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2FModuleMXBeanEntryNameConflictTest.java;h=54a980abfa41cfa597e29e4977626151f53eb325;hp=3eec98e8a18f1ad8bdba595b8dbe1da460b3b008;hb=20a32e6459fd1e27e7669bf1ebc7742b96787b94;hpb=db89afdefb3cfa4454dfdc6008e1d54d3ede66fb diff --git a/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryNameConflictTest.java b/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryNameConflictTest.java index 3eec98e8a1..54a980abfa 100644 --- a/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryNameConflictTest.java +++ b/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryNameConflictTest.java @@ -9,19 +9,20 @@ package org.opendaylight.controller.config.yangjmxgenerator; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; + import com.google.common.base.Preconditions; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; +import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.NameConflictException; import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.YangModelSearchUtils; import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl; +import org.opendaylight.yangtools.yang.common.YangConstants; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; @@ -29,106 +30,67 @@ import org.slf4j.LoggerFactory; public class ModuleMXBeanEntryNameConflictTest extends AbstractYangTest { - private static final Logger LOG = LoggerFactory - .getLogger(ModuleMXBeanEntryNameConflictTest.class); + private static final Logger LOG = LoggerFactory.getLogger(ModuleMXBeanEntryNameConflictTest.class); public static final String PACKAGE_NAME = "pack2"; - Map testedFilesToYangModules = new HashMap<>(); - Map testedYangModulesToExpectedConflictingName = new HashMap<>(); - - @Ignore - @Test - public void testNameConflicts() throws Exception { - prepareSamples(); - prepareExceptionAssertions(); - - for (final Map.Entry currentTestEntry : this.testedFilesToYangModules - .entrySet()) { - final String moduleName = currentTestEntry.getValue(); - final File yangFile = currentTestEntry.getKey(); - final Module testedModule = loadYangs(yangFile, moduleName); - - try { - LOG.debug("Testing {}", yangFile); - ModuleMXBeanEntry.create(testedModule, - new HashMap<>(), this.context, - new TypeProviderWrapper(new TypeProviderImpl(this.context)), - PACKAGE_NAME); - fail(yangFile.toString() - + " did not cause a name conflict and should"); - } catch (final NameConflictException e) { - assertEquals( - this.testedYangModulesToExpectedConflictingName - .get(moduleName), - e.getConflictingName()); - } - } - } - - private void prepareSamples() { - final File first = new File(getClass().getResource( - "/duplicates/config-test-duplicate-attribute-in-list.yang") - .getFile()); - final File dir = first.getParentFile(); - - for (final File testYang : dir.listFiles()) { - final String moduleName = getYangModuleName(testYang.getName()); - this.testedFilesToYangModules.put(testYang, moduleName); - } - } - private void prepareExceptionAssertions() { - this.testedYangModulesToExpectedConflictingName.put( - "config-test-duplicate-attribute", "DtoA"); - this.testedYangModulesToExpectedConflictingName.put( - "config-test-duplicate-attribute-in-list", "DtoA"); - this.testedYangModulesToExpectedConflictingName.put( - "config-test-duplicate-attribute-runtime-bean", "DtoA"); - this.testedYangModulesToExpectedConflictingName.put( - "config-test-generated-attributes-name-conflict", "StateB"); - this.testedYangModulesToExpectedConflictingName.put( - "config-test-runtime-bean-list-name-conflict", + private final List testedModules = ImmutableList.of( + "config-test-duplicate-attribute-in-list", + "config-test-duplicate-attribute-in-runtime-and-mxbean", + "config-test-duplicate-attribute-runtime-bean", + "config-test-duplicate-attribute", + "config-test-generated-attributes-name-conflict", + "config-test-runtime-bean-list-name-conflict2", + "config-test-runtime-bean-list-name-conflict", + "config-test-runtime-bean-name-conflict2", + "config-test-runtime-bean-name-conflict"); + private final Map testedYangModulesToExpectedConflictingName = new HashMap<>(); + + @Before + public void setup() { + testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute", "DtoA"); + testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute-in-list", "DtoA"); + testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute-runtime-bean", "DtoA"); + testedYangModulesToExpectedConflictingName.put("config-test-generated-attributes-name-conflict", "StateB"); + testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-list-name-conflict", "StateARuntimeMXBean"); - this.testedYangModulesToExpectedConflictingName.put( - "config-test-runtime-bean-list-name-conflict2", + testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-list-name-conflict2", "StateARuntimeMXBean"); - this.testedYangModulesToExpectedConflictingName - .put("config-test-runtime-bean-name-conflict", "StateARuntimeMXBean"); - this.testedYangModulesToExpectedConflictingName.put( - "config-test-runtime-bean-name-conflict2", + testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-name-conflict", "StateARuntimeMXBean"); - this.testedYangModulesToExpectedConflictingName.put( - "config-test-duplicate-attribute-in-runtime-and-mxbean", - "port"); - } - - private static String getYangModuleName(final String name) { - final int startIndex = 0; - final int endIndex = name.indexOf(".yang"); - return name.substring(startIndex, endIndex); + testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-name-conflict2", + "StateARuntimeMXBean"); + testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute-in-runtime-and-mxbean", "port"); } - private Module loadYangs(final File testedModule, final String moduleName) - throws Exception { - final List yangISs = new ArrayList<>(); - yangISs.addAll(getStreams("/ietf-inet-types.yang")); - - yangISs.add(new FileInputStream(testedModule)); + private Module loadYangs(final String testedModule, final String moduleName) { + final List yangs = new ArrayList<>(); + yangs.add("/ietf-inet-types.yang"); + yangs.add("/duplicates/" + testedModule + YangConstants.RFC6020_YANG_FILE_EXTENSION); + yangs.addAll(getConfigApiYangs()); - yangISs.addAll(getConfigApiYangInputStreams()); - - this.context = YangParserTestUtils.parseYangStreams(yangISs); - // close ISs - for (final InputStream is : yangISs) { - is.close(); - } - this.namesToModules = YangModelSearchUtils.mapModulesByNames(this.context - .getModules()); + this.context = YangParserTestUtils.parseYangResources(ModuleMXBeanEntryNameConflictTest.class, yangs); + this.namesToModules = YangModelSearchUtils.mapModulesByNames(this.context.getModules()); this.configModule = this.namesToModules.get(ConfigConstants.CONFIG_MODULE); final Module module = this.namesToModules.get(moduleName); - Preconditions.checkNotNull(module, "Cannot get module %s from %s", - moduleName, this.namesToModules.keySet()); + Preconditions.checkNotNull(module, "Cannot get module %s from %s", moduleName, this.namesToModules.keySet()); return module; } + @Ignore + @Test + public void testNameConflicts() { + for (final String moduleName : testedModules) { + final Module testedModule = loadYangs(moduleName, moduleName); + + try { + LOG.debug("Testing {}", moduleName); + ModuleMXBeanEntry.create(testedModule, new HashMap<>(), this.context, + new TypeProviderWrapper(new TypeProviderImpl(this.context)), PACKAGE_NAME); + fail(moduleName + " did not cause a name conflict and should"); + } catch (final NameConflictException e) { + assertEquals(this.testedYangModulesToExpectedConflictingName.get(moduleName), e.getConflictingName()); + } + } + } }