Remove TestUtils.parseYangSources 13/97713/5
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 2 Oct 2021 17:47:51 +0000 (19:47 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 5 Oct 2021 08:34:33 +0000 (10:34 +0200)
We have loadModules() used more widely, eliminate code duplication. Also
cleanup callers with better assertions.

Change-Id: Iad5a6121dba2c0ea7008a948923c23ce33ad548a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentTest.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentToExtensionTest.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug1412Test.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug1413Test.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug3859Test.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug394Test.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7865Test.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7879Test.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug8831Test.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/TestUtils.java

index 50f3e666e7288f7c77ffb1b8c65a15ead93eca30..553c8a1c4573d36043b52da70b7927c90d824eeb 100644 (file)
@@ -13,6 +13,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Collection;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
@@ -24,12 +25,12 @@ import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.opendaylight.yangtools.yang.model.api.type.TypeDefinitions;
 
@@ -45,13 +46,17 @@ public class AugmentTest {
     private static final QName Q1 = QName.create(BAR, "ifEntry");
     private static final QName Q2 = QName.create(BAZ, "augment-holder");
 
-    @Test
-    public void testAugmentParsing() throws Exception {
-        final SchemaContext context = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment")
-            .toURI());
+    private static EffectiveModelContext AUGMENT_IN_AUGMENT;
+
+    @BeforeClass
+    public static void beforeClass() throws Exception {
+        AUGMENT_IN_AUGMENT = TestUtils.loadModules("/augment-test/augment-in-augment");
+    }
 
+    @Test
+    public void testAugmentParsing() {
         // foo.yang
-        final Module module1 = context.findModules("foo").iterator().next();
+        final Module module1 = AUGMENT_IN_AUGMENT.findModules("foo").iterator().next();
         Collection<? extends AugmentationSchemaNode> augmentations = module1.getAugmentations();
         assertEquals(1, augmentations.size());
         final AugmentationSchemaNode augment = augmentations.iterator().next();
@@ -98,7 +103,7 @@ public class AugmentTest {
         assertFalse(odl.isAugmenting());
 
         // baz.yang
-        final Module module3 = context.findModules("baz").iterator().next();
+        final Module module3 = AUGMENT_IN_AUGMENT.findModules("baz").iterator().next();
         augmentations = module3.getAugmentations();
         assertEquals(3, augmentations.size());
         AugmentationSchemaNode augment1 = null;
@@ -134,10 +139,8 @@ public class AugmentTest {
     }
 
     @Test
-    public void testAugmentResolving() throws Exception {
-        final SchemaContext context = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment")
-            .toURI());
-        final Module module2 = context.findModules("bar").iterator().next();
+    public void testAugmentResolving() {
+        final Module module2 = AUGMENT_IN_AUGMENT.findModules("bar").iterator().next();
         final ContainerSchemaNode interfaces = (ContainerSchemaNode) module2.getDataChildByName(QName.create(
                 module2.getQNameModule(), "interfaces"));
         final ListSchemaNode ifEntry = (ListSchemaNode) interfaces.getDataChildByName(QName.create(
@@ -179,10 +182,8 @@ public class AugmentTest {
     }
 
     @Test
-    public void testAugmentedChoice() throws Exception {
-        final SchemaContext context = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-augment")
-            .toURI());
-        final Module module2 = context.findModules("bar").iterator().next();
+    public void testAugmentedChoice() {
+        final Module module2 = AUGMENT_IN_AUGMENT.findModules("bar").iterator().next();
         final ContainerSchemaNode interfaces = (ContainerSchemaNode) module2.getDataChildByName(QName.create(
                 module2.getQNameModule(), "interfaces"));
         final ListSchemaNode ifEntry = (ListSchemaNode) interfaces.getDataChildByName(QName.create(
@@ -254,7 +255,7 @@ public class AugmentTest {
 
     @Test
     public void testAugmentRpc() throws Exception {
-        final SchemaContext context = TestUtils.loadModules(getClass().getResource("/augment-test/rpc").toURI());
+        final EffectiveModelContext context = TestUtils.loadModules("/augment-test/rpc");
         final XMLNamespace NS_BAR = XMLNamespace.of("urn:opendaylight:bar");
         final XMLNamespace NS_FOO = XMLNamespace.of("urn:opendaylight:foo");
         final Revision revision = Revision.of("2013-10-11");
@@ -322,8 +323,7 @@ public class AugmentTest {
 
     @Test
     public void testAugmentInUsesResolving() throws Exception {
-        final SchemaContext context = TestUtils.loadModules(getClass().getResource("/augment-test/augment-in-uses")
-            .toURI());
+        final EffectiveModelContext context = TestUtils.loadModules("/augment-test/augment-in-uses");
         assertEquals(1, context.getModules().size());
 
         final Module test = context.getModules().iterator().next();
index 154c297a0c2cb9ad2b51a2f80f3b8e06e25accce..2f45aae367003aef36f00b28d7256ca3eab72e0f 100644 (file)
@@ -7,6 +7,10 @@
  */
 package org.opendaylight.yangtools.yang.stmt;
 
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.startsWith;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertThrows;
 import static org.junit.Assert.assertTrue;
 
 import org.junit.Test;
@@ -14,16 +18,26 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.UsesNode;
+import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException;
 
 public class AugmentToExtensionTest {
-    private SchemaContext context;
-
-    @Test(expected = SomeModifiersUnresolvedException.class)
+    @Test
     public void testIncorrectPath() throws Exception {
-        context = TestUtils.loadModules(getClass().getResource("/augment-to-extension-test/incorrect-path").toURI());
+        final var ex = assertThrows(SomeModifiersUnresolvedException.class,
+            () -> TestUtils.loadModules("/augment-to-extension-test/incorrect-path"));
+        final var cause = ex.getCause();
+
+        // FIXME: this should not be here
+        assertThat(cause, instanceOf(InferenceException.class));
+        assertThat(cause.getMessage(), startsWith("Yang model processing phase EFFECTIVE_MODEL failed [at "));
+
+        final var firstCause = cause.getCause();
+        assertThat(firstCause, instanceOf(InferenceException.class));
+        assertThat(firstCause.getMessage(), startsWith("Augment target "
+            + "'Descendant{qnames=[(uri:augment-module?revision=2014-10-07)my-extension-name-a, input]}'"
+            + " not found [at "));
     }
 
     /*
@@ -31,11 +45,9 @@ public class AugmentToExtensionTest {
      */
     @Test
     public void testCorrectPathIntoUnsupportedTarget() throws Exception {
-
-        context = TestUtils.loadModules(getClass().getResource(
-                "/augment-to-extension-test/correct-path-into-unsupported-target").toURI());
-
-        final Module devicesModule = context.findModules("augment-module").iterator().next();
+        final Module devicesModule =
+            TestUtils.loadModules("/augment-to-extension-test/correct-path-into-unsupported-target")
+            .findModules("augment-module").iterator().next();
         final ContainerSchemaNode devicesContainer = (ContainerSchemaNode) devicesModule.getDataChildByName(
             QName.create(devicesModule.getQNameModule(), "my-container"));
         for (final UsesNode usesNode : devicesContainer.getUses()) {
@@ -45,9 +57,8 @@ public class AugmentToExtensionTest {
 
     @Test
     public void testCorrectAugment() throws Exception {
-        context = TestUtils.loadModules(getClass().getResource("/augment-to-extension-test/correct-augment").toURI());
-
-        final Module devicesModule = context.findModules("augment-module").iterator().next();
+        final Module devicesModule = TestUtils.loadModules("/augment-to-extension-test/correct-augment")
+            .findModules("augment-module").iterator().next();
 
         final ContainerSchemaNode devicesContainer = (ContainerSchemaNode) devicesModule.getDataChildByName(QName
                 .create(devicesModule.getQNameModule(), "my-container"));
index 5b840723775d703d1b8cd1e56adb61c28bea2a57..6a872ae0c2a1a3961175371b44db34860a0480b2 100644 (file)
@@ -31,8 +31,7 @@ public class Bug1412Test {
 
     @Test
     public void test() throws Exception {
-        final Module bug1412 = TestUtils.loadModules(getClass().getResource("/bugs/bug1412").toURI())
-            .findModules("bug1412").iterator().next();
+        final Module bug1412 = TestUtils.loadModules("/bugs/bug1412").findModules("bug1412").iterator().next();
 
         final ContainerSchemaNode node = (ContainerSchemaNode) bug1412.getDataChildByName(QName.create(
                 bug1412.getQNameModule(), "node"));
index cedae47e2323b7440add40c7c6c4561c2f364319..2318eb4c5ef7542659472af55ff7e294ad80a41a 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.stmt;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import java.util.Collection;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
 
@@ -24,9 +23,8 @@ import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
 public class Bug1413Test {
     @Test
     public void test() throws Exception {
-        Collection<? extends ExtensionDefinition> extensions = TestUtils.loadModules(
-            getClass().getResource("/bugs/bug1413").toURI())
-                .findModules("bug1413").iterator().next().getExtensionSchemaNodes();
+        var extensions = TestUtils.loadModules("/bugs/bug1413").findModules("bug1413").iterator().next()
+            .getExtensionSchemaNodes();
         assertEquals(1, extensions.size());
 
         ExtensionDefinition info = extensions.iterator().next();
index fc5bb7a8c3f41775c3ade2c51480ae11446e33dd..d42755970ed37e885db64a85f73aba4a8c8c81d4 100644 (file)
@@ -14,7 +14,6 @@ import org.junit.Test;
 public class Bug3859Test {
     @Test
     public void test() throws Exception {
-        assertEquals(1, TestUtils.loadModules(getClass().getResource("/bugs/bug3859").toURI())
-            .findModules("reference-in-unknown").size());
+        assertEquals(1, TestUtils.loadModules("/bugs/bug3859").findModules("reference-in-unknown").size());
     }
 }
index c5ea15e7238e98c0f2e959a70d033b2583766e76..ea62d12be89b009c9ef3b35d87c4835797c5f855 100644 (file)
@@ -13,6 +13,7 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Set;
 import java.util.stream.Collectors;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -28,7 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.UnrecognizedStatement;
 public class Bug394Test {
     @Test
     public void testParseList() throws Exception {
-        final SchemaContext context = TestUtils.loadModules(getClass().getResource("/bugs/bug394-retest").toURI());
+        final SchemaContext context = TestUtils.loadModules("/bugs/bug394-retest");
         final Module bug394 = context.findModules("bug394").iterator().next();
         final Module bug394_ext = context.findModules("bug394-ext").iterator().next();
 
@@ -40,8 +41,9 @@ public class Bug394Test {
             .declaredSubstatements(UnrecognizedStatement.class);
         assertEquals(2, nodes.size());
 
-        final Collection<QName> extensions = bug394_ext.getExtensionSchemaNodes()
-            .stream().map(ExtensionDefinition::getQName).collect(Collectors.toUnmodifiableList());
+        final Set<QName> extensions = bug394_ext.getExtensionSchemaNodes().stream()
+            .map(ExtensionDefinition::getQName)
+            .collect(Collectors.toUnmodifiableSet());
         assertEquals(3, extensions.size());
 
         final Iterator<? extends UnrecognizedStatement> it = nodes.iterator();
index 284b67365a06507fe472d523dd819cb8b015c4ca..9ed0e4e02eb60ea746afad7b1532021846258b2c 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.stmt;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Collection;
@@ -16,17 +15,13 @@ import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnrecognizedStatement;
 
 public class Bug7865Test {
-    private static final String NS = "foo";
-
     @Test
     public void test() throws Exception {
-        final SchemaContext context = TestUtils.parseYangSources("/bugs/bug7865");
-        assertNotNull(context);
-
+        final EffectiveModelContext context = TestUtils.loadModules("/bugs/bug7865");
         final DataSchemaNode root = context.getDataChildByName(foo("root"));
         assertTrue(root instanceof ContainerSchemaNode);
         final Collection<? extends UnrecognizedStatement> unknownSchemaNodes = ((ContainerSchemaNode) root)
@@ -47,6 +42,6 @@ public class Bug7865Test {
     }
 
     private static QName foo(final String localName) {
-        return QName.create(NS, localName);
+        return QName.create("foo", localName);
     }
 }
index cbd2bf8afc758ede45b9c26483a6a82d5995414c..98d187645d961c785c7da6ca8655fb5a9bd5c8d9 100644 (file)
@@ -25,7 +25,7 @@ public class Bug7879Test {
 
     @Test
     public void test() throws Exception {
-        final ModuleEffectiveStatement module = TestUtils.parseYangSources("/bugs/bug7879")
+        final ModuleEffectiveStatement module = TestUtils.loadModules("/bugs/bug7879")
             .getModuleStatement(QName.create(NS, "my-model"));
 
         final SchemaTreeEffectiveStatement<?> container = module.findSchemaTreeNode(
index e770d9686ceab1e132dcc7a0cee1d450e3089a66..fd513b5b181955061ec26129e3ef2513ecad756e 100644 (file)
@@ -7,40 +7,37 @@
  */
 package org.opendaylight.yangtools.yang.stmt;
 
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.assertThrows;
 
 import org.junit.Test;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException;
+import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 public class Bug8831Test {
     @Test
     public void test() throws Exception {
-        final SchemaContext context = TestUtils.parseYangSources("/bugs/bug8831/valid");
-        assertNotNull(context);
+        assertNotNull(TestUtils.loadModules("/bugs/bug8831/valid"));
     }
 
     @Test
-    public void invalidModelsTest() throws Exception {
-        try {
-            TestUtils.parseYangSource("/bugs/bug8831/invalid/inv-model.yang");
-            fail("Test should fails due to invalid yang 1.1 model");
-        } catch (final SomeModifiersUnresolvedException e) {
-            assertTrue(
-                    e.getCause().getMessage().contains("has default value 'any' marked with an if-feature statement"));
-        }
+    public void invalidModelsTest() {
+        final var ex = assertThrows(SomeModifiersUnresolvedException.class,
+            () -> TestUtils.parseYangSource("/bugs/bug8831/invalid/inv-model.yang"));
+        final var cause = ex.getCause();
+        assertThat(cause, instanceOf(SourceException.class));
+        assertThat(cause.getMessage(), containsString("has default value 'any' marked with an if-feature statement"));
     }
 
     @Test
-    public void invalidModelsTest2() throws Exception {
-        try {
-            TestUtils.parseYangSource("/bugs/bug8831/invalid/inv-model2.yang");
-            fail("Test should fails due to invalid yang 1.1 model");
-        } catch (final SomeModifiersUnresolvedException e) {
-            assertTrue(
-                    e.getCause().getMessage().contains("has default value 'any' marked with an if-feature statement"));
-        }
+    public void invalidModelsTest2() {
+        final var ex = assertThrows(SomeModifiersUnresolvedException.class,
+            () -> TestUtils.parseYangSource("/bugs/bug8831/invalid/inv-model2.yang"));
+        final var cause = ex.getCause();
+        assertThat(cause, instanceOf(SourceException.class));
+        assertThat(cause.getMessage(), containsString("has default value 'any' marked with an if-feature statement"));
     }
 }
index e9490ac20c9f13cd9a06745b30bdbcd37b10df60..ecf521376f4d617d48c2a118516f0e15efd6c834 100644 (file)
@@ -491,7 +491,7 @@ public class GroupingTest extends AbstractModelTest {
 
     @Test
     public void testAddedByUsesLeafTypeQName() throws Exception {
-        final EffectiveModelContext loadModules = TestUtils.parseYangSources("/added-by-uses-leaf-test");
+        final EffectiveModelContext loadModules = TestUtils.loadModules("/added-by-uses-leaf-test");
         assertEquals(2, loadModules.getModules().size());
 
         final Module foo = Iterables.getOnlyElement(loadModules.findModules("foo"));
index 98bbe2ec7e870664baf8a056f3fbc04aa48b45e4..475836996dceade11fffd11b627c71f94593f2e3 100644 (file)
@@ -195,16 +195,6 @@ public final class TestUtils {
         return parseYangSources(files.toArray(new File[files.size()]));
     }
 
-    public static EffectiveModelContext parseYangSources(final String yangSourcesDirectoryPath)
-            throws ReactorException, URISyntaxException, IOException, YangSyntaxErrorException {
-
-        URL resourceDir = StmtTestUtils.class.getResource(yangSourcesDirectoryPath);
-        File testSourcesDir = new File(resourceDir.toURI());
-
-        return parseYangSources(testSourcesDir.listFiles(
-            (dir, name) -> name.endsWith(YangConstants.RFC6020_YANG_FILE_EXTENSION)));
-    }
-
     public static EffectiveModelContext parseYangSource(final String yangSourceFilePath)
             throws ReactorException, URISyntaxException, IOException, YangSyntaxErrorException {