| /* |
| * Copyright 2016 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.tetopology.manager.api; |
| |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.onosproject.tetopology.management.api.link.ConnectivityMatrixId; |
| import org.onosproject.tetopology.management.api.link.ElementType; |
| import org.onosproject.tetopology.management.api.link.Label; |
| import org.onosproject.tetopology.management.api.link.PathElement; |
| import org.onosproject.tetopology.management.api.link.TePathAttributes; |
| import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath; |
| import org.onosproject.tetopology.management.api.link.UnderlayBackupPath; |
| import org.onosproject.tetopology.management.api.node.ConnectivityMatrix; |
| import org.onosproject.tetopology.management.api.node.ConnectivityMatrixKey; |
| import org.onosproject.tetopology.management.api.node.TeNodeKey; |
| import org.onosproject.tetopology.management.api.node.TtpKey; |
| |
| import java.util.ArrayList; |
| import java.util.BitSet; |
| import java.util.List; |
| |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| |
| /** |
| * Unit tests for TE node APIs. |
| */ |
| public class TeNodeApiTest { |
| private static final long DEFAULT_PROVIDER_ID = 123; |
| private static final long DEFAULT_CLIENT_ID = 456; |
| private static final long DEFAULT_TOPOLOGY_ID = 789; |
| private static final long DEFAULT_TE_NODE_ID = 1234; |
| private static final long DEFAULT_CONNECTIVITY_ENTRY_ID = 5678; |
| private static final long DEFAULT_TTP_ID = 897; |
| private static final String DEFAULT_TOPOLOGY_ID_STRING = |
| "default-topology-123"; |
| private static final long DEFAULT_PATH_ELEMENT_ID = 234; |
| private static final long DEFAULT_UNDERLAY_BACKUP_PATH_IDX = 10; |
| |
| private long providerId; |
| private long clientId; |
| private long topologyId; |
| private long teNodeId; |
| private long connectivityMatrixEntryId; |
| private long pathElementId; |
| private long underlayBackupPathIndex; |
| private long ttpId; |
| |
| private String topologyIdString; |
| |
| @Before |
| public void setUp() { |
| providerId = DEFAULT_PROVIDER_ID; |
| clientId = DEFAULT_CLIENT_ID; |
| topologyId = DEFAULT_TOPOLOGY_ID; |
| teNodeId = DEFAULT_TE_NODE_ID; |
| connectivityMatrixEntryId = DEFAULT_CONNECTIVITY_ENTRY_ID; |
| topologyIdString = DEFAULT_TOPOLOGY_ID_STRING; |
| pathElementId = DEFAULT_PATH_ELEMENT_ID; |
| underlayBackupPathIndex = DEFAULT_UNDERLAY_BACKUP_PATH_IDX; |
| ttpId = DEFAULT_TTP_ID; |
| } |
| |
| @Test |
| public void connectivityMatrixKeyEqualOperatorTest() { |
| ConnectivityMatrixKey key1 = new ConnectivityMatrixKey(providerId, |
| clientId, |
| topologyId, |
| teNodeId, |
| connectivityMatrixEntryId); |
| ConnectivityMatrixKey key2 = new ConnectivityMatrixKey(providerId, |
| clientId, |
| topologyId, |
| teNodeId, |
| connectivityMatrixEntryId); |
| ConnectivityMatrixKey key3 = new ConnectivityMatrixKey(providerId + 1, |
| clientId, |
| topologyId, |
| teNodeId, |
| connectivityMatrixEntryId); |
| ConnectivityMatrixKey key4 = new ConnectivityMatrixKey(providerId, |
| clientId + 1, |
| topologyId, |
| teNodeId, |
| connectivityMatrixEntryId); |
| ConnectivityMatrixKey key5 = new ConnectivityMatrixKey(providerId, |
| clientId, |
| topologyId + 1, |
| teNodeId, |
| connectivityMatrixEntryId); |
| ConnectivityMatrixKey key6 = new ConnectivityMatrixKey(providerId, |
| clientId, |
| topologyId, |
| teNodeId + 1, |
| connectivityMatrixEntryId); |
| ConnectivityMatrixKey key7 = new ConnectivityMatrixKey(providerId, |
| clientId, |
| topologyId, |
| teNodeId, |
| connectivityMatrixEntryId + 1); |
| |
| assertTrue("Two matrix keys must be equal", key1.equals(key2)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key3)); |
| assertFalse("Two matrix keys must be unequal", key3.equals(key1)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key4)); |
| assertFalse("Two matrix keys must be unequal", key4.equals(key1)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key5)); |
| assertFalse("Two matrix keys must be unequal", key5.equals(key1)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key6)); |
| assertFalse("Two matrix keys must be unequal", key6.equals(key1)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key7)); |
| assertFalse("Two matrix keys must be unequal", key7.equals(key1)); |
| } |
| |
| @Test |
| public void underlayBackupPathEqualOperatorTest() { |
| ElementType pathElementType1 = new Label(pathElementId + 1); |
| ElementType pathElementType2 = new Label(pathElementId + 2); |
| ElementType pathElementType3 = new Label(pathElementId + 3); |
| ElementType pathElementType4 = new Label(pathElementId + 4); |
| |
| PathElement pathElement1 = new PathElement(pathElementId, teNodeId, |
| pathElementType1, true); |
| PathElement pathElement2 = new PathElement(pathElementId + 1, |
| teNodeId + 1, |
| pathElementType2, true); |
| PathElement pathElement3 = new PathElement(pathElementId + 2, |
| teNodeId + 2, |
| pathElementType3, true); |
| PathElement pathElement4 = new PathElement(pathElementId + 3, |
| teNodeId + 3, |
| pathElementType4, true); |
| |
| List<PathElement> pathElementList1 = new ArrayList<>(); |
| pathElementList1.add(pathElement1); |
| pathElementList1.add(pathElement2); |
| pathElementList1.add(pathElement3); |
| |
| List<PathElement> pathElementList2 = new ArrayList<>(); |
| pathElementList2.add(pathElement1); |
| pathElementList2.add(pathElement2); |
| pathElementList2.add(pathElement4); |
| |
| // bp1 and bp2 are the same. bp3, bp4, and bp5 differ by one |
| // attribute comparing to bp1. |
| UnderlayBackupPath bp1 = new UnderlayBackupPath( |
| underlayBackupPathIndex, pathElementList1, true); |
| UnderlayBackupPath bp2 = new UnderlayBackupPath( |
| underlayBackupPathIndex, pathElementList1, true); |
| |
| UnderlayBackupPath bp3 = new UnderlayBackupPath( |
| underlayBackupPathIndex + 1, pathElementList1, true); |
| UnderlayBackupPath bp4 = new UnderlayBackupPath( |
| underlayBackupPathIndex, pathElementList2, true); |
| UnderlayBackupPath bp5 = new UnderlayBackupPath( |
| underlayBackupPathIndex, pathElementList1, false); |
| |
| |
| assertTrue("Two backup paths must be equal", bp1.equals(bp2)); |
| |
| assertFalse("Two backup paths must be unequal", bp1.equals(bp3)); |
| assertFalse("Two backup paths must be unequal", bp3.equals(bp1)); |
| |
| assertFalse("Two backup paths must be unequal", bp1.equals(bp4)); |
| assertFalse("Two backup paths must be unequal", bp4.equals(bp1)); |
| |
| assertFalse("Two backup paths must be unequal", bp1.equals(bp5)); |
| assertFalse("Two backup paths must be unequal", bp5.equals(bp1)); |
| } |
| |
| |
| @Test |
| public void connectivityMatrixEqualOperatorTest() { |
| long key1 = connectivityMatrixEntryId; |
| long key2 = connectivityMatrixEntryId + 1; |
| |
| ElementType pathElementType1 = new Label(pathElementId + 1); |
| ElementType pathElementType2 = new Label(pathElementId + 2); |
| ElementType pathElementType3 = new Label(pathElementId + 3); |
| ElementType pathElementType4 = new Label(pathElementId + 4); |
| |
| PathElement pathElement1 = new PathElement(pathElementId, teNodeId, |
| pathElementType1, true); |
| PathElement pathElement2 = new PathElement(pathElementId + 1, |
| teNodeId + 1, |
| pathElementType2, true); |
| PathElement pathElement3 = new PathElement(pathElementId + 2, |
| teNodeId + 2, |
| pathElementType3, true); |
| PathElement pathElement4 = new PathElement(pathElementId + 3, |
| teNodeId + 3, |
| pathElementType4, true); |
| |
| List<PathElement> pathElementList1 = new ArrayList<>(); |
| pathElementList1.add(pathElement1); |
| pathElementList1.add(pathElement2); |
| pathElementList1.add(pathElement3); |
| |
| List<PathElement> pathElementList2 = new ArrayList<>(); |
| pathElementList2.add(pathElement1); |
| pathElementList2.add(pathElement2); |
| pathElementList2.add(pathElement4); |
| |
| UnderlayAbstractPath abstractPath1 = new UnderlayAbstractPath( |
| pathElementList1, true); |
| UnderlayAbstractPath abstractPath2 = new UnderlayAbstractPath( |
| pathElementList2, true); |
| |
| ElementType from = new ConnectivityMatrixId(connectivityMatrixEntryId); |
| List<ElementType> mergingList = new ArrayList<>(); |
| mergingList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 1)); |
| mergingList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 2)); |
| |
| List<ElementType> constrainList = new ArrayList<>(); |
| constrainList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 3)); |
| constrainList.add(new ConnectivityMatrixId(connectivityMatrixEntryId + 4)); |
| |
| BitSet flags = new BitSet(1); |
| |
| List<Long> srlgs = new ArrayList<>(); |
| srlgs.add(new Long(10)); |
| TePathAttributes tePathAttributes = new TePathAttributes(new Long(10), |
| new Long(10), |
| srlgs); |
| |
| ConnectivityMatrix matrix1 = new ConnectivityMatrix(key1, |
| from, |
| mergingList, |
| constrainList, |
| flags, |
| tePathAttributes, |
| abstractPath1); |
| ConnectivityMatrix matrix2 = new ConnectivityMatrix(key1, |
| from, |
| mergingList, |
| constrainList, |
| flags, |
| tePathAttributes, |
| abstractPath1); |
| ConnectivityMatrix matrix3 = new ConnectivityMatrix(key1, |
| from, |
| mergingList, |
| constrainList, |
| flags, |
| tePathAttributes, |
| abstractPath2); |
| ConnectivityMatrix matrix4 = new ConnectivityMatrix(key2, |
| from, |
| mergingList, |
| constrainList, |
| flags, |
| tePathAttributes, |
| abstractPath1); |
| |
| assertTrue("Two conn matrices must be equal", matrix1.equals(matrix2)); |
| |
| assertFalse("Two conn matrices must be unequal", matrix1.equals(matrix3)); |
| assertFalse("Two conn matrices must be unequal", matrix3.equals(matrix1)); |
| |
| assertFalse("Two conn matrices must be unequal", matrix1.equals(matrix4)); |
| assertFalse("Two conn matrices must be unequal", matrix4.equals(matrix1)); |
| } |
| |
| @Test |
| public void teNodeKeyEqualOperatorTest() { |
| TeNodeKey key1 = new TeNodeKey(providerId, clientId, |
| topologyId, teNodeId); |
| TeNodeKey key2 = new TeNodeKey(providerId, clientId, |
| topologyId, teNodeId); |
| TeNodeKey key3 = new TeNodeKey(providerId + 1, clientId, |
| topologyId, teNodeId); |
| TeNodeKey key4 = new TeNodeKey(providerId, clientId + 1, |
| topologyId, teNodeId); |
| TeNodeKey key5 = new TeNodeKey(providerId, clientId, |
| topologyId + 1, teNodeId); |
| TeNodeKey key6 = new TeNodeKey(providerId, clientId, |
| topologyId, teNodeId + 1); |
| |
| assertTrue("Two matrix keys must be equal", key1.equals(key2)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key3)); |
| assertFalse("Two matrix keys must be unequal", key3.equals(key1)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key4)); |
| assertFalse("Two matrix keys must be unequal", key4.equals(key1)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key5)); |
| assertFalse("Two matrix keys must be unequal", key5.equals(key1)); |
| |
| assertFalse("Two matrix keys must be unequal", key1.equals(key6)); |
| assertFalse("Two matrix keys must be unequal", key6.equals(key1)); |
| } |
| |
| @Test |
| public void ttpMatrixKeyEqualOperatorTest() { |
| TtpKey key1 = new TtpKey(providerId, clientId, topologyId, |
| teNodeId, ttpId); |
| TtpKey key2 = new TtpKey(providerId, clientId, topologyId, |
| teNodeId, ttpId); |
| TtpKey key3 = new TtpKey(providerId + 1, clientId, topologyId, |
| teNodeId, ttpId); |
| TtpKey key4 = new TtpKey(providerId, clientId + 1, topologyId, |
| teNodeId, ttpId); |
| TtpKey key5 = new TtpKey(providerId, clientId, topologyId + 1, |
| teNodeId, ttpId); |
| TtpKey key6 = new TtpKey(providerId, clientId, topologyId, |
| teNodeId + 1, ttpId); |
| TtpKey key7 = new TtpKey(providerId, clientId, topologyId, |
| teNodeId, ttpId + 1); |
| |
| assertTrue("Two TTP keys must be equal", key1.equals(key2)); |
| |
| assertFalse("Two TTP keys must be unequal", key1.equals(key3)); |
| assertFalse("Two TTP keys must be unequal", key3.equals(key1)); |
| |
| assertFalse("Two TTP keys must be unequal", key1.equals(key4)); |
| assertFalse("Two TTP keys must be unequal", key4.equals(key1)); |
| |
| assertFalse("Two TTP keys must be unequal", key1.equals(key5)); |
| assertFalse("Two TTP keys must be unequal", key5.equals(key1)); |
| |
| assertFalse("Two TTP keys must be unequal", key1.equals(key6)); |
| assertFalse("Two TTP keys must be unequal", key6.equals(key1)); |
| |
| assertFalse("Two TTP keys must be unequal", key1.equals(key7)); |
| assertFalse("Two TTP keys must be unequal", key7.equals(key1)); |
| } |
| |
| } |