blob: 37df836b633e07b879159389a05e0e140ba5fd48 [file] [log] [blame]
/*
* 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 org.onosproject.yangutils.datamodel.YangSchemaNodeIdentifier;
import org.onosproject.yms.ypm.DefaultYpmNode;
import org.onosproject.yms.ypm.YpmContext;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
/**
* 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());
}
}