blob: 0a7516de9f9bdf530426a9309a74e80666e68e5c [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2014-present Open Networking Foundation
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.net;
tom5a9383a2014-10-02 07:33:52 -070017
18import com.google.common.testing.EqualsTester;
19import org.junit.Test;
20
Jonathan Hartc3af35a2015-04-30 22:20:29 -070021import static junit.framework.TestCase.fail;
tom747a2132014-10-02 08:18:41 -070022import static org.junit.Assert.assertEquals;
Jonathan Hartc3af35a2015-04-30 22:20:29 -070023import static org.junit.Assert.assertTrue;
Simon Hunt86943082017-06-15 13:18:42 -070024import static org.onosproject.net.ConnectPointTest.Relate.AFTER;
25import static org.onosproject.net.ConnectPointTest.Relate.BEFORE;
26import static org.onosproject.net.ConnectPointTest.Relate.SAME_AS;
Brian O'Connorabafb502014-12-02 22:26:20 -080027import static org.onosproject.net.DeviceId.deviceId;
28import static org.onosproject.net.PortNumber.portNumber;
tom5a9383a2014-10-02 07:33:52 -070029
30/**
Jonathan Hartc3af35a2015-04-30 22:20:29 -070031 * Test of the connection point entity.
tom5a9383a2014-10-02 07:33:52 -070032 */
33public class ConnectPointTest {
34
tom747a2132014-10-02 08:18:41 -070035 private static final DeviceId DID1 = deviceId("1");
36 private static final DeviceId DID2 = deviceId("2");
37 private static final PortNumber P1 = portNumber(1);
38 private static final PortNumber P2 = portNumber(2);
tom5a9383a2014-10-02 07:33:52 -070039
Simon Hunt86943082017-06-15 13:18:42 -070040 private ConnectPoint cp(DeviceId d, PortNumber p) {
41 return new ConnectPoint(d, p);
42 }
43
tom5a9383a2014-10-02 07:33:52 -070044 @Test
45 public void basics() {
Simon Hunt86943082017-06-15 13:18:42 -070046 ConnectPoint p = cp(DID1, P2);
tom5a9383a2014-10-02 07:33:52 -070047 assertEquals("incorrect element id", DID1, p.deviceId());
48 assertEquals("incorrect element id", P2, p.port());
49 }
50
tom5a9383a2014-10-02 07:33:52 -070051 @Test
52 public void testEquality() {
53 new EqualsTester()
Simon Hunt86943082017-06-15 13:18:42 -070054 .addEqualityGroup(cp(DID1, P1), cp(DID1, P1))
55 .addEqualityGroup(cp(DID1, P2), cp(DID1, P2))
56 .addEqualityGroup(cp(DID2, P1), cp(DID2, P1))
tom5a9383a2014-10-02 07:33:52 -070057 .testEquals();
58 }
Jonathan Hartc3af35a2015-04-30 22:20:29 -070059
60 @Test
61 public void testParseDeviceConnectPoint() {
62 String cp = "of:0011223344556677/1";
63
64 ConnectPoint connectPoint = ConnectPoint.deviceConnectPoint(cp);
65 assertEquals("of:0011223344556677", connectPoint.deviceId().toString());
66 assertEquals("1", connectPoint.port().toString());
67
68 expectDeviceParseException("");
69 expectDeviceParseException("1/");
Jonathan Hartc3af35a2015-04-30 22:20:29 -070070 expectDeviceParseException("of:0011223344556677/word");
71 }
72
hirokib0bc9da2018-05-19 13:01:21 -070073 @Test
pierventre57f7bbb2021-10-20 17:37:52 +020074 public void testParseFromStringOF() {
75 String cp = "of:0011223344556677/1";
76
77 ConnectPoint connectPoint = ConnectPoint.fromString(cp);
78 assertEquals("of:0011223344556677", connectPoint.deviceId().toString());
79 assertEquals("1", connectPoint.port().toString());
80
81 expectStringParseException("[");
82 expectStringParseException("1/[");
83 expectStringParseException("1/[aasksk");
84 expectStringParseException("1/[alksas]");
85 }
86
87 @Test
88 public void testParseFromStringNetconf() {
hirokib0bc9da2018-05-19 13:01:21 -070089 String cp = "netconf:127.0.0.1/[TYPE](1)";
90
91 ConnectPoint connectPoint = ConnectPoint.fromString(cp);
92 assertEquals("netconf:127.0.0.1", connectPoint.deviceId().toString());
93 assertEquals("[TYPE](1)", connectPoint.port().toString());
94 assertEquals(connectPoint, ConnectPoint.fromString(connectPoint.toString()));
pierventre57f7bbb2021-10-20 17:37:52 +020095 }
hirokib0bc9da2018-05-19 13:01:21 -070096
pierventre57f7bbb2021-10-20 17:37:52 +020097 @Test
98 public void testParseFromStringBmv2() {
99 String cp = "device:leaf1/[leaf1-eth4](1)";
100
101 ConnectPoint connectPoint = ConnectPoint.fromString(cp);
102 assertEquals("device:leaf1", connectPoint.deviceId().toString());
103 assertEquals("[leaf1-eth4](1)", connectPoint.port().toString());
104 assertEquals(connectPoint, ConnectPoint.fromString(connectPoint.toString()));
105 }
106
107 @Test
108 public void testParseFromStringStratum() {
109 String cp = "device:leaf1/[3/0](1)";
110
111 ConnectPoint connectPoint = ConnectPoint.fromString(cp);
112 assertEquals("device:leaf1", connectPoint.deviceId().toString());
113 assertEquals("[3/0](1)", connectPoint.port().toString());
114 assertEquals(connectPoint, ConnectPoint.fromString(connectPoint.toString()));
hirokib0bc9da2018-05-19 13:01:21 -0700115 }
116
Jonathan Hartc3af35a2015-04-30 22:20:29 -0700117 /**
118 * Parse a device connect point and expect an exception to be thrown.
119 *
120 * @param string string to parse
121 */
122 private static void expectDeviceParseException(String string) {
123 try {
124 ConnectPoint.deviceConnectPoint(string);
David K. Bainbridge56e90232018-12-18 23:25:08 -0800125 fail(String.format("Expected exception was not thrown for '%s'", string));
Jonathan Hartc3af35a2015-04-30 22:20:29 -0700126 } catch (Exception e) {
127 assertTrue(true);
128 }
129 }
130
pierventre57f7bbb2021-10-20 17:37:52 +0200131 /**
132 * Parse a string connect point and expect an exception to be thrown.
133 *
134 * @param string string to parse
135 */
136 private static void expectStringParseException(String string) {
137 try {
138 ConnectPoint.fromString(string);
139 fail(String.format("Expected exception was not thrown for '%s'", string));
140 } catch (Exception e) {
141 assertTrue(true);
142 }
143 }
144
Jonathan Hartc3af35a2015-04-30 22:20:29 -0700145 @Test
146 public void testParseHostConnectPoint() {
147 String cp = "16:3A:BD:6E:31:E4/-1/1";
148
149 ConnectPoint connectPoint = ConnectPoint.hostConnectPoint(cp);
Luca Prete283a9622016-03-29 16:12:20 -0700150 assertEquals("16:3A:BD:6E:31:E4/None", connectPoint.hostId().toString());
Jonathan Hartc3af35a2015-04-30 22:20:29 -0700151 assertEquals("1", connectPoint.port().toString());
152
153 expectHostParseException("");
154 expectHostParseException("1/");
155 expectHostParseException("1/1");
156 expectHostParseException("1/1/1/1");
157 expectHostParseException("16:3A:BD:6E:31:E4/word/1");
158 expectHostParseException("16:3A:BD:6E:31:E4/1/word");
159 }
160
161 /**
162 * Parse a host connect point and expect an exception to be thrown.
163 *
164 * @param string string to parse
165 */
166 private static void expectHostParseException(String string) {
167 try {
168 ConnectPoint.hostConnectPoint(string);
169 fail("Expected exception was not thrown");
170 } catch (Exception e) {
171 assertTrue(true);
172 }
173 }
Simon Hunt86943082017-06-15 13:18:42 -0700174
175 enum Relate { BEFORE, SAME_AS, AFTER }
176
177 private void checkComparison(ConnectPoint cpA, Relate r, ConnectPoint cpB) {
178 switch (r) {
179 case BEFORE:
180 assertTrue("Bad before", cpA.compareTo(cpB) < 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700181 assertTrue("Bad before", cpB.compareTo(cpA) > 0);
Simon Hunt86943082017-06-15 13:18:42 -0700182 break;
183 case SAME_AS:
184 assertTrue("Bad same_as", cpA.compareTo(cpB) == 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700185 assertTrue("Bad same_as", cpB.compareTo(cpA) == 0);
Simon Hunt86943082017-06-15 13:18:42 -0700186 break;
187 case AFTER:
188 assertTrue("Bad after", cpA.compareTo(cpB) > 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700189 assertTrue("Bad after", cpB.compareTo(cpA) < 0);
Simon Hunt86943082017-06-15 13:18:42 -0700190 break;
191 default:
192 fail("Bad relation");
193 }
194 }
195
196 @Test
197 public void comparator() {
198 checkComparison(cp(DID1, P1), SAME_AS, cp(DID1, P1));
199 checkComparison(cp(DID1, P1), BEFORE, cp(DID1, P2));
200 checkComparison(cp(DID1, P2), AFTER, cp(DID1, P1));
201
202 checkComparison(cp(DID1, P1), BEFORE, cp(DID2, P1));
203 checkComparison(cp(DID1, P2), BEFORE, cp(DID2, P1));
204 checkComparison(cp(DID1, P1), BEFORE, cp(DID2, P2));
205 checkComparison(cp(DID1, P2), BEFORE, cp(DID2, P2));
206 }
Yuta HIGUCHI885be1d2014-10-04 21:47:26 -0700207}