[ONOS-5149] YPM Implementation
Change-Id: I9814d28cfe5e4278019fa565ea6d16bd8778b4c8
diff --git a/apps/yms/app/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java b/apps/yms/app/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java
new file mode 100644
index 0000000..bec2eef
--- /dev/null
+++ b/apps/yms/app/src/test/java/org/onosproject/yms/app/ypm/DefaultYpmNodeTest.java
@@ -0,0 +1,193 @@
+/*
+ * 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.ypm;
+
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.nullValue;
+
+import org.onosproject.yms.ypm.YpmContext;
+import org.onosproject.yms.ypm.DefaultYpmNode;
+
+/**
+ * Unit tests for DefaultYpmNode class.
+ */
+public class DefaultYpmNodeTest {
+ private final String logicalName = "logicalYpmNode";
+ private final String moduleName1 = "portPairModule1";
+ private final String moduleName2 = "portPairModule2";
+ private final String xNodeName = "x";
+ private final String yNodeName = "y";
+ private final String zNodeName = "z";
+ private final String x1NodeName = "x1";
+ private final String x2NodeName = "x2";
+ private final String y1NodeName = "y1";
+ private final String y2NodeName = "y2";
+ private final String z1NodeName = "z1";
+ private final String z2NodeName = "z2";
+
+ /**
+ * Constructs ypm tree with single module.
+ *
+ * @return ypm tree root node
+ */
+ private YpmContext constructYpmTreeSingleModule() {
+ // Create logical node
+ DefaultYpmNode rootNode = new DefaultYpmNode(logicalName);
+ // Create module node with moduleName1
+ rootNode.addChild(moduleName1); // child to logical node
+ YpmContext moduleNode = rootNode.getChild(moduleName1);
+ moduleNode.addChild(xNodeName); // child to module node
+ moduleNode.addChild(yNodeName); // sibling node to child node "x"
+ YpmContext xNode = moduleNode.getChild("x");
+ xNode.addSibling(zNodeName); // sibling node to child node "x"
+ xNode.addChild(x1NodeName); // child to node x
+ xNode.addChild(x2NodeName); // child to node x
+ YpmContext yNode = moduleNode.getChild(yNodeName);
+ yNode.addChild(y1NodeName); // child to node y
+ yNode.addChild(y2NodeName); // child to node y
+ YpmContext zNode = moduleNode.getChild(zNodeName);
+ zNode.addChild(z1NodeName); // child to node z
+ zNode.addChild(z2NodeName); // child to node z
+ return rootNode;
+ }
+
+ /**
+ * Constructs ypm tree with multi module.
+ *
+ * @return ypm tree root node
+ */
+ private YpmContext constructYpmTreeMultiModule(DefaultYpmNode rootNode) {
+ rootNode.addChild(moduleName2); // child to logical node
+ YpmContext moduleNode = rootNode.getChild(moduleName2);
+ moduleNode.addChild(xNodeName); // child to module node
+ moduleNode.addChild(yNodeName); // sibling node to child node "x"
+ YpmContext xNode = moduleNode.getChild("x");
+ xNode.addSibling(zNodeName); // sibling node to child node "x"
+ xNode.addChild(x1NodeName); // child to node x
+ xNode.addChild(x2NodeName); // child to node x
+ YpmContext yNode = moduleNode.getChild(yNodeName);
+ yNode.addChild(y1NodeName); // child to node y
+ yNode.addChild(y2NodeName); // child to node y
+ YpmContext zNode = moduleNode.getChild(zNodeName);
+ zNode.addChild(z1NodeName); // child to node z
+ zNode.addChild(z2NodeName); // child to node z
+ return rootNode;
+ }
+
+ /**
+ * Checks ypm tree single module construction.
+ */
+ @Test
+ public void testYpmTreeSingleModuleConstruction() {
+ DefaultYpmNode rootNode = (DefaultYpmNode) constructYpmTreeSingleModule();
+ // Check one by one node
+ String name = rootNode.getName();
+ assertThat(name, is(logicalName));
+ YpmContext moduleNode = rootNode.getChild(moduleName1);
+ assertThat(moduleNode.getName(), is(moduleName1));
+ YpmContext ypmNode = moduleNode.getChild(xNodeName);
+ assertThat(ypmNode.getName(), is(xNodeName));
+ // Check sibling by using getNextSibling();
+ ypmNode = ypmNode.getNextSibling();
+ assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling
+ ypmNode = ypmNode.getNextSibling();
+ assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling
+ ypmNode = ypmNode.getNextSibling();
+ assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null
+ // Check sibling by using getPreviousSibling()
+ ypmNode = moduleNode.getChild(zNodeName);
+ assertThat(ypmNode.getName(), is(zNodeName));
+ ypmNode = ypmNode.getPreviousSibling();
+ assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling
+ ypmNode = ypmNode.getPreviousSibling();
+ assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling
+ ypmNode = ypmNode.getPreviousSibling();
+ assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null
+ // Checks the child x1 and x2
+ ypmNode = moduleNode.getChild(xNodeName);
+ ypmNode = ypmNode.getChild(x1NodeName);
+ assertThat(ypmNode.getName(), is(x1NodeName));
+ ypmNode = ypmNode.getSibling(x2NodeName);
+ assertThat(ypmNode.getName(), is(x2NodeName));
+ // Checks the child y1 and y2
+ ypmNode = moduleNode.getChild(yNodeName);
+ ypmNode = ypmNode.getChild(y1NodeName);
+ assertThat(ypmNode.getName(), is(y1NodeName));
+ ypmNode = ypmNode.getSibling(y2NodeName);
+ assertThat(ypmNode.getName(), is(y2NodeName));
+ // Checks the child z1 and z2
+ ypmNode = moduleNode.getChild(zNodeName);
+ ypmNode = ypmNode.getChild(z1NodeName);
+ assertThat(ypmNode.getName(), is(z1NodeName));
+ ypmNode = ypmNode.getSibling(z2NodeName);
+ assertThat(ypmNode.getName(), is(z2NodeName));
+ }
+
+ /**
+ * Checks ypm tree multiple module construction.
+ */
+ @Test
+ public void testYpmTreeMultiModuleConstruction() {
+ DefaultYpmNode rootNode = (DefaultYpmNode) constructYpmTreeSingleModule();
+ rootNode = (DefaultYpmNode) constructYpmTreeMultiModule(rootNode);
+ // Check one by one node
+ String name = rootNode.getName();
+ assertThat(name, is(logicalName));
+ YpmContext moduleNode = rootNode.getChild(moduleName2);
+ assertThat(moduleNode.getName(), is(moduleName2));
+ YpmContext ypmNode = moduleNode.getChild(xNodeName);
+ assertThat(ypmNode.getName(), is(xNodeName));
+ // Check sibling by using getNextSibling();
+ ypmNode = ypmNode.getNextSibling();
+ assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling
+ ypmNode = ypmNode.getNextSibling();
+ assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling
+ ypmNode = ypmNode.getNextSibling();
+ assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null
+ // Check sibling by using getPreviousSibling()
+ ypmNode = moduleNode.getChild(zNodeName);
+ assertThat(ypmNode.getName(), is(zNodeName));
+ ypmNode = ypmNode.getPreviousSibling();
+ assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling
+ ypmNode = ypmNode.getPreviousSibling();
+ assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling
+ ypmNode = ypmNode.getPreviousSibling();
+ assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null
+ // Checks the child x1 and x2
+ ypmNode = moduleNode.getChild(xNodeName);
+ ypmNode = ypmNode.getChild(x1NodeName);
+ assertThat(ypmNode.getName(), is(x1NodeName));
+ ypmNode = ypmNode.getSibling(x2NodeName);
+ assertThat(ypmNode.getName(), is(x2NodeName));
+ // Checks the child y1 and y2
+ ypmNode = moduleNode.getChild(yNodeName);
+ ypmNode = ypmNode.getChild(y1NodeName);
+ assertThat(ypmNode.getName(), is(y1NodeName));
+ ypmNode = ypmNode.getSibling(y2NodeName);
+ assertThat(ypmNode.getName(), is(y2NodeName));
+ // Checks the child z1 and z2
+ ypmNode = moduleNode.getChild(zNodeName);
+ ypmNode = ypmNode.getChild(z1NodeName);
+ assertThat(ypmNode.getName(), is(z1NodeName));
+ ypmNode = ypmNode.getSibling(z2NodeName);
+ assertThat(ypmNode.getName(), is(z2NodeName));
+ }
+}
diff --git a/apps/yms/app/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java b/apps/yms/app/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java
new file mode 100644
index 0000000..7ba2219
--- /dev/null
+++ b/apps/yms/app/src/test/java/org/onosproject/yms/app/ypm/YpmManagerTest.java
@@ -0,0 +1,494 @@
+/*
+ * 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.ypm;
+
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.nullValue;
+
+import org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
+import org.onosproject.yms.ypm.YpmContext;
+import org.onosproject.yms.ypm.DefaultYpmNode;
+import org.onosproject.yms.app.util.YdtNodeAdapter;
+
+/**
+ * Unit tests for YpmManager class.
+ */
+public class YpmManagerTest {
+ private final String logicalName = "logicalYpmNode";
+ private final String moduleName1 = "portPairModule1";
+ private final String moduleName2 = "portPairModule2";
+ private final String xNodeName = "x";
+ private final String yNodeName = "y";
+ private final String zNodeName = "z";
+ private final String x1NodeName = "x1";
+ private final String x2NodeName = "x2";
+ private final String y1NodeName = "y1";
+ private final String y2NodeName = "y2";
+ private final String y11NodeName = "y11";
+ private final String z1NodeName = "z1";
+ private final String z2NodeName = "z2";
+ private final String z3NodeName = "z3";
+
+ /**
+ * Creates module1 ydt tree.
+ */
+ public YdtNodeAdapter createModule1Tree() throws CloneNotSupportedException {
+ YangSchemaNodeIdentifier tmpNodeIdentifier;
+ YdtNodeAdapter rootNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(logicalName);
+ rootNode.setNodeIdentifier(tmpNodeIdentifier);
+
+ // Create module node with moduleName1
+ YdtNodeAdapter moduleNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(moduleName1);
+ moduleNode.setNodeIdentifier(tmpNodeIdentifier);
+ moduleNode.setParent(rootNode);
+ rootNode.addChild(moduleNode); // child to logical node
+ YdtNodeAdapter xNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(xNodeName);
+ xNode.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter yNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(yNodeName);
+ yNode.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter zNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(zNodeName);
+ zNode.setNodeIdentifier(tmpNodeIdentifier);
+ moduleNode.addChild(xNode); // child to module node
+ xNode.addSibling(yNode);
+ yNode.addSibling(zNode);
+ YdtNodeAdapter x1Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(x1NodeName);
+ x1Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter x2Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(x2NodeName);
+ x2Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter y1Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y1NodeName);
+ y1Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter y2Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y2NodeName);
+ y2Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter z1Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(z1NodeName);
+ z1Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter z2Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(z2NodeName);
+ z2Node.setNodeIdentifier(tmpNodeIdentifier);
+ xNode.addChild(x1Node);
+ x1Node.addSibling(x2Node);
+ yNode.addChild(y1Node);
+ y1Node.addSibling(y2Node);
+ zNode.addChild(z1Node);
+ z1Node.addSibling(z2Node);
+
+ return rootNode;
+ }
+
+ /**
+ * Checks the protocol data added in YpmManger when only single module exists.
+ */
+ @Test
+ public void retrieveAndCheckProtocolDataWhenSingleModule() throws CloneNotSupportedException {
+ YdtNodeAdapter rootNode = createModule1Tree();
+
+ YpmManager ypmManager = new YpmManager();
+ Object metaData = 10;
+ ypmManager.setProtocolData(rootNode, metaData);
+ YpmContext ypmContext = ypmManager.getProtocolData(rootNode);
+ DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext;
+ assertThat(rootYpmNode.getName(), is(logicalName));
+ DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(moduleName1));
+ currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(xNodeName)); // x node
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), nullValue()); // no sibling
+
+ // Check x node leaf's x1 and x2
+ DefaultYpmNode moduleYpmNode = currYpmNode.getParent();
+ assertThat(moduleYpmNode.getName(), is(moduleName1));
+ DefaultYpmNode xYpmNode = (DefaultYpmNode) moduleYpmNode.getFirstChild();
+ assertThat(xYpmNode.getName(), is(xNodeName));
+ assertThat(xYpmNode.getMetaData(), is(metaData));
+ // Check x1 node
+ currYpmNode = (DefaultYpmNode) xYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(x1NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ // Check x2 node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(x2NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+
+ // Check y node leaf's y1 and y2
+ DefaultYpmNode yYpmNode = xYpmNode.getNextSibling();
+ assertThat(yYpmNode.getName(), is(yNodeName));
+ assertThat(yYpmNode.getMetaData(), is(metaData));
+ // Check y1 node
+ currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(y1NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ // Check y2 node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(y2NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+
+ // Check z node leaf's z1 and z2
+ DefaultYpmNode zYpmNode = yYpmNode.getNextSibling();
+ assertThat(zYpmNode.getName(), is(zNodeName));
+ assertThat(zYpmNode.getMetaData(), is(metaData));
+ // Check z1 node
+ currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(z1NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ // Check z2 node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(z2NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ }
+
+ /**
+ * Creates module2 ydt tree. Module1 and Module2 trees are point to same logical root.
+ */
+ public YdtNodeAdapter createModule2Tree() throws CloneNotSupportedException {
+ YangSchemaNodeIdentifier tmpNodeIdentifier;
+ YdtNodeAdapter rootNode = createModule1Tree();
+ YdtNodeAdapter moduleNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(moduleName2);
+ moduleNode.setNodeIdentifier(tmpNodeIdentifier);
+ moduleNode.setParent(rootNode);
+ rootNode.addChild(moduleNode); // child to logical node
+ YdtNodeAdapter xNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(xNodeName);
+ xNode.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter yNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(yNodeName);
+ yNode.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter zNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(zNodeName);
+ zNode.setNodeIdentifier(tmpNodeIdentifier);
+ moduleNode.addChild(xNode); // child to module node
+ xNode.addSibling(yNode);
+ yNode.addSibling(zNode);
+ YdtNodeAdapter x1Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(x1NodeName);
+ x1Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter x2Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(x2NodeName);
+ x2Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter y1Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y1NodeName);
+ y1Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter y2Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y2NodeName);
+ y2Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter z1Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(z1NodeName);
+ z1Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter z2Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(z2NodeName);
+ z2Node.setNodeIdentifier(tmpNodeIdentifier);
+ xNode.addChild(x1Node);
+ x1Node.addSibling(x2Node);
+ yNode.addChild(y1Node);
+ y1Node.addSibling(y2Node);
+ zNode.addChild(z1Node);
+ z1Node.addSibling(z2Node);
+
+ return rootNode;
+ }
+
+ /**
+ * Checks the protocol data added in YpmManger when multiple modules exists.
+ */
+ @Test
+ public void retrieveAndCheckProtocolDataWhenMultipleModule() throws CloneNotSupportedException {
+ YdtNodeAdapter rootNode = createModule2Tree();
+
+ YpmManager ypmManager = new YpmManager();
+ Object metaData = 10;
+ ypmManager.setProtocolData(rootNode, metaData);
+ YpmContext ypmContext = ypmManager.getProtocolData(rootNode);
+ DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext;
+ assertThat(rootYpmNode.getName(), is(logicalName));
+ DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild();
+ currYpmNode = currYpmNode.getNextSibling(); // jump to next module (module2)
+ assertThat(currYpmNode.getName(), is(moduleName2));
+ currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(xNodeName)); // x node
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), notNullValue()); // y or z node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), nullValue()); // no sibling
+
+ // Check x node leaf's x1 and x2
+ DefaultYpmNode moduleYpmNode = currYpmNode.getParent();
+ assertThat(moduleYpmNode.getName(), is(moduleName2));
+ DefaultYpmNode xYpmNode = (DefaultYpmNode) moduleYpmNode.getFirstChild();
+ assertThat(xYpmNode.getName(), is(xNodeName));
+ assertThat(xYpmNode.getMetaData(), is(metaData));
+ // Check x1 node
+ currYpmNode = (DefaultYpmNode) xYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(x1NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ // Check x2 node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(x2NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+
+ // Check y node leaf's y1 and y2
+ DefaultYpmNode yYpmNode = xYpmNode.getNextSibling();
+ assertThat(yYpmNode.getName(), is(yNodeName));
+ assertThat(yYpmNode.getMetaData(), is(metaData));
+ // Check y1 node
+ currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(y1NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ // Check y2 node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(y2NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+
+ // Check z node leaf's z1 and z2
+ DefaultYpmNode zYpmNode = yYpmNode.getNextSibling();
+ assertThat(zYpmNode.getName(), is(zNodeName));
+ assertThat(zYpmNode.getMetaData(), is(metaData));
+ // Check z1 node
+ currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(z1NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ // Check z2 node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(z2NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ }
+
+ /**
+ * Checks the protocol data added in YpmManger, but tests only part of module1 tree.
+ */
+ @Test
+ public void retrieveAndCheckProtocolDataChosenFromPartOfModule1Tree() throws CloneNotSupportedException {
+ YangSchemaNodeIdentifier tmpNodeIdentifier;
+ YdtNodeAdapter rootNode = createModule2Tree();
+
+ // Sets the tree
+ YpmManager ypmManager = new YpmManager();
+ Object metaData = 10;
+ ypmManager.setProtocolData(rootNode, metaData);
+
+ // Create new ydt tree part of module1 tree
+ YdtNodeAdapter rootNewYdtNode = new YdtNodeAdapter();
+ // Create module node with moduleName1
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(logicalName);
+ rootNewYdtNode.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter moduleNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(moduleName1);
+ moduleNode.setNodeIdentifier(tmpNodeIdentifier);
+ moduleNode.setParent(rootNewYdtNode);
+ rootNewYdtNode.addChild(moduleNode); // child to logical node
+ YdtNodeAdapter yNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(yNodeName);
+ yNode.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter zNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(zNodeName);
+ zNode.setNodeIdentifier(tmpNodeIdentifier);
+ moduleNode.addChild(yNode); // child to module node
+ yNode.addSibling(zNode);
+ YdtNodeAdapter y1Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y1NodeName);
+ y1Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter y2Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y2NodeName);
+ y2Node.setNodeIdentifier(tmpNodeIdentifier);
+ yNode.addChild(y1Node);
+ y1Node.addSibling(y2Node);
+
+ // Again sets the protocol data
+ metaData = 20;
+ ypmManager.setProtocolData(rootNewYdtNode, metaData);
+
+ // Retrieve protocol data and check the contents
+ YpmContext ypmContext = ypmManager.getProtocolData(rootNewYdtNode);
+ DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext;
+ assertThat(rootYpmNode.getName(), is(logicalName));
+ DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(moduleName1));
+ // Check y and z node
+ currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild();
+ DefaultYpmNode yYpmNode = currYpmNode;
+ assertThat(currYpmNode.getName(), is(yNodeName)); // x node
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), notNullValue()); // z node
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(zNodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), nullValue()); // no sibling
+ // Check y1 and y2 node
+ currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(y1NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), notNullValue()); // y2 should exists
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(y2NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), nullValue());
+ }
+
+ /**
+ * Checks the protocol data added in YpmManger, but tests part of module1 tree with little bit extended tree.
+ */
+ @Test
+ public void retrieveAndCheckProtocolDataChosenFromPartOfModule1TreeWithExtended()
+ throws CloneNotSupportedException {
+ YangSchemaNodeIdentifier tmpNodeIdentifier;
+ YdtNodeAdapter rootNode = createModule2Tree();
+
+ // Sets the tree
+ YpmManager ypmManager = new YpmManager();
+ Object metaData = 10;
+ ypmManager.setProtocolData(rootNode, metaData);
+
+ // Create new ydt tree part of module1 tree
+ YdtNodeAdapter rootNewYdtNode = new YdtNodeAdapter();
+ // Create module node with moduleName1
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(logicalName);
+ rootNewYdtNode.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter moduleNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(moduleName1);
+ moduleNode.setNodeIdentifier(tmpNodeIdentifier);
+ moduleNode.setParent(rootNewYdtNode);
+ rootNewYdtNode.addChild(moduleNode); // child to logical node
+ YdtNodeAdapter yNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(yNodeName);
+ yNode.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter zNode = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(zNodeName);
+ zNode.setNodeIdentifier(tmpNodeIdentifier);
+ moduleNode.addChild(yNode); // child to module node
+ yNode.addSibling(zNode);
+ YdtNodeAdapter y1Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y1NodeName);
+ y1Node.setNodeIdentifier(tmpNodeIdentifier);
+ YdtNodeAdapter y2Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y2NodeName);
+ y2Node.setNodeIdentifier(tmpNodeIdentifier);
+ yNode.addChild(y1Node);
+ y1Node.addSibling(y2Node);
+ YdtNodeAdapter y11Node = new YdtNodeAdapter();
+ // Add new y11 node
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(y11NodeName);
+ y11Node.setNodeIdentifier(tmpNodeIdentifier);
+ y1Node.addChild(y11Node);
+ // Add new y3 node
+ YdtNodeAdapter z3Node = new YdtNodeAdapter();
+ tmpNodeIdentifier = new YangSchemaNodeIdentifier();
+ tmpNodeIdentifier.setName(z3NodeName);
+ z3Node.setNodeIdentifier(tmpNodeIdentifier);
+ zNode.addChild(z3Node);
+
+ // Again sets the protocol data
+ metaData = 20;
+ ypmManager.setProtocolData(rootNewYdtNode, metaData);
+
+ // Retrieve protocol data and check the contents
+ YpmContext ypmContext = ypmManager.getProtocolData(rootNewYdtNode);
+ DefaultYpmNode rootYpmNode = (DefaultYpmNode) ypmContext;
+ assertThat(rootYpmNode.getName(), is(logicalName));
+ DefaultYpmNode currYpmNode = (DefaultYpmNode) rootYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(moduleName1));
+ // Check y and z node
+ currYpmNode = (DefaultYpmNode) currYpmNode.getFirstChild();
+ DefaultYpmNode yYpmNode = currYpmNode;
+ assertThat(currYpmNode.getName(), is(yNodeName)); // y node
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), notNullValue()); // z node
+ currYpmNode = currYpmNode.getNextSibling();
+ DefaultYpmNode zYpmNode = currYpmNode;
+ assertThat(currYpmNode.getName(), is(zNodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), nullValue()); // no sibling
+ // Check y1 and y2 node
+ currYpmNode = (DefaultYpmNode) yYpmNode.getFirstChild();
+ DefaultYpmNode y1YpmNode = currYpmNode;
+ assertThat(currYpmNode.getName(), is(y1NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), notNullValue()); // y2 should exists
+ currYpmNode = currYpmNode.getNextSibling();
+ assertThat(currYpmNode.getName(), is(y2NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), nullValue());
+ // Check new y11 node
+ currYpmNode = (DefaultYpmNode) y1YpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(y11NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), nullValue());
+ assertThat(currYpmNode.getFirstChild(), nullValue());
+ // Check new z3 node
+ currYpmNode = (DefaultYpmNode) zYpmNode.getFirstChild();
+ assertThat(currYpmNode.getName(), is(z3NodeName));
+ assertThat(currYpmNode.getMetaData(), is(metaData));
+ assertThat(currYpmNode.getNextSibling(), nullValue());
+ assertThat(currYpmNode.getFirstChild(), nullValue());
+ }
+}