blob: 73dfe79d368986e766194b8da61a1e66b64a7ca1 [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
74 public void testParseFromString() {
75 String cp = "netconf:127.0.0.1/[TYPE](1)";
76
77 ConnectPoint connectPoint = ConnectPoint.fromString(cp);
78 assertEquals("netconf:127.0.0.1", connectPoint.deviceId().toString());
79 assertEquals("[TYPE](1)", connectPoint.port().toString());
80 assertEquals(connectPoint, ConnectPoint.fromString(connectPoint.toString()));
81
82 }
83
Jonathan Hartc3af35a2015-04-30 22:20:29 -070084 /**
85 * Parse a device connect point and expect an exception to be thrown.
86 *
87 * @param string string to parse
88 */
89 private static void expectDeviceParseException(String string) {
90 try {
91 ConnectPoint.deviceConnectPoint(string);
David K. Bainbridge56e90232018-12-18 23:25:08 -080092 fail(String.format("Expected exception was not thrown for '%s'", string));
Jonathan Hartc3af35a2015-04-30 22:20:29 -070093 } catch (Exception e) {
94 assertTrue(true);
95 }
96 }
97
98 @Test
99 public void testParseHostConnectPoint() {
100 String cp = "16:3A:BD:6E:31:E4/-1/1";
101
102 ConnectPoint connectPoint = ConnectPoint.hostConnectPoint(cp);
Luca Prete283a9622016-03-29 16:12:20 -0700103 assertEquals("16:3A:BD:6E:31:E4/None", connectPoint.hostId().toString());
Jonathan Hartc3af35a2015-04-30 22:20:29 -0700104 assertEquals("1", connectPoint.port().toString());
105
106 expectHostParseException("");
107 expectHostParseException("1/");
108 expectHostParseException("1/1");
109 expectHostParseException("1/1/1/1");
110 expectHostParseException("16:3A:BD:6E:31:E4/word/1");
111 expectHostParseException("16:3A:BD:6E:31:E4/1/word");
112 }
113
114 /**
115 * Parse a host connect point and expect an exception to be thrown.
116 *
117 * @param string string to parse
118 */
119 private static void expectHostParseException(String string) {
120 try {
121 ConnectPoint.hostConnectPoint(string);
122 fail("Expected exception was not thrown");
123 } catch (Exception e) {
124 assertTrue(true);
125 }
126 }
Simon Hunt86943082017-06-15 13:18:42 -0700127
128 enum Relate { BEFORE, SAME_AS, AFTER }
129
130 private void checkComparison(ConnectPoint cpA, Relate r, ConnectPoint cpB) {
131 switch (r) {
132 case BEFORE:
133 assertTrue("Bad before", cpA.compareTo(cpB) < 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700134 assertTrue("Bad before", cpB.compareTo(cpA) > 0);
Simon Hunt86943082017-06-15 13:18:42 -0700135 break;
136 case SAME_AS:
137 assertTrue("Bad same_as", cpA.compareTo(cpB) == 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700138 assertTrue("Bad same_as", cpB.compareTo(cpA) == 0);
Simon Hunt86943082017-06-15 13:18:42 -0700139 break;
140 case AFTER:
141 assertTrue("Bad after", cpA.compareTo(cpB) > 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700142 assertTrue("Bad after", cpB.compareTo(cpA) < 0);
Simon Hunt86943082017-06-15 13:18:42 -0700143 break;
144 default:
145 fail("Bad relation");
146 }
147 }
148
149 @Test
150 public void comparator() {
151 checkComparison(cp(DID1, P1), SAME_AS, cp(DID1, P1));
152 checkComparison(cp(DID1, P1), BEFORE, cp(DID1, P2));
153 checkComparison(cp(DID1, P2), AFTER, cp(DID1, P1));
154
155 checkComparison(cp(DID1, P1), BEFORE, cp(DID2, P1));
156 checkComparison(cp(DID1, P2), BEFORE, cp(DID2, P1));
157 checkComparison(cp(DID1, P1), BEFORE, cp(DID2, P2));
158 checkComparison(cp(DID1, P2), BEFORE, cp(DID2, P2));
159 }
Yuta HIGUCHI885be1d2014-10-04 21:47:26 -0700160}