2 * Copyright © 2016, 2017 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.netvirt.bgpmanager.test;
10 import static org.junit.Assert.assertEquals;
12 import java.util.Collections;
13 import java.util.List;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.mockito.junit.MockitoJUnitRunner;
18 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
19 import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest;
20 import org.opendaylight.netvirt.bgpmanager.BgpUtil;
21 import org.opendaylight.netvirt.bgpmanager.FibDSWriter;
22 import org.opendaylight.netvirt.fibmanager.api.IFibManager;
23 import org.opendaylight.netvirt.fibmanager.api.RouteOrigin;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
25 import org.opendaylight.yangtools.yang.common.Uint32;
27 @RunWith(MockitoJUnitRunner.class)
29 public class BgpManagerTest extends AbstractConcurrentDataBrokerTest {
30 private DataBroker dataBroker;
31 private FibDSWriter bgpFibWriter = null;
32 private MockFibManager fibManager = null;
33 private IFibManager ifibManager = null;
37 dataBroker = getDataBroker();
38 bgpFibWriter = new FibDSWriter(dataBroker, new BgpUtil(dataBroker, ifibManager));
39 fibManager = new MockFibManager(dataBroker);
43 public void testAddSinglePrefix() {
45 String prefix = "10.10.10.10/32";
46 List<String> nexthop = Collections.singletonList("100.100.100.100");
47 Uint32 label = Uint32.valueOf(1234);
49 bgpFibWriter.addFibEntryToDS(rd, /*macAddress*/ prefix, nexthop,
50 VrfEntry.EncapType.Mplsgre, label, Uint32.ZERO /*l3vni*/,
51 null /*gatewayMacAddress*/, RouteOrigin.LOCAL);
52 //assertEquals(1, fibManager.getDataChgCount());
58 public void testConnectedRoutNullNextHop() {
60 String prefix = "10.10.10.10/32";
61 Uint32 label = Uint32.valueOf(1234);
63 bgpFibWriter.addFibEntryToDS(rd, /*macAddress*/ prefix, null,
64 VrfEntry.EncapType.Mplsgre, label, Uint32.ZERO /*l3vni*/,
65 null /*gatewayMacAddress*/, RouteOrigin.CONNECTED);
66 assertEquals(1,0); //The code is not launching NullPointerException
67 } catch (NullPointerException e) {
68 //The code must launch NullPointerException
75 public void testAddPrefixesInRd() {
77 String prefix = "10.10.10.10/32";
78 String nexthop = "100.100.100.100";
81 bgpFibWriter.addFibEntryToDS(rd, prefix, nexthop, label);
82 assertEquals(1, fibManager.getDataChgCount());
84 prefix = "10.10.10.11/32";
86 bgpFibWriter.addFibEntryToDS(rd, prefix, nexthop, label);
87 assertEquals(2, fibManager.getDataChgCount());
93 public void testAddPrefixesAcrossRd() {
95 String prefix = "10.10.10.10/32";
96 String nexthop = "100.100.100.100";
99 bgpFibWriter.addFibEntryToDS(rd, prefix, nexthop, label);
100 assertEquals(1, fibManager.getDataChgCount());
103 prefix = "10.10.10.11/32";
104 nexthop = "200.200.200.200";
106 bgpFibWriter.addFibEntryToDS(rd, prefix, nexthop, label);
107 assertEquals(2, fibManager.getDataChgCount());
113 public void testRemovePrefix() {
115 String prefix = "10.10.10.10/32";
116 String nexthop = "100.100.100.100";
119 //add and then remove prefix
120 bgpFibWriter.addFibEntryToDS(rd, prefix, nexthop, label);
121 assertEquals(1, fibManager.getDataChgCount());
122 bgpFibWriter.removeFibEntryFromDS(rd, prefix);
123 assertEquals(0, fibManager.getDataChgCount());