5f5303d83787d560034edfb4bbfcb28ad82a9e53
[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
9 package org.opendaylight.protocol.bgp.state;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNull;
13 import static org.mockito.Matchers.eq;
14 import static org.mockito.Mockito.doAnswer;
15 import static org.mockito.Mockito.doReturn;
16 import static org.opendaylight.protocol.bgp.state.StateProviderImplTest.TABLES_KEY;
17
18 import java.util.Collections;
19 import java.util.Optional;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.mockito.Mock;
23 import org.mockito.MockitoAnnotations;
24 import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
25 import org.opendaylight.protocol.bgp.rib.spi.State;
26 import org.opendaylight.protocol.bgp.rib.spi.state.BGPAfiSafiState;
27 import org.opendaylight.protocol.bgp.rib.spi.state.BGPSessionState;
28 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
29 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiBuilder;
30 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.GracefulRestart;
31 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.GracefulRestartBuilder;
32 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.graceful.restart.StateBuilder;
33 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.operational.rev151009.BgpNeighborState.SessionState;
34 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.AfiSafiType;
35 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev171207.NeighborAfiSafiGracefulRestartStateAugmentation;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev171207.NeighborAfiSafiGracefulRestartStateAugmentationBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev171207.NeighborAfiSafiStateAugmentation;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev171207.NeighborAfiSafiStateAugmentationBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev171207.NeighborStateAugmentationBuilder;
41
42 public class NeighborUtilTest {
43     @Mock
44     private BGPSessionState sessionState;
45     @Mock
46     private BGPTableTypeRegistryConsumer tableRegistry;
47     @Mock
48     private BGPAfiSafiState bgpAfiSafiState;
49     private State state = State.IDLE;
50     private Optional<Class<? extends AfiSafiType>> afiSafi = Optional.empty();
51
52     @Before
53     public void setUp() throws Exception {
54         MockitoAnnotations.initMocks(this);
55         doReturn(false).when(this.sessionState).isRouterRefreshCapabilitySupported();
56         doReturn(false).when(this.sessionState).isMultiProtocolCapabilitySupported();
57         doReturn(false).when(this.sessionState).isGracefulRestartCapabilitySupported();
58         doReturn(false).when(this.sessionState).isAsn32CapabilitySupported();
59         doReturn(false).when(this.sessionState).isAddPathCapabilitySupported();
60         doReturn(this.state).when(this.sessionState).getSessionState();
61         doAnswer(invocation -> NeighborUtilTest.this.state).when(this.sessionState).getSessionState();
62         doReturn(Collections.singleton(TABLES_KEY)).when(this.bgpAfiSafiState).getAfiSafisAdvertized();
63         doReturn(Collections.singleton(TABLES_KEY)).when(this.bgpAfiSafiState).getAfiSafisReceived();
64         doAnswer(invocation -> NeighborUtilTest.this.afiSafi).when(this.tableRegistry).getAfiSafiType(eq(TABLES_KEY));
65         doReturn(false).when(this.bgpAfiSafiState).isAfiSafiSupported(eq(TABLES_KEY));
66         doReturn(false).when(this.bgpAfiSafiState).isGracefulRestartAdvertized(eq(TABLES_KEY));
67         doReturn(false).when(this.bgpAfiSafiState).isGracefulRestartReceived(eq(TABLES_KEY));
68
69
70     }
71
72     @Test
73     public void testBuildCapabilityState() {
74         final NeighborStateAugmentationBuilder expected = new NeighborStateAugmentationBuilder()
75                 .setSupportedCapabilities(Collections.emptyList())
76                 .setSessionState(SessionState.IDLE);
77         assertEquals(expected.build(), NeighborUtil.buildCapabilityState(this.sessionState));
78
79         this.state = State.OPEN_CONFIRM;
80         expected.setSessionState(SessionState.OPENCONFIRM);
81         assertEquals(expected.build(), NeighborUtil.buildCapabilityState(this.sessionState));
82     }
83
84     @Test
85     public void testBuildTimer() {
86         assertNull(NeighborUtil.buildTimer(null));
87     }
88
89     @Test
90     public void testBuildTransport() {
91         assertNull(NeighborUtil.buildTransport(null));
92     }
93
94     @Test
95     public void testBuildNeighborStatet() {
96         assertNull(NeighborUtil.buildNeighborState(null, null));
97     }
98
99     @Test
100     public void buildAfisSafisState() {
101         assertEquals(Collections.emptyList(),
102                 NeighborUtil.buildAfisSafisState(this.bgpAfiSafiState, this.tableRegistry));
103
104         final GracefulRestart graceful = new GracefulRestartBuilder()
105                 .setState(new StateBuilder().addAugmentation(NeighborAfiSafiGracefulRestartStateAugmentation.class,
106                         new NeighborAfiSafiGracefulRestartStateAugmentationBuilder().setAdvertised(false)
107                                 .setReceived(false).build()).build()).build();
108
109         final org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi
110                 .list.afi.safi.State afiSafiState = new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp
111                 .multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.StateBuilder()
112                 .addAugmentation(NeighborAfiSafiStateAugmentation.class, new NeighborAfiSafiStateAugmentationBuilder()
113                         .setActive(false).build()).build();
114
115         this.afiSafi = Optional.of(IPV4UNICAST.class);
116         final AfiSafi expected = new AfiSafiBuilder().setAfiSafiName(this.afiSafi.get())
117                 .setState(afiSafiState)
118                 .setGracefulRestart(graceful).build();
119         assertEquals(Collections.singletonList(expected),
120                 NeighborUtil.buildAfisSafisState(this.bgpAfiSafiState, this.tableRegistry));
121     }
122 }