X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FMockDataTreeChangeListener.java;h=fecfc52fb6a57a036b009ef89502c8ed26c199a9;hb=1413d39efa41e0b3926e400dbd7ef5e3fac694c2;hp=a441ccad633c8884ec4d7383a3398ab1eeb99264;hpb=f41c5e6e6f6e10b36b1e4b1992877e38e718c8fb;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataTreeChangeListener.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataTreeChangeListener.java index a441ccad63..fecfc52fb6 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataTreeChangeListener.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataTreeChangeListener.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.cluster.datastore.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import com.google.common.util.concurrent.Uninterruptibles; @@ -21,7 +22,7 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import javax.annotation.Nonnull; +import java.util.concurrent.atomic.AtomicInteger; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -33,6 +34,9 @@ public class MockDataTreeChangeListener implements DOMDataTreeChangeListener { private final List changeList = new ArrayList<>(); + private final CountDownLatch onInitialDataLatch = new CountDownLatch(1); + private final AtomicInteger onInitialDataEventCount = new AtomicInteger(); + private volatile CountDownLatch changeLatch; private int expChangeEventCount; @@ -49,7 +53,7 @@ public class MockDataTreeChangeListener implements DOMDataTreeChangeListener { } @Override - public void onDataTreeChanged(@Nonnull final Collection changes) { + public void onDataTreeChanged(final Collection changes) { if (changeLatch.getCount() > 0) { synchronized (changeList) { changeList.addAll(changes); @@ -58,6 +62,23 @@ public class MockDataTreeChangeListener implements DOMDataTreeChangeListener { } } + @Override + public void onInitialData() { + onInitialDataEventCount.incrementAndGet(); + onInitialDataLatch.countDown(); + } + + public void verifyOnInitialDataEvent() { + assertTrue("onInitialData was not triggered", + Uninterruptibles.awaitUninterruptibly(onInitialDataLatch, 5, TimeUnit.SECONDS)); + assertEquals("onInitialDataEventCount", 1, onInitialDataEventCount.get()); + } + + public void verifyNoOnInitialDataEvent() { + assertFalse("onInitialData was triggered unexpectedly", + Uninterruptibles.awaitUninterruptibly(onInitialDataLatch, 500, TimeUnit.MILLISECONDS)); + } + @SuppressWarnings({ "unchecked", "rawtypes" }) public void waitForChangeEvents(final YangInstanceIdentifier... expPaths) { boolean done = Uninterruptibles.awaitUninterruptibly(changeLatch, 5, TimeUnit.SECONDS);