600936cf78b5eca1187acc173703f37dbcf4d429
[netvirt.git] / vpnservice / fibmanager / fibmanager-impl / src / test / java / org / opendaylight / netvirt / fibmanager / test / FibManagerTest.java
1 /*
2  * Copyright © 2015, 2017 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
3  *
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
7  */
8 package org.opendaylight.netvirt.fibmanager.test;
9
10 import static org.mockito.Matchers.any;
11 import static org.mockito.Mockito.when;
12
13 import java.math.BigInteger;
14 import java.util.Collections;
15 import java.util.List;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.junit.runner.RunWith;
19 import org.mockito.Mock;
20 import org.mockito.runners.MockitoJUnitRunner;
21 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
22 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
23 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
24 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
25 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
26 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
27 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
28 import org.opendaylight.netvirt.fibmanager.VrfEntryListener;
29 import org.opendaylight.netvirt.fibmanager.api.RouteOrigin;
30 import org.opendaylight.netvirt.vpnmanager.api.IVpnManager;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.FibEntries;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.fibentries.VrfTables;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.fibentries.VrfTablesKey;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntryBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntryKey;
37 import org.opendaylight.yangtools.concepts.ListenerRegistration;
38 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
39 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
40
41 @RunWith(MockitoJUnitRunner.class)
42 public class FibManagerTest {
43
44     @Mock
45     DataBroker dataBroker;
46     @Mock
47     ListenerRegistration<DataChangeListener> dataChangeListenerRegistration;
48     @Mock
49     ReadOnlyTransaction mockReadTx;
50     @Mock
51     WriteTransaction mockWriteTx;
52     @Mock
53     IMdsalApiManager mdsalManager;
54     @Mock
55     IVpnManager vpnmanager;
56     @Mock
57     VrfTablesKey vrfTableKey;
58
59     MockDataChangedEvent dataChangeEvent;
60     VrfEntryListener fibmgr;
61     private static final Long EGRESS_POINTER = 11L;
62     VrfEntry vrfEntry;
63     InstanceIdentifier<VrfEntry> identifier;
64     VrfEntryBuilder vrfbuilder;
65     private static final String TEST_VPN_INSTANCE_NAME = "95486250-4ad7-418f-9030-2df37f98ad24";
66     private static final String TEST_RD = "100:1";
67     private static final String PREFIX = "1.1.2.3";
68     private static final String NEXTHOP = "1.1.1.1";
69     private static final int LABEL = 10;
70     RouteOrigin origin = RouteOrigin.STATIC;
71     BigInteger dpn;
72     private static final long VPN_ID = 101L;
73     private static final long VPN_INTF_CNT = 2;
74     private static final Boolean IS_CLEANUP_COMPLETE = Boolean.FALSE;
75
76     private void setupMocks() {
77         dpn = BigInteger.valueOf(100000L);
78         identifier = buildVrfEntryId(TEST_RD, PREFIX);
79         vrfEntry = buildVrfEntry(TEST_RD, PREFIX, Collections.singletonList(NEXTHOP), LABEL, origin);
80         when(vrfTableKey.getRouteDistinguisher()).thenReturn(TEST_RD);
81     }
82
83     @Before
84     public void setUp() throws Exception {
85         when(
86             dataBroker.registerDataChangeListener(any(LogicalDatastoreType.class),
87                 any(InstanceIdentifier.class), any(DataChangeListener.class),
88                 any(DataChangeScope.class))).thenReturn(dataChangeListenerRegistration);
89         dataChangeEvent = new MockDataChangedEvent();
90         vrfbuilder = new VrfEntryBuilder();
91         setupMocks();
92     }
93
94     @Test
95     public void testAdd() {
96         dataChangeEvent.created.put(identifier, vrfEntry);
97         //fibmgr.onDataChanged(dataChangeEvent);
98         //Mockito.verify(mdsalManager, Mockito.times(2)).installFlow(any(FlowEntity.class));
99     }
100
101     private VrfEntry buildVrfEntry(String rd, String prefix, List<String> nextHopList, int label, RouteOrigin origin) {
102
103         return new VrfEntryBuilder().setDestPrefix(prefix).setNextHopAddressList(nextHopList)
104             .setLabel((long) label).setOrigin(origin.getValue()).build();
105     }
106
107     public static InstanceIdentifier<VrfTables> buildVrfTableId(String rd) {
108         InstanceIdentifierBuilder<VrfTables> idBuilder =
109             InstanceIdentifier.builder(FibEntries.class).child(VrfTables.class, new VrfTablesKey(rd));
110         InstanceIdentifier<VrfTables> vrfTableId = idBuilder.build();
111         return vrfTableId;
112     }
113
114     public static InstanceIdentifier<VrfEntry> buildVrfEntryId(String rd, String prefix) {
115         InstanceIdentifierBuilder<VrfEntry> idBuilder =
116             InstanceIdentifier.builder(FibEntries.class).child(VrfTables.class, new VrfTablesKey(rd))
117                 .child(VrfEntry.class, new VrfEntryKey(prefix));
118         InstanceIdentifier<VrfEntry> vrfEntryId = idBuilder.build();
119         return vrfEntryId;
120     }
121 }