aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpRouteEntryTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpRouteEntryTest.java')
-rw-r--r--framework/src/onos/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpRouteEntryTest.java520
1 files changed, 0 insertions, 520 deletions
diff --git a/framework/src/onos/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpRouteEntryTest.java b/framework/src/onos/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpRouteEntryTest.java
deleted file mode 100644
index 446056e9..00000000
--- a/framework/src/onos/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpRouteEntryTest.java
+++ /dev/null
@@ -1,520 +0,0 @@
-/*
- * Copyright 2014-2015 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.routing.bgp;
-
-import org.easymock.EasyMock;
-import org.hamcrest.Matchers;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.Ip4Prefix;
-
-import java.util.ArrayList;
-
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit tests for the BgpRouteEntry class.
- */
-public class BgpRouteEntryTest {
- private BgpSession bgpSession;
- private static final Ip4Address BGP_SESSION_BGP_ID =
- Ip4Address.valueOf("10.0.0.1");
- private static final Ip4Address BGP_SESSION_IP_ADDRESS =
- Ip4Address.valueOf("20.0.0.1");
-
- private BgpSession bgpSession2;
- private static final Ip4Address BGP_SESSION_BGP_ID2 =
- Ip4Address.valueOf("10.0.0.2");
- private static final Ip4Address BGP_SESSION_IP_ADDRESS2 =
- Ip4Address.valueOf("20.0.0.1");
-
- private BgpSession bgpSession3;
- private static final Ip4Address BGP_SESSION_BGP_ID3 =
- Ip4Address.valueOf("10.0.0.1");
- private static final Ip4Address BGP_SESSION_IP_ADDRESS3 =
- Ip4Address.valueOf("20.0.0.2");
-
- private final BgpSessionInfo localInfo = new BgpSessionInfo();
- private final BgpSessionInfo remoteInfo = new BgpSessionInfo();
-
- private final BgpSessionInfo localInfo2 = new BgpSessionInfo();
- private final BgpSessionInfo remoteInfo2 = new BgpSessionInfo();
-
- private final BgpSessionInfo localInfo3 = new BgpSessionInfo();
- private final BgpSessionInfo remoteInfo3 = new BgpSessionInfo();
-
- @Before
- public void setUp() throws Exception {
- // Mock objects for testing
- bgpSession = EasyMock.createMock(BgpSession.class);
- bgpSession2 = EasyMock.createMock(BgpSession.class);
- bgpSession3 = EasyMock.createMock(BgpSession.class);
-
- // Setup the BGP Sessions
- remoteInfo.setIp4Address(BGP_SESSION_IP_ADDRESS);
- remoteInfo2.setIp4Address(BGP_SESSION_IP_ADDRESS2);
- remoteInfo3.setIp4Address(BGP_SESSION_IP_ADDRESS3);
- remoteInfo.setBgpId(BGP_SESSION_BGP_ID);
- remoteInfo2.setBgpId(BGP_SESSION_BGP_ID2);
- remoteInfo3.setBgpId(BGP_SESSION_BGP_ID3);
-
- EasyMock.expect(bgpSession.localInfo()).andReturn(localInfo).anyTimes();
- EasyMock.expect(bgpSession.remoteInfo()).andReturn(remoteInfo).anyTimes();
- EasyMock.expect(bgpSession2.localInfo()).andReturn(localInfo2).anyTimes();
- EasyMock.expect(bgpSession2.remoteInfo()).andReturn(remoteInfo2).anyTimes();
- EasyMock.expect(bgpSession3.localInfo()).andReturn(localInfo3).anyTimes();
- EasyMock.expect(bgpSession3.remoteInfo()).andReturn(remoteInfo3).anyTimes();
-
- EasyMock.replay(bgpSession);
- EasyMock.replay(bgpSession2);
- EasyMock.replay(bgpSession3);
- }
-
- /**
- * Generates a BGP Route Entry.
- *
- * @return a generated BGP Route Entry
- */
- private BgpRouteEntry generateBgpRouteEntry() {
- Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
- Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
- byte origin = BgpConstants.Update.Origin.IGP;
- // Setup the AS Path
- ArrayList<BgpRouteEntry.PathSegment> pathSegments = new ArrayList<>();
- byte pathSegmentType1 = (byte) BgpConstants.Update.AsPath.AS_SEQUENCE;
- ArrayList<Long> segmentAsNumbers1 = new ArrayList<>();
- segmentAsNumbers1.add(1L);
- segmentAsNumbers1.add(2L);
- segmentAsNumbers1.add(3L);
- BgpRouteEntry.PathSegment pathSegment1 =
- new BgpRouteEntry.PathSegment(pathSegmentType1, segmentAsNumbers1);
- pathSegments.add(pathSegment1);
- //
- byte pathSegmentType2 = (byte) BgpConstants.Update.AsPath.AS_SET;
- ArrayList<Long> segmentAsNumbers2 = new ArrayList<>();
- segmentAsNumbers2.add(4L);
- segmentAsNumbers2.add(5L);
- segmentAsNumbers2.add(6L);
- BgpRouteEntry.PathSegment pathSegment2 =
- new BgpRouteEntry.PathSegment(pathSegmentType2, segmentAsNumbers2);
- pathSegments.add(pathSegment2);
- //
- BgpRouteEntry.AsPath asPath = new BgpRouteEntry.AsPath(pathSegments);
- //
- long localPref = 100;
- long multiExitDisc = 20;
-
- BgpRouteEntry bgpRouteEntry =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry.setMultiExitDisc(multiExitDisc);
-
- return bgpRouteEntry;
- }
-
- /**
- * Tests valid class constructor.
- */
- @Test
- public void testConstructor() {
- BgpRouteEntry bgpRouteEntry = generateBgpRouteEntry();
-
- String expectedString =
- "BgpRouteEntry{prefix=1.2.3.0/24, nextHop=5.6.7.8, " +
- "bgpId=10.0.0.1, origin=IGP, asPath=AsPath{pathSegments=" +
- "[PathSegment{type=AS_SEQUENCE, segmentAsNumbers=[1, 2, 3]}, " +
- "PathSegment{type=AS_SET, segmentAsNumbers=[4, 5, 6]}]}, " +
- "localPref=100, multiExitDisc=20}";
- assertThat(bgpRouteEntry.toString(), is(expectedString));
- }
-
- /**
- * Tests invalid class constructor for null BGP Session.
- */
- @Test(expected = NullPointerException.class)
- public void testInvalidConstructorNullBgpSession() {
- BgpSession bgpSessionNull = null;
- Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
- Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
- byte origin = BgpConstants.Update.Origin.IGP;
- // Setup the AS Path
- ArrayList<BgpRouteEntry.PathSegment> pathSegments = new ArrayList<>();
- BgpRouteEntry.AsPath asPath = new BgpRouteEntry.AsPath(pathSegments);
- //
- long localPref = 100;
-
- new BgpRouteEntry(bgpSessionNull, prefix, nextHop, origin, asPath,
- localPref);
- }
-
- /**
- * Tests invalid class constructor for null AS Path.
- */
- @Test(expected = NullPointerException.class)
- public void testInvalidConstructorNullAsPath() {
- Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
- Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
- byte origin = BgpConstants.Update.Origin.IGP;
- BgpRouteEntry.AsPath asPath = null;
- long localPref = 100;
-
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- }
-
- /**
- * Tests getting the fields of a BGP route entry.
- */
- @Test
- public void testGetFields() {
- // Create the fields to compare against
- Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
- Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
- byte origin = BgpConstants.Update.Origin.IGP;
- // Setup the AS Path
- ArrayList<BgpRouteEntry.PathSegment> pathSegments = new ArrayList<>();
- byte pathSegmentType1 = (byte) BgpConstants.Update.AsPath.AS_SEQUENCE;
- ArrayList<Long> segmentAsNumbers1 = new ArrayList<>();
- segmentAsNumbers1.add(1L);
- segmentAsNumbers1.add(2L);
- segmentAsNumbers1.add(3L);
- BgpRouteEntry.PathSegment pathSegment1 =
- new BgpRouteEntry.PathSegment(pathSegmentType1, segmentAsNumbers1);
- pathSegments.add(pathSegment1);
- //
- byte pathSegmentType2 = (byte) BgpConstants.Update.AsPath.AS_SET;
- ArrayList<Long> segmentAsNumbers2 = new ArrayList<>();
- segmentAsNumbers2.add(4L);
- segmentAsNumbers2.add(5L);
- segmentAsNumbers2.add(6L);
- BgpRouteEntry.PathSegment pathSegment2 =
- new BgpRouteEntry.PathSegment(pathSegmentType2, segmentAsNumbers2);
- pathSegments.add(pathSegment2);
- //
- BgpRouteEntry.AsPath asPath = new BgpRouteEntry.AsPath(pathSegments);
- //
- long localPref = 100;
- long multiExitDisc = 20;
-
- // Generate the entry to test
- BgpRouteEntry bgpRouteEntry = generateBgpRouteEntry();
-
- assertThat(bgpRouteEntry.prefix(), is(prefix));
- assertThat(bgpRouteEntry.nextHop(), is(nextHop));
- assertThat(bgpRouteEntry.getBgpSession(), is(bgpSession));
- assertThat(bgpRouteEntry.getOrigin(), is(origin));
- assertThat(bgpRouteEntry.getAsPath(), is(asPath));
- assertThat(bgpRouteEntry.getLocalPref(), is(localPref));
- assertThat(bgpRouteEntry.getMultiExitDisc(), is(multiExitDisc));
- }
-
- /**
- * Tests whether a BGP route entry is a local route.
- */
- @Test
- public void testIsLocalRoute() {
- //
- // Test non-local route
- //
- BgpRouteEntry bgpRouteEntry = generateBgpRouteEntry();
- assertThat(bgpRouteEntry.isLocalRoute(), is(false));
-
- //
- // Test local route with AS Path that begins with AS_SET
- //
- Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
- Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
- byte origin = BgpConstants.Update.Origin.IGP;
- // Setup the AS Path
- ArrayList<BgpRouteEntry.PathSegment> pathSegments = new ArrayList<>();
- byte pathSegmentType1 = (byte) BgpConstants.Update.AsPath.AS_SET;
- ArrayList<Long> segmentAsNumbers1 = new ArrayList<>();
- segmentAsNumbers1.add(1L);
- segmentAsNumbers1.add(2L);
- segmentAsNumbers1.add(3L);
- BgpRouteEntry.PathSegment pathSegment1 =
- new BgpRouteEntry.PathSegment(pathSegmentType1, segmentAsNumbers1);
- pathSegments.add(pathSegment1);
- //
- byte pathSegmentType2 = (byte) BgpConstants.Update.AsPath.AS_SEQUENCE;
- ArrayList<Long> segmentAsNumbers2 = new ArrayList<>();
- segmentAsNumbers2.add(4L);
- segmentAsNumbers2.add(5L);
- segmentAsNumbers2.add(6L);
- BgpRouteEntry.PathSegment pathSegment2 =
- new BgpRouteEntry.PathSegment(pathSegmentType2, segmentAsNumbers2);
- pathSegments.add(pathSegment2);
- //
- BgpRouteEntry.AsPath asPath = new BgpRouteEntry.AsPath(pathSegments);
- //
- long localPref = 100;
- long multiExitDisc = 20;
- //
- bgpRouteEntry =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry.setMultiExitDisc(multiExitDisc);
- assertThat(bgpRouteEntry.isLocalRoute(), is(true));
-
- //
- // Test local route with empty AS Path
- //
- pathSegments = new ArrayList<>();
- asPath = new BgpRouteEntry.AsPath(pathSegments);
- bgpRouteEntry =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry.setMultiExitDisc(multiExitDisc);
- assertThat(bgpRouteEntry.isLocalRoute(), is(true));
- }
-
- /**
- * Tests getting the BGP Neighbor AS number for a route.
- */
- @Test
- public void testGetNeighborAs() {
- //
- // Get neighbor AS for non-local route
- //
- BgpRouteEntry bgpRouteEntry = generateBgpRouteEntry();
- assertThat(bgpRouteEntry.getNeighborAs(), is(1L));
-
- //
- // Get neighbor AS for a local route
- //
- Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
- Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
- byte origin = BgpConstants.Update.Origin.IGP;
- // Setup the AS Path
- ArrayList<BgpRouteEntry.PathSegment> pathSegments = new ArrayList<>();
- BgpRouteEntry.AsPath asPath = new BgpRouteEntry.AsPath(pathSegments);
- //
- long localPref = 100;
- long multiExitDisc = 20;
- //
- bgpRouteEntry =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry.setMultiExitDisc(multiExitDisc);
- assertThat(bgpRouteEntry.getNeighborAs(), is(BgpConstants.BGP_AS_0));
- }
-
- /**
- * Tests whether a BGP route entry has AS Path loop.
- */
- @Test
- public void testHasAsPathLoop() {
- BgpRouteEntry bgpRouteEntry = generateBgpRouteEntry();
-
- // Test for loops: test each AS number in the interval [1, 6]
- for (int i = 1; i <= 6; i++) {
- assertThat(bgpRouteEntry.hasAsPathLoop(i), is(true));
- }
-
- // Test for non-loops
- assertThat(bgpRouteEntry.hasAsPathLoop(500), is(false));
- }
-
- /**
- * Tests the BGP Decision Process comparison of BGP routes.
- */
- @Test
- public void testBgpDecisionProcessComparison() {
- BgpRouteEntry bgpRouteEntry1 = generateBgpRouteEntry();
- BgpRouteEntry bgpRouteEntry2 = generateBgpRouteEntry();
-
- //
- // Compare two routes that are same
- //
- assertThat(bgpRouteEntry1.isBetterThan(bgpRouteEntry2), is(true));
- assertThat(bgpRouteEntry2.isBetterThan(bgpRouteEntry1), is(true));
-
- //
- // Compare two routes with different LOCAL_PREF
- //
- Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
- Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
- byte origin = BgpConstants.Update.Origin.IGP;
- // Setup the AS Path
- ArrayList<BgpRouteEntry.PathSegment> pathSegments = new ArrayList<>();
- byte pathSegmentType1 = (byte) BgpConstants.Update.AsPath.AS_SEQUENCE;
- ArrayList<Long> segmentAsNumbers1 = new ArrayList<>();
- segmentAsNumbers1.add(1L);
- segmentAsNumbers1.add(2L);
- segmentAsNumbers1.add(3L);
- BgpRouteEntry.PathSegment pathSegment1 =
- new BgpRouteEntry.PathSegment(pathSegmentType1, segmentAsNumbers1);
- pathSegments.add(pathSegment1);
- //
- byte pathSegmentType2 = (byte) BgpConstants.Update.AsPath.AS_SET;
- ArrayList<Long> segmentAsNumbers2 = new ArrayList<>();
- segmentAsNumbers2.add(4L);
- segmentAsNumbers2.add(5L);
- segmentAsNumbers2.add(6L);
- BgpRouteEntry.PathSegment pathSegment2 =
- new BgpRouteEntry.PathSegment(pathSegmentType2, segmentAsNumbers2);
- pathSegments.add(pathSegment2);
- //
- BgpRouteEntry.AsPath asPath = new BgpRouteEntry.AsPath(pathSegments);
- //
- long localPref = 50; // Different
- long multiExitDisc = 20;
- bgpRouteEntry2 =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry2.setMultiExitDisc(multiExitDisc);
- //
- assertThat(bgpRouteEntry1.isBetterThan(bgpRouteEntry2), is(true));
- assertThat(bgpRouteEntry2.isBetterThan(bgpRouteEntry1), is(false));
- localPref = bgpRouteEntry1.getLocalPref(); // Restore
-
- //
- // Compare two routes with different AS_PATH length
- //
- ArrayList<BgpRouteEntry.PathSegment> pathSegments2 = new ArrayList<>();
- pathSegments2.add(pathSegment1);
- // Different AS Path
- BgpRouteEntry.AsPath asPath2 = new BgpRouteEntry.AsPath(pathSegments2);
- bgpRouteEntry2 =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath2,
- localPref);
- bgpRouteEntry2.setMultiExitDisc(multiExitDisc);
- //
- assertThat(bgpRouteEntry1.isBetterThan(bgpRouteEntry2), is(false));
- assertThat(bgpRouteEntry2.isBetterThan(bgpRouteEntry1), is(true));
-
- //
- // Compare two routes with different ORIGIN
- //
- origin = BgpConstants.Update.Origin.EGP; // Different
- bgpRouteEntry2 =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry2.setMultiExitDisc(multiExitDisc);
- //
- assertThat(bgpRouteEntry1.isBetterThan(bgpRouteEntry2), is(true));
- assertThat(bgpRouteEntry2.isBetterThan(bgpRouteEntry1), is(false));
- origin = bgpRouteEntry1.getOrigin(); // Restore
-
- //
- // Compare two routes with different MULTI_EXIT_DISC
- //
- multiExitDisc = 10; // Different
- bgpRouteEntry2 =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry2.setMultiExitDisc(multiExitDisc);
- //
- assertThat(bgpRouteEntry1.isBetterThan(bgpRouteEntry2), is(true));
- assertThat(bgpRouteEntry2.isBetterThan(bgpRouteEntry1), is(false));
- multiExitDisc = bgpRouteEntry1.getMultiExitDisc(); // Restore
-
- //
- // Compare two routes with different BGP ID
- //
- bgpRouteEntry2 =
- new BgpRouteEntry(bgpSession2, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry2.setMultiExitDisc(multiExitDisc);
- //
- assertThat(bgpRouteEntry1.isBetterThan(bgpRouteEntry2), is(true));
- assertThat(bgpRouteEntry2.isBetterThan(bgpRouteEntry1), is(false));
-
- //
- // Compare two routes with different BGP address
- //
- bgpRouteEntry2 =
- new BgpRouteEntry(bgpSession3, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry2.setMultiExitDisc(multiExitDisc);
- //
- assertThat(bgpRouteEntry1.isBetterThan(bgpRouteEntry2), is(true));
- assertThat(bgpRouteEntry2.isBetterThan(bgpRouteEntry1), is(false));
- }
-
- /**
- * Tests equality of {@link BgpRouteEntry}.
- */
- @Test
- public void testEquality() {
- BgpRouteEntry bgpRouteEntry1 = generateBgpRouteEntry();
- BgpRouteEntry bgpRouteEntry2 = generateBgpRouteEntry();
-
- assertThat(bgpRouteEntry1, is(bgpRouteEntry2));
- }
-
- /**
- * Tests non-equality of {@link BgpRouteEntry}.
- */
- @Test
- public void testNonEquality() {
- BgpRouteEntry bgpRouteEntry1 = generateBgpRouteEntry();
-
- // Setup BGP Route 2
- Ip4Prefix prefix = Ip4Prefix.valueOf("1.2.3.0/24");
- Ip4Address nextHop = Ip4Address.valueOf("5.6.7.8");
- byte origin = BgpConstants.Update.Origin.IGP;
- // Setup the AS Path
- ArrayList<BgpRouteEntry.PathSegment> pathSegments = new ArrayList<>();
- byte pathSegmentType1 = (byte) BgpConstants.Update.AsPath.AS_SEQUENCE;
- ArrayList<Long> segmentAsNumbers1 = new ArrayList<>();
- segmentAsNumbers1.add(1L);
- segmentAsNumbers1.add(2L);
- segmentAsNumbers1.add(3L);
- BgpRouteEntry.PathSegment pathSegment1 =
- new BgpRouteEntry.PathSegment(pathSegmentType1, segmentAsNumbers1);
- pathSegments.add(pathSegment1);
- //
- byte pathSegmentType2 = (byte) BgpConstants.Update.AsPath.AS_SET;
- ArrayList<Long> segmentAsNumbers2 = new ArrayList<>();
- segmentAsNumbers2.add(4L);
- segmentAsNumbers2.add(5L);
- segmentAsNumbers2.add(6L);
- BgpRouteEntry.PathSegment pathSegment2 =
- new BgpRouteEntry.PathSegment(pathSegmentType2, segmentAsNumbers2);
- pathSegments.add(pathSegment2);
- //
- BgpRouteEntry.AsPath asPath = new BgpRouteEntry.AsPath(pathSegments);
- //
- long localPref = 500; // Different
- long multiExitDisc = 20;
- BgpRouteEntry bgpRouteEntry2 =
- new BgpRouteEntry(bgpSession, prefix, nextHop, origin, asPath,
- localPref);
- bgpRouteEntry2.setMultiExitDisc(multiExitDisc);
-
- assertThat(bgpRouteEntry1, Matchers.is(not(bgpRouteEntry2)));
- }
-
- /**
- * Tests object string representation.
- */
- @Test
- public void testToString() {
- BgpRouteEntry bgpRouteEntry = generateBgpRouteEntry();
-
- String expectedString =
- "BgpRouteEntry{prefix=1.2.3.0/24, nextHop=5.6.7.8, " +
- "bgpId=10.0.0.1, origin=IGP, asPath=AsPath{pathSegments=" +
- "[PathSegment{type=AS_SEQUENCE, segmentAsNumbers=[1, 2, 3]}, " +
- "PathSegment{type=AS_SET, segmentAsNumbers=[4, 5, 6]}]}, " +
- "localPref=100, multiExitDisc=20}";
- assertThat(bgpRouteEntry.toString(), is(expectedString));
- }
-}