YMS migration to onos-yangtool 1.10
Change-Id: I22ddf23f813840e0afec1e7713a86891f2a52f28
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java
new file mode 100644
index 0000000..bf8d46a
--- /dev/null
+++ b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/DefaultYangSchemaRegistryTest.java
@@ -0,0 +1,677 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yms.app.ysr;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network1.rev20151208.IetfNetwork1Service;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2Service;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangSchemaNode;
+
+import java.io.IOException;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+/**
+ * Unit test case for default schema registry.
+ */
+public class DefaultYangSchemaRegistryTest {
+
+ private static final String SERVICE_NAME_1 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network1.rev20151208.IetfNetwork1Service";
+ private static final String SCHEMA_NAME_1 = "ietf-network1";
+ private static final String EVENT_NAME_1 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network1.rev20151208.ietfnetwork1.IetfNetwork1Event";
+ private static final String INTERFACE_NAME_1 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network1.rev20151208.IetfNetwork1";
+ private static final String OP_PARAM_NAME_1 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network1.rev20151208.IetfNetwork1OpParam";
+
+ private static final String SERVICE_NAME_2 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network2.rev20151208.IetfNetwork2Service";
+ private static final String SCHEMA_NAME_2 = "ietf-network2";
+ private static final String EVENT_NAME_2 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network2.rev20151208.ietfnetwork2.IetfNetwork2Event";
+ private static final String INTERFACE_NAME_2 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network2.rev20151208.IetfNetwork2";
+ private static final String OP_PARAM_NAME_2 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network2.rev20151208.IetfNetwork2OpParam";
+
+ private static final String SERVICE_NAME_3 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network3.rev20151208.IetfNetwork3Service";
+ private static final String SCHEMA_NAME_3 = "ietf-network3";
+ private static final String EVENT_NAME_3 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network3.rev20151208.ietfnetwork3.IetfNetwork3Event";
+ private static final String INTERFACE_NAME_3 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network3.rev20151208.IetfNetwork3";
+ private static final String OP_PARAM_NAME_3 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network3.rev20151208.IetfNetwork3OpParam";
+
+ private static final String SCHEMA_NAME_4_14 = "ietf-network4@2014-00-08";
+ private static final String SCHEMA_NAME_4_15 = "ietf-network4@2015-00-08";
+ private static final String SCHEMA_NAME_4_16 = "ietf-network4@2016-00-08";
+ private static final String SCHEMA_NAME_4_17 = "ietf-network4@2017-00-08";
+ private static final String SCHEMA_NAME_4 = "ietf-network4";
+ private static final String SERVICE_NAME_REV_14 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20141208.IetfNetwork4Service";
+ private static final String EVENT_NAME_REV_14 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20141208.ietfnetwork4.IetfNetwork4Event";
+ private static final String INTERFACE_NAME_REV_14 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20141208.IetfNetwork4";
+ private static final String OP_PARAM_NAME_REV_14 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20141208.IetfNetwork4OpParam";
+
+ private static final String SERVICE_NAME_REV_15 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20151208.IetfNetwork4Service";
+ private static final String EVENT_NAME_REV_15 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20151208.ietfnetwork4.IetfNetwork4Event";
+ private static final String INTERFACE_NAME_REV_15 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20151208.IetfNetwork4";
+ private static final String OP_PARAM_NAME_REV_15 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20151208.IetfNetwork4OpParam";
+
+ private static final String SERVICE_NAME_REV_16 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20161208.IetfNetwork4Service";
+
+ private static final String EVENT_NAME_REV_16 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20161208.ietfnetwork4.IetfNetwork4Event";
+ private static final String INTERFACE_NAME_REV_16 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20161208.IetfNetwork4";
+ private static final String OP_PARAM_NAME_REV_16 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20161208.IetfNetwork4OpParam";
+
+ private static final String SERVICE_NAME_REV_17 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20171208.IetfNetwork4Service";
+ private static final String EVENT_NAME_REV_17 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20171208.ietfnetwork4.IetfNetwork4Event";
+ private static final String INTERFACE_NAME_REV_17 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20171208.IetfNetwork4";
+ private static final String OP_PARAM_NAME_REV_17 =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.rev20171208.IetfNetwork4OpParam";
+
+ private static final String SERVICE_NAME_NO_REV =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.IetfNetwork4Service";
+ private static final String EVENT_NAME_NO_REV =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.ietfnetwork4.IetfNetwork4Event";
+ private static final String INTERFACE_NAME_NO_REV =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.IetfNetwork4";
+ private static final String OP_PARAM_NAME_NO_REV =
+ "org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf" +
+ ".network4.IetfNetwork4OpParam";
+
+ private static final String DATE = "2014-00-08";
+ private static final String SCHEMA_NAME_WITH_DATE =
+ "ietf-network4@2014-00-08";
+
+ private static final String UN_REG_SCHEMA_NAME = "ietf-routing";
+ private static final String UN_REG_INTERFACE_NAME = "IetfRouting";
+ private static final String UN_REG_OP_PARAM_NAME = "IetfRoutingOpParam";
+ private static final String UN_REG_SERVICE_NAME = "IetfRoutingService";
+ private static final String UN_REG_EVENT_NAME = "IetfRoutingEvent";
+
+ private final TestYangSchemaNodeProvider testYangSchemaNodeProvider =
+ new TestYangSchemaNodeProvider();
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ /**
+ * Unit test case in which schema node should be present.
+ *
+ * @throws IOException when fails to do IO operation
+ */
+ @Test
+ public void testForGetSchemaNode()
+ throws IOException {
+
+ testYangSchemaNodeProvider.processSchemaRegistry(null);
+
+ DefaultYangSchemaRegistry registry =
+ testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
+
+ YangSchemaNode yangNode =
+ registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1);
+ assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1);
+ assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_1);
+ assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_1);
+ assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1);
+ assertThat(true, is(SCHEMA_NAME_1.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ Object object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_1);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_1);
+ assertThat(true, is(yangNode == null));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_1);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_1);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_1);
+ assertThat(true, is(yangNode == null));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_1);
+ assertThat(true, is(yangNode == null));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+
+ //With second service.
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2);
+ assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2);
+ assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_2);
+ assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_2);
+ assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2);
+ assertThat(true, is(SCHEMA_NAME_2.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_2);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_2);
+ assertThat(true, is(yangNode == null));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_2);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_2);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_2);
+ assertThat(true, is(yangNode == null));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_2);
+ assertThat(true, is(yangNode == null));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+
+ //With third service.
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3);
+ assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3);
+ assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_3);
+ assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_3);
+ assertThat(true, is(SCHEMA_NAME_3.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_3);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_3);
+ assertThat(true, is(yangNode == null));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_3);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_3);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_3);
+ assertThat(true, is(yangNode == null));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_3);
+ assertThat(true, is(yangNode == null));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ }
+
+ /**
+ * Unit test case in which schema node should not be present.
+ *
+ * @throws IOException when fails to do IO operation
+ */
+ @Test
+ public void testForDoNotGetSchemaNode()
+ throws IOException {
+
+ DefaultYangSchemaRegistry registry =
+ testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
+
+ // here all nodes should be null as we have not done any registration
+ // for this application.
+ YangSchemaNode yangNode =
+ registry.getYangSchemaNodeUsingAppName(UN_REG_SERVICE_NAME);
+ assertThat(true, is(yangNode == null));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(UN_REG_SCHEMA_NAME);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ UN_REG_INTERFACE_NAME);
+ assertThat(true, is(yangNode == null));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ UN_REG_OP_PARAM_NAME);
+ assertThat(true, is(yangNode == null));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(
+ UN_REG_EVENT_NAME);
+ assertThat(true, is(yangNode == null));
+
+ //As we have not registered an application this object should be null.
+ Object object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ }
+
+ /**
+ * Unit test case in which schema node should be present with multi
+ * revisions.
+ *
+ * @throws IOException when fails to do IO operation
+ */
+ @Test
+ public void testForGetSchemaNodeWhenNoRevision()
+ throws IOException {
+
+ testYangSchemaNodeProvider.processSchemaRegistry(null);
+ DefaultYangSchemaRegistry registry =
+ testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
+
+ //Service with rev.
+ YangSchemaNode yangNode =
+ registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_REV_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_REV_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(
+ EVENT_NAME_REV_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ Object object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
+ assertThat(true, is(yangNode == null));
+
+ //Here the yangNode should be the node which does not have revision.
+ // asset should pass with false.
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
+ assertThat(true, is(((YangNode) yangNode).getRevision() == null));
+
+ //Service no revision.
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_NO_REV);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_NO_REV);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
+ assertThat(true, is(yangNode == null));
+
+ //Here the yangNode should be the node which have different revision.
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
+ assertThat(true, is(yangNode != null));
+ assertThat(true, is(((YangNode) yangNode).getRevision() != null));
+ }
+
+ /**
+ * Unit test case in which schema node should be present with multi
+ * revisions.
+ *
+ * @throws IOException when fails to do IO operation
+ */
+ @Test
+ public void testForGetSchemaNodeWhenMultiRevision()
+ throws IOException {
+
+ testYangSchemaNodeProvider.processSchemaRegistry(null);
+ DefaultYangSchemaRegistry registry =
+ testYangSchemaNodeProvider.getDefaultYangSchemaRegistry();
+
+ //Service with rev.
+ YangSchemaNode yangNode =
+ registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_REV_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_REV_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(
+ EVENT_NAME_REV_15);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ Object object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_15);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_15);
+ assertThat(true, is(yangNode == null));
+
+ //Here the yangNode should be the node which does not have revision.
+ // asset should pass with false.
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
+ assertThat(true, is(((YangNode) yangNode).getRevision() == null));
+
+ //Service with different revision.
+ yangNode = registry
+ .getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_16);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_REV_16);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_REV_16);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_REV_16);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_16);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_16);
+ assertThat(true, is(yangNode == null));
+
+ //Here the yangNode should be the node which have different revision.
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
+ assertThat(true, is(((YangNode) yangNode).getRevision() == null));
+
+ //Service with different revision.
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_17);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_REV_17);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_REV_17);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(
+ EVENT_NAME_REV_17);
+ assertThat(true, is(yangNode == null));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_17);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_17);
+ assertThat(true, is(yangNode == null));
+
+ //Here the yangNode should be the node which have different revision.
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
+ assertThat(true, is(((YangNode) yangNode).getRevision() == null));
+
+ //Service no revision.
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_NO_REV);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_NO_REV);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(EVENT_NAME_NO_REV);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_NO_REV);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_NO_REV);
+ assertThat(true, is(yangNode == null));
+
+ //Here the yangNode should be the node which have different revision.
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4);
+ assertThat(true, is(yangNode != null));
+ assertThat(true, is(((YangNode) yangNode).getRevision() != null));
+
+ //Service with different revision.
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_4_14);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeInterfaceFileName(
+ INTERFACE_NAME_REV_14);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode =
+ registry.getYangSchemaNodeUsingGeneratedRootNodeOpPramFileName(
+ OP_PARAM_NAME_REV_14);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ yangNode = registry.getRootYangSchemaNodeForNotification(
+ EVENT_NAME_REV_14);
+ assertThat(true, is(SCHEMA_NAME_4.equals(yangNode.getName())));
+
+ //As we have not registered an application this object should be null.
+ object = registry.getRegisteredApplication(yangNode);
+ assertThat(true, is(object == null));
+ testYangSchemaNodeProvider.unregisterService(SERVICE_NAME_REV_14);
+
+ yangNode = registry.getYangSchemaNodeUsingAppName(SERVICE_NAME_REV_14);
+ assertThat(true, is(yangNode == null));
+ }
+
+ /**
+ * Unit test case should generate exceptions.
+ */
+ @Test
+ public void testRegistration() {
+ thrown.expect(RuntimeException.class);
+ testYangSchemaNodeProvider.processSchemaRegistry(null);
+ testYangSchemaNodeProvider.processRegistrationOfApp();
+ }
+
+ /**
+ * Unit test case should not generate any exceptions and should
+ * return specific revision node.
+ */
+ @Test
+ public void testGetWithSpecificRevision() {
+ testYangSchemaNodeProvider.processSchemaRegistry(null);
+ YangSchemaNode schemaNode = testYangSchemaNodeProvider
+ .getDefaultYangSchemaRegistry()
+ .getYangSchemaNodeUsingSchemaName(SCHEMA_NAME_WITH_DATE);
+
+ assertThat(true, is(schemaNode.getName().equals(SCHEMA_NAME_4)));
+ String date = testYangSchemaNodeProvider
+ .getDefaultYangSchemaRegistry()
+ .getDateInStringFormat(schemaNode);
+ assertThat(true, is(date.equals(DATE)));
+ }
+
+ /**
+ * Unit test case should not generate any exceptions
+ * verify notification should be checked for registration.
+ */
+ @Test
+ public void testNotification() {
+ MockIetfManager manager = new MockIetfManager();
+ testYangSchemaNodeProvider.processSchemaRegistry(manager);
+ boolean isRegWithNotification =
+ testYangSchemaNodeProvider.getDefaultYangSchemaRegistry()
+ .verifyNotificationObject(manager, IetfNetwork1Service.class);
+ assertThat(true, is(isRegWithNotification));
+ isRegWithNotification = testYangSchemaNodeProvider
+ .getDefaultYangSchemaRegistry()
+ .verifyNotificationObject(manager, IetfNetwork2Service.class);
+ assertThat(false, is(isRegWithNotification));
+ //TODO fix with YAB
+// isRegWithNotification = testYangSchemaNodeProvider
+// .getDefaultYangSchemaRegistry()
+// .verifyNotificationObject(new TestManager(), TestService.class);
+// assertThat(false, is(isRegWithNotification));
+ }
+}
\ No newline at end of file
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java
new file mode 100644
index 0000000..1126cdf
--- /dev/null
+++ b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/MockIetfManager.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yms.app.ysr;
+
+import org.onosproject.event.ListenerRegistry;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2OpParam;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.IetfNetwork2Service;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.ietfnetwork2.IetfNetwork2Event;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network2.rev20151208.ietfnetwork2.IetfNetwork2EventListener;
+
+/**
+ * Represent mock implementation for services.
+ */
+public class MockIetfManager
+ extends ListenerRegistry<IetfNetwork2Event, IetfNetwork2EventListener>
+ implements IetfNetwork2Service {
+
+ @Override
+ public IetfNetwork2 getIetfNetwork2(IetfNetwork2OpParam ietfNetwork2) {
+ return null;
+ }
+
+ @Override
+ public void setIetfNetwork2(IetfNetwork2OpParam ietfNetwork2) {
+
+ }
+
+}
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java
new file mode 100644
index 0000000..ef91d85
--- /dev/null
+++ b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ysr/TestYangSchemaNodeProvider.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yms.app.ysr;
+
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network1.rev20151208.IetfNetwork1Service;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangSchemaNode;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.deSerializeDataModel;
+import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
+
+/**
+ * Represents mock bundle context. provides bundle context for YSR to do unit
+ * testing.
+ */
+public class TestYangSchemaNodeProvider {
+
+ private static final String FS = File.separator;
+ private static final String PATH = System.getProperty("user.dir") +
+ FS + "target" + FS + "classes" + FS;
+ private static final String SER_FILE_PATH = "yang" + FS + "resources" +
+ FS + "YangMetaData.ser";
+ private static final String TEMP_FOLDER_PATH = PATH + TEMP;
+ private final DefaultYangSchemaRegistry registry =
+ new DefaultYangSchemaRegistry();
+ private static final String RESOURCE = "src/test/resources";
+ private List<YangNode> nodes = new ArrayList<>();
+
+ /**
+ * Creates an instance of mock bundle context.
+ */
+ public TestYangSchemaNodeProvider() {
+ }
+
+ /**
+ * Process YANG schema node for a application.
+ *
+ * @param appObject application object
+ */
+ public void processSchemaRegistry(Object appObject) {
+ try {
+ Set<YangNode> appNode = deSerializeDataModel(PATH + SER_FILE_PATH);
+ nodes.addAll(appNode);
+ String appName;
+ ClassLoader classLoader = TestYangSchemaNodeProvider.class.getClassLoader();
+ for (YangSchemaNode node : nodes) {
+ appName = registry.getServiceName(node);
+ Class<?> cls;
+ try {
+ cls = classLoader.loadClass(appName);
+ } catch (ClassNotFoundException e) {
+ continue;
+ }
+ registry.processRegistration(cls, RESOURCE, nodes, appObject, true);
+ registry.updateServiceClass(cls);
+ //interface generation.
+ appName = registry.getInterfaceClassName(node);
+ try {
+ cls = classLoader.loadClass(appName);
+ } catch (ClassNotFoundException e) {
+ continue;
+ }
+ registry.processRegistration(cls, RESOURCE,
+ nodes, appObject, true);
+ registry.updateServiceClass(cls);
+ }
+ deleteDirectory(TEMP_FOLDER_PATH);
+ } catch (IOException e) {
+ }
+ }
+
+ /**
+ * Unregisters services.
+ *
+ * @param appName application name
+ */
+ void unregisterService(String appName) {
+ ClassLoader classLoader = TestYangSchemaNodeProvider.class.getClassLoader();
+ try {
+ Class<?> cls = classLoader.loadClass(appName);
+ registry.unRegisterApplication(null, cls);
+ } catch (ClassNotFoundException e) {
+ }
+
+ }
+
+ /**
+ * Returns schema registry.
+ *
+ * @return schema registry
+ */
+ public DefaultYangSchemaRegistry getDefaultYangSchemaRegistry() {
+ return registry;
+ }
+
+ /**
+ * Process registration of a service.
+ */
+ void processRegistrationOfApp() {
+ getDefaultYangSchemaRegistry().doPreProcessing(IetfNetwork1Service.class,
+ new MockIetfManager());
+ }
+
+}