diff options
Diffstat (limited to 'sli/provider/src/test/java/org')
8 files changed, 1419 insertions, 0 deletions
diff --git a/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/ITCaseSvcLogicGraphExecutor.java b/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/ITCaseSvcLogicGraphExecutor.java new file mode 100644 index 000000000..ad439cdb4 --- /dev/null +++ b/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/ITCaseSvcLogicGraphExecutor.java @@ -0,0 +1,265 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : CCSDK + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.core.sli.provider; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; +import java.util.Properties; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicGraph; +import org.onap.ccsdk.sli.core.sli.SvcLogicParser; +import org.onap.ccsdk.sli.core.sli.SvcLogicStore; +import org.onap.ccsdk.sli.core.sli.SvcLogicStoreFactory; +import org.onap.ccsdk.sli.core.sli.provider.base.AbstractSvcLogicNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.BlockNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.BreakNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.CallNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.ConfigureNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.DeleteNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.ExecuteNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.ExistsNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.ForNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.GetResourceNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.IsAvailableNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.NotifyNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.RecordNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.ReleaseNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.ReserveNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.ReturnNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.SaveNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.SetNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicPropertiesProvider; +import org.onap.ccsdk.sli.core.sli.provider.base.SwitchNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.UpdateNodeExecutor; +import org.onap.ccsdk.sli.core.sli.provider.base.WhileNodeExecutor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ITCaseSvcLogicGraphExecutor { + + private static final Logger LOG = LoggerFactory.getLogger(SvcLogicGraph.class); + private static final Map<String, AbstractSvcLogicNodeExecutor> BUILTIN_NODES = new HashMap<String, AbstractSvcLogicNodeExecutor>() { + { + put("block", new BlockNodeExecutor()); + put("break", new BreakNodeExecutor()); + put("call", new CallNodeExecutor()); + put("configure", new ConfigureNodeExecutor()); + put("delete", new DeleteNodeExecutor()); + put("execute", new ExecuteNodeExecutor()); + put("exists", new ExistsNodeExecutor()); + put("for", new ForNodeExecutor()); + put("get-resource", new GetResourceNodeExecutor()); + put("is-available", new IsAvailableNodeExecutor()); + put("notify", new NotifyNodeExecutor()); + put("record", new RecordNodeExecutor()); + put("release", new ReleaseNodeExecutor()); + put("reserve", new ReserveNodeExecutor()); + put("return", new ReturnNodeExecutor()); + put("save", new SaveNodeExecutor()); + put("set", new SetNodeExecutor()); + put("switch", new SwitchNodeExecutor()); + put("update", new UpdateNodeExecutor()); + put("while", new WhileNodeExecutor()); + + } + }; + + private static SvcLogicClassResolver svcLogicClassResolver; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + + LOG.info("before class"); + + InputStream propStr = ITCaseSvcLogicGraphExecutor.class.getResourceAsStream("/svclogic.properties"); + + Properties svcprops = new Properties(); + svcprops.load(propStr); + + SvcLogicStore store = SvcLogicStoreFactory.getSvcLogicStore(svcprops); + + assertNotNull(store); + + SvcLogicParser parser = new SvcLogicParser(); + + SvcLogicPropertiesProvider resourceProvider = new SvcLogicPropertiesProviderImpl(); + svcLogicClassResolver = new SvcLogicClassResolver(); + SvcLogicServiceImpl svc = new SvcLogicServiceImpl(resourceProvider, svcLogicClassResolver); + + for (String nodeType : BUILTIN_NODES.keySet()) { + svc.registerExecutor(nodeType, BUILTIN_NODES.get(nodeType)); + } + + + + + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + LOG.info("after class"); + } + + @Before + public void setUp() throws Exception { + LOG.info("before"); + } + + @After + public void tearDown() throws Exception { + LOG.info("after"); + } + + @Test + public void testExecute() { + + try { + InputStream testStr = getClass().getResourceAsStream("/executor.tests"); + BufferedReader testsReader = new BufferedReader(new InputStreamReader(testStr)); + + InputStream propStr = getClass().getResourceAsStream("/svclogic.properties"); + + Properties svcprops = new Properties(); + svcprops.load(propStr); + + + + + SvcLogicParser parser = new SvcLogicParser(); + + // Loop through executor tests + SvcLogicPropertiesProvider resourceProvider = new SvcLogicPropertiesProvider() { + @Override + public Properties getProperties() { + return svcprops; + } + }; + SvcLogicServiceImpl svc = new SvcLogicServiceImpl(resourceProvider, svcLogicClassResolver); + SvcLogicStore store = svc.getStore(); + assertNotNull(store); + for (String nodeType : BUILTIN_NODES.keySet()) { + + + svc.registerExecutor(nodeType, BUILTIN_NODES.get(nodeType)); + + } + String testCaseLine = null; + while ((testCaseLine = testsReader.readLine()) != null) { + + String[] testCaseFields = testCaseLine.split(":"); + String testCaseFile = testCaseFields[0]; + String testCaseMethod = testCaseFields[1]; + String testCaseParameters = null; + + if (testCaseFields.length > 2) { + testCaseParameters = testCaseFields[2]; + } + + SvcLogicContext ctx = new SvcLogicContext(); + if (testCaseParameters != null) { + String[] testCaseParameterSettings = testCaseParameters.split(","); + + for (int i = 0; i < testCaseParameterSettings.length; i++) { + String[] nameValue = testCaseParameterSettings[i].split("="); + if (nameValue != null) { + String name = nameValue[0]; + String value = ""; + if (nameValue.length > 1) { + value = nameValue[1]; + } + + ctx.setAttribute(name, value); + } + } + } + + testCaseFile = testCaseFile.trim(); + + if (testCaseFile.length() > 0) { + if (!testCaseFile.startsWith("/")) { + testCaseFile = "/" + testCaseFile; + } + URL testCaseUrl = getClass().getResource(testCaseFile); + if (testCaseUrl == null) { + fail("Could not resolve test case file " + testCaseFile); + } + + + LinkedList<SvcLogicGraph> graphs = parser.parse(testCaseUrl.getPath()); + + assertNotNull(graphs); + + // Load grqphs into db to support call node + SvcLogicParser.load(testCaseUrl.getPath(), store); + SvcLogicParser.activate("neutron", "canCreateNetwork", "1.0.0", "sync", store); + SvcLogicParser.activate("neutron", "switchTester", "1.0.0", "sync", store); + SvcLogicParser.activate("neutron", "forRecordTester", "1.0.0", "sync", store); + SvcLogicParser.activate("neutron", "whileNodeTester", "1.0.0", "sync", store); + SvcLogicParser.activate("neutron", "resourceTester", "1.0.0", "sync", store); + SvcLogicParser.activate("neutron", "configureTester", "1.0.0", "sync", store); + SvcLogicParser.activate("neutron", "javaPluginTester", "1.0.0", "sync", store); + SvcLogicParser.activate("neutron", "allNodesTester", "1.0.0", "sync", store); + SvcLogicParser.activate("neutron", "networkCreated", "1.0.0", "sync", store); + + for (SvcLogicGraph graph : graphs) { + if (graph.getRpc().equals(testCaseMethod)) { + Properties props = ctx.toProperties(); + LOG.info("SvcLogicContext before executing {}:", testCaseMethod); + for (Enumeration e1 = props.propertyNames(); e1.hasMoreElements(); ) { + String propName = (String) e1.nextElement(); + LOG.info(propName + " = " + props.getProperty(propName)); + } + + svc.execute(graph, ctx); + + props = ctx.toProperties(); + LOG.info("SvcLogicContext after executing {}:", testCaseMethod); + for (Enumeration e2 = props.propertyNames(); e2.hasMoreElements(); ) { + String propName = (String) e2.nextElement(); + LOG.info(propName + " = " + props.getProperty(propName)); + } + } + } + + } + } + + } catch (Exception e) { + LOG.error("Caught exception executing directed graphs", e); + fail("Exception executing graphs"); + } + } +} diff --git a/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/MdsalHelperTest.java b/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/MdsalHelperTest.java new file mode 100755 index 000000000..93d9931d0 --- /dev/null +++ b/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/MdsalHelperTest.java @@ -0,0 +1,763 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : CCSDK + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.core.sli.provider; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.net.Inet6Address; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.ExecuteGraphInput.Mode; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.ExecuteGraphInputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.execute.graph.input.SliParameter; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.execute.graph.input.SliParameterBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.Builtin.SampleBits; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.Builtin.SampleEnumeration; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.Builtin.SampleUnion; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.Percentage; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.SampleContainer; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.SampleContainerBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.sample.container.LoginBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.sample.container.login.CustomerAddresses; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.testmodel.rev190723.sample.container.login.CustomerAddressesBuilder; +import org.opendaylight.yang.gen.v1.test.TestObjectBuilder; +import org.opendaylight.yang.gen.v1.test.WrapperObj; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.DomainName; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.HostBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZoneBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpVersion; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6FlowLabel; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; +import org.opendaylight.yangtools.yang.common.Empty; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import junit.framework.TestCase; + +public class MdsalHelperTest extends TestCase { + private static final Logger LOG = LoggerFactory.getLogger(MdsalHelperTest.class); + public static final String pathToSdnPropertiesFile = "src/test/resources/l3sdn.properties"; + + public void testSdnProperties() { + + MdsalHelperTesterUtil.loadProperties(pathToSdnPropertiesFile); + assertEquals("synccomplete", MdsalHelperTesterUtil.mapEnumeratedValue("request-status", "synccomplete")); + assertEquals("asynccomplete", MdsalHelperTesterUtil.mapEnumeratedValue("request-status", "asynccomplete")); + assertEquals("notifycomplete", MdsalHelperTesterUtil.mapEnumeratedValue("request-status", "notifycomplete")); + assertEquals("service-configuration-operation", + MdsalHelperTesterUtil.mapEnumeratedValue("rpc-name", "service-configuration-operation")); + } + + public void testNegativeSdnProperties() { + assertNotSame("synccomplete", MdsalHelperTesterUtil.mapEnumeratedValue("request-status", "Synccomplete")); + } + + public void testToProperties() { + + ExecuteGraphInputBuilder execBuilder = new ExecuteGraphInputBuilder(); + SliParameterBuilder parmBuilder = new SliParameterBuilder(); + List<SliParameter> params = new LinkedList<SliParameter>(); + + parmBuilder.setParameterName("boolean-parm"); + parmBuilder.setBooleanValue(Boolean.TRUE); + params.add(parmBuilder.build()); + + parmBuilder.setParameterName("int-parm"); + parmBuilder.setBooleanValue(null); + parmBuilder.setIntValue(1); + params.add(parmBuilder.build()); + + parmBuilder.setParameterName("str-parm"); + parmBuilder.setIntValue(null); + parmBuilder.setStringValue("hello"); + params.add(parmBuilder.build()); + + parmBuilder.setParameterName("ipaddress4-parm"); + parmBuilder.setStringValue(null); + parmBuilder.setIpaddressValue(IpAddressBuilder.getDefaultInstance("127.0.0.1")); + params.add(parmBuilder.build()); + + parmBuilder.setParameterName("ipaddress6-parm"); + parmBuilder.setIpaddressValue(IpAddressBuilder.getDefaultInstance("ef::1")); + params.add(parmBuilder.build()); + + parmBuilder.setParameterName("ipprefix-parm"); + parmBuilder.setIpaddressValue(null); + parmBuilder.setIpprefixValue(IpPrefixBuilder.getDefaultInstance("10.0.0.0/24")); + params.add(parmBuilder.build()); + + parmBuilder.setParameterName("portnumber-parm"); + parmBuilder.setIpprefixValue(null); + parmBuilder.setPortNumber(PortNumber.getDefaultInstance("8080")); + params.add(parmBuilder.build()); + + parmBuilder.setParameterName("dcsp-parm"); + parmBuilder.setPortNumber(null); + parmBuilder.setDscp(Dscp.getDefaultInstance("57")); + params.add(parmBuilder.build()); + + execBuilder.setMode(Mode.Sync); + execBuilder.setModuleName("my-module"); + execBuilder.setRpcName("do-it-now"); + execBuilder.setSliParameter(params); + + Properties props = new Properties(); + + MdsalHelperTesterUtil.toProperties(props, execBuilder); + + LOG.info("Converted to properties"); + for (Map.Entry<Object, Object> e : props.entrySet()) { + LOG.info(e.getKey().toString() + " = " + e.getValue().toString()); + + } + + } + + public void testToBuilder() { + + Properties props = new Properties(); + + props.setProperty("execute-graph-input.mode", "Sync"); + props.setProperty("execute-graph-input.module", "my-module"); + props.setProperty("execute-graph-input.rpc", "do-it-now"); + props.setProperty("execute-graph-input.sli-parameter[0].parameter-name", "bool-parm"); + props.setProperty("execute-graph-input.sli-parameter[0].boolean-value", "true"); + props.setProperty("execute-graph-input,sli-parameter[1].parameter-name", "int-param"); + props.setProperty("execute-graph-input.sli-parameter[1].int-value", "1"); + props.setProperty("execute-graph-input.sli-parameter[2].parameter-name", "str-param"); + props.setProperty("execute-graph-input.sli-parameter[2].str-value", "hello"); + props.setProperty("execute-graph-input.sli-parameter[3].parameter-name", "ipv4address-param"); + props.setProperty("execute-graph-input.sli-parameter[3].ipaddress-value", "127.0.0.1"); + props.setProperty("execute-graph-input.sli-parameter[4].parameter-name", "ipv6address-param"); + props.setProperty("execute-graph-input.sli-parameter[4].ipaddress-value", "ef::1"); + ExecuteGraphInputBuilder execBuilder = new ExecuteGraphInputBuilder(); + + MdsalHelperTesterUtil.toBuilder(props, execBuilder); + + } + + public void testToJavaEnum() throws Exception { + assertEquals("VENDOR6500MODEL", MdsalHelper.toJavaEnum("VENDOR_6500_MODEL")); + assertEquals("_2018HelloWorld", MdsalHelper.toJavaEnum("2018Hello World")); + assertEquals("SomethingElse", MdsalHelper.toJavaEnum("Something.Else")); + assertEquals("MyTestString", MdsalHelper.toJavaEnum("my-test-string")); + } + + // During the default enumeration mapping no properties file is needed, the yang + // value is returned + // by the java object + public void testDefaultEnumerationMapping() throws Exception { + Properties props = new Properties(); + MdsalHelper.toProperties(props, new WrapperObj()); + assertEquals("4COS", props.getProperty("wrapper-obj.cos-model-type")); + } + + // When no properties file exists the default java value will be returned if + // legacy enumeration + // mapping is enabled + public void testLegacyEnumerationMappingNoProperties() throws Exception { + Properties props = new Properties(); + MdsalHelper.toProperties(props, new WrapperObj(), true); + assertEquals("_4COS", props.getProperty("wrapper-obj.cos-model-type")); + } + + // When a properties file exists & legacy enumeration mapping is enabled the + // value from the + // properties file should be returned + public void testLegacyEnumerationMappingWithProperties() throws Exception { + MdsalHelper.loadProperties("src/test/resources/EnumerationMapping.properties"); + Properties props = new Properties(); + MdsalHelper.toProperties(props, new WrapperObj(), true); + assertEquals("HelloWorld", props.getProperty("wrapper-obj.cos-model-type")); + } + + public void testSingleIpAddressToProperties() throws Exception { + Properties props = new Properties(); + String ipAddress = "11.11.11.11"; + MdsalHelper.toProperties(props, IpAddressBuilder.getDefaultInstance(ipAddress)); + assertEquals(ipAddress, props.getProperty("")); + ipAddress = "cafe::8888"; + MdsalHelper.toProperties(props, IpAddressBuilder.getDefaultInstance(ipAddress)); + assertEquals(ipAddress, props.getProperty("")); + } + + public void testSingleIpAddressToBuilder() throws Exception { + Properties props = new Properties(); + String ipAddress = "11.11.11.11"; + props.setProperty("test-object.single-ip", ipAddress); + TestObjectBuilder b = new TestObjectBuilder(); + MdsalHelper.toBuilder(props, b); + + assertEquals(ipAddress, String.valueOf(b.getSingleIp().stringValue())); + + ipAddress = "cafe::8888"; + props.setProperty("test-object.single-ip", ipAddress); + b = new TestObjectBuilder(); + MdsalHelper.toBuilder(props, b); + assertEquals(ipAddress, String.valueOf(b.getSingleIp().stringValue())); + } + + public void testIpAddressListToProperties() throws Exception { + Properties props = new Properties(); + String ipAddress = "11.11.11.11"; + TestObjectBuilder b = new TestObjectBuilder(); + List<IpAddress> ipAddressList = new ArrayList<IpAddress>(); + ipAddressList.add(IpAddressBuilder.getDefaultInstance(ipAddress)); + b.setFloatingIp(ipAddressList); + MdsalHelper.toProperties(props, b.build()); + assertEquals(ipAddress, props.getProperty("test-object.floating-ip[0]")); + assertEquals("1", props.getProperty("test-object.floating-ip_length")); + } + + public void testIpAddressListToBuilder() throws Exception { + Properties props = new Properties(); + String ipaddress = "11.11.11.12"; + props.setProperty("test-object.floating-ip_length", "1"); + props.setProperty("test-object.floating-ip[0]", ipaddress); + TestObjectBuilder b = new TestObjectBuilder(); + MdsalHelper.toBuilder(props, b); + assertEquals(ipaddress, String.valueOf(b.getFloatingIp().get(0).stringValue())); + + props = new Properties(); + ipaddress = "cafe::8888"; + props.setProperty("test-object.floating-ip_length", "1"); + props.setProperty("test-object.floating-ip[0]", ipaddress); + b = new TestObjectBuilder(); + MdsalHelper.toBuilder(props, b); + assertEquals(ipaddress, String.valueOf(b.getFloatingIp().get(0).stringValue())); + } + + public void testSingleIpv4AddressToProperties() throws Exception { + Properties props = new Properties(); + String v4address = "11.11.11.11"; + MdsalHelper.toProperties(props, IpAddressBuilder.getDefaultInstance(v4address).getIpv4Address()); + assertEquals(v4address, props.getProperty("")); + } + + public void testSingleIpv4AddressToBuilder() throws Exception { + Properties props = new Properties(); + String v4address = "11.11.11.11"; + props.setProperty("test-object.single-ip-v4", v4address); + TestObjectBuilder b = new TestObjectBuilder(); + MdsalHelper.toBuilder(props, b); + assertEquals(v4address, b.getSingleIpV4().getValue()); + } + + public void testIpv4AddressListToProperties() throws Exception { + Properties props = new Properties(); + String v4address = "11.11.11.11"; + + TestObjectBuilder b = new TestObjectBuilder(); + List<Ipv4Address> v4list = new ArrayList<Ipv4Address>(); + v4list.add(IpAddressBuilder.getDefaultInstance(v4address).getIpv4Address()); + b.setFloatingIpV4(v4list); + MdsalHelper.toProperties(props, b.build()); + assertEquals(v4address, props.getProperty("test-object.floating-ip-v4[0]")); + assertEquals("1", props.getProperty("test-object.floating-ip-v4_length")); + } + + public void testIpv4AddressListToBuilder() throws Exception { + Properties props = new Properties(); + String v4address = "11.11.11.12"; + props.setProperty("test-object.floating-ip-v4_length", "1"); + props.setProperty("test-object.floating-ip-v4[0]", v4address); + TestObjectBuilder b = new TestObjectBuilder(); + MdsalHelper.toBuilder(props, b); + assertEquals(v4address, b.getFloatingIpV4().get(0).getValue()); + } + + public void testSingleIpv6AddressToProperties() throws Exception { + Properties props = new Properties(); + String v6address = "cafe::8888"; + MdsalHelper.toProperties(props, IpAddressBuilder.getDefaultInstance(v6address).getIpv6Address()); + MdsalHelper.toBuilder(props, IpAddressBuilder.getDefaultInstance("cafe::8887")); + assertEquals(v6address, props.getProperty("")); + } + + public void testSingleIpv6AddressToBuilder() throws Exception { + Properties props = new Properties(); + String v6address = "cafe::8888"; + props.setProperty("test-object.single-ip-v6", v6address); + TestObjectBuilder b = new TestObjectBuilder(); + MdsalHelper.toBuilder(props, b); + assertEquals(v6address, b.getSingleIpV6().getValue()); + } + + public void testIpv6AddressListToProperties() throws Exception { + Properties props = new Properties(); + String v6address = "cafe::8888"; + + TestObjectBuilder b = new TestObjectBuilder(); + List<Ipv6Address> v6list = new ArrayList<Ipv6Address>(); + v6list.add(IpAddressBuilder.getDefaultInstance(v6address).getIpv6Address()); + b.setFloatingIpV6(v6list); + MdsalHelper.toProperties(props, b.build()); + assertEquals(v6address, props.getProperty("test-object.floating-ip-v6[0]")); + assertEquals("1", props.getProperty("test-object.floating-ip-v6_length")); + } + + public void testIpv6AddressListToBuilder() throws Exception { + Properties props = new Properties(); + String v6address = "cafe::8888"; + props.setProperty("test-object.floating-ip-v6_length", "1"); + props.setProperty("test-object.floating-ip-v6[0]", v6address); + TestObjectBuilder b = new TestObjectBuilder(); + MdsalHelper.toBuilder(props, b); + assertEquals(v6address, b.getFloatingIpV6().get(0).getValue()); + } + + public void testIpPrefix() throws Exception { + String ipPrefix = "10.0.0.0/24"; + Properties props = new Properties(); + MdsalHelper.toProperties(props, IpPrefixBuilder.getDefaultInstance(ipPrefix)); + assertEquals(ipPrefix, props.getProperty("")); + } + + public void testPortNumber() throws Exception { + Properties props = new Properties(); + String portNumber = "5"; + MdsalHelper.toProperties(props, PortNumber.getDefaultInstance(portNumber)); + assertEquals(portNumber, props.getProperty("")); + } + + public void testDscp() throws Exception { + Properties props = new Properties(); + String dscp = "1"; + MdsalHelper.toProperties(props, Dscp.getDefaultInstance(dscp)); + assertEquals(dscp, props.getProperty("")); + } + + public void testIetfInet() throws Exception { + Properties props = new Properties(); + Inet6Address address = + IetfInetUtil.INSTANCE.inet6AddressFor(IpAddressBuilder.getDefaultInstance("cafe::8888").getIpv6Address()); + MdsalHelper.toProperties(props, address); + assertEquals("/cafe:0:0:0:0:0:0:8888", props.getProperty("")); + } + + public void testAsNumber() throws Exception { + String value = "1"; + Properties props = new Properties(); + AsNumber num = AsNumber.getDefaultInstance(value); + MdsalHelper.toProperties(props, num); + assertEquals(value, props.getProperty("as-number")); + assertEquals(value, props.getProperty("as-number.value")); + + } + + public void testGetFullPropertiesPath() { + String propertiesName = "l3ucpe.properties"; + String path = MdsalHelper.getFullPropertiesPath(propertiesName); + // verify the default works + assertEquals("/opt/lsc/controller/configuration/l3ucpe.properties", path); + System.setProperty("karaf.home", "/opt/opendaylight/current"); + path = MdsalHelper.getFullPropertiesPath(propertiesName); + // verify the system property is read + assertEquals("/opt/opendaylight/current/configuration/l3ucpe.properties", path); + } + + public void testToPropertiesWithBinary() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Properties props = new Properties(); + byte arr[] = new byte[] {1, 6, 3}; + sampleBuilder.setSampleBinary(arr); + MdsalHelper.toProperties(props, sampleBuilder); + assertNotNull(props.get("sample-container.sample-binary")); + } + + public void testToPropertiesWithBits() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Boolean fanRunning = true; + Boolean hdLed = false; + Boolean powerLed = false; + SampleBits sampleBits = new SampleBits(fanRunning, hdLed, powerLed); + sampleBuilder.setSampleBits(sampleBits); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(fanRunning.toString(), props.get("sample-container.sample-bits.fan-running")); + assertEquals(hdLed.toString(), props.get("sample-container.sample-bits.hd-led")); + assertEquals(powerLed.toString(), props.get("sample-container.sample-bits.power-led")); + } + + public void testToPropertiesWithBoolean() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Boolean myBoolean = true; + sampleBuilder.setSampleBoolean(myBoolean); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myBoolean.toString(), props.get("sample-container.sample-boolean")); + } + + public void testToPropertiesWithDecimal64() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + BigDecimal myBigDecimal = new BigDecimal(".0000000000000000000000000000001"); + sampleBuilder.setSampleDecimal64(myBigDecimal); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + // note toString() value is 1E-31 + assertEquals(myBigDecimal.toString(), props.get("sample-container.sample-decimal64")); + } + + public void testToPropertiesWithEmpty() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Empty isEmpty = Empty.getInstance(); + sampleBuilder.setSampleEmpty(isEmpty); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(isEmpty.toString(), props.get("sample-container.sample-empty")); + } + + public void testToPropertiesWithEnumeration() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Properties props = new Properties(); + SampleEnumeration currentEnum = SampleEnumeration.ShelfSlotPort; + sampleBuilder.setSampleEnumeration(currentEnum); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals("shelf.slot.port", props.get("sample-container.sample-enumeration")); + + currentEnum = SampleEnumeration.NotAvailable; + sampleBuilder.setSampleEnumeration(currentEnum); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals("not available", props.get("sample-container.sample-enumeration")); + + currentEnum = SampleEnumeration.CURRENTLYAVAILABLE; + sampleBuilder.setSampleEnumeration(currentEnum); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals("CURRENTLY_AVAILABLE", props.get("sample-container.sample-enumeration")); + + currentEnum = SampleEnumeration._200OK; + sampleBuilder.setSampleEnumeration(currentEnum); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals("200OK", props.get("sample-container.sample-enumeration")); + + currentEnum = SampleEnumeration.HyphenSeparatedValue; + sampleBuilder.setSampleEnumeration(currentEnum); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals("hyphen-separated-value", props.get("sample-container.sample-enumeration")); + } + + // TODO test sampleBuilder.setSampleIdentityref(value); + + public void testToPropertiesWithInt8() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Byte myByte = new Byte("-128"); + sampleBuilder.setSampleInt8(myByte); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myByte.toString(), props.get("sample-container.sample-int8")); + } + + public void testToPropertiesWithInt16() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Short myShort = new Short("-32768"); + sampleBuilder.setSampleInt16(myShort); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myShort.toString(), props.get("sample-container.sample-int16")); + } + + public void testToPropertiesWithInt32() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Integer myInt = new Integer("-32768"); + sampleBuilder.setSampleInt32(myInt); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myInt.toString(), props.get("sample-container.sample-int32")); + } + + public void testToPropertiesWithInt64() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Long myLong = new Long("-9223372036854775808"); + sampleBuilder.setSampleInt64(myLong); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myLong.toString(), props.get("sample-container.sample-int64")); + } + + public void testToPropertiesWithLeafRef() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Boolean myBool = false; + sampleBuilder.setSampleLeafref(myBool); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myBool.toString(), props.get("sample-container.sample-leafref")); + } + + public void testToPropertiesWithString() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + String myString = "Hello World!"; + sampleBuilder.setSampleString(myString); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myString.toString(), props.get("sample-container.sample-string")); + } + + public void testToPropertiesWithuInt8() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Short myShort = new Short("255"); + sampleBuilder.setSampleUint8(myShort); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myShort.toString(), props.get("sample-container.sample-uint8")); + } + + public void testToPropertiesWithuInt16() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Integer myInt = new Integer("65535"); + sampleBuilder.setSampleUint16(myInt); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myInt.toString(), props.get("sample-container.sample-uint16")); + } + + public void testToPropertiesWithuInt32() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Long myLong = new Long("4294967295"); + sampleBuilder.setSampleUint32(myLong); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myLong.toString(), props.get("sample-container.sample-uint32")); + } + + public void testToPropertiesWithuInt64() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + BigInteger myBigInt = new BigInteger("2432902008176640000"); + sampleBuilder.setSampleUint64(myBigInt); + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myBigInt.toString(), props.get("sample-container.sample-uint64")); + } + + public void testToPropertiesFromBuilderUnion() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Properties props = new Properties(); + + Integer myInt = new Integer("1"); + SampleUnion test = new SampleUnion(myInt); + sampleBuilder.setSampleUnion(test); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(test.getInt32().toString(), props.get("sample-container.sample-union.int32")); + + test = new SampleUnion(SampleUnion.Enumeration.Unbounded); + sampleBuilder.setSampleUnion(test); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals("unbounded", props.get("sample-container.sample-union.enumeration")); + } + + public void testToPropertiesWithCustomType() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + Properties props = new Properties(); + + Short myShort = new Short("99"); + Percentage myPercent = new Percentage(myShort); + sampleBuilder.setPercentCompleted(myPercent); + MdsalHelper.toProperties(props, sampleBuilder); + assertEquals(myShort.toString(), props.get("sample-container.percent-completed")); + assertEquals(myShort.toString(), props.get("sample-container.percent-completed.value")); + } + + public void testToPropertiesWithLeaftList() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + List<String> nickNames = new ArrayList<String>(); + sampleBuilder.setCustomerNicknames(nickNames); + String nameOne = "coffee"; + String nameTwo = "java"; + String nameThree = "mud"; + + nickNames.add(nameOne); + nickNames.add(nameTwo); + nickNames.add(nameThree); + + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + + assertEquals(nameOne, props.get("sample-container.customer-nicknames[0]")); + assertEquals(nameTwo, props.get("sample-container.customer-nicknames[1]")); + assertEquals(nameThree, props.get("sample-container.customer-nicknames[2]")); + assertEquals(String.valueOf(nickNames.size()), props.get("sample-container.customer-nicknames_length")); + } + + public void testToPropertiesWithComplexContainer() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + LoginBuilder lb = new LoginBuilder(); + lb.setMessage("WELCOME!"); + List<CustomerAddresses> addresses = new ArrayList<CustomerAddresses>(); + CustomerAddressesBuilder cab = new CustomerAddressesBuilder(); + cab.setAddressName("home"); + cab.setState("NJ"); + cab.setStreetAddress("yellowbrick road"); + + CustomerAddresses addressOne = cab.build(); + addresses.add(addressOne); + + cab.setAddressName("vacation house"); + cab.setState("FL"); + cab.setStreetAddress("ocean ave"); + + CustomerAddresses addressTwo = cab.build(); + addresses.add(addressTwo); + + lb.setCustomerAddresses(addresses); + sampleBuilder.setLogin(lb.build()); + + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + + assertEquals("WELCOME!", props.get("sample-container.login.message")); + assertEquals("NJ", props.get("sample-container.login.customer-addresses[0].state")); + assertEquals("home", props.get("sample-container.login.customer-addresses[0].address-name")); + assertEquals("yellowbrick road", props.get("sample-container.login.customer-addresses[0].street-address")); + assertEquals("FL", props.get("sample-container.login.customer-addresses[1].state")); + assertEquals("vacation house", props.get("sample-container.login.customer-addresses[1].address-name")); + assertEquals("ocean ave", props.get("sample-container.login.customer-addresses[1].street-address")); + assertEquals("2", props.get("sample-container.login.customer-addresses_length")); + } + + public void testToPropertiesIetf() throws Exception { + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + sampleBuilder.setIpVersion(IpVersion.Ipv4); + sampleBuilder.setDscp(Dscp.getDefaultInstance("1")); + sampleBuilder.setPortNumber(PortNumber.getDefaultInstance("2")); + sampleBuilder.setIpv6FlowLabel(Ipv6FlowLabel.getDefaultInstance("3")); + sampleBuilder.setAsNumber(AsNumber.getDefaultInstance("4")); + sampleBuilder.setIpv6Address(Ipv6Address.getDefaultInstance("fdda:5cc1:23:4::1f")); + sampleBuilder.setIpAddressNoZone(IpAddressNoZoneBuilder.getDefaultInstance("fdda:5cc1:23:4::1f")); + sampleBuilder.setIpv4Address(Ipv4Address.getDefaultInstance("192.168.1.2")); + sampleBuilder.setIpv4AddressNoZone(Ipv4AddressNoZone.getDefaultInstance("192.168.1.3")); + sampleBuilder.setIpv6AddressNoZone(Ipv6AddressNoZone.getDefaultInstance("fdda:5cc1:23:4::1f")); + sampleBuilder.setIpv4Prefix(Ipv4Prefix.getDefaultInstance("198.51.100.0/24")); + sampleBuilder.setIpv6Prefix(Ipv6Prefix.getDefaultInstance("2001:db8:aaaa:1111::100/64")); + sampleBuilder.setDomainName(DomainName.getDefaultInstance("onap.org")); + sampleBuilder.setHost(HostBuilder.getDefaultInstance("machine.onap.org")); + sampleBuilder.setUri(Uri.getDefaultInstance("http://wiki.onap.org:8080")); + + Properties props = new Properties(); + MdsalHelper.toProperties(props, sampleBuilder); + + assertEquals("4", props.get("sample-container.as-number")); + assertEquals("4", props.get("sample-container.as-number.value")); + assertEquals("onap.org", props.get("sample-container.domain-name")); + assertEquals("onap.org", props.get("sample-container.domain-name.value")); + assertEquals("1", props.get("sample-container.dscp")); + assertEquals("machine.onap.org", props.get("sample-container.host.domain-name")); + assertEquals("machine.onap.org", props.get("sample-container.host.domain-name.value")); + assertEquals("fdda:5cc1:23:4::1f", props.get("sample-container.ip-address-no-zone.ipv6-address-no-zone")); + assertEquals("fdda:5cc1:23:4::1f", props.get("sample-container.ip-address-no-zone.ipv6-address-no-zone.value")); + assertEquals("ipv4", props.get("sample-container.ip-version")); + assertEquals("192.168.1.2", props.get("sample-container.ipv4-address")); + assertEquals("192.168.1.3", props.get("sample-container.ipv4-address-no-zone")); + assertEquals("192.168.1.3", props.get("sample-container.ipv4-address-no-zone.value")); + assertEquals("198.51.100.0/24", props.get("sample-container.ipv4-prefix")); + assertEquals("198.51.100.0/24", props.get("sample-container.ipv4-prefix.value")); + assertEquals("fdda:5cc1:23:4::1f", props.get("sample-container.ipv6-address")); + assertEquals("fdda:5cc1:23:4::1f", props.get("sample-container.ipv6-address-no-zone")); + assertEquals("fdda:5cc1:23:4::1f", props.get("sample-container.ipv6-address-no-zone.value")); + assertEquals("3", props.get("sample-container.ipv6-flow-label")); + assertEquals("3", props.get("sample-container.ipv6-flow-label.value")); + assertEquals("2001:db8:aaaa:1111::100/64", props.get("sample-container.ipv6-prefix")); + assertEquals("2001:db8:aaaa:1111::100/64", props.get("sample-container.ipv6-prefix.value")); + assertEquals("2", props.get("sample-container.port-number")); + assertEquals("http://wiki.onap.org:8080", props.get("sample-container.uri")); + assertEquals("http://wiki.onap.org:8080", props.get("sample-container.uri.value")); + } + + public void testIetfToBuilder() throws Exception { + Properties props = new Properties(); + props.put("sample-container.as-number", "4"); + props.put("sample-container.as-number.value", "4"); + props.put("sample-container.domain-name", "onap.org"); + props.put("sample-container.domain-name.value", "onap.org"); + props.put("sample-container.dscp", "1"); + props.put("sample-container.host.domain-name", "machine.onap.org"); + props.put("sample-container.host.domain-name.value", "machine.onap.org"); + props.put("sample-container.ip-address-no-zone.ipv6-address-no-zone", "fdda:5cc1:23:4::1f"); + props.put("sample-container.ip-address-no-zone.ipv6-address-no-zone.value", "fdda:5cc1:23:4::1f"); + props.put("sample-container.ip-version", "ipv4"); + props.put("sample-container.ipv4-address", "192.168.1.2"); + props.put("sample-container.ipv4-address-no-zone", "192.168.1.3"); + props.put("sample-container.ipv4-address-no-zone.value", "192.168.1.3"); + props.put("sample-container.ipv4-prefix", "198.51.100.0/24"); + props.put("sample-container.ipv4-prefix.value", "198.51.100.0/24"); + props.put("sample-container.ipv6-address", "fdda:5cc1:23:4::1f"); + props.put("sample-container.ipv6-address-no-zone", "fdda:5cc1:23:4::1f"); + props.put("sample-container.ipv6-address-no-zone.value", "fdda:5cc1:23:4::1f"); + props.put("sample-container.ipv6-flow-label", "3"); + props.put("sample-container.ipv6-flow-label.value", "3"); + props.put("sample-container.ipv6-prefix", "2001:db8:aaaa:1111::100/64"); + props.put("sample-container.ipv6-prefix.value", "2001:db8:aaaa:1111::100/64"); + props.put("sample-container.port-number", "2"); + props.put("sample-container.uri", "http://wiki.onap.org:8080"); + props.put("sample-container.uri.value", "http://wiki.onap.org:8080"); + SampleContainerBuilder sampleBuilder = new SampleContainerBuilder(); + + MdsalHelper.toBuilder(props, sampleBuilder); + SampleContainer result = sampleBuilder.build(); + assertEquals(AsNumber.getDefaultInstance("4"), result.getAsNumber()); + assertEquals(DomainName.getDefaultInstance("onap.org"), result.getDomainName()); + assertEquals(Dscp.getDefaultInstance("1"), result.getDscp()); + // assertEquals(HostBuilder.getDefaultInstance("machine.onap.org").getDomainName(), + // result.getHost().getDomainName()); + assertEquals(Ipv6AddressNoZone.getDefaultInstance("fdda:5cc1:23:4::1f").getValue(), + result.getIpv6AddressNoZone().getValue()); + assertEquals(IpVersion.Ipv4, result.getIpVersion()); + assertEquals(Ipv4Address.getDefaultInstance("192.168.1.2"), result.getIpv4Address()); + assertEquals(Ipv4AddressNoZone.getDefaultInstance("192.168.1.3"), result.getIpv4AddressNoZone()); + assertEquals(Ipv4Prefix.getDefaultInstance("198.51.100.0/24"), result.getIpv4Prefix()); + assertEquals(Ipv6Address.getDefaultInstance("fdda:5cc1:23:4::1f"), result.getIpv6Address()); + assertEquals(IpAddressNoZoneBuilder.getDefaultInstance("fdda:5cc1:23:4::1f").getIpv6AddressNoZone().getValue(), + result.getIpv6AddressNoZone().getValue()); + assertEquals(Ipv6FlowLabel.getDefaultInstance("3"), result.getIpv6FlowLabel()); + assertEquals(Ipv6Prefix.getDefaultInstance("2001:db8:aaaa:1111::100/64"), result.getIpv6Prefix()); + assertEquals(PortNumber.getDefaultInstance("2"), result.getPortNumber()); + assertEquals(Uri.getDefaultInstance("http://wiki.onap.org:8080"), result.getUri()); + } + + public void testToLowerHyphen() throws Exception { + String camelCase = "HelloWorld"; + String hypenCase = MdsalHelper.toLowerHyphen(camelCase); + assertEquals("hello-world", hypenCase); + + camelCase = "L2SwitchInterfaces"; + hypenCase = MdsalHelper.toLowerHyphen(camelCase); + assertEquals("l2-switch-interfaces", hypenCase); + + camelCase = "ABC"; + hypenCase = MdsalHelper.toLowerHyphen(camelCase); + assertEquals("a-b-c", hypenCase); + } + +} diff --git a/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/MdsalHelperTesterUtil.java b/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/MdsalHelperTesterUtil.java new file mode 100644 index 000000000..2167b8101 --- /dev/null +++ b/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/MdsalHelperTesterUtil.java @@ -0,0 +1,37 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : CCSDK + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.ccsdk.sli.core.sli.provider; + +import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MdsalHelperTesterUtil extends MdsalHelper { + + private static final Logger LOG = LoggerFactory.getLogger(MdsalHelperTesterUtil.class); + + //Normally static init of classes goes here for some weird classloader thing + static { + String str = "Hello World!"; + } + +} diff --git a/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/PrintYangToPropTest.java b/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/PrintYangToPropTest.java new file mode 100644 index 000000000..50b7926a0 --- /dev/null +++ b/sli/provider/src/test/java/org/onap/ccsdk/sli/core/sli/provider/PrintYangToPropTest.java @@ -0,0 +1,142 @@ +/*- + 2 * ============LICENSE_START======================================================= + 3 * ONAP CCSDK + 4 * ================================================================================ + 5 * Copyright (C) 2019 AT&T Intellectual Property. All rights + 6 * reserved. + 7 * ================================================================================ + 8 * Licensed under the Apache License, Version 2.0 (the "License"); + 9 * you may not use this file except in compliance with the License. + 10 * You may obtain a copy of the License at + 11 * + 12 * http://www.apache.org/licenses/LICENSE-2.0 + 13 * + 14 * Unless required by applicable law or agreed to in writing, software + 15 * distributed under the License is distributed on an "AS IS" BASIS, + 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 17 * See the License for the specific language governing permissions and + 18 * limitations under the License. + 19 * ============LICENSE_END============================================ + 20 * =================================================================== + 21 * + 22 */ +package org.onap.ccsdk.sli.core.sli.provider; + +import java.util.Enumeration; +import java.util.LinkedList; +import java.util.List; +import java.util.Properties; + +import org.junit.Test; +import org.onap.ccsdk.sli.core.sli.provider.PrintYangToProp; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.ExecuteGraphInput.Mode; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.ExecuteGraphInputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.TestResultsBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.execute.graph.input.SliParameter; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.execute.graph.input.SliParameterBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.test.results.TestResult; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.core.sliapi.rev161110.test.results.TestResultBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author dt5972 + * + */ +public class PrintYangToPropTest { + + private static final Logger LOG = LoggerFactory.getLogger(PrintYangToPropTest.class); + @Test + public void test() { + + Properties props = new Properties(); + + // Set up a builder with data + ExecuteGraphInputBuilder egBuilder = new ExecuteGraphInputBuilder(); + egBuilder.setMode(Mode.Sync); + egBuilder.setModuleName("my-module"); + egBuilder.setRpcName("my-rpc"); + + List<SliParameter> pList = new LinkedList<>(); + + SliParameterBuilder pBuilder = new SliParameterBuilder(); + pBuilder.setParameterName("string-param"); + pBuilder.setStringValue("hi"); + pList.add(pBuilder.build()); + pBuilder.setParameterName("int-param"); + pBuilder.setIntValue(1); + pBuilder.setStringValue(null); + pList.add(pBuilder.build()); + pBuilder.setParameterName("bool-param"); + pBuilder.setIntValue(null); + pBuilder.setBooleanValue(true); + pList.add(pBuilder.build()); + pBuilder.setParameterName("ipaddress-value1"); + pBuilder.setBooleanValue(null); + pBuilder.setIpaddressValue(IpAddressBuilder.getDefaultInstance("127.0.0.1")); + pList.add(pBuilder.build()); + pBuilder.setParameterName("ipaddress-value1"); + pBuilder.setIpaddressValue(IpAddressBuilder.getDefaultInstance("::1")); + pList.add(pBuilder.build()); + pBuilder.setParameterName("ipprefix-value1"); + pBuilder.setIpaddressValue(null); + pBuilder.setIpprefixValue(IpPrefixBuilder.getDefaultInstance("192.168.0.0/16")); + pList.add(pBuilder.build()); + pBuilder.setParameterName("ipprefix-value2"); + pBuilder.setIpprefixValue(IpPrefixBuilder.getDefaultInstance("2001:db8:3c4d::/48")); + pList.add(pBuilder.build()); + + + + egBuilder.setSliParameter(pList); + + + // Generate properties + props = PrintYangToProp.toProperties(props, egBuilder); + + Enumeration propNames = props.propertyNames(); + + while (propNames.hasMoreElements()) { + String propName = (String) propNames.nextElement(); + LOG.info("Property {} = {}", propName, props.getProperty(propName)); + } + + // Generate builder from properties just generated + PrintYangToProp.toBuilder(props, pBuilder); + + + } + + @Test + public void testWithList() { + TestResultsBuilder resultsBuilder = new TestResultsBuilder(); + TestResultBuilder resultBuilder = new TestResultBuilder(); + + // Set builder with values + List<TestResult> resultList = new LinkedList<>(); + resultBuilder.setTestIdentifier("test1"); + List<String> results = new LinkedList<>(); + results.add("pass"); + resultBuilder.setResults(results); + resultList.add(resultBuilder.build()); + resultsBuilder.setTestResult(resultList); + + // Generate properties + Properties props = new Properties(); + props = PrintYangToProp.toProperties(props, resultsBuilder); + + Enumeration propNames = props.propertyNames(); + + while (propNames.hasMoreElements()) { + String propName = (String) propNames.nextElement(); + LOG.info("Property {} = {}", propName, props.getProperty(propName)); + } + + // Generate builder from properties just generated + PrintYangToProp.toBuilder(props, resultsBuilder); + + } + +} diff --git a/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/CosModelType.java b/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/CosModelType.java new file mode 100644 index 000000000..2aaaf8aa3 --- /dev/null +++ b/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/CosModelType.java @@ -0,0 +1,51 @@ +package org.opendaylight.yang.gen.v1.test; + +public enum CosModelType { + _4COS(0, "4COS"), + + _6COS(1, "6COS") + ; + + private static final java.util.Map<java.lang.Integer, CosModelType> VALUE_MAP; + + static { + final com.google.common.collect.ImmutableMap.Builder<java.lang.Integer, CosModelType> b = com.google.common.collect.ImmutableMap.builder(); + for (CosModelType enumItem : CosModelType.values()) { + b.put(enumItem.value, enumItem); + } + + VALUE_MAP = b.build(); + } + + private final java.lang.String name; + private final int value; + + private CosModelType(int value, java.lang.String name) { + this.value = value; + this.name = name; + } + + /** + * Returns the name of the enumeration item as it is specified in the input yang. + * + * @return the name of the enumeration item as it is specified in the input yang + */ + public java.lang.String getName() { + return name; + } + + /** + * @return integer value + */ + public int getIntValue() { + return value; + } + + /** + * @param valueArg integer value + * @return corresponding CosModelType item + */ + public static CosModelType forValue(int valueArg) { + return VALUE_MAP.get(valueArg); + } +}
\ No newline at end of file diff --git a/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/TestObject.java b/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/TestObject.java new file mode 100755 index 000000000..eacfc9f63 --- /dev/null +++ b/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/TestObject.java @@ -0,0 +1,17 @@ +package org.opendaylight.yang.gen.v1.test;
+
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
+
+public interface TestObject {
+ List<IpAddress> getFloatingIp();
+ List<Ipv4Address> getFloatingIpV4();
+ List<Ipv6Address> getFloatingIpV6();
+ Ipv4Address getSingleIpV4();
+ Ipv6Address getSingleIpV6();
+ IpAddress getSingleIp();
+
+}
diff --git a/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/TestObjectBuilder.java b/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/TestObjectBuilder.java new file mode 100755 index 000000000..8301a0f05 --- /dev/null +++ b/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/TestObjectBuilder.java @@ -0,0 +1,134 @@ +package org.opendaylight.yang.gen.v1.test;
+
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
+import org.opendaylight.yangtools.concepts.Builder;
+
+public class TestObjectBuilder implements Builder<TestObject> {
+ private List<IpAddress> _floatingIp;
+ private List<Ipv4Address> _floatingIpV4;
+ private List<Ipv6Address> _floatingIpV6;
+ private IpAddress _singleIp;
+ private Ipv4Address _singleIpV4;
+ private Ipv6Address _singleIpV6;
+
+ public List<IpAddress> getFloatingIp() {
+ return _floatingIp;
+ }
+
+ public List<Ipv4Address> getFloatingIpV4() {
+ return _floatingIpV4;
+ }
+
+ public List<Ipv6Address> getFloatingIpV6() {
+ return _floatingIpV6;
+ }
+
+ public Ipv4Address getSingleIpV4() {
+ return _singleIpV4;
+ }
+
+ public Ipv6Address getSingleIpV6() {
+ return _singleIpV6;
+ }
+
+ public IpAddress getSingleIp() {
+ return _singleIp;
+ }
+
+ public TestObjectBuilder setFloatingIp(final List<IpAddress> value) {
+ this._floatingIp = value;
+ return this;
+ }
+
+ public TestObjectBuilder setFloatingIpV4(final List<Ipv4Address> value) {
+ this._floatingIpV4 = value;
+ return this;
+ }
+
+ public TestObjectBuilder setFloatingIpV6(final List<Ipv6Address> value) {
+ this._floatingIpV6 = value;
+ return this;
+ }
+
+ public TestObjectBuilder setSingleIp(final IpAddress value) {
+ this._singleIp = value;
+ return this;
+ }
+
+ public TestObjectBuilder setSingleIpV4(final Ipv4Address value) {
+ this._singleIpV4 = value;
+ return this;
+ }
+
+ public TestObjectBuilder setSingleIpV6(final Ipv6Address value) {
+ this._singleIpV6 = value;
+ return this;
+ }
+
+ public TestObjectBuilder() {
+
+ }
+
+ public TestObject build() {
+ return new TestObjectImpl(this);
+ }
+
+ @Override
+ public String toString() {
+ return "TestObjectBuilder [_floatingIp=" + _floatingIp + ", _floatingIpV4=" + _floatingIpV4 + ", _floatingIpV6="
+ + _floatingIpV6 + ", _singleIp=" + _singleIp + ", _singleIpV4=" + _singleIpV4 + ", _singleIpV6="
+ + _singleIpV6 + "]";
+ }
+
+ private static final class TestObjectImpl implements TestObject {
+ private List<IpAddress> _floatingIp;
+ private List<Ipv4Address> _floatingIpV4;
+ private List<Ipv6Address> _floatingIpV6;
+ private IpAddress _singleIp;
+ private Ipv4Address _singleIpV4;
+ private Ipv6Address _singleIpV6;
+
+ @Override
+ public List<IpAddress> getFloatingIp() {
+ return _floatingIp;
+ }
+
+ @Override
+ public List<Ipv4Address> getFloatingIpV4() {
+ return _floatingIpV4;
+ }
+
+ @Override
+ public List<Ipv6Address> getFloatingIpV6() {
+ return _floatingIpV6;
+ }
+
+ @Override
+ public Ipv4Address getSingleIpV4() {
+ return _singleIpV4;
+ }
+
+ @Override
+ public Ipv6Address getSingleIpV6() {
+ return _singleIpV6;
+ }
+
+ @Override
+ public IpAddress getSingleIp() {
+ return _singleIp;
+ }
+
+ private TestObjectImpl(TestObjectBuilder base) {
+ this._floatingIp = base.getFloatingIp();
+ this._floatingIpV4 = base.getFloatingIpV4();
+ this._floatingIpV6 = base.getFloatingIpV6();
+ this._singleIp = base.getSingleIp();
+ this._singleIpV4 = base.getSingleIpV4();
+ this._singleIpV6 = base.getSingleIpV6();
+ }
+ }
+}
diff --git a/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/WrapperObj.java b/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/WrapperObj.java new file mode 100644 index 000000000..bae0bdb1c --- /dev/null +++ b/sli/provider/src/test/java/org/opendaylight/yang/gen/v1/test/WrapperObj.java @@ -0,0 +1,10 @@ +package org.opendaylight.yang.gen.v1.test; + +public class WrapperObj { + + CosModelType cosModel = CosModelType._4COS; + + public CosModelType getCosModelType() { + return cosModel; + } +} |