blob: f823093fb0a9eb4b546fe3e1da54a1f2df956e65 [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/");
70 expectDeviceParseException("1/1/1");
71 expectDeviceParseException("of:0011223344556677/word");
72 }
73
hirokib0bc9da2018-05-19 13:01:21 -070074 @Test
75 public void testParseFromString() {
76 String cp = "netconf:127.0.0.1/[TYPE](1)";
77
78 ConnectPoint connectPoint = ConnectPoint.fromString(cp);
79 assertEquals("netconf:127.0.0.1", connectPoint.deviceId().toString());
80 assertEquals("[TYPE](1)", connectPoint.port().toString());
81 assertEquals(connectPoint, ConnectPoint.fromString(connectPoint.toString()));
82
83 }
84
Jonathan Hartc3af35a2015-04-30 22:20:29 -070085 /**
86 * Parse a device connect point and expect an exception to be thrown.
87 *
88 * @param string string to parse
89 */
90 private static void expectDeviceParseException(String string) {
91 try {
92 ConnectPoint.deviceConnectPoint(string);
93 fail("Expected exception was not thrown");
94 } catch (Exception e) {
95 assertTrue(true);
96 }
97 }
98
99 @Test
100 public void testParseHostConnectPoint() {
101 String cp = "16:3A:BD:6E:31:E4/-1/1";
102
103 ConnectPoint connectPoint = ConnectPoint.hostConnectPoint(cp);
Luca Prete283a9622016-03-29 16:12:20 -0700104 assertEquals("16:3A:BD:6E:31:E4/None", connectPoint.hostId().toString());
Jonathan Hartc3af35a2015-04-30 22:20:29 -0700105 assertEquals("1", connectPoint.port().toString());
106
107 expectHostParseException("");
108 expectHostParseException("1/");
109 expectHostParseException("1/1");
110 expectHostParseException("1/1/1/1");
111 expectHostParseException("16:3A:BD:6E:31:E4/word/1");
112 expectHostParseException("16:3A:BD:6E:31:E4/1/word");
113 }
114
115 /**
116 * Parse a host connect point and expect an exception to be thrown.
117 *
118 * @param string string to parse
119 */
120 private static void expectHostParseException(String string) {
121 try {
122 ConnectPoint.hostConnectPoint(string);
123 fail("Expected exception was not thrown");
124 } catch (Exception e) {
125 assertTrue(true);
126 }
127 }
Simon Hunt86943082017-06-15 13:18:42 -0700128
129 enum Relate { BEFORE, SAME_AS, AFTER }
130
131 private void checkComparison(ConnectPoint cpA, Relate r, ConnectPoint cpB) {
132 switch (r) {
133 case BEFORE:
134 assertTrue("Bad before", cpA.compareTo(cpB) < 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700135 assertTrue("Bad before", cpB.compareTo(cpA) > 0);
Simon Hunt86943082017-06-15 13:18:42 -0700136 break;
137 case SAME_AS:
138 assertTrue("Bad same_as", cpA.compareTo(cpB) == 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700139 assertTrue("Bad same_as", cpB.compareTo(cpA) == 0);
Simon Hunt86943082017-06-15 13:18:42 -0700140 break;
141 case AFTER:
142 assertTrue("Bad after", cpA.compareTo(cpB) > 0);
Simon Hunt10618f62017-06-15 19:30:52 -0700143 assertTrue("Bad after", cpB.compareTo(cpA) < 0);
Simon Hunt86943082017-06-15 13:18:42 -0700144 break;
145 default:
146 fail("Bad relation");
147 }
148 }
149
150 @Test
151 public void comparator() {
152 checkComparison(cp(DID1, P1), SAME_AS, cp(DID1, P1));
153 checkComparison(cp(DID1, P1), BEFORE, cp(DID1, P2));
154 checkComparison(cp(DID1, P2), AFTER, cp(DID1, P1));
155
156 checkComparison(cp(DID1, P1), BEFORE, cp(DID2, P1));
157 checkComparison(cp(DID1, P2), BEFORE, cp(DID2, P1));
158 checkComparison(cp(DID1, P1), BEFORE, cp(DID2, P2));
159 checkComparison(cp(DID1, P2), BEFORE, cp(DID2, P2));
160 }
Yuta HIGUCHI885be1d2014-10-04 21:47:26 -0700161}