Bug-7004: NPE when configuring BGP peer using OpenConfig API twice 28/47228/2
authorAjay <ajayl.bro@gmail.com>
Thu, 20 Oct 2016 21:28:25 +0000 (21:28 +0000)
committerMilos Fabian <milfabia@cisco.com>
Fri, 21 Oct 2016 11:25:31 +0000 (11:25 +0000)
- handle scenario where peer not having AFI-SAFI info is
  reconfigured using OpenConfig API
- updated unit-test

Change-Id: Ib9dd4550814fe861ab60efc3276cb91b45692078
Signed-off-by: Ajay <ajayl.bro@gmail.com>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeer.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeerTest.java

index 92523b5489b77bbd7290c365dfdf5c81120ff0dd..beda7c7d1ba09b9d6f5f10aa8d2332cbabd8ffa1 100644 (file)
@@ -20,6 +20,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import io.netty.util.concurrent.Future;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import org.opendaylight.controller.config.yang.bgp.rib.impl.BGPPeerRuntimeMXBean;
@@ -112,8 +113,8 @@ public final class BgpPeer implements PeerBean, BGPPeerRuntimeMXBean {
     public Boolean containsEqualConfiguration(final Neighbor neighbor) {
         final AfiSafis actAfiSafi = this.currentConfiguration.getAfiSafis();
         final AfiSafis extAfiSafi = neighbor.getAfiSafis();
-        final List<AfiSafi> actualSafi = actAfiSafi.getAfiSafi();
-        final List<AfiSafi> extSafi = extAfiSafi.getAfiSafi();
+        final List<AfiSafi> actualSafi = actAfiSafi != null ? actAfiSafi.getAfiSafi() : Collections.emptyList();
+        final List<AfiSafi> extSafi = extAfiSafi != null ? extAfiSafi.getAfiSafi() : Collections.emptyList();
         return actualSafi.containsAll(extSafi) && extSafi.containsAll(actualSafi)
         && Objects.equals(this.currentConfiguration.getConfig(), neighbor.getConfig())
         && Objects.equals(this.currentConfiguration.getNeighborAddress(), neighbor.getNeighborAddress())
index 9747339c7de1ee85abb7aeedbffc2317001412d2..83a31dd26406b774aca4348a584681df2a23dabf 100644 (file)
@@ -133,6 +133,11 @@ public class BgpPeerTest extends AbstractConfig {
         Mockito.verify(this.singletonServiceRegistration, times(2)).close();
         Mockito.verify(this.serviceRegistration).unregister();
         Mockito.verify(this.future).cancel(true);
+
+        final Neighbor emptyNeighbor = new NeighborBuilder().setNeighborAddress(NEIGHBOR_ADDRESS).build();
+        this.bgpPeer.start(this.rib, emptyNeighbor, this.mappingService, this.configurationWriter);
+        assertTrue(this.bgpPeer.containsEqualConfiguration(emptyNeighbor));
+        this.bgpPeer.close();
     }
 
     static Neighbor createNeighborExpected(final IpAddress neighborAddress) {