/* * 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.ych; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.onosproject.yms.ych.YangProtocolEncodingFormat.XML; import static org.onosproject.yms.ydt.YmsOperationType.QUERY_CONFIG_REQUEST; import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REQUEST; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.BitSet; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.junit.Test; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.CombinedOpParam; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.AsNum; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.Attributes; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.DefaultAttributes; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.Metric; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.PathId; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.Aigp; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.BgpParameters; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultAigp; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultBgpParameters; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultLocalPref; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultMultiExitDisc; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultOrigin; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.DefaultUnrecognizedAttributes; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.LocalPref; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.MultiExitDisc; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.Origin; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.UnrecognizedAttributes; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.aigp.AigpTlv; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.aigp.DefaultAigpTlv; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.DefaultOptionalCapabilities; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.OptionalCapabilities; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.Cparameters; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.DefaultCparameters; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.cparameters.As4BytesCapability; import org.onosproject.yang.gen.v1.ych.combined.rev20160524.combined.attributes.bgpparameters.optionalcapabilities.cparameters.DefaultAs4BytesCapability; import org.onosproject.yang.gen.v1.ych.empty.container.rev20160524.EmptyContainerOpParam; import org.onosproject.yang.gen.v1.ych.empty.container.rev20160524.emptycontainer.EmptyContainer; import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.YchPurchasingsupervisor.OnosYangOpType; import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.YchPurchasingsupervisorOpParam; import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.DefaultYchPurchasingSupervisor; import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.YchPurchasingSupervisor; import org.onosproject.yang.gen.v1.ych.purchasing.supervisor.rev20160524.ychpurchasingsupervisor.ychpurchasingsupervisor.DefaultYchIsManager; import org.onosproject.yang.gen.v1.ydt.customs.supervisor.rev20160524.CustomssupervisorOpParam; import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.MaterialsupervisorOpParam; import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.materialsupervisor.DefaultSupervisor; import org.onosproject.yang.gen.v1.ydt.material.supervisor.rev20160524.materialsupervisor.Supervisor; import org.onosproject.yang.gen.v1.ydt.merchandiser.supervisor.rev20160524.MerchandisersupervisorOpParam; import org.onosproject.yang.gen.v1.ydt.root.rev20160524.LogisticsManagerOpParam; import org.onosproject.yang.gen.v1.ydt.trading.supervisor.rev20160524.TradingsupervisorOpParam; import org.onosproject.yms.app.ych.defaultcodecs.YangCodecRegistry; import org.onosproject.yms.app.ysr.DefaultYangSchemaRegistry; import org.onosproject.yms.app.ysr.TestYangSchemaNodeProvider; import org.onosproject.yms.ych.YangCompositeEncoding; /** * Unit test case for default codec handler. */ public class DefaultYangCodecHandlerTest { private TestYangSchemaNodeProvider testYangSchemaNodeProvider = new TestYangSchemaNodeProvider(); private static final String AM_XML = "Incorrect XML generated: "; private static final String AM_OBJ = "Incorrect object generated: "; private static final String EMPTY_CONTAINER = "EmptyContainerOpParam"; private static final String LOGISTIC_MOD = "LogisticsManagerOpParam"; private static final String MERCHA_MOD = "MerchandisersupervisorOpParam"; private static final String PURCH_MOD = "YchPurchasingsupervisorOpParam"; /** * Returns the xml string for customssupervisor module. * * @return the xml string for customssupervisor module */ private static String customsXml() { return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" + "<supervisor xmlns=\"ydt.customs-supervisor\">" + "Customssupervisor</supervisor>" + "</filter>"; } /** * Returns the xml string for purchasesupervisor with empty selection node. * * @return the xml string for purchasesupervisor with empty selection node */ private static String purchaseXmlEmptySelectionNode() { return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" + "<ych-purchasing-supervisor xmlns=\"ych.purchasing-supervisor\">" + "<ych-purchasing-specialist/>" + "</ych-purchasing-supervisor>" + "</filter>"; } /** * Returns the xml string for merchandisersupervisor module. * * @return the xml string for merchandisersupervisor module */ private static String merchandXml() { return "<config xmlns=\"ydt.root\" " + "xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" + "<supervisor xmlns=\"ydt.Merchandiser-supervisor\">" + "Merchandisersupervisor</supervisor>" + "</config>"; } /** * Returns the xml string for tradingsupervisor module. * * @return the xml string for tradingsupervisor module */ private static String tradingXml() { return "<config xmlns=\"ydt.root\" " + "xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" + "<supervisor xmlns=\"ydt.trading-supervisor\">" + "Tradingsupervisor</supervisor>" + "</config>"; } /** * Returns the xml string for customssupervisor module. * * @return the xml string for customssupervisor module */ private static String customsCompositeXml() { return "<filter xmlns=\"ydt.filter-type\">" + "<supervisor xmlns=\"ydt.customs-supervisor\">" + "Customssupervisor</supervisor></filter>"; } /** * Returns the xml string for customssupervisor module with filter-type. * * @return the xml string for customssupervisor module with filter-type */ private static String customsEmptyXml() { return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" + "</filter>"; } /** * Returns the xml string for materialsupervisor module. * * @return the xml string for materialsupervisor module */ private static String materialXml() { return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" + "<supervisor xmlns=\"ydt.material-supervisor\">" + "<name>abc1</name><departmentId>xyz1</departmentId>" + "</supervisor>" + "<supervisor xmlns=\"ydt.material-supervisor\"" + "><name>abc2</name><departmentId>xyz2</departmentId>" + "</supervisor>" + "<supervisor xmlns=\"ydt.material-supervisor\"" + "><name>abc3</name><departmentId>xyz3</departmentId>" + "</supervisor>" + "<supervisor xmlns=\"ydt.material-supervisor\"" + "><name>abc4</name><departmentId>xyz4</departmentId>" + "</supervisor>" + "<supervisor xmlns=\"ydt.material-supervisor\"" + "><name>abc5</name><departmentId>xyz5</departmentId>" + "</supervisor>" + "</filter>"; } /** * Returns the xml string for EmptyContainer module. * * @return the xml string for EmptyContainer module */ private static String containerEmptyXml() { return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" + "</filter>"; } /** * Returns the xml string for Combined module. * * @return the xml string for Combined module */ private static String listTestXml() { return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\">" + "<attributes xmlns=\"ych:combined\">" + "<origin><value>123</value></origin>" + "<multi-exit-disc><med>456</med></multi-exit-disc>" + "<local-pref><pref>23</pref></local-pref>" + "<aigp><aigp-tlv><metric>456</metric></aigp-tlv></aigp>" + "<unrecognized-attributes><partial>false</partial>" + "<transitive>false</transitive><type>1</type>" + "<value>QUJD</value></unrecognized-attributes>" + "<unrecognized-attributes><partial>true</partial>" + "<transitive>true</transitive><type>2</type>" + "<value>QUJD</value></unrecognized-attributes>" + "<unrecognized-attributes><partial>true</partial>" + "<transitive>false</transitive><type>3</type>" + "<value>QUJD</value></unrecognized-attributes>" + "<unrecognized-attributes><partial>false</partial>" + "<transitive>true</transitive><type>4</type>" + "<value>QUJD</value></unrecognized-attributes>" + "<bgp-parameters><optional-capabilities><c-parameters>" + "<as4-bytes-capability><as-number>11</as-number>" + "</as4-bytes-capability></c-parameters>" + "</optional-capabilities><optional-capabilities>" + "<c-parameters><as4-bytes-capability>" + "<as-number>22</as-number></as4-bytes-capability>" + "</c-parameters></optional-capabilities>" + "<optional-capabilities><c-parameters><as4-bytes-capability>" + "<as-number>33</as-number></as4-bytes-capability>" + "</c-parameters></optional-capabilities></bgp-parameters>" + "<bgp-parameters><optional-capabilities><c-parameters>" + "<as4-bytes-capability><as-number>11</as-number>" + "</as4-bytes-capability></c-parameters>" + "</optional-capabilities><optional-capabilities>" + "<c-parameters><as4-bytes-capability>" + "<as-number>22</as-number></as4-bytes-capability>" + "</c-parameters></optional-capabilities>" + "<optional-capabilities><c-parameters><as4-bytes-capability>" + "<as-number>33</as-number></as4-bytes-capability>" + "</c-parameters></optional-capabilities>" + "</bgp-parameters></attributes></filter>"; } /** * Returns the xml string for ych-purchasingsupervisor module. * * @return the XML string for ych-purchasingsupervisor module */ private static String purchaseXml() { return "<config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" " + "xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" + "<ych-purchasing-supervisor xmlns=\"ych.purchasing-supervisor\" " + "nc:operation=\"create\">" + "<ych-purchasing-specialist>purchasingSpecialist" + "</ych-purchasing-specialist>" + "<ych-purchasing-support>support</ych-purchasing-support>" + "<ych-is-manager/>" + "</ych-purchasing-supervisor>" + "</config>"; } /** * Returns the xml string for ych-purchasingsupervisor module with BitSet options. * * @return the XML string for ych-purchasingsupervisor module */ private static String purchaseXmlOptions(BitSet options) { boolean isFirst = true; StringBuffer sb = new StringBuffer(); sb.append("<config xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" "); sb.append("xmlns:nc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">"); sb.append("<ych-purchasing-supervisor xmlns=\"ych.purchasing-supervisor\" " + "nc:operation=\"create\">"); sb.append("<ych-purchasing-support>support</ych-purchasing-support>"); if (options == null || options.isEmpty()) { sb.append("<ych-purchasing-options/>"); } else { sb.append("<ych-purchasing-options>"); for (int i = 0; i < 4; i++) { if (options.get(i)) { if (isFirst) { isFirst = false; } else { sb.append(' '); } sb.append("option" + i); } } sb.append("</ych-purchasing-options>"); } sb.append("</ych-purchasing-supervisor>"); sb.append("</config>"); return sb.toString(); } /** * Returns the xml string for employeeid module. * * @return the xml string for employeeid module */ private static String emplyIdXml() { return "<config xmlns=\"ydt.root\">" + "<employeeid xmlns=\"ydt.employee-id\">" + "<employeeid>Employ1</employeeid>" + "<employeeid>Employ2</employeeid>" + "<employeeid>Employ3</employeeid>" + "<employeeid>Employ4</employeeid>" + "<employeeid>Employ5</employeeid>" + "</employeeid>" + "</config>"; } /** * Returns the xml string for warehousesupervisor module. * * @return the xml string for warehousesupervisor module */ private static String wareHseXml() { return "<config xmlns=\"ydt.root\">" + "<warehousesupervisor xmlns=\"ydt.warehouse-supervisor\">" + "<supervisor>supervisor1</supervisor>" + "<supervisor>supervisor2</supervisor>" + "<supervisor>supervisor3</supervisor>" + "<supervisor>supervisor4</supervisor>" + "<supervisor>supervisor5</supervisor>" + "</warehousesupervisor>" + "</config>"; } /** * Returns the xml string for more than one module. * * @return the xml string for more than one module */ private static String multiModuleXml() { return "<config xmlns=\"ydt.root\">" + "<customssupervisor xmlns=\"ydt.customs-supervisor\">" + "<supervisor>Customssupervisor</supervisor>" + "</customssupervisor>" + "<merchandisersupervisor xmlns=\"ydt.Merchandiser-supervisor\">" + "<supervisor>Merchandisersupervisor</supervisor>" + "</merchandisersupervisor>" + "<materialsupervisor xmlns=\"ydt.material-supervisor\">" + "<supervisor>" + "<name>abc1</name>" + "<departmentId>xyz1</departmentId>" + "</supervisor>" + "<supervisor>" + "<name>abc2</name>" + "<departmentId>xyz2</departmentId>" + "</supervisor>" + "<supervisor>" + "<name>abc3</name>" + "<departmentId>xyz3</departmentId>" + "</supervisor>" + "<supervisor>" + "<name>abc4</name>" + "<departmentId>xyz4</departmentId>" + "</supervisor>" + "<supervisor>" + "<name>abc5</name>" + "<departmentId>xyz5</departmentId>" + "</supervisor>" + "</materialsupervisor>" + "<ych-purchasingsupervisor xmlns=\"ych.purchasing-supervisor\">" + "<ych-purchasing-supervisor>" + "<ych-purchasing-specialist>purchasingSpecialist" + "</ych-purchasing-specialist>" + "<ych-purchasing-support>support</ych-purchasing-support>" + "</ych-purchasing-supervisor>" + "</ych-purchasingsupervisor>" + "<warehousesupervisor xmlns=\"ydt.warehouse-supervisor\">" + "<supervisor>supervisor1</supervisor>" + "<supervisor>supervisor2</supervisor>" + "<supervisor>supervisor3</supervisor>" + "<supervisor>supervisor4</supervisor>" + "<supervisor>supervisor5</supervisor>" + "</warehousesupervisor>" + "<tradingsupervisor xmlns=\"ydt.trading-supervisor\">" + "<supervisor>Tradingsupervisor</supervisor>" + "</tradingsupervisor>" + "<employeeid xmlns=\"ydt.employee-id\">" + "<employeeid>Employ1</employeeid>" + "<employeeid>Employ2</employeeid>" + "<employeeid>Employ3</employeeid>" + "<employeeid>Employ4</employeeid>" + "<employeeid>Employ5</employeeid>" + "</employeeid>" + "</config>"; } /** * Returns the xml string for more than one module. * * @return the xml string for more than one module */ private String multipleAppxml() { return "<filter xmlns=\"ydt.filter-type\" type=\"subtree\"><supervisor" + " xmlns=\"ydt.customs-supervisor\">Customssupervisor" + "</supervisor><supervisor xmlns=\"ydt.material-supervisor\"" + "><name>abc1</name><departmentId>xyz1</departmentId" + "></supervisor><supervisor xmlns=\"ydt.material-supervisor\">" + "<name>abc2</name><departmentId>xyz2</departmentId>" + "</supervisor><supervisor xmlns=\"ydt" + ".material-supervisor\"><name>abc3</name><departmentId>xyz3" + "</departmentId></supervisor><supervisor xmlns=\"ydt" + ".material-supervisor\"><name>abc4</name><departmentId>xyz4" + "</departmentId></supervisor><supervisor xmlns=\"ydt" + ".material-supervisor\"><name>abc5</name><departmentId>xyz5" + "</departmentId></supervisor></filter>"; } /** * Unit test case in which verifying xml string for module object with leaf * for composite encode. */ @Test public void proceessCodecHandlerForCompositeEnc() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider .getDefaultYangSchemaRegistry(); // Creating the object Object object = CustomssupervisorOpParam.builder() .supervisor("Customssupervisor").build(); // Get the xml string and compare Map<String, String> tagAttr = new HashMap<String, String>(); tagAttr.put("type", "subtree"); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); YangCompositeEncoding xml = defaultYangCodecHandler .encodeCompositeOperation("filter", "ydt.filter-type", object, XML, null); assertNull("customs-super: resource id not null", xml.getResourceIdentifier()); assertEquals(AM_XML + "customs-super: comp res info", customsCompositeXml(), xml.getResourceInformation()); // Creating the object object = MerchandisersupervisorOpParam.builder() .supervisor("Merchandisersupervisor").build(); // Get the xml string and compare xml = defaultYangCodecHandler.encodeCompositeOperation("config", "ydt.root", object, XML, null); assertNull("merch-super: res id not null", xml.getResourceIdentifier()); assertEquals(AM_XML + "merch-super: comp res info", merchandXml(), xml.getResourceInformation()); // Creating the object object = TradingsupervisorOpParam.builder() .supervisor("Tradingsupervisor").build(); // Get the xml string and compare xml = defaultYangCodecHandler .encodeCompositeOperation("config", "ydt.root", object, XML, null); assertNull("trading-super: res id not null", xml.getResourceIdentifier()); assertEquals(AM_XML + "trading-super: comp res info", tradingXml(), xml.getResourceInformation()); } /** * Unit test case in which verifying xml string for module object with leaf. */ @Test public void proceessCodecHandlerForLeaf() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider .getDefaultYangSchemaRegistry(); List<Object> yangModuleList = new ArrayList<>(); // Creating the object Object object = CustomssupervisorOpParam.builder() .supervisor("Customssupervisor").build(); yangModuleList.add(object); // Get the xml string and compare Map<String, String> tagAttr = new HashMap<String, String>(); tagAttr.put("type", "subtree"); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); String xml = defaultYangCodecHandler.encodeOperation("filter", "ydt.filter-type", tagAttr, yangModuleList, XML, null); assertEquals(AM_XML + "customs-super: leaf info", customsXml(), xml); // Creating the object object = MerchandisersupervisorOpParam.builder() .supervisor("Merchandisersupervisor").build(); yangModuleList.clear(); yangModuleList.add(object); // Get the xml string and compare xml = defaultYangCodecHandler.encodeOperation("config", "ydt.root", null, yangModuleList, XML, null); assertEquals(AM_XML + "merchandiser-super: leaf info", merchandXml(), xml); // Creating the object object = TradingsupervisorOpParam.builder() .supervisor("Tradingsupervisor").build(); yangModuleList.clear(); yangModuleList.add(object); // Get the xml string and compare xml = defaultYangCodecHandler.encodeOperation("config", "ydt.root", null, yangModuleList, XML, null); assertEquals(AM_XML + "trading-super: leaf info", tradingXml(), xml); } /** * Unit test case in which verifying xml string for module object with * empty leaf. */ @Test public void proceessCodecHandlerForEmptyLeaf() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider .getDefaultYangSchemaRegistry(); List<Object> yangModuleList = new ArrayList<>(); // Creating the object Object object = CustomssupervisorOpParam.builder().supervisor("") .build(); yangModuleList.add(object); // Get the xml string and compare Map<String, String> tagAttr = new HashMap<String, String>(); tagAttr.put("type", "subtree"); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler codecHandler = new DefaultYangCodecHandler(schemaRegistry); String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", tagAttr, yangModuleList, XML, null); assertEquals(AM_XML + "customs-super: leaf is not empty", customsEmptyXml(), xml); } /** * Unit test case in which verifying xml string for more than one module * object. */ @Test public void proceessCodecHandlerForMultipleApp() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider .getDefaultYangSchemaRegistry(); List<Object> yangModuleList = new ArrayList<>(); // Creating the object Object object = CustomssupervisorOpParam.builder() .supervisor("Customssupervisor").build(); yangModuleList.add(object); // Creating the object Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder() .name("abc1").departmentId("xyz1").build(); Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder() .name("abc2").departmentId("xyz2").build(); Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder() .name("abc3").departmentId("xyz3").build(); Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder() .name("abc4").departmentId("xyz4").build(); Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder() .name("abc5").departmentId("xyz5").build(); Object object1 = MaterialsupervisorOpParam.builder() .addToSupervisor(supervisor1) .addToSupervisor(supervisor2) .addToSupervisor(supervisor3) .addToSupervisor(supervisor4) .addToSupervisor(supervisor5).build(); yangModuleList.add(object1); // Get the xml string and compare Map<String, String> tagAttr = new HashMap<String, String>(); tagAttr.put("type", "subtree"); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler codecHandler = new DefaultYangCodecHandler(schemaRegistry); String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", tagAttr, yangModuleList, XML, null); assertEquals(AM_XML + "for multiple applications", multipleAppxml(), xml); } /** * Unit test case in which verifying xml string for module object with list. */ @Test public void proceessCodecHandlerForList() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); List<Object> yangModuleList = new ArrayList<>(); // Creating the object Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder() .name("abc1").departmentId("xyz1").build(); Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder() .name("abc2").departmentId("xyz2").build(); Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder() .name("abc3").departmentId("xyz3").build(); Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder() .name("abc4").departmentId("xyz4").build(); Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder() .name("abc5").departmentId("xyz5").build(); Object object = MaterialsupervisorOpParam.builder() .addToSupervisor(supervisor1) .addToSupervisor(supervisor2) .addToSupervisor(supervisor3) .addToSupervisor(supervisor4) .addToSupervisor(supervisor5).build(); yangModuleList.add(object); // Get the xml string and compare Map<String, String> tagAttr = new HashMap<String, String>(); tagAttr.put("type", "subtree"); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler codecHandler = new DefaultYangCodecHandler(schemaRegistry); String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", tagAttr, yangModuleList, XML, null); assertEquals(AM_XML + "material-super: list info", materialXml(), xml); } /** * Unit test case in which verifying xml string for module object with * empty container. */ @Test public void proceessCodecHandlerForEmptyContainer() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); List<Object> yangModuleList = new ArrayList<>(); // Creating the object EmptyContainer emptyContainer = EmptyContainerOpParam.builder() .emptyContainer(); Object object = EmptyContainerOpParam.builder() .emptyContainer(emptyContainer).build(); yangModuleList.add(object); // Get the xml string and compare Map<String, String> tagAttr = new HashMap<String, String>(); tagAttr.put("type", "subtree"); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler codecHandler = new DefaultYangCodecHandler(schemaRegistry); String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", tagAttr, yangModuleList, XML, null); assertEquals(AM_XML + "empty-contain: container is not empty", containerEmptyXml(), xml); } /** * Unit test case in which verifying xml string for module object with list * inside list. */ @Test public void proceessCodecHandlerForListInsideList() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); List<Object> yangModuleList = new ArrayList<>(); // Creating the object PathId pathId = new PathId(123); Origin origin = new DefaultOrigin.OriginBuilder().value(pathId) .build(); MultiExitDisc multiExitDisc = new DefaultMultiExitDisc .MultiExitDiscBuilder().med(456).build(); LocalPref localPref = new DefaultLocalPref.LocalPrefBuilder() .pref(23).build(); Metric metric = new Metric(456); AigpTlv aigpTlv = new DefaultAigpTlv.AigpTlvBuilder().metric(metric) .build(); Aigp aigp = new DefaultAigp.AigpBuilder().aigpTlv(aigpTlv).build(); UnrecognizedAttributes unrecognizedAttributes1 = new DefaultUnrecognizedAttributes .UnrecognizedAttributesBuilder() .partial(false).transitive(false).type((short) 1) .value("ABC".getBytes()).build(); UnrecognizedAttributes unrecognizedAttributes2 = new DefaultUnrecognizedAttributes .UnrecognizedAttributesBuilder() .partial(true).transitive(true).type((short) 2) .value("ABC".getBytes()) .build(); UnrecognizedAttributes unrecognizedAttributes3 = new DefaultUnrecognizedAttributes .UnrecognizedAttributesBuilder() .partial(true).transitive(false).type((short) 3) .value("ABC".getBytes()) .build(); UnrecognizedAttributes unrecognizedAttributes4 = new DefaultUnrecognizedAttributes .UnrecognizedAttributesBuilder() .partial(false).transitive(true).type((short) 4) .value("ABC".getBytes()).build(); AsNum asNum1 = new AsNum(11); As4BytesCapability as4BytesCapability1 = new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() .asNumber(asNum1).build(); Cparameters cparameters1 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability1) .build(); OptionalCapabilities optionalCapabilities1 = new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() .cParameters(cparameters1).build(); AsNum asNum2 = new AsNum(22); As4BytesCapability as4BytesCapability2 = new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() .asNumber(asNum2).build(); Cparameters cparameters2 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability2) .build(); OptionalCapabilities optionalCapabilities2 = new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() .cParameters(cparameters2).build(); AsNum asNum3 = new AsNum(33); As4BytesCapability as4BytesCapability3 = new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() .asNumber(asNum3).build(); Cparameters cparameters3 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability3) .build(); OptionalCapabilities optionalCapabilities3 = new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() .cParameters(cparameters3).build(); BgpParameters bgpParameters1 = new DefaultBgpParameters.BgpParametersBuilder() .addToOptionalCapabilities(optionalCapabilities1) .addToOptionalCapabilities(optionalCapabilities2) .addToOptionalCapabilities(optionalCapabilities3) .build(); AsNum asNum4 = new AsNum(11); As4BytesCapability as4BytesCapability4 = new DefaultAs4BytesCapability .As4BytesCapabilityBuilder() .asNumber(asNum4).build(); Cparameters cparameters4 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability4) .build(); OptionalCapabilities optionalCapabilities4 = new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() .cParameters(cparameters4).build(); AsNum asNum5 = new AsNum(22); As4BytesCapability as4BytesCapability5 = new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() .asNumber(asNum5).build(); Cparameters cparameters5 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability5) .build(); OptionalCapabilities optionalCapabilities5 = new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() .cParameters(cparameters5).build(); AsNum asNum6 = new AsNum(33); As4BytesCapability as4BytesCapability6 = new DefaultAs4BytesCapability.As4BytesCapabilityBuilder() .asNumber(asNum6).build(); Cparameters cparameters6 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability6) .build(); OptionalCapabilities optionalCapabilities6 = new DefaultOptionalCapabilities.OptionalCapabilitiesBuilder() .cParameters(cparameters6).build(); BgpParameters bgpParameters2 = new DefaultBgpParameters.BgpParametersBuilder() .addToOptionalCapabilities(optionalCapabilities4) .addToOptionalCapabilities(optionalCapabilities5) .addToOptionalCapabilities(optionalCapabilities6) .build(); Attributes attributes = new DefaultAttributes.AttributesBuilder() .origin(origin) .multiExitDisc(multiExitDisc) .localPref(localPref) .aigp(aigp) .addToUnrecognizedAttributes(unrecognizedAttributes1) .addToUnrecognizedAttributes(unrecognizedAttributes2) .addToUnrecognizedAttributes(unrecognizedAttributes3) .addToUnrecognizedAttributes(unrecognizedAttributes4) .addToBgpParameters(bgpParameters1) .addToBgpParameters(bgpParameters2).build(); Object object = CombinedOpParam.builder().attributes(attributes) .build(); yangModuleList.add(object); // Get the xml string and compare Map<String, String> tagAttr = new HashMap<String, String>(); tagAttr.put("type", "subtree"); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler codecHandler = new DefaultYangCodecHandler(schemaRegistry); String xml = codecHandler.encodeOperation("filter", "ydt.filter-type", tagAttr, yangModuleList, XML, null); assertEquals(AM_XML + "combined: list info", listTestXml(), xml); } // TODO negative scenario will be handled later /** * Unit test case in which verifying xml string for module object with * container. */ @Test public void proceessCodecHandlerForContainer() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); List<Object> yangModuleList = new ArrayList<>(); // Creating the object YchPurchasingSupervisor supervisor = new DefaultYchPurchasingSupervisor .YchPurchasingSupervisorBuilder() .ychPurchasingSpecialist("purchasingSpecialist") .ychPurchasingSupport("support") .ychIsManager(DefaultYchIsManager.builder().build()) .yangYchPurchasingSupervisorOpType(OnosYangOpType.CREATE).build(); Object object = YchPurchasingsupervisorOpParam.builder() .ychPurchasingSupervisor(supervisor).build(); yangModuleList.add(object); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler codecHandler = new DefaultYangCodecHandler(schemaRegistry); String xml = codecHandler.encodeOperation("config", "urn:ietf:params:xml:ns:netconf:base:1.0", null, yangModuleList, XML, null); assertEquals(AM_XML + "puchas-super: container info", purchaseXml(), xml); } // /** // * Unit test case in which verifying xml string for module object with // * leaf list. // */ // @Test // public void proceessCodecHandlerForLeafList() { // testYangSchemaNodeProvider.processSchemaRegistry(null); // DefaultYangSchemaRegistry schemaRegistry = // testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); // List<Object> yangModuleList = new ArrayList<>(); // // // Creating the object // EmployeeidOpParam.EmployeeidBuilder employeeidBuilder = // EmployeeidOpParam.builder(); // employeeidBuilder.addToEmployeeid("Employ1"); // employeeidBuilder.addToEmployeeid("Employ2"); // employeeidBuilder.addToEmployeeid("Employ3"); // employeeidBuilder.addToEmployeeid("Employ4"); // employeeidBuilder.addToEmployeeid("Employ5"); // // Object object = employeeidBuilder.build(); // yangModuleList.add(object); // // // Get the xml string and compare // YangCodecRegistry.initializeDefaultCodec(); // DefaultYangCodecHandler codecHandler = // new DefaultYangCodecHandler(schemaRegistry); // String xml = codecHandler.encodeOperation("config", "ydt.root", null, // yangModuleList, XML, null); // assertEquals(AM_XML + "employ-id: leaf-list info", emplyIdXml(), xml); // WarehousesupervisorOpParam.WarehousesupervisorBuilder warehsebldr = // WarehousesupervisorOpParam.builder(); // warehsebldr.addToSupervisor("supervisor1"); // warehsebldr.addToSupervisor("supervisor2"); // warehsebldr.addToSupervisor("supervisor3"); // warehsebldr.addToSupervisor("supervisor4"); // warehsebldr.addToSupervisor("supervisor5"); // // object = warehsebldr.build(); // yangModuleList.clear(); // yangModuleList.add(object); // // // // Get the xml string and compare // xml = codecHandler.encodeOperation("config", "ydt.root", null, // yangModuleList, XML, null); // // assertEquals(AM_XML + "warehouse-super: leaf-list info", wareHseXml(), // xml); // } // /** // * Unit test case in which verifying xml string for multiple module object. // */ // @Test // public void proceessCodecHandlerForMultipleModule() { // testYangSchemaNodeProvider.processSchemaRegistry(null); // DefaultYangSchemaRegistry schemaRegistry = // testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); // // List<Object> yangModuleList = new ArrayList<>(); // YangCodecRegistry.initializeDefaultCodec(); // DefaultYangCodecHandler codecHandler = // new DefaultYangCodecHandler(schemaRegistry); // // // Creating the object for customssupervisor module // Object object = CustomssupervisorOpParam.builder() // .supervisor("Customssupervisor").build(); // yangModuleList.add(object); // // // Creating the object for merchandisersupervisor module // object = MerchandisersupervisorOpParam.builder() // .supervisor("Merchandisersupervisor").build(); // yangModuleList.add(object); // // // Creating the object for materialsupervisor module // Supervisor supervisor1 = new DefaultSupervisor.SupervisorBuilder() // .name("abc1").departmentId("xyz1").build(); // Supervisor supervisor2 = new DefaultSupervisor.SupervisorBuilder() // .name("abc2").departmentId("xyz2").build(); // Supervisor supervisor3 = new DefaultSupervisor.SupervisorBuilder() // .name("abc3").departmentId("xyz3").build(); // Supervisor supervisor4 = new DefaultSupervisor.SupervisorBuilder() // .name("abc4").departmentId("xyz4").build(); // Supervisor supervisor5 = new DefaultSupervisor.SupervisorBuilder() // .name("abc5").departmentId("xyz5").build(); // // object = MaterialsupervisorOpParam.builder() // .addToSupervisor(supervisor1) // .addToSupervisor(supervisor2) // .addToSupervisor(supervisor3) // .addToSupervisor(supervisor4) // .addToSupervisor(supervisor5).build(); // // yangModuleList.add(object); // // // Creating the object for YchPurchasingsupervisor module // YchPurchasingSupervisor purSupervisor = // new DefaultYchPurchasingSupervisor // .YchPurchasingSupervisorBuilder() // .ychPurchasingSpecialist("purchasingSpecialist") // .ychPurchasingSupport("support").build(); // object = YchPurchasingsupervisorOpParam.builder() // .ychPurchasingSupervisor(purSupervisor).build(); // yangModuleList.add(object); // // // Creating the object for warehousesupervisor module // WarehousesupervisorOpParam.WarehousesupervisorBuilder warehsebldr = // WarehousesupervisorOpParam.builder(); // warehsebldr.addToSupervisor("supervisor1"); // warehsebldr.addToSupervisor("supervisor2"); // warehsebldr.addToSupervisor("supervisor3"); // warehsebldr.addToSupervisor("supervisor4"); // warehsebldr.addToSupervisor("supervisor5"); // // object = warehsebldr.build(); // yangModuleList.add(object); // // // Creating the object for tradingsupervisor module // object = TradingsupervisorOpParam.builder() // .supervisor("Tradingsupervisor").build(); // yangModuleList.add(object); // // List<String> employeeid = EmployeeidOpParam.builder().employeeid(); // if (employeeid == null) { // employeeid = new ArrayList<>(); // } // employeeid.add("Employ1"); // employeeid.add("Employ2"); // employeeid.add("Employ3"); // employeeid.add("Employ4"); // employeeid.add("Employ5"); // // // Creating the object for employeeid module // object = EmployeeidOpParam.builder().employeeid(employeeid).build(); // yangModuleList.add(object); // // // Get the xml string and compare // String xml = codecHandler.encodeOperation("config", "ydt.root", null, // yangModuleList, XML, null); // assertEquals(AM_XML + "multiple: module info", multiModuleXml(), xml); // } /** * Unit test case in which verifying object for xml string with config as * root name and multiple module. */ @Test public void proceessCodecDecodeFunctionForListInsideList() { String path = "src/test/resources/ychTestResourceFiles/combinedrootname.xml"; StringBuilder sb = new StringBuilder(); String sCurrentLine; testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); try (BufferedReader br = new BufferedReader(new FileReader(path))) { while ((sCurrentLine = br.readLine()) != null) { sb.append(sCurrentLine); } } catch (IOException e) { e.printStackTrace(); } // TODO YOB and YTB need to do some changes for binary // Verify the received object list /*objectList = defaultYangCodecHandler.decode(sb.toString(), XML_ENCODING, EDIT_CONFIG_REQUEST); Iterator<Object> iterator = objectList.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); if (object.getClass().getSimpleName().equals("CombinedOpParam")) { CombinedOpParam combinedOpParam = (CombinedOpParam) object; PathId pathId = new PathId(123); Origin origin = new DefaultOrigin.OriginBuilder() .value(pathId).build(); assertTrue(combinedOpParam.attributes().origin() .equals(origin)); MultiExitDisc multiExitDisc = new DefaultMultiExitDisc .MultiExitDiscBuilder().med(456).build(); assertTrue(combinedOpParam.attributes().multiExitDisc() .equals(multiExitDisc)); LocalPref localPref = new DefaultLocalPref.LocalPrefBuilder() .pref(23).build(); assertTrue(combinedOpParam.attributes().localPref() .equals(localPref)); Metric metric = new Metric(456); AigpTlv aigpTlv = new DefaultAigpTlv.AigpTlvBuilder() .metric(metric).build(); Aigp aigp = new DefaultAigp.AigpBuilder().aigpTlv(aigpTlv) .build(); assertTrue(combinedOpParam.attributes().aigp().equals(aigp)); UnrecognizedAttributes unrecognizedAttributes1 = new DefaultUnrecognizedAttributes .UnrecognizedAttributesBuilder() .partial(false).transitive(false).type((short) 1) .value("ABC".getBytes()).build(); UnrecognizedAttributes unrecognizedAttributes2 = new DefaultUnrecognizedAttributes .UnrecognizedAttributesBuilder() .partial(true).transitive(true).type((short) 2) .value("BCA".getBytes()).build(); UnrecognizedAttributes unrecognizedAttributes3 = new DefaultUnrecognizedAttributes .UnrecognizedAttributesBuilder() .partial(true).transitive(false).type((short) 3) .value("CAB".getBytes()).build(); UnrecognizedAttributes unrecognizedAttributes4 = new DefaultUnrecognizedAttributes .UnrecognizedAttributesBuilder() .partial(false).transitive(true).type((short) 4) .value("111".getBytes()).build(); AsNum asNum1 = new AsNum(11); As4BytesCapability as4BytesCapability1 = new DefaultAs4BytesCapability .As4BytesCapabilityBuilder() .asNumber(asNum1).build(); Cparameters cparameters1 = new DefaultCparameters .CparametersBuilder() .as4BytesCapability(as4BytesCapability1) .build(); OptionalCapabilities optionalCapabilities1 = new DefaultOptionalCapabilities .OptionalCapabilitiesBuilder() .cParameters(cparameters1).build(); AsNum asNum2 = new AsNum(22); As4BytesCapability as4BytesCapability2 = new DefaultAs4BytesCapability .As4BytesCapabilityBuilder() .asNumber(asNum2).build(); Cparameters cparameters2 = new DefaultCparameters .CparametersBuilder() .as4BytesCapability(as4BytesCapability2) .build(); OptionalCapabilities optionalCapabilities2 = new DefaultOptionalCapabilities .OptionalCapabilitiesBuilder() .cParameters(cparameters2).build(); AsNum asNum3 = new AsNum(33); As4BytesCapability as4BytesCapability3 = new DefaultAs4BytesCapability .As4BytesCapabilityBuilder() .asNumber(asNum3).build(); Cparameters cparameters3 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability3) .build(); OptionalCapabilities optionalCapabilities3 = new DefaultOptionalCapabilities .OptionalCapabilitiesBuilder() .cParameters(cparameters3).build(); BgpParameters bgpParameters1 = new DefaultBgpParameters.BgpParametersBuilder() .addToOptionalCapabilities(optionalCapabilities1) .addToOptionalCapabilities(optionalCapabilities2) .addToOptionalCapabilities(optionalCapabilities3) .build(); AsNum asNum4 = new AsNum(11); As4BytesCapability as4BytesCapability4 = new DefaultAs4BytesCapability .As4BytesCapabilityBuilder() .asNumber(asNum4).build(); Cparameters cparameters4 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability4) .build(); OptionalCapabilities optionalCapabilities4 = new DefaultOptionalCapabilities .OptionalCapabilitiesBuilder() .cParameters(cparameters4).build(); AsNum asNum5 = new AsNum(22); As4BytesCapability as4BytesCapability5 = new DefaultAs4BytesCapability .As4BytesCapabilityBuilder() .asNumber(asNum5).build(); Cparameters cparameters5 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability5) .build(); OptionalCapabilities optionalCapabilities5 = new DefaultOptionalCapabilities .OptionalCapabilitiesBuilder() .cParameters(cparameters5).build(); AsNum asNum6 = new AsNum(33); As4BytesCapability as4BytesCapability6 = new DefaultAs4BytesCapability .As4BytesCapabilityBuilder() .asNumber(asNum6).build(); Cparameters cparameters6 = new DefaultCparameters.CparametersBuilder() .as4BytesCapability(as4BytesCapability6) .build(); OptionalCapabilities optionalCapabilities6 = new DefaultOptionalCapabilities .OptionalCapabilitiesBuilder() .cParameters(cparameters6).build(); BgpParameters bgpParameters2 = new DefaultBgpParameters.BgpParametersBuilder() .addToOptionalCapabilities(optionalCapabilities4) .addToOptionalCapabilities(optionalCapabilities5) .addToOptionalCapabilities(optionalCapabilities6) .build(); Attributes attributes = new DefaultAttributes.AttributesBuilder() .origin(origin) .multiExitDisc(multiExitDisc) .localPref(localPref) .aigp(aigp) .addToUnrecognizedAttributes(unrecognizedAttributes1) .addToUnrecognizedAttributes(unrecognizedAttributes2) .addToUnrecognizedAttributes(unrecognizedAttributes3) .addToUnrecognizedAttributes(unrecognizedAttributes4) .addToBgpParameters(bgpParameters1) .addToBgpParameters(bgpParameters2).build(); } else { assertTrue(false); } }*/ } // /** // * Unit test case in which verifying object for xml string with config as root name and // * operation type. // */ // @Test // public void proceessCodecDecodeFunctionForOperTypeTest() { // String path = "src/test/resources/ychTestResourceFiles/configrootnameOperationType.xml"; // testYangSchemaNodeProvider.processSchemaRegistry(null); // DefaultYangSchemaRegistry schemaRegistry = // testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); // // YangCodecRegistry.initializeDefaultCodec(); // DefaultYangCodecHandler defaultYangCodecHandler = // new DefaultYangCodecHandler(schemaRegistry); // // StringBuilder sb = new StringBuilder(); // String sCurrentLine; // // try (BufferedReader br = new BufferedReader(new FileReader(path))) { // // while ((sCurrentLine = br.readLine()) != null) { // sb.append(sCurrentLine); // } // // } catch (IOException e) { // e.printStackTrace(); // } // // // Verify the received object list // List<Object> objectList = // defaultYangCodecHandler.decode(sb.toString(), // XML, EDIT_CONFIG_REQUEST); // Iterator<Object> iterator = objectList.iterator(); // while (iterator.hasNext()) { // Object object = iterator.next(); // if (object.getClass().getSimpleName() // .equals(LOGISTIC_MOD)) { // LogisticsManagerOpParam logistics = // (LogisticsManagerOpParam) object; // DefaultPurchasingSupervisor purchasingSupervisor = // (DefaultPurchasingSupervisor) logistics // .purchasingSupervisor(); // // assertEquals(AM_OBJ + "purchase-super: operation type", DELETE, // purchasingSupervisor.yangPurchasingSupervisorOpType()); // assertEquals(AM_OBJ + "customs-super: leaf value", "abc", // logistics.customsSupervisor()); // assertEquals(AM_OBJ + "purchase-spec: leaf value", "bcd", // logistics.purchasingSupervisor() // .purchasingSpecialist()); // assertEquals(AM_OBJ + "purchase-support: leaf value", // "cde", logistics.purchasingSupervisor() // .support()); // // } else if (object.getClass().getSimpleName() // .equals(MERCHA_MOD)) { // MerchandisersupervisorOpParam merchandisersupervisorOpParam = // (MerchandisersupervisorOpParam) object; // assertEquals(AM_OBJ + "merchandiser-super: leaf value", // "abc", merchandisersupervisorOpParam.supervisor()); // } else { // assertEquals(AM_OBJ, LOGISTIC_MOD, object // .getClass().getSimpleName()); // assertEquals(AM_OBJ, MERCHA_MOD, object // .getClass().getSimpleName()); // } // } // } /** * Validate the leaf value for purchasing specialist. * * @param objectList object list */ private void processPurchasingSpecObj(List<Object> objectList) { Iterator<Object> iterator = objectList.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); if ("LogisticsManagerOpParam".equals(object.getClass().getSimpleName())) { LogisticsManagerOpParam logisticsManagerOpParam = (LogisticsManagerOpParam) object; assertEquals(AM_OBJ + "purchasing-spec: leaf value", "bcd", logisticsManagerOpParam.purchasingSupervisor() .purchasingSpecialist()); } else { assertEquals(AM_OBJ, "LogisticsManagerOpParam", object .getClass().getSimpleName()); } } } /** * Validate the leaf value for merchandiser supervisor. * * @param objectList object list */ private void processMerchandiserObj(List<Object> objectList) { Iterator<Object> iterator = objectList.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); if (object.getClass().getSimpleName() .equals(MERCHA_MOD)) { MerchandisersupervisorOpParam merchandisersupervisorOpParam = (MerchandisersupervisorOpParam) object; assertEquals(AM_OBJ + "merchandiser-super: leaf value", "abc", merchandisersupervisorOpParam.supervisor()); } else { assertEquals(AM_OBJ, MERCHA_MOD, object .getClass().getSimpleName()); } } } /** * Unit test case in which verifying object for xml string with get and * filter as root name. */ @Test public void proceessCodecDecodeFunctionForGet() { String path = "src/test/resources/ychTestResourceFiles/getrootname.xml"; testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); StringBuilder sb = new StringBuilder(); String sCurrentLine; try (BufferedReader br = new BufferedReader(new FileReader(path))) { while ((sCurrentLine = br.readLine()) != null) { sb.append(sCurrentLine); } } catch (IOException e) { e.printStackTrace(); } // Verify the received object list List<Object> objectList = defaultYangCodecHandler.decode(sb.toString(), XML, QUERY_REQUEST); processPurchasingSpecObj(objectList); } /** * Unit test case in which verifying object for xml string with get-config * and filter as root name. */ @Test public void proceessCodecDecodeFunctionForGetConfig() { String path = "src/test/resources/ychTestResourceFiles/getconfigrootname.xml"; testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); StringBuilder sb = new StringBuilder(); String sCurrentLine; try (BufferedReader br = new BufferedReader(new FileReader(path))) { while ((sCurrentLine = br.readLine()) != null) { sb.append(sCurrentLine); } } catch (IOException e) { e.printStackTrace(); } // Verify the received object list List<Object> objectList = defaultYangCodecHandler.decode( sb.toString(), XML, QUERY_CONFIG_REQUEST); processMerchandiserObj(objectList); } /** * Unit test case in which verifying object for xml string with data as * root name. */ @Test public void proceessCodecDecodeFunctionForGetData() { String path = "src/test/resources/ychTestResourceFiles/getReply.xml"; testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); StringBuilder sb = new StringBuilder(); String sCurrentLine; try (BufferedReader br = new BufferedReader(new FileReader(path))) { while ((sCurrentLine = br.readLine()) != null) { sb.append(sCurrentLine); } } catch (IOException e) { e.printStackTrace(); } // Verify the received object list List<Object> objectList = defaultYangCodecHandler.decode( sb.toString(), XML, QUERY_CONFIG_REQUEST); processPurchasingSpecObj(objectList); } /** * Unit test case in which verifying object for xml string with rpc-reply * and data as root name . */ @Test public void proceessCodecDecodeFunctionForGetConfigData() { String path = "src/test/resources/ychTestResourceFiles/getconfigReply.xml"; testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); StringBuilder sb = new StringBuilder(); String sCurrentLine; try (BufferedReader br = new BufferedReader(new FileReader(path))) { while ((sCurrentLine = br.readLine()) != null) { sb.append(sCurrentLine); } } catch (IOException e) { e.printStackTrace(); } // Verify the received object list List<Object> objectList = defaultYangCodecHandler.decode(sb.toString(), XML, null); processMerchandiserObj(objectList); } @Test public void proceessCodecDecodeFunctionForPresenceContainer() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); // Verify the received object list List<Object> objectList = defaultYangCodecHandler.decode(purchaseXml(), XML, null); assertNotNull(objectList); Iterator<Object> iterator = objectList.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); if (object.getClass().getSimpleName().equals(PURCH_MOD)) { YchPurchasingsupervisorOpParam purchasingsupervisorOpParam = (YchPurchasingsupervisorOpParam) object; assertEquals(AM_OBJ + "purchasing-specialist: leaf value", "purchasingSpecialist", purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSpecialist()); assertEquals(AM_OBJ + "purchasing-support: leaf value", "support", purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport()); assertNotNull(AM_OBJ + "purchasing-manager: leaf value", purchasingsupervisorOpParam.ychPurchasingSupervisor().ychIsManager()); } else { assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName()); } } } @Test public void proceessCodecDecodeFunctionForSelectionNode() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); // Verify the received object list List<Object> objectList = defaultYangCodecHandler.decode( purchaseXmlEmptySelectionNode(), XML, null); assertNotNull(objectList); Iterator<Object> iterator = objectList.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); if (object.getClass().getSimpleName().equals(PURCH_MOD)) { YchPurchasingsupervisorOpParam purchasingsupervisorOpParam = (YchPurchasingsupervisorOpParam) object; assertNull(AM_OBJ + "purchasing-specialist: leaf value not empty", purchasingsupervisorOpParam. ychPurchasingSupervisor().ychPurchasingSpecialist()); } else { assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName()); } } } @Test public void proceessCodecDecodeFunctionForBitmaskContainer() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); BitSet purchaseOptions = new BitSet(4); purchaseOptions.set(1); //option1 purchaseOptions.set(3); //option3 // Verify the received object list List<Object> objectList = defaultYangCodecHandler.decode( purchaseXmlOptions(purchaseOptions), XML, null); assertNotNull(objectList); Iterator<Object> iterator = objectList.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); if (object.getClass().getSimpleName().equals(PURCH_MOD)) { YchPurchasingsupervisorOpParam purchasingsupervisorOpParam = (YchPurchasingsupervisorOpParam) object; assertEquals(AM_OBJ + "purchasing-support: leaf value", "support", purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport()); assertEquals(AM_OBJ + "ych-puchasing-options: leaf value", purchaseOptions, purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingOptions()); } else { assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName()); } } } @Test public void proceessCodecDecodeFunctionForEmptyBitmask() { testYangSchemaNodeProvider.processSchemaRegistry(null); DefaultYangSchemaRegistry schemaRegistry = testYangSchemaNodeProvider.getDefaultYangSchemaRegistry(); YangCodecRegistry.initializeDefaultCodec(); DefaultYangCodecHandler defaultYangCodecHandler = new DefaultYangCodecHandler(schemaRegistry); // Verify the received object list List<Object> objectList = defaultYangCodecHandler.decode( purchaseXmlOptions(null), XML, null); assertNotNull(objectList); Iterator<Object> iterator = objectList.iterator(); while (iterator.hasNext()) { Object object = iterator.next(); if (object.getClass().getSimpleName().equals(PURCH_MOD)) { YchPurchasingsupervisorOpParam purchasingsupervisorOpParam = (YchPurchasingsupervisorOpParam) object; assertEquals(AM_OBJ + "purchasing-support: leaf value", "support", purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingSupport()); assertNull(AM_OBJ + "ych-puchasing-options: leaf value empty", purchasingsupervisorOpParam.ychPurchasingSupervisor().ychPurchasingOptions()); } else { assertEquals(AM_OBJ, PURCH_MOD, object.getClass().getSimpleName()); } } } }