Adjust to yangtools-2.0.0 changes
[controller.git] / opendaylight / config / yang-jmx-generator / src / test / java / org / opendaylight / controller / config / yangjmxgenerator / ModuleMXBeanEntryNameConflictTest.java
index 3eec98e8a18f1ad8bdba595b8dbe1da460b3b008..54a980abfa41cfa597e29e4977626151f53eb325 100644 (file)
@@ -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<File, String> testedFilesToYangModules = new HashMap<>();
-    Map<String, String> testedYangModulesToExpectedConflictingName = new HashMap<>();
-
-    @Ignore
-    @Test
-    public void testNameConflicts() throws Exception {
-        prepareSamples();
-        prepareExceptionAssertions();
-
-        for (final Map.Entry<File, String> 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<String> 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<String, String> 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<InputStream> 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<String> 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());
+            }
+        }
+    }
 }