X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2FModuleMXBeanEntryNameConflictTest.java;h=54a980abfa41cfa597e29e4977626151f53eb325;hb=f43b01b81319959b1907e3e04537f5169e7f33d8;hp=cac0ac705f216cc0838e86d841b9d2e25bc2f769;hpb=9b3246b5f5ed82559bf0c75141731dc3376125f9;p=controller.git 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 cac0ac705f..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 @@ -10,132 +10,87 @@ package org.opendaylight.controller.config.yangjmxgenerator; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; - +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.yangtools.sal.binding.yang.types.TypeProviderImpl; -import org.opendaylight.yangtools.yang.common.QName; +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.parser.impl.YangParserImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Preconditions; - public class ModuleMXBeanEntryNameConflictTest extends AbstractYangTest { - private static final Logger logger = 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 (Map.Entry currentTestEntry : testedFilesToYangModules - .entrySet()) { - final String moduleName = currentTestEntry.getValue(); - final File yangFile = currentTestEntry.getKey(); - Module testedModule = loadYangs(yangFile, moduleName); - - try { - logger.debug("Testing {}", yangFile); - ModuleMXBeanEntry.create(testedModule, - new HashMap(), context, - new TypeProviderWrapper(new TypeProviderImpl(context)), - PACKAGE_NAME); - fail(yangFile.toString() - + " did not cause a name conflict and should"); - } catch (NameConflictException e) { - assertEquals( - testedYangModulesToExpectedConflictingName - .get(moduleName), - e.getConflictingName()); - } - } - } - - private void prepareSamples() { - File first = new File(getClass().getResource( - "/duplicates/config-test-duplicate-attribute-in-list.yang") - .getFile()); - File dir = first.getParentFile(); - for (File testYang : dir.listFiles()) { - String moduleName = getYangModuleName(testYang.getName()); - testedFilesToYangModules.put(testYang, moduleName); - } - } - - private void prepareExceptionAssertions() { - 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", + 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"); + testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-list-name-conflict2", "StateARuntimeMXBean"); - testedYangModulesToExpectedConflictingName.put( - "config-test-runtime-bean-list-name-conflict2", + testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-name-conflict", "StateARuntimeMXBean"); - testedYangModulesToExpectedConflictingName - .put("config-test-runtime-bean-name-conflict", "StateARuntimeMXBean"); - testedYangModulesToExpectedConflictingName.put( - "config-test-runtime-bean-name-conflict2", + testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-name-conflict2", "StateARuntimeMXBean"); - testedYangModulesToExpectedConflictingName.put( - "config-test-duplicate-attribute-in-runtime-and-mxbean", - "port"); + testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute-in-runtime-and-mxbean", "port"); } - private String getYangModuleName(String name) { - int startIndex = 0; - int endIndex = name.indexOf(".yang"); - return name.substring(startIndex, endIndex); + 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()); + + 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()); + return module; } - private Module loadYangs(File testedModule, String moduleName) - throws Exception { - List yangISs = new ArrayList<>(); - yangISs.addAll(getStreams("/ietf-inet-types.yang")); - - yangISs.add(new FileInputStream(testedModule)); - - yangISs.addAll(getConfigApiYangInputStreams()); + @Ignore + @Test + public void testNameConflicts() { + for (final String moduleName : testedModules) { + final Module testedModule = loadYangs(moduleName, moduleName); - YangParserImpl parser = new YangParserImpl(); - Set modulesToBuild = parser.parseYangModelsFromStreams(yangISs); - // close ISs - for (InputStream is : yangISs) { - is.close(); + 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()); + } } - context = parser.resolveSchemaContext(modulesToBuild); - namesToModules = YangModelSearchUtils.mapModulesByNames(context - .getModules()); - configModule = namesToModules.get(ConfigConstants.CONFIG_MODULE); - final Module module = namesToModules.get(moduleName); - Preconditions.checkNotNull(module, "Cannot get module %s from %s", - moduleName, namesToModules.keySet()); - return module; } - }