Cleanup deprecation warnings in bgp/openconfig-state
[bgpcep.git] / bgp / openconfig-state / src / test / java / org / opendaylight / protocol / bgp / state / NeighborUtilTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. 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.protocol.bgp.state;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNull;
12 import static org.mockito.ArgumentMatchers.eq;
13 import static org.mockito.Mockito.doAnswer;
14 import static org.mockito.Mockito.doReturn;
15 import static org.mockito.Mockito.mock;
16 import static org.opendaylight.protocol.bgp.state.StateProviderImplTest.TABLES_KEY;
17
18 import java.math.BigDecimal;
19 import java.util.Collections;
20 import java.util.Optional;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.mockito.Mock;
24 import org.mockito.MockitoAnnotations;
25 import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
26 import org.opendaylight.protocol.bgp.rib.spi.State;
27 import org.opendaylight.protocol.bgp.rib.spi.state.BGPAfiSafiState;
28 import org.opendaylight.protocol.bgp.rib.spi.state.BGPSessionState;
29 import org.opendaylight.protocol.bgp.rib.spi.state.BGPTimersState;
30 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
31 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiBuilder;
32 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.GracefulRestart;
33 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.GracefulRestartBuilder;
34 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.graceful.restart.StateBuilder;
35 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.operational.rev151009.BgpNeighborState.SessionState;
36 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Timers;
37 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.TimersBuilder;
38 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.AfiSafiType;
39 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Timeticks;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborAfiSafiGracefulRestartStateAugmentationBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborAfiSafiStateAugmentationBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborStateAugmentationBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborTimersStateAugmentation;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborTimersStateAugmentationBuilder;
46 import org.opendaylight.yangtools.yang.common.Uint32;
47
48 public class NeighborUtilTest {
49     @Mock
50     private BGPSessionState sessionState;
51     @Mock
52     private BGPTableTypeRegistryConsumer tableRegistry;
53     @Mock
54     private BGPAfiSafiState bgpAfiSafiState;
55     private State state = State.IDLE;
56     private Optional<Class<? extends AfiSafiType>> afiSafi = Optional.empty();
57
58     @Before
59     public void setUp() throws Exception {
60         MockitoAnnotations.initMocks(this);
61         doReturn(false).when(this.sessionState).isRouterRefreshCapabilitySupported();
62         doReturn(false).when(this.sessionState).isMultiProtocolCapabilitySupported();
63         doReturn(false).when(this.sessionState).isGracefulRestartCapabilitySupported();
64         doReturn(false).when(this.sessionState).isAsn32CapabilitySupported();
65         doReturn(false).when(this.sessionState).isAddPathCapabilitySupported();
66         doReturn(this.state).when(this.sessionState).getSessionState();
67         doAnswer(invocation -> NeighborUtilTest.this.state).when(this.sessionState).getSessionState();
68         doReturn(Collections.singleton(TABLES_KEY)).when(this.bgpAfiSafiState).getAfiSafisAdvertized();
69         doReturn(Collections.singleton(TABLES_KEY)).when(this.bgpAfiSafiState).getAfiSafisReceived();
70         doAnswer(invocation -> NeighborUtilTest.this.afiSafi).when(this.tableRegistry).getAfiSafiType(eq(TABLES_KEY));
71         doReturn(false).when(this.bgpAfiSafiState).isAfiSafiSupported(eq(TABLES_KEY));
72         doReturn(false).when(this.bgpAfiSafiState).isGracefulRestartAdvertized(eq(TABLES_KEY));
73         doReturn(false).when(this.bgpAfiSafiState).isGracefulRestartReceived(eq(TABLES_KEY));
74         doReturn(false).when(this.bgpAfiSafiState).isLlGracefulRestartAdvertised(eq(TABLES_KEY));
75         doReturn(false).when(this.bgpAfiSafiState).isLlGracefulRestartReceived(eq(TABLES_KEY));
76         doReturn(0).when(this.bgpAfiSafiState).getLlGracefulRestartTimer(eq(TABLES_KEY));
77
78
79     }
80
81     @Test
82     public void testBuildCapabilityState() {
83         final NeighborStateAugmentationBuilder expected = new NeighborStateAugmentationBuilder()
84                 .setSupportedCapabilities(Collections.emptyList())
85                 .setSessionState(SessionState.IDLE);
86         assertEquals(expected.build(), NeighborUtil.buildCapabilityState(this.sessionState));
87
88         this.state = State.OPEN_CONFIRM;
89         expected.setSessionState(SessionState.OPENCONFIRM);
90         assertEquals(expected.build(), NeighborUtil.buildCapabilityState(this.sessionState));
91     }
92
93     @Test
94     public void testBuildTimerNullValue() {
95         assertNull(NeighborUtil.buildTimer(null));
96     }
97
98     @Test
99     public void testBuildTimerNormalValue() {
100         final BGPTimersState timerState = mock(BGPTimersState.class);
101         doReturn(90L).when(timerState).getNegotiatedHoldTime();
102         doReturn(5000L).when(timerState).getUpTime();
103
104         final NeighborTimersStateAugmentation timerStateAug = new NeighborTimersStateAugmentationBuilder()
105                 .setNegotiatedHoldTime(BigDecimal.valueOf(90L)).setUptime(new Timeticks(Uint32.valueOf(500))).build();
106         final Timers expectedTimers = new TimersBuilder().setState(
107                 new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.timers
108                 .StateBuilder().addAugmentation(timerStateAug).build())
109                 .build();
110         assertEquals(expectedTimers, NeighborUtil.buildTimer(timerState));
111     }
112
113     @Test
114     public void testBuildTimerRollOverValue() {
115         final BGPTimersState timerState = mock(BGPTimersState.class);
116         doReturn(90L).when(timerState).getNegotiatedHoldTime();
117         doReturn(42949673015L).when(timerState).getUpTime();
118
119         final NeighborTimersStateAugmentation timerStateAug = new NeighborTimersStateAugmentationBuilder()
120                 .setNegotiatedHoldTime(BigDecimal.valueOf(90L)).setUptime(new Timeticks(Uint32.valueOf(5))).build();
121         final Timers expectedTimers = new TimersBuilder().setState(
122                 new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.timers
123                 .StateBuilder().addAugmentation(timerStateAug).build()).build();
124         assertEquals(expectedTimers, NeighborUtil.buildTimer(timerState));
125     }
126
127     @Test
128     public void testBuildTransport() {
129         assertNull(NeighborUtil.buildTransport(null));
130     }
131
132     @Test
133     public void testBuildNeighborState() {
134         assertNull(NeighborUtil.buildNeighborState(null, null));
135     }
136
137     @Test
138     public void buildAfisSafisState() {
139         assertEquals(Collections.emptyList(),
140                 NeighborUtil.buildAfisSafisState(this.bgpAfiSafiState, this.tableRegistry));
141
142         final GracefulRestart graceful = new GracefulRestartBuilder()
143                 .setState(new StateBuilder().addAugmentation(
144                         new NeighborAfiSafiGracefulRestartStateAugmentationBuilder()
145                                 .setAdvertised(false)
146                                 .setReceived(false)
147                                 .setLlReceived(false)
148                                 .setLlAdvertised(false)
149                                 .setLlStaleTimer(Uint32.ZERO)
150                                 .build()).build()).build();
151
152         final org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi
153                 .list.afi.safi.State afiSafiState = new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp
154                 .multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.StateBuilder()
155                 .addAugmentation(new NeighborAfiSafiStateAugmentationBuilder().setActive(false).build()).build();
156
157         this.afiSafi = Optional.of(IPV4UNICAST.class);
158         final AfiSafi expected = new AfiSafiBuilder().setAfiSafiName(this.afiSafi.get())
159                 .setState(afiSafiState)
160                 .setGracefulRestart(graceful).build();
161         assertEquals(Collections.singletonList(expected),
162                 NeighborUtil.buildAfisSafisState(this.bgpAfiSafiState, this.tableRegistry));
163     }
164 }