Bump upstreams
[bgpcep.git] / bgp / openconfig-state / src / test / java / org / opendaylight / protocol / bgp / state / StateProviderImplTest.java
index af04b2be6926864d7a409d1dd31f34efc3db2d24..cb80ea56b7337cf1d2625337563c934798b061a5 100644 (file)
@@ -5,10 +5,11 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.bgp.state;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -24,35 +25,30 @@ import static org.mockito.Mockito.verify;
 import static org.opendaylight.protocol.util.CheckUtil.checkNotPresentOperational;
 import static org.opendaylight.protocol.util.CheckUtil.readDataOperational;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
-import java.math.BigDecimal;
-import java.math.BigInteger;
+import com.google.common.util.concurrent.Uninterruptibles;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
-import java.util.Optional;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.LongAdder;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.infrautils.testutils.LogCapture;
 import org.opendaylight.infrautils.testutils.internal.RememberingLogger;
 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTest;
 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer;
 import org.opendaylight.mdsal.binding.dom.adapter.test.ConcurrentDataBrokerTestCustomizer;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.mdsal.dom.spi.store.DOMStore;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
@@ -68,7 +64,7 @@ import org.opendaylight.protocol.bgp.rib.spi.state.BGPPeerMessagesState;
 import org.opendaylight.protocol.bgp.rib.spi.state.BGPPeerState;
 import org.opendaylight.protocol.bgp.rib.spi.state.BGPRibState;
 import org.opendaylight.protocol.bgp.rib.spi.state.BGPSessionState;
-import org.opendaylight.protocol.bgp.rib.spi.state.BGPStateConsumer;
+import org.opendaylight.protocol.bgp.rib.spi.state.BGPStateProvider;
 import org.opendaylight.protocol.bgp.rib.spi.state.BGPTimersState;
 import org.opendaylight.protocol.bgp.rib.spi.state.BGPTransportState;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
@@ -102,6 +98,7 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.MPBGP;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.ROUTEREFRESH;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.OpenconfigNetworkInstanceData;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.NetworkInstances;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.network.instances.NetworkInstance;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.network.instances.NetworkInstanceKey;
@@ -111,64 +108,66 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.re
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.policy.types.rev151009.BGP;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Timeticks;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.BgpNeighborStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.BgpNeighborStateAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.GlobalAfiSafiStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.GlobalAfiSafiStateAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborAfiSafiGracefulRestartStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborAfiSafiGracefulRestartStateAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborAfiSafiStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborAfiSafiStateAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborErrorHandlingStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborErrorHandlingStateAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborGracefulRestartStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborGracefulRestartStateAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborTimersStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborTimersStateAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborTransportStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NeighborTransportStateAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NetworkInstanceProtocol;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.PeerGroupStateAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.PeerGroupStateAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instances.network.instance.protocols.protocol.bgp.neighbors.neighbor.state.MessagesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instances.network.instance.protocols.protocol.bgp.neighbors.neighbor.state.messages.ReceivedBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instances.network.instance.protocols.protocol.bgp.neighbors.neighbor.state.messages.SentBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.BgpNeighborStateAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.BgpNeighborStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.GlobalAfiSafiStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.NeighborAfiSafiGracefulRestartStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.NeighborAfiSafiStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.NeighborErrorHandlingStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.NeighborGracefulRestartStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.NeighborStateAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.NeighborTimersStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.NeighborTransportStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.PeerGroupStateAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.bgp.neighbor_state.augmentation.MessagesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.bgp.neighbor_state.augmentation.messages.ReceivedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.network.instance.protocol.bgp.neighbor_state.augmentation.messages.SentBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.BgpRib;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.RibId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.bgp.rib.Rib;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.bgp.rib.RibKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.BgpId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.Ipv4AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev180329.UnicastSubsequentAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.BgpId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
+import org.opendaylight.yangtools.yang.common.Decimal64;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
 import org.slf4j.LoggerFactory;
 
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class StateProviderImplTest extends AbstractDataBrokerTest {
     private final LongAdder totalPathsCounter = new LongAdder();
     private final LongAdder totalPrefixesCounter = new LongAdder();
-    private final PortNumber localPort = new PortNumber(1790);
-    private final PortNumber remotePort = new PortNumber(179);
-    private final int restartTime = 15;
+    private final PortNumber localPort = new PortNumber(Uint16.valueOf(1790));
+    private final PortNumber remotePort = new PortNumber(Uint16.valueOf(179));
+    private final Uint16 restartTime = Uint16.valueOf(15);
     private final String ribId = "identifier-test";
-    private final InstanceIdentifier<Bgp> bgpInstanceIdentifier = InstanceIdentifier.create(NetworkInstances.class)
-        .child(NetworkInstance.class, new NetworkInstanceKey("global-bgp")).child(Protocols.class)
-        .child(Protocol.class, new ProtocolKey(BGP.class, this.ribId)).augmentation(NetworkInstanceProtocol.class)
+    private final InstanceIdentifier<Bgp> bgpInstanceIdentifier =
+        InstanceIdentifier.builderOfInherited(OpenconfigNetworkInstanceData.class, NetworkInstances.class).build()
+            .child(NetworkInstance.class, new NetworkInstanceKey("global-bgp"))
+            .child(Protocols.class)
+            .child(Protocol.class, new ProtocolKey(BGP.VALUE, ribId))
+            .augmentation(NetworkInstanceProtocol.class)
             .child(Bgp.class);
-    static final TablesKey TABLES_KEY = new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class);
-    private final AsNumber as = new AsNumber(72L);
+    static final TablesKey TABLES_KEY = new TablesKey(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE);
+    private final AsNumber as = new AsNumber(Uint32.valueOf(72));
     private final BgpId bgpId = new BgpId("127.0.0.1");
-    private final IpAddress neighborAddress = new IpAddress(new Ipv4Address("127.0.0.2"));
-    private final List<Class<? extends BgpCapability>> supportedCap = Arrays.asList(ASN32.class, ROUTEREFRESH.class,
-            MPBGP.class, ADDPATHS.class, GRACEFULRESTART.class);
+    private final IpAddressNoZone neighborAddress = new IpAddressNoZone(new Ipv4AddressNoZone("127.0.0.2"));
+    private final List<BgpCapability> supportedCap = List.of(ASN32.VALUE, ROUTEREFRESH.VALUE, MPBGP.VALUE,
+            ADDPATHS.VALUE, GRACEFULRESTART.VALUE);
     @Mock
-    private BGPStateConsumer stateCollector;
+    private BGPStateProvider stateProvider;
     @Mock
     private BGPTableTypeRegistryConsumer tableTypeRegistry;
     @Mock
@@ -198,91 +197,78 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
 
     @Before
     public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        doReturn(Optional.of(IPV4UNICAST.class))
-            .when(this.tableTypeRegistry).getAfiSafiType(eq(TABLES_KEY));
+        doReturn(IPV4UNICAST.VALUE).when(tableTypeRegistry).getAfiSafiType(eq(TABLES_KEY));
 
-        doReturn(this.bgpRibStates).when(this.stateCollector).getRibStats();
-        doReturn(this.bgpPeerStates).when(this.stateCollector).getPeerStats();
+        doReturn(bgpRibStates).when(stateProvider).getRibStats();
+        doReturn(bgpPeerStates).when(stateProvider).getPeerStats();
 
         final KeyedInstanceIdentifier<Rib, RibKey> iid = InstanceIdentifier.create(BgpRib.class)
-            .child(Rib.class, new RibKey(new RibId(this.ribId)));
-        doReturn(iid).when(this.bgpRibState).getInstanceIdentifier();
-        doReturn(this.as).when(this.bgpRibState).getAs();
-        doReturn(this.bgpId).when(this.bgpRibState).getRouteId();
-
-        doAnswer(invocation -> this.totalPathsCounter.longValue())
-                .when(this.bgpRibState).getTotalPathsCount();
-        doAnswer(invocation -> this.totalPrefixesCounter.longValue())
-                .when(this.bgpRibState).getTotalPrefixesCount();
-        doAnswer(invocation -> this.totalPathsCounter.longValue())
-                .when(this.bgpRibState).getPathCount(eq(TABLES_KEY));
-        doAnswer(invocation -> this.totalPrefixesCounter.longValue())
-                .when(this.bgpRibState).getPrefixesCount(eq(TABLES_KEY));
-        doAnswer(invocation -> Collections.singletonMap(TABLES_KEY,
-            this.totalPrefixesCounter.longValue())).when(this.bgpRibState).getTablesPrefixesCount();
-        doAnswer(invocation -> Collections.singletonMap(TABLES_KEY,
-            this.totalPathsCounter.longValue())).when(this.bgpRibState).getPathsCount();
+            .child(Rib.class, new RibKey(new RibId(ribId)));
+        doReturn(iid).when(bgpRibState).getInstanceIdentifier();
+        doReturn(as).when(bgpRibState).getAs();
+        doReturn(bgpId).when(bgpRibState).getRouteId();
+
+        doAnswer(invocation -> totalPathsCounter.longValue())
+                .when(bgpRibState).getTotalPathsCount();
+        doAnswer(invocation -> totalPrefixesCounter.longValue())
+                .when(bgpRibState).getTotalPrefixesCount();
+        doAnswer(invocation -> totalPathsCounter.longValue())
+                .when(bgpRibState).getPathCount(eq(TABLES_KEY));
+        doAnswer(invocation -> totalPrefixesCounter.longValue())
+                .when(bgpRibState).getPrefixesCount(eq(TABLES_KEY));
+        doAnswer(invocation -> Map.of(TABLES_KEY,
+            totalPathsCounter.longValue())).when(bgpRibState).getPathsCount();
 
         // Mock Peer
-        doReturn("test-group").when(this.bgpPeerState).getGroupId();
-        doReturn(iid).when(this.bgpPeerState).getInstanceIdentifier();
-        doAnswer(invocation -> this.totalPrefixesCounter.longValue()).when(this.bgpPeerState).getTotalPrefixes();
-        doAnswer(invocation -> this.totalPathsCounter.longValue()).when(this.bgpPeerState).getTotalPathsCount();
-        doReturn(this.neighborAddress).when(this.bgpPeerState).getNeighborAddress();
-        doReturn(this.bgpSessionState).when(this.bgpPeerState).getBGPSessionState();
-        doReturn(this.bgpPeerMessagesState).when(this.bgpPeerState).getBGPPeerMessagesState();
-
-        doReturn(1L).when(this.bgpPeerMessagesState).getNotificationMessagesReceivedCount();
-        doReturn(1L).when(this.bgpPeerMessagesState).getNotificationMessagesSentCount();
-        doReturn(1L).when(this.bgpPeerMessagesState).getUpdateMessagesReceivedCount();
-        doReturn(1L).when(this.bgpPeerMessagesState).getUpdateMessagesSentCount();
-        doReturn(State.UP).when(this.bgpSessionState).getSessionState();
-        doReturn(true).when(this.bgpSessionState).isAddPathCapabilitySupported();
-        doReturn(true).when(this.bgpSessionState).isAsn32CapabilitySupported();
-        doReturn(true).when(this.bgpSessionState).isGracefulRestartCapabilitySupported();
-        doReturn(true).when(this.bgpSessionState).isMultiProtocolCapabilitySupported();
-        doReturn(true).when(this.bgpSessionState).isRouterRefreshCapabilitySupported();
-
-        doReturn(this.timersState).when(this.bgpPeerState).getBGPTimersState();
-        doReturn(10L).when(this.timersState).getNegotiatedHoldTime();
-        doReturn(10L).when(this.timersState).getUpTime();
-
-        doReturn(this.bgpTransportState).when(this.bgpPeerState).getBGPTransportState();
-        doReturn(this.localPort).when(this.bgpTransportState).getLocalPort();
-        doReturn(this.neighborAddress).when(this.bgpTransportState).getRemoteAddress();
-        doReturn(this.remotePort).when(this.bgpTransportState).getRemotePort();
-
-        doReturn(this.bgpErrorHandlingState).when(this.bgpPeerState).getBGPErrorHandlingState();
-        doReturn(1L).when(this.bgpErrorHandlingState).getErroneousUpdateReceivedCount();
-
-        doReturn(this.bgpGracelfulRestartState).when(this.bgpPeerState).getBGPGracelfulRestart();
-        doReturn(true).when(this.bgpGracelfulRestartState).isGracefulRestartAdvertized(any());
-        doReturn(true).when(this.bgpGracelfulRestartState).isGracefulRestartReceived(any());
-        doReturn(true).when(this.bgpGracelfulRestartState).isLocalRestarting();
-        doReturn(true).when(this.bgpGracelfulRestartState).isPeerRestarting();
-        doReturn(this.restartTime).when(this.bgpGracelfulRestartState).getPeerRestartTime();
-        doReturn(BgpAfiSafiGracefulRestartState.Mode.BILATERAL).when(this.bgpGracelfulRestartState).getMode();
-
-        doReturn(this.bgpAfiSafiState).when(this.bgpPeerState).getBGPAfiSafiState();
-        doReturn(Collections.singleton(TABLES_KEY)).when(this.bgpAfiSafiState).getAfiSafisAdvertized();
-        doReturn(Collections.singleton(TABLES_KEY)).when(this.bgpAfiSafiState).getAfiSafisReceived();
-        doReturn(1L).when(this.bgpAfiSafiState).getPrefixesInstalledCount(any());
-        doReturn(2L).when(this.bgpAfiSafiState).getPrefixesReceivedCount(any());
-        doReturn(1L).when(this.bgpAfiSafiState).getPrefixesSentCount(any());
-        doReturn(true).when(this.bgpAfiSafiState).isAfiSafiSupported(any());
-        doReturn(true).when(this.bgpAfiSafiState).isGracefulRestartAdvertized(any());
-        doReturn(true).when(this.bgpAfiSafiState).isGracefulRestartReceived(any());
-        doReturn(true).when(this.bgpAfiSafiState).isLlGracefulRestartAdvertised(any());
-        doReturn(true).when(this.bgpAfiSafiState).isLlGracefulRestartReceived(any());
-        doReturn(60).when(this.bgpAfiSafiState).getLlGracefulRestartTimer(any());
-    }
-
-    @Override
-    protected Set<YangModuleInfo> getModuleInfos() throws Exception {
-        return ImmutableSet.of(BindingReflections.getModuleInfo(NetworkInstances.class),
-                BindingReflections.getModuleInfo(NetworkInstanceProtocol.class));
+        doReturn("test-group").when(bgpPeerState).getGroupId();
+        doReturn(iid).when(bgpPeerState).getInstanceIdentifier();
+        doAnswer(invocation -> totalPrefixesCounter.longValue()).when(bgpPeerState).getTotalPrefixes();
+        doAnswer(invocation -> totalPathsCounter.longValue()).when(bgpPeerState).getTotalPathsCount();
+        doReturn(neighborAddress).when(bgpPeerState).getNeighborAddress();
+        doReturn(bgpSessionState).when(bgpPeerState).getBGPSessionState();
+        doReturn(bgpPeerMessagesState).when(bgpPeerState).getBGPPeerMessagesState();
+
+        doReturn(1L).when(bgpPeerMessagesState).getNotificationMessagesReceivedCount();
+        doReturn(1L).when(bgpPeerMessagesState).getNotificationMessagesSentCount();
+        doReturn(1L).when(bgpPeerMessagesState).getUpdateMessagesReceivedCount();
+        doReturn(1L).when(bgpPeerMessagesState).getUpdateMessagesSentCount();
+        doReturn(State.UP).when(bgpSessionState).getSessionState();
+        doReturn(true).when(bgpSessionState).isAddPathCapabilitySupported();
+        doReturn(true).when(bgpSessionState).isAsn32CapabilitySupported();
+        doReturn(true).when(bgpSessionState).isGracefulRestartCapabilitySupported();
+        doReturn(true).when(bgpSessionState).isMultiProtocolCapabilitySupported();
+        doReturn(true).when(bgpSessionState).isRouterRefreshCapabilitySupported();
+
+        doReturn(timersState).when(bgpPeerState).getBGPTimersState();
+        doReturn(10L).when(timersState).getNegotiatedHoldTime();
+        doReturn(10L).when(timersState).getUpTime();
+
+        doReturn(bgpTransportState).when(bgpPeerState).getBGPTransportState();
+        doReturn(localPort).when(bgpTransportState).getLocalPort();
+        doReturn(neighborAddress).when(bgpTransportState).getRemoteAddress();
+        doReturn(remotePort).when(bgpTransportState).getRemotePort();
+
+        doReturn(bgpErrorHandlingState).when(bgpPeerState).getBGPErrorHandlingState();
+        doReturn(1L).when(bgpErrorHandlingState).getErroneousUpdateReceivedCount();
+
+        doReturn(bgpGracelfulRestartState).when(bgpPeerState).getBGPGracelfulRestart();
+        doReturn(true).when(bgpGracelfulRestartState).isLocalRestarting();
+        doReturn(true).when(bgpGracelfulRestartState).isPeerRestarting();
+        doReturn(restartTime.toJava()).when(bgpGracelfulRestartState).getPeerRestartTime();
+        doReturn(BgpAfiSafiGracefulRestartState.Mode.BILATERAL).when(bgpGracelfulRestartState).getMode();
+
+        doReturn(bgpAfiSafiState).when(bgpPeerState).getBGPAfiSafiState();
+        doReturn(Set.of(TABLES_KEY)).when(bgpAfiSafiState).getAfiSafisAdvertized();
+        doReturn(Set.of(TABLES_KEY)).when(bgpAfiSafiState).getAfiSafisReceived();
+        doReturn(1L).when(bgpAfiSafiState).getPrefixesInstalledCount(any());
+        doReturn(2L).when(bgpAfiSafiState).getPrefixesReceivedCount(any());
+        doReturn(1L).when(bgpAfiSafiState).getPrefixesSentCount(any());
+        doReturn(true).when(bgpAfiSafiState).isAfiSafiSupported(any());
+        doReturn(true).when(bgpAfiSafiState).isGracefulRestartAdvertized(any());
+        doReturn(true).when(bgpAfiSafiState).isGracefulRestartReceived(any());
+        doReturn(true).when(bgpAfiSafiState).isLlGracefulRestartAdvertised(any());
+        doReturn(true).when(bgpAfiSafiState).isLlGracefulRestartReceived(any());
+        doReturn(60).when(bgpAfiSafiState).getLlGracefulRestartTimer(any());
     }
 
     @Override
@@ -292,7 +278,7 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
             public DOMStore createOperationalDatastore() {
                 realOperStore = new InMemoryDOMDataStore("OPER", getDataTreeChangeListenerExecutor());
                 spiedOperStore = spy(realOperStore);
-                getSchemaService().registerSchemaContextListener(spiedOperStore);
+                getSchemaService().registerSchemaContextListener(spiedOperStore::onModelContextUpdated);
                 return spiedOperStore;
             }
 
@@ -305,103 +291,109 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
 
     @Test
     public void testActiveStateProvider() throws Exception {
-        doReturn(true).when(this.bgpRibState).isActive();
-        doReturn(true).when(this.bgpPeerState).isActive();
-
-        final StateProviderImpl stateProvider = new StateProviderImpl(getDataBroker(), 1, this.tableTypeRegistry,
-            this.stateCollector, "global-bgp");
-        stateProvider.init();
-
-        final Global globalExpected = buildGlobalExpected(0);
-        this.bgpRibStates.add(this.bgpRibState);
-        readDataOperational(getDataBroker(), this.bgpInstanceIdentifier, bgpRib -> {
-            final Global global = bgpRib.getGlobal();
-            assertEquals(globalExpected, global);
-            return bgpRib;
-        });
-
-        this.totalPathsCounter.increment();
-        this.totalPrefixesCounter.increment();
-
-        final Global globalExpected2 = buildGlobalExpected(1);
-        readDataOperational(getDataBroker(), this.bgpInstanceIdentifier, bgpRib -> {
-            final Global global = bgpRib.getGlobal();
-            assertEquals(globalExpected2, global);
-            return bgpRib;
-        });
-
-        this.totalPathsCounter.decrement();
-        this.totalPrefixesCounter.decrement();
-
-        final Global globalExpected3 = buildGlobalExpected(0);
-        readDataOperational(getDataBroker(), this.bgpInstanceIdentifier, bgpRib -> {
-            final Global global = bgpRib.getGlobal();
-            assertEquals(globalExpected3, global);
-            Assert.assertNull(bgpRib.getNeighbors());
-            Assert.assertNull(bgpRib.getPeerGroups());
-            return bgpRib;
-        });
-
-        this.bgpPeerStates.add(this.bgpPeerState);
-        final PeerGroup peerGroupExpected = buildGroupExpected();
-
-        this.totalPathsCounter.increment();
-        this.totalPrefixesCounter.increment();
-
-        final AfiSafis expectedAfiSafis = buildAfiSafis();
-        final ErrorHandling expectedErrorHandling = buildErrorHandling();
-        final GracefulRestart expectedGracefulRestart = buildGracefulRestart();
-        final Transport expectedTransport = buildTransport();
-        final Timers expectedTimers = buildTimers();
-        final BgpNeighborStateAugmentation expectedBgpNeighborState = buildBgpNeighborStateAugmentation();
-
-        readDataOperational(getDataBroker(), this.bgpInstanceIdentifier, bgpRib -> {
-            final Neighbors neighbors = bgpRib.getNeighbors();
-            Assert.assertNotNull(neighbors);
-            assertEquals(peerGroupExpected, bgpRib.getPeerGroups().getPeerGroup().get(0));
-            final Neighbor neighborResult = neighbors.getNeighbor().get(0);
-            assertEquals(this.neighborAddress, neighborResult.getNeighborAddress());
-            assertEquals(expectedAfiSafis, neighborResult.getAfiSafis());
-            assertEquals(expectedErrorHandling, neighborResult.getErrorHandling());
-            assertEquals(expectedGracefulRestart, neighborResult.getGracefulRestart());
-            assertEquals(expectedTransport, neighborResult.getTransport());
-            assertEquals(expectedTimers, neighborResult.getTimers());
-            final org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group
+        doReturn(true).when(bgpRibState).isActive();
+        doReturn(true).when(bgpPeerState).isActive();
+
+        try (StateProviderImpl stateProvider =
+                // FIXME: use a properly-controlled executor service
+                new StateProviderImpl(getDataBroker(), 1, tableTypeRegistry, this.stateProvider, "global-bgp")) {
+
+            final Global globalExpected = buildGlobalExpected(0);
+            bgpRibStates.add(bgpRibState);
+            readDataOperational(getDataBroker(), bgpInstanceIdentifier, bgpRib -> {
+                final Global global = bgpRib.getGlobal();
+                assertEquals(globalExpected, global);
+                return bgpRib;
+            });
+
+            totalPathsCounter.increment();
+            totalPrefixesCounter.increment();
+
+            final Global globalExpected2 = buildGlobalExpected(1);
+            readDataOperational(getDataBroker(), bgpInstanceIdentifier, bgpRib -> {
+                final Global global = bgpRib.getGlobal();
+                assertEquals(globalExpected2, global);
+                return bgpRib;
+            });
+
+            totalPathsCounter.decrement();
+            totalPrefixesCounter.decrement();
+
+            final Global globalExpected3 = buildGlobalExpected(0);
+            readDataOperational(getDataBroker(), bgpInstanceIdentifier, bgpRib -> {
+                final Global global = bgpRib.getGlobal();
+                assertEquals(globalExpected3, global);
+                assertNull(bgpRib.getNeighbors());
+                assertNull(bgpRib.getPeerGroups());
+                return bgpRib;
+            });
+
+            bgpPeerStates.add(bgpPeerState);
+            final PeerGroup peerGroupExpected = buildGroupExpected();
+
+            totalPathsCounter.increment();
+            totalPrefixesCounter.increment();
+
+            final AfiSafis expectedAfiSafis = buildAfiSafis();
+            final ErrorHandling expectedErrorHandling = buildErrorHandling();
+            final GracefulRestart expectedGracefulRestart = buildGracefulRestart();
+            final Transport expectedTransport = buildTransport();
+            final Timers expectedTimers = buildTimers();
+            final BgpNeighborStateAugmentation expectedBgpNeighborState = buildBgpNeighborStateAugmentation();
+
+            readDataOperational(getDataBroker(), bgpInstanceIdentifier, bgpRib -> {
+                final Neighbors neighbors = bgpRib.getNeighbors();
+                assertNotNull(neighbors);
+                assertEquals(peerGroupExpected, bgpRib.getPeerGroups().nonnullPeerGroup().values().iterator().next());
+                final Neighbor neighborResult = neighbors.nonnullNeighbor().values().iterator().next();
+                assertEquals(new IpAddress(neighborAddress.getIpv4AddressNoZone()),
+                    neighborResult.getNeighborAddress());
+                assertEquals(expectedAfiSafis, neighborResult.getAfiSafis());
+                assertEquals(expectedErrorHandling, neighborResult.getErrorHandling());
+                assertEquals(expectedGracefulRestart, neighborResult.getGracefulRestart());
+                assertEquals(expectedTransport, neighborResult.getTransport());
+                assertEquals(expectedTimers, neighborResult.getTimers());
+                final org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group
                     .State stateResult = neighborResult.getState();
-            assertEquals(expectedBgpNeighborState, stateResult.augmentation(BgpNeighborStateAugmentation.class));
-            assertEquals(BgpNeighborState.SessionState.ESTABLISHED, stateResult
+                assertEquals(expectedBgpNeighborState, stateResult.augmentation(BgpNeighborStateAugmentation.class));
+                assertEquals(BgpNeighborState.SessionState.ESTABLISHED, stateResult
                     .augmentation(NeighborStateAugmentation.class).getSessionState());
-            final List<Class<? extends BgpCapability>> supportedCapabilitiesResult = stateResult
+                final Set<BgpCapability> supportedCapabilitiesResult = stateResult
                     .augmentation(NeighborStateAugmentation.class).getSupportedCapabilities();
-            Assert.assertTrue(supportedCapabilitiesResult.containsAll(this.supportedCap));
-            return bgpRib;
-        });
-
-        this.bgpRibStates.clear();
-        checkNotPresentOperational(getDataBroker(), this.bgpInstanceIdentifier);
+                assertTrue(supportedCapabilitiesResult.containsAll(supportedCap));
+                return bgpRib;
+            });
 
-        stateProvider.close();
+            bgpRibStates.clear();
+            checkNotPresentOperational(getDataBroker(), bgpInstanceIdentifier);
+        }
     }
 
     @Test
     public void testInactiveStateProvider() throws Exception {
-        doReturn(false).when(this.bgpRibState).isActive();
-        doReturn(false).when(this.bgpPeerState).isActive();
-
-        final StateProviderImpl stateProvider = new StateProviderImpl(getDataBroker(), 1, this.tableTypeRegistry,
-            this.stateCollector, "global-bgp");
-        stateProvider.init();
-
-        this.bgpRibStates.add(this.bgpRibState);
-        checkNotPresentOperational(getDataBroker(), this.bgpInstanceIdentifier);
-
-        this.bgpPeerStates.add(this.bgpPeerState);
-        checkNotPresentOperational(getDataBroker(), this.bgpInstanceIdentifier);
-
-        this.bgpRibStates.clear();
-        checkNotPresentOperational(getDataBroker(), this.bgpInstanceIdentifier);
-
-        stateProvider.close();
+        doReturn(false).when(bgpRibState).isActive();
+
+        try (StateProviderImpl stateProvider =
+                new StateProviderImpl(getDataBroker(), 100, TimeUnit.MILLISECONDS, tableTypeRegistry,
+                        this.stateProvider,
+                    // FIXME: use a properly-controlled executor service ...
+                    "global-bgp", Executors.newScheduledThreadPool(1))) {
+
+            bgpRibStates.add(bgpRibState);
+            /// ... and trigger here
+            Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS);
+            checkNotPresentOperational(getDataBroker(), bgpInstanceIdentifier);
+
+            bgpPeerStates.add(bgpPeerState);
+            /// ... and trigger here
+            Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS);
+            checkNotPresentOperational(getDataBroker(), bgpInstanceIdentifier);
+
+            bgpRibStates.clear();
+            /// ... and trigger here
+            Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS);
+            checkNotPresentOperational(getDataBroker(), bgpInstanceIdentifier);
+        }
     }
 
     @Test
@@ -411,9 +403,9 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
                 + LoggerFactory.getLogger(StateProviderImpl.class).getClass());
         }
 
-        doReturn(true).when(this.bgpRibState).isActive();
+        doReturn(true).when(bgpRibState).isActive();
 
-        this.bgpRibStates.add(this.bgpRibState);
+        bgpRibStates.add(bgpRibState);
 
         ScheduledFuture<?> mockScheduledFuture = mock(ScheduledFuture.class);
         doReturn(true).when(mockScheduledFuture).cancel(anyBoolean());
@@ -424,7 +416,6 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
         doNothing().when(mockScheduler).shutdown();
 
         DOMStoreTransactionChain mockTxChain = mock(DOMStoreTransactionChain.class);
-        doNothing().when(mockTxChain).close();
 
         Throwable mockCommitEx = new Exception("mock commit failure");
         doAnswer(invocation -> {
@@ -436,7 +427,6 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
                 DOMStoreWriteTransaction mockWriteTx = mock(DOMStoreReadWriteTransaction .class);
                 doNothing().when(mockWriteTx).write(any(), any());
                 doNothing().when(mockWriteTx).merge(any(), any());
-                doNothing().when(mockWriteTx).delete(any());
                 doReturn(mockCohort).when(mockWriteTx).ready();
                 return mockWriteTx;
             }).when(mockTxChain).newReadWriteTransaction();
@@ -444,14 +434,13 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
             return mockTxChain;
         }).doAnswer(invocation -> realOperStore.createTransactionChain()).when(spiedOperStore).createTransactionChain();
 
-        int timerInterval = 1;
-        try (StateProviderImpl stateProvider = new StateProviderImpl(getDataBroker(), timerInterval, tableTypeRegistry,
-                stateCollector, "global-bgp", mockScheduler)) {
-            stateProvider.init();
+        final int period = 100;
+        final TimeUnit unit = TimeUnit.MILLISECONDS;
+        try (StateProviderImpl stateProvider = new StateProviderImpl(getDataBroker(), period, unit, tableTypeRegistry,
+                this.stateProvider, "global-bgp", mockScheduler)) {
 
             ArgumentCaptor<Runnable> timerTask = ArgumentCaptor.forClass(Runnable.class);
-            verify(mockScheduler).scheduleAtFixedRate(timerTask.capture(), eq(0L), eq((long)timerInterval),
-                    eq(TimeUnit.SECONDS));
+            verify(mockScheduler).scheduleAtFixedRate(timerTask.capture(), eq(0L), eq((long)period), eq(unit));
 
             timerTask.getValue().run();
 
@@ -464,7 +453,7 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
 
             timerTask.getValue().run();
 
-            ImmutableList<LogCapture> loggedErrors = RememberingLogger.getErrorLogCaptures();
+            List<LogCapture> loggedErrors = RememberingLogger.getErrorLogCaptures();
             assertTrue("Expected no logged ERRORs: " + loggedErrors, loggedErrors.isEmpty());
 
             verify(spiedOperStore, times(2)).createTransactionChain();
@@ -474,116 +463,136 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
     private static BgpNeighborStateAugmentation buildBgpNeighborStateAugmentation() {
         final BgpNeighborStateAugmentation augmentation = new BgpNeighborStateAugmentationBuilder()
                 .setMessages(new MessagesBuilder().setReceived(new ReceivedBuilder()
-                        .setNOTIFICATION(BigInteger.ONE).setUPDATE(BigInteger.ONE).build())
-                        .setSent(new SentBuilder().setNOTIFICATION(BigInteger.ONE).setUPDATE(BigInteger.ONE).build())
+                        .setNOTIFICATION(Uint64.ONE).setUPDATE(Uint64.ONE).build())
+                        .setSent(new SentBuilder().setNOTIFICATION(Uint64.ONE).setUPDATE(Uint64.ONE).build())
                         .build()).build();
         return augmentation;
     }
 
     private static AfiSafis buildAfiSafis() {
         final NeighborAfiSafiStateAugmentationBuilder neighborAfiSafiStateAugmentation =
-                new NeighborAfiSafiStateAugmentationBuilder().setActive(true).setPrefixes(
-                        new PrefixesBuilder().setSent(1L).setReceived(2L).setInstalled(1L).build());
+                new NeighborAfiSafiStateAugmentationBuilder()
+                .setActive(true)
+                .setPrefixes(new PrefixesBuilder()
+                    .setSent(Uint32.ONE)
+                    .setReceived(Uint32.TWO)
+                    .setInstalled(Uint32.ONE)
+                    .build());
         final AfiSafi afiSafi = new AfiSafiBuilder()
-                .setAfiSafiName(IPV4UNICAST.class)
-                .setGracefulRestart(new GracefulRestartBuilder().setState(new StateBuilder().setEnabled(false)
-                        .addAugmentation(NeighborAfiSafiGracefulRestartStateAugmentation.class,
-                                new NeighborAfiSafiGracefulRestartStateAugmentationBuilder()
-                                        .setAdvertised(true)
-                                        .setReceived(true)
-                                        .setLlStaleTimer(60L)
-                                        .setLlAdvertised(true)
-                                        .setLlReceived(true)
-                                        .build())
-                        .build()).build())
+                .setAfiSafiName(IPV4UNICAST.VALUE)
+                .setGracefulRestart(new GracefulRestartBuilder()
+                    .setState(new StateBuilder().setEnabled(false)
+                        .addAugmentation(new NeighborAfiSafiGracefulRestartStateAugmentationBuilder()
+                            .setAdvertised(true)
+                            .setReceived(true)
+                            .setLlStaleTimer(Uint32.valueOf(60))
+                            .setLlAdvertised(true)
+                            .setLlReceived(true)
+                            .build())
+                        .build())
+                    .build())
                 .setState(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp
-                        .common.afi.safi.list.afi.safi.StateBuilder().setEnabled(false).addAugmentation(
-                                NeighborAfiSafiStateAugmentation.class, neighborAfiSafiStateAugmentation.build())
+                        .common.afi.safi.list.afi.safi.StateBuilder()
+                            .setEnabled(false)
+                            .addAugmentation(neighborAfiSafiStateAugmentation.build())
                         .build())
                 .build();
 
-        return new AfiSafisBuilder().setAfiSafi(Collections.singletonList(afiSafi)).build();
+        return new AfiSafisBuilder().setAfiSafi(Map.of(afiSafi.key(), afiSafi)).build();
     }
 
     private static ErrorHandling buildErrorHandling() {
         final ErrorHandling errorHandling = new ErrorHandlingBuilder().setState(
                 new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.error
                         .handling.StateBuilder().setTreatAsWithdraw(false)
-                        .addAugmentation(NeighborErrorHandlingStateAugmentation.class,
-                                new NeighborErrorHandlingStateAugmentationBuilder()
-                                        .setErroneousUpdateMessages(1L).build()).build()).build();
+                        .addAugmentation(new NeighborErrorHandlingStateAugmentationBuilder()
+                                        .setErroneousUpdateMessages(Uint32.ONE).build()).build()).build();
         return errorHandling;
     }
 
     private static Timers buildTimers() {
-        final Timers timers = new TimersBuilder().setState(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang
-                .bgp.rev151009.bgp.neighbor.group.timers.StateBuilder()
-                .setConnectRetry(BigDecimal.valueOf(30))
-                .setHoldTime(BigDecimal.valueOf(90))
-                .setKeepaliveInterval(BigDecimal.valueOf(30))
-                .setMinimumAdvertisementInterval(BigDecimal.valueOf(30))
-                .addAugmentation(NeighborTimersStateAugmentation.class, new NeighborTimersStateAugmentationBuilder()
-                        .setNegotiatedHoldTime(BigDecimal.TEN).setUptime(new Timeticks(1L)).build())
-                .build()).build();
-        return timers;
+        return new TimersBuilder()
+                .setState(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group
+                    .timers.StateBuilder()
+                        .setConnectRetry(Decimal64.valueOf(2, 30))
+                        .setHoldTime(Decimal64.valueOf(2, 90))
+                        .setKeepaliveInterval(Decimal64.valueOf(2, 30))
+                        .setMinimumAdvertisementInterval(Decimal64.valueOf(2, 30))
+                        .addAugmentation(new NeighborTimersStateAugmentationBuilder()
+                            .setNegotiatedHoldTime(Decimal64.valueOf(2, 10))
+                            .setUptime(new Timeticks(Uint32.ONE)).build())
+                        .build())
+                .build();
     }
 
     private Transport buildTransport() {
-        final Transport transport = new TransportBuilder().setState(new org.opendaylight.yang.gen.v1.http.openconfig
+        return new TransportBuilder()
+                .setState(new org.opendaylight.yang.gen.v1.http.openconfig
                 .net.yang.bgp.rev151009.bgp.neighbor.group.transport.StateBuilder()
-                .setMtuDiscovery(false)
+                    .setMtuDiscovery(false)
                 .setPassiveMode(false)
-                .addAugmentation(NeighborTransportStateAugmentation.class,
-                        new NeighborTransportStateAugmentationBuilder().setLocalPort(this.localPort)
-                                .setRemotePort(this.remotePort)
-                                .setRemoteAddress(this.neighborAddress).build())
+                .addAugmentation(new NeighborTransportStateAugmentationBuilder()
+                    .setLocalPort(localPort)
+                                .setRemotePort(remotePort)
+                                .setRemoteAddress(new IpAddress(neighborAddress.getIpv4AddressNoZone())).build())
                 .build()).build();
-        return transport;
     }
 
     private GracefulRestart buildGracefulRestart() {
         final NeighborGracefulRestartStateAugmentationBuilder gracefulAugmentation
-                = new NeighborGracefulRestartStateAugmentationBuilder();
-        gracefulAugmentation.setPeerRestarting(false);
-        gracefulAugmentation.setLocalRestarting(false);
-        gracefulAugmentation.setPeerRestartTime(0);
-        gracefulAugmentation.setLocalRestarting(true)
+                = new NeighborGracefulRestartStateAugmentationBuilder()
+                .setPeerRestarting(false)
+                .setLocalRestarting(false)
+                .setPeerRestartTime(Uint16.ZERO)
+                .setLocalRestarting(true)
                 .setPeerRestarting(true)
-                .setPeerRestartTime(this.restartTime)
+                .setPeerRestartTime(restartTime)
                 .setMode(BgpAfiSafiGracefulRestartState.Mode.BILATERAL);
         final GracefulRestart gracefulRestart = new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp
                 .rev151009.bgp.graceful.restart.GracefulRestartBuilder().setState(new org.opendaylight.yang.gen.v1.http
                 .openconfig.net.yang.bgp.rev151009.bgp.graceful.restart.graceful.restart.StateBuilder()
-                .addAugmentation(NeighborGracefulRestartStateAugmentation.class,
-                        gracefulAugmentation.build()).build()).build();
+                .addAugmentation(gracefulAugmentation.build()).build()).build();
         return gracefulRestart;
     }
 
     private Global buildGlobalExpected(final long prefixesAndPaths) {
         return new GlobalBuilder()
                 .setState(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.global.base
-                        .StateBuilder().setRouterId(new Ipv4Address(this.bgpId.getValue()))
-                        .setTotalPrefixes(prefixesAndPaths).setTotalPaths(prefixesAndPaths).setAs(this.as).build())
+                        .StateBuilder()
+                            .setRouterId(new Ipv4Address(bgpId.getValue()))
+                            .setTotalPrefixes(Uint32.valueOf(prefixesAndPaths))
+                            .setTotalPaths(Uint32.valueOf(prefixesAndPaths))
+                            .setAs(as)
+                            .build())
                 .setAfiSafis(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.global.base
-                        .AfiSafisBuilder().setAfiSafi(Collections.singletonList(new AfiSafiBuilder()
-                        .setAfiSafiName(IPV4UNICAST.class).setState(new org.opendaylight.yang.gen.v1.http.openconfig
-                                .net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.afi.safi.StateBuilder()
-                                .setEnabled(false)
-                                .addAugmentation(GlobalAfiSafiStateAugmentation.class,
-                                        new GlobalAfiSafiStateAugmentationBuilder()
-                                                .setTotalPaths(prefixesAndPaths).setTotalPrefixes(prefixesAndPaths)
-                                                .build()).build()).build()))
-                        .build()).build();
+                        .AfiSafisBuilder()
+                            .setAfiSafi(BindingMap.of(new AfiSafiBuilder()
+                                .setAfiSafiName(IPV4UNICAST.VALUE)
+                                .setState(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol
+                                    .rev151009.bgp.common.afi.safi.list.afi.safi.StateBuilder()
+                                        .setEnabled(false)
+                                        .addAugmentation(new GlobalAfiSafiStateAugmentationBuilder()
+                                            .setTotalPaths(Uint32.valueOf(prefixesAndPaths))
+                                            .setTotalPrefixes(Uint32.valueOf(prefixesAndPaths))
+                                            .build())
+                                        .build())
+                                .build()))
+                        .build())
+                .build();
     }
 
     private static PeerGroup buildGroupExpected() {
-        return new PeerGroupBuilder().setPeerGroupName("test-group").setState(new org.opendaylight.yang.gen.v1.http
-            .openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.StateBuilder()
-            .setSendCommunity(CommunityType.NONE)
-            .setRouteFlapDamping(false)
-            .addAugmentation(PeerGroupStateAugmentation.class,
-                new PeerGroupStateAugmentationBuilder().setTotalPaths(1L).setTotalPrefixes(1L)
-                    .build()).build())
-            .build();
+        return new PeerGroupBuilder()
+                .setPeerGroupName("test-group")
+                .setState(new org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group
+                    .StateBuilder()
+                    .setSendCommunity(CommunityType.NONE)
+                    .setRouteFlapDamping(false)
+                    .addAugmentation(new PeerGroupStateAugmentationBuilder()
+                        .setTotalPaths(Uint32.ONE)
+                        .setTotalPrefixes(Uint32.ONE)
+                        .build())
+                    .build())
+                .build();
     }
 }