Bugfix: OpticalPortOperator should be able to overwrite port number.
- bug introduced in ONOS-3503.
- added exact equality comparison method to PortNumber
- removed null PortNumber case handling test
Change-Id: I6d1f191b5a64b79426de9d80cffadd6c9de96d56
(cherry picked from commit fdb82fa496ba319fbff49e56956377dcc1c71d5f)
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
index 6f277d6..6d257e4 100644
--- 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
@@ -28,62 +28,94 @@
import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.net.SparseAnnotations;
-import org.onosproject.net.device.OduCltPortDescription;
-
+import org.onosproject.net.device.PortDescription;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import static org.junit.Assert.assertEquals;
+import static org.onosproject.net.optical.device.OduCltPortHelper.oduCltPortDescription;
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 long PORT_NUMBER = 100;
+ private static final String CFG_KEY = "optical";
- 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 String CFG_PORT_NAME = "cfg-name";
+ private static final long CFG_STATIC_LAMBDA = 300L;
+ private static final String DESC_PORT_NAME = "test-port-100";
+ private static final PortNumber NAMED = PortNumber.portNumber(PORT_NUMBER, DESC_PORT_NAME);
+ private static final PortNumber UNNAMED = PortNumber.portNumber(PORT_NUMBER);
+
+ private static final String DESC_STATIC_PORT = "out-port-200";
private static final SparseAnnotations SA = DefaultAnnotations.builder()
- .set(AnnotationKeys.STATIC_PORT, SPNAME)
+ .set(AnnotationKeys.STATIC_PORT, DESC_STATIC_PORT)
.build();
- private static final OduCltPortDescription N_DESC = new OduCltPortDescription(
+ private static final PortDescription N_DESC = oduCltPortDescription(
NAMED, true, CltSignalType.CLT_100GBE, SA);
- private static final OduCltPortDescription FAULTY = new OduCltPortDescription(
- null, true, CltSignalType.CLT_100GBE);
+ private static final PortDescription U_DESC = oduCltPortDescription(
+ UNNAMED, true, CltSignalType.CLT_100GBE, SA);
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();
+ private static final ConnectPoint CP = new ConnectPoint(DID, UNNAMED);
+
+ private static final OpticalPortConfig 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);
+ OPC.init(CP, CFG_KEY, JsonNodeFactory.instance.objectNode(), mapper, delegate);
}
- @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());
+ @Test
+ public void testConfigPortName() {
+ OPC.portType(Port.Type.ODUCLT)
+ .portNumberName(PORT_NUMBER)
+ .portName(CFG_PORT_NAME);
+
+ PortDescription res;
// 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);
+ res = OpticalPortOperator.combine(OPC, N_DESC);
+ assertEquals("Configured port name expected",
+ CFG_PORT_NAME, res.portNumber().name());
+ assertEquals(DESC_STATIC_PORT, res.annotations().value(AnnotationKeys.STATIC_PORT));
+
+ res = OpticalPortOperator.combine(OPC, U_DESC);
+ assertEquals("Configured port name expected",
+ CFG_PORT_NAME, res.portNumber().name());
+ assertEquals(DESC_STATIC_PORT, res.annotations().value(AnnotationKeys.STATIC_PORT));
}
+ @Test
+ public void testConfigAddStaticLambda() {
+ OPC.portType(Port.Type.ODUCLT)
+ .portNumberName(PORT_NUMBER)
+ .staticLambda(CFG_STATIC_LAMBDA);
+
+ PortDescription res;
+ res = OpticalPortOperator.combine(OPC, N_DESC);
+ assertEquals("Original port name expected",
+ DESC_PORT_NAME, res.portNumber().name());
+ assertEquals(DESC_STATIC_PORT, res.annotations().value(AnnotationKeys.STATIC_PORT));
+ long sl = Long.valueOf(res.annotations().value(AnnotationKeys.STATIC_LAMBDA));
+ assertEquals(CFG_STATIC_LAMBDA, sl);
+ }
+
+ @Test
+ public void testEmptyConfig() {
+ OPC.portType(Port.Type.ODUCLT)
+ .portNumberName(PORT_NUMBER);
+
+ PortDescription res;
+ res = OpticalPortOperator.combine(OPC, N_DESC);
+ assertEquals("Configured port name expected",
+ DESC_PORT_NAME, res.portNumber().name());
+ assertEquals(DESC_STATIC_PORT, res.annotations().value(AnnotationKeys.STATIC_PORT));
+ }
+
+
private class MockCfgDelegate implements ConfigApplyDelegate {
@Override