Notion of config operators:
Added operator for combining configuration info for Optical ports
from various sources. Also includes minor tweaks to OpticalPortConfig,
and javadoc fixes.
Change-Id: I754b2e29f560b473d1f791025f8b8b18c8d75a13
diff --git a/core/net/src/test/java/org/onosproject/net/device/impl/OpticalPortOperatorTest.java b/core/net/src/test/java/org/onosproject/net/device/impl/OpticalPortOperatorTest.java
new file mode 100644
index 0000000..c798be3
--- /dev/null
+++ b/core/net/src/test/java/org/onosproject/net/device/impl/OpticalPortOperatorTest.java
@@ -0,0 +1,80 @@
+package org.onosproject.net.device.impl;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.incubator.net.config.Config;
+import org.onosproject.incubator.net.config.ConfigApplyDelegate;
+import org.onosproject.incubator.net.config.basics.OpticalPortConfig;
+import org.onosproject.net.AnnotationKeys;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.DefaultAnnotations;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.OduCltPort;
+import org.onosproject.net.Port;
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.SparseAnnotations;
+import org.onosproject.net.device.OduCltPortDescription;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+
+import static org.junit.Assert.assertEquals;
+
+public class OpticalPortOperatorTest {
+ private static final DeviceId DID = DeviceId.deviceId("op-test");
+ private static final String TPNAME = "test-port-100";
+ private static final String SPNAME = "out-port-200";
+ private static final String CFGNAME = "cfg-name";
+
+ private static final PortNumber NAMED = PortNumber.portNumber(100, TPNAME);
+ private static final PortNumber UNNAMED = PortNumber.portNumber(101);
+ private static final ConnectPoint NCP = new ConnectPoint(DID, UNNAMED);
+
+ private static final SparseAnnotations SA = DefaultAnnotations.builder()
+ .set(AnnotationKeys.STATIC_PORT, SPNAME)
+ .build();
+
+ private static final OduCltPortDescription N_DESC = new OduCltPortDescription(
+ NAMED, true, OduCltPort.SignalType.CLT_100GBE, SA);
+ private static final OduCltPortDescription FAULTY = new OduCltPortDescription(
+ null, true, OduCltPort.SignalType.CLT_100GBE);
+
+ private final ConfigApplyDelegate delegate = new MockCfgDelegate();
+ private final ObjectMapper mapper = new ObjectMapper();
+
+ private static final OpticalPortConfig N_OPC = new OpticalPortConfig();
+ private static final OpticalPortConfig UNN_OPC = new OpticalPortConfig();
+
+ @Before
+ public void setUp() {
+ N_OPC.init(NCP, TPNAME, JsonNodeFactory.instance.objectNode(), mapper, delegate);
+ UNN_OPC.init(NCP, TPNAME, JsonNodeFactory.instance.objectNode(), mapper, delegate);
+
+ N_OPC.portName(CFGNAME).portNumberName(101L).portType(Port.Type.ODUCLT).staticLambda(300L);
+ UNN_OPC.portType(Port.Type.ODUCLT);
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void testDescOps() {
+ // port-null desc + opc with port number name
+ OduCltPortDescription res = (OduCltPortDescription) OpticalPortOperator.combine(N_OPC, FAULTY);
+ assertEquals(CFGNAME, res.portNumber().name());
+ // full desc + opc with name
+ assertEquals(TPNAME, N_DESC.portNumber().name());
+ res = (OduCltPortDescription) OpticalPortOperator.combine(N_OPC, N_DESC);
+ long sl = Long.valueOf(res.annotations().value(AnnotationKeys.STATIC_LAMBDA));
+ assertEquals(CFGNAME, res.portNumber().name());
+ assertEquals(300L, sl);
+ // port-null desc + opc without port number name - throws RE
+ res = (OduCltPortDescription) OpticalPortOperator.combine(UNN_OPC, FAULTY);
+ }
+
+ private class MockCfgDelegate implements ConfigApplyDelegate {
+
+ @Override
+ public void onApply(@SuppressWarnings("rawtypes") Config config) {
+ config.apply();
+ }
+
+ }
+}