Convert DCL tests to use DTCL
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / test / java / org / opendaylight / controller / md / sal / binding / impl / test / BindingDOMDataBrokerAdapterTest.java
index 3506f4ba19583fe0f1b92f24c69ade604af807ee..b01340a789a2097131493bd85c144b090655485f 100644 (file)
@@ -8,28 +8,33 @@
 
 package org.opendaylight.controller.md.sal.binding.impl.test;
 
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+
+import com.google.common.collect.ImmutableMap;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.opendaylight.controller.md.sal.binding.api.ClusteredDataChangeListener;
+import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
 import org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataBrokerAdapter;
 import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.dom.api.ClusteredDOMDataChangeListener;
+import org.opendaylight.controller.md.sal.dom.api.ClusteredDOMDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
+import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
+import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeService;
+import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeIdentifier;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
 import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.Top;
-import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
-
 public class BindingDOMDataBrokerAdapterTest {
 
     @Mock
@@ -37,15 +42,20 @@ public class BindingDOMDataBrokerAdapterTest {
 
     @Mock
     GeneratedClassLoadingStrategy classLoadingStrategy;
+
     @Mock
     BindingNormalizedNodeCodecRegistry codecRegistry;
 
     @Mock
-    YangInstanceIdentifier yangInstanceIdentifier;
+    DOMDataTreeChangeService dataTreeChangeService;
 
+    @Mock
+    ListenerRegistration<DOMDataTreeChangeListener> listenerRegistration;
+
+    @Mock
+    ClusteredDataTreeChangeListener<Top> clusteredDataTreeChangeListener;
 
-    private static final InstanceIdentifier<Top> TOP_PATH = InstanceIdentifier
-        .create(Top.class);
+    private static final InstanceIdentifier<Top> TOP_PATH = InstanceIdentifier.create(Top.class);
 
     @Before
     public void setUp() {
@@ -53,39 +63,33 @@ public class BindingDOMDataBrokerAdapterTest {
     }
 
     @Test
-    public void testClusteredDataChangeListernerRegisteration() {
+    public void testClusteredDataTreeChangeListenerRegisteration() {
+
+        doReturn(YangInstanceIdentifier.of(Top.QNAME)).when(codecRegistry).toYangInstanceIdentifier(TOP_PATH);
+
+        doReturn(listenerRegistration).when(dataTreeChangeService).registerDataTreeChangeListener(any(), any());
+
+        doReturn(ImmutableMap.of(DOMDataTreeChangeService.class, dataTreeChangeService))
+            .when(dataBroker).getSupportedExtensions();
 
         final BindingToNormalizedNodeCodec codec =
                 new BindingToNormalizedNodeCodec(this.classLoadingStrategy, this.codecRegistry);
 
         try (BindingDOMDataBrokerAdapter bindingDOMDataBrokerAdapter = new BindingDOMDataBrokerAdapter(this.dataBroker,
                 codec)) {
-            Mockito.when(this.codecRegistry.toYangInstanceIdentifier(TOP_PATH)).thenReturn(this.yangInstanceIdentifier);
-
-            final ArgumentCaptor<ClusteredDOMDataChangeListener> clusteredDOMListener = ArgumentCaptor
-                    .forClass(ClusteredDOMDataChangeListener.class);
-            final ArgumentCaptor<LogicalDatastoreType> logicalDatastoreType = ArgumentCaptor
-                    .forClass(LogicalDatastoreType.class);
-            final ArgumentCaptor<AsyncDataBroker.DataChangeScope> dataChangeScope = ArgumentCaptor
-                    .forClass(AsyncDataBroker.DataChangeScope.class);
-            final ArgumentCaptor<YangInstanceIdentifier> yangIidCapture = ArgumentCaptor
-                    .forClass(YangInstanceIdentifier.class);
-
-            final TestListener listener = new TestListener();
-
-            bindingDOMDataBrokerAdapter.registerDataChangeListener(LogicalDatastoreType.OPERATIONAL, TOP_PATH,
-                    listener, AsyncDataBroker.DataChangeScope.BASE);
-            Mockito.verify(this.dataBroker).registerDataChangeListener(logicalDatastoreType.capture(),
-                    yangIidCapture.capture(), clusteredDOMListener.capture(), dataChangeScope.capture());
-        }
 
-    }
+            ListenerRegistration<ClusteredDataTreeChangeListener<Top>> bindingListenerReg =
+                bindingDOMDataBrokerAdapter.registerDataTreeChangeListener(
+                    new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, TOP_PATH),
+                    clusteredDataTreeChangeListener);
 
-    private class TestListener implements ClusteredDataChangeListener {
+            verify(dataTreeChangeService).registerDataTreeChangeListener(
+                eq(new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.of(Top.QNAME))),
+                any(ClusteredDOMDataTreeChangeListener.class));
 
-        @Override
-        public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
+            bindingListenerReg.close();
 
+            verify(listenerRegistration).close();
         }
     }
 }