--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertTrue;
+
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.MutableClassToInstanceMap;
+import java.util.Map;
+import java.util.Set;
+import org.junit.Test;
+
+public class AdapterBuilderTest extends AdapterBuilder {
+
+ private static final ClassToInstanceMap<Object> DELEGATES = MutableClassToInstanceMap.create();
+
+ @Test
+ public void buildTest() throws Exception {
+ this.addDelegate(String.class, "test");
+ DELEGATES.putAll((Map) this.build());
+ assertTrue(DELEGATES.containsValue("test"));
+ this.addDelegate(Object.class, "test2");
+ DELEGATES.putAll((Map) this.build());
+ assertTrue(DELEGATES.containsValue("test"));
+ assertTrue(DELEGATES.get(Object.class).equals("test2"));
+ }
+
+ @Override
+ public Set<? extends Class> getRequiredDelegates() {
+ return DELEGATES.keySet();
+ }
+
+ @Override
+ protected Object createInstance(ClassToInstanceMap delegates) {
+ return delegates;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import javax.annotation.Nullable;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.dom.api.DOMDataBroker;
+import org.opendaylight.mdsal.dom.api.DOMService;
+import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry;
+import org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy;
+
+public class BindingDOMAdapterLoaderTest {
+
+ @Mock
+ private DOMDataBroker domService;
+
+ @Mock
+ private BindingNormalizedNodeCodecRegistry mockCodecRegistry;
+
+ private BindingDOMAdapterLoader bindingDOMAdapterLoader;
+ private BindingDOMDataBrokerAdapter bindingDOMDataBrokerAdapter;
+
+ @Before
+ public void setUp() throws Exception {
+ initMocks(this);
+ bindingDOMAdapterLoader = new BindingDOMAdapterLoader(
+ new BindingToNormalizedNodeCodec(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(),
+ mockCodecRegistry)) {
+ @Nullable
+ @Override
+ protected DOMService getDelegate(Class<? extends DOMService> reqDeleg) {
+ return domService;
+ }
+ };
+ }
+
+ @Test
+ public void createBuilderTest() throws Exception {
+ assertTrue(bindingDOMAdapterLoader.load(DataBroker.class).get() instanceof BindingDOMDataBrokerAdapter);
+ domService = null;
+ assertFalse(bindingDOMAdapterLoader.load(DataBroker.class).isPresent());
+ }
+
+ @Test
+ public void createChainTest() throws Exception {
+ bindingDOMDataBrokerAdapter = (BindingDOMDataBrokerAdapter) bindingDOMAdapterLoader.load(DataBroker.class).get();
+ assertNotNull(bindingDOMDataBrokerAdapter.createTransactionChain(null));
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void registerWithException() throws Exception {
+ bindingDOMDataBrokerAdapter = (BindingDOMDataBrokerAdapter) bindingDOMAdapterLoader.load(DataBroker.class).get();
+ bindingDOMDataBrokerAdapter.registerDataTreeChangeListener(null,null);
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import com.google.common.util.concurrent.MoreExecutors;
+import org.junit.Test;
+import org.opendaylight.mdsal.binding.api.DataTreeCommitCohort;
+import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFactory;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistration;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top;
+import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+public class BindingDOMDataTreeCommitCohortRegistryAdapterTest {
+
+ @Test
+ public void basicTest() throws Exception {
+ final BindingBrokerTestFactory bindingBrokerTestFactory = new BindingBrokerTestFactory();
+ bindingBrokerTestFactory.setExecutor(MoreExecutors.newDirectExecutorService());
+ final BindingTestContext bindingTestContext = bindingBrokerTestFactory.getTestContext();
+ bindingTestContext.start();
+
+ final DOMDataTreeCommitCohortRegistry cohortRegistry = mock(DOMDataTreeCommitCohortRegistry.class);
+ final DOMDataTreeCommitCohortRegistration cohortRegistration = mock(DOMDataTreeCommitCohortRegistration.class);
+ doReturn(cohortRegistration).when(cohortRegistry)
+ .registerCommitCohort(any(), any());
+ doNothing().when(cohortRegistration).close();
+ final BindingDOMDataTreeCommitCohortRegistryAdapter registryAdapter =
+ new BindingDOMDataTreeCommitCohortRegistryAdapter(bindingTestContext.getCodec(), cohortRegistry);
+
+ assertNotNull(registryAdapter.from(bindingTestContext.getCodec(), cohortRegistry));
+
+ final DataTreeIdentifier dataTreeIdentifier = DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION,
+ InstanceIdentifier.create(Top.class));
+ final DataTreeCommitCohort dataTreeCommitCohort = mock(DataTreeCommitCohort.class);
+ final ObjectRegistration objectRegistration =
+ registryAdapter.registerCommitCohort(dataTreeIdentifier, dataTreeCommitCohort);
+ assertEquals(dataTreeCommitCohort, objectRegistration.getInstance());
+
+ objectRegistration.close();
+ verify(cohortRegistration).close();
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.util.concurrent.MoreExecutors;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.opendaylight.mdsal.binding.api.DataTreeListener;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFactory;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeListeningException;
+
+public class BindingDOMDataTreeListenerAdapterTest {
+
+ private BindingDOMDataTreeListenerAdapter bindingDOMDataTreeListenerAdapter;
+
+ @Mock
+ private DataTreeListener delegate;
+
+ @Before
+ public void setUp() throws Exception {
+ initMocks(this);
+ final BindingBrokerTestFactory testFactory = new BindingBrokerTestFactory();
+ testFactory.setExecutor(MoreExecutors.newDirectExecutorService());
+ final BindingTestContext testContext = testFactory.getTestContext();
+ testContext.start();
+
+ bindingDOMDataTreeListenerAdapter =
+ new BindingDOMDataTreeListenerAdapter(delegate, testContext.getCodec(), LogicalDatastoreType.OPERATIONAL);
+ }
+
+ @Test
+ public void onDataTreeChanged() throws Exception {
+ bindingDOMDataTreeListenerAdapter.onDataTreeChanged(ImmutableSet.of(), ImmutableMap.of());
+ verify(delegate).onDataTreeChanged(any(), any());
+ }
+
+ @Test
+ public void onDataTreeFailedTest() throws Exception {
+ bindingDOMDataTreeListenerAdapter.onDataTreeFailed(ImmutableSet.of(new DOMDataTreeListeningException("test")));
+ verify(delegate).onDataTreeFailed(any());
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.verify;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.util.concurrent.MoreExecutors;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.opendaylight.mdsal.binding.api.DataTreeProducerException;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFactory;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeCursorAwareTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerBusyException;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerException;
+
+public class BindingDOMDataTreeProducerAdapterTest {
+
+ private BindingDOMDataTreeProducerAdapter bindingDOMDataTreeProducerAdapter;
+ private BindingToNormalizedNodeCodec codec;
+
+ @Mock
+ private DOMDataTreeProducer delegate;
+
+ @Before
+ public void setUp() throws Exception {
+ initMocks(this);
+ final BindingBrokerTestFactory testFactory = new BindingBrokerTestFactory();
+ testFactory.setExecutor(MoreExecutors.newDirectExecutorService());
+ final BindingTestContext testContext = testFactory.getTestContext();
+ testContext.start();
+ codec = testContext.getCodec();
+ bindingDOMDataTreeProducerAdapter = new BindingDOMDataTreeProducerAdapter(delegate, codec);
+ }
+
+ @Test
+ public void createTransactionTest() throws Exception {
+ doReturn(mock(DOMDataTreeCursorAwareTransaction.class)).when(delegate).createTransaction(true);
+ assertNotNull(bindingDOMDataTreeProducerAdapter.createTransaction(true));
+ verify(delegate).createTransaction(true);
+ }
+
+ @Test
+ public void createTest() throws Exception {
+ assertNotNull(BindingDOMDataTreeProducerAdapter.create(delegate, codec));
+ }
+
+ @Test
+ public void createProducerTest() throws Exception {
+ doReturn(mock(DOMDataTreeProducer.class)).when(delegate).createProducer(any());
+ assertNotNull(bindingDOMDataTreeProducerAdapter.createProducer(ImmutableSet.of()));
+ verify(delegate).createProducer(any());
+ }
+
+ @Test
+ public void closeTest() throws Exception {
+ reset(delegate);
+ bindingDOMDataTreeProducerAdapter.close();
+ verify(delegate).close();
+ }
+
+ @Test(expected = DataTreeProducerException.class)
+ public void closeTestWithException1() throws Exception {
+ doThrow(new DOMDataTreeProducerBusyException("test")).when(delegate).close();
+ bindingDOMDataTreeProducerAdapter.close();
+ }
+
+ @Test(expected = DataTreeProducerException.class)
+ public void closeTestWithException2() throws Exception {
+ doThrow(new DOMDataTreeProducerException("test")).when(delegate).close();
+ bindingDOMDataTreeProducerAdapter.close();
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.util.concurrent.MoreExecutors;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.opendaylight.mdsal.binding.api.DataTreeListener;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFactory;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
+
+public class BindingDOMDataTreeServiceAdapterTest {
+
+ private BindingDOMDataTreeServiceAdapter bindingDOMDataTreeServiceAdapter;
+ private BindingToNormalizedNodeCodec codec;
+
+ @Mock
+ private DOMDataTreeService delegate;
+
+ @Before
+ public void setUp() throws Exception {
+ initMocks(this);
+ final BindingBrokerTestFactory testFactory = new BindingBrokerTestFactory();
+ testFactory.setExecutor(MoreExecutors.newDirectExecutorService());
+ final BindingTestContext testContext = testFactory.getTestContext();
+ testContext.start();
+ codec = testContext.getCodec();
+ bindingDOMDataTreeServiceAdapter = BindingDOMDataTreeServiceAdapter.create(delegate, codec);
+ }
+
+ @Test
+ public void createProducerTest() throws Exception {
+ doReturn(mock(DOMDataTreeProducer.class)).when(delegate).createProducer(any());
+ assertNotNull(bindingDOMDataTreeServiceAdapter.createProducer(ImmutableSet.of()));
+ verify(delegate).createProducer(any());
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void registerListenerTest() throws Exception {
+ bindingDOMDataTreeServiceAdapter.registerListener(mock(DataTreeListener.class), ImmutableSet.of(), false,
+ ImmutableSet.of());
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import com.google.common.util.concurrent.MoreExecutors;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.opendaylight.mdsal.binding.api.MountPointService.MountPointListener;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFactory;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext;
+import org.opendaylight.mdsal.dom.api.DOMMountPointService;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+
+public class BindingDOMMountPointListenerAdapterTest {
+
+ private BindingDOMMountPointListenerAdapter bindingDOMMountPointListenerAdapter;
+ private BindingToNormalizedNodeCodec codec;
+
+ @Mock private MountPointListener listener;
+ @Mock private DOMMountPointService mountPointService;
+ @Mock private ListenerRegistration listenerRegistration;
+
+ @Before
+ public void setUp() throws Exception {
+ initMocks(this);
+ final BindingBrokerTestFactory testFactory = new BindingBrokerTestFactory();
+ testFactory.setExecutor(MoreExecutors.newDirectExecutorService());
+ final BindingTestContext testContext = testFactory.getTestContext();
+ testContext.start();
+ codec = testContext.getCodec();
+ doReturn(listenerRegistration).when(mountPointService).registerProvisionListener(any());
+ bindingDOMMountPointListenerAdapter =
+ new BindingDOMMountPointListenerAdapter<>(listener, codec, mountPointService);
+ }
+
+ @Test
+ public void basicTest() throws Exception {
+ assertEquals(listener, bindingDOMMountPointListenerAdapter.getInstance());
+ bindingDOMMountPointListenerAdapter.close();
+ verify(listenerRegistration).close();
+ }
+
+ @Test
+ public void onMountPointCreatedWithExceptionTest() throws Exception {
+ reset(listener);
+ bindingDOMMountPointListenerAdapter.onMountPointCreated(YangInstanceIdentifier.EMPTY);
+ verifyZeroInteractions(listener);
+ }
+
+ @Test
+ public void onMountPointRemovedWithExceptionTest() throws Exception {
+ reset(listener);
+ bindingDOMMountPointListenerAdapter.onMountPointRemoved(YangInstanceIdentifier.EMPTY);
+ verifyZeroInteractions(listener);
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import org.junit.Test;
+import org.opendaylight.mdsal.dom.api.DOMRpcImplementationRegistration;
+import org.opendaylight.yangtools.yang.binding.RpcService;
+
+public class BindingDOMRpcAdapterRegistrationTest {
+
+ @Test
+ public void removeRegistration() throws Exception {
+ final DOMRpcImplementationRegistration registration = mock(DOMRpcImplementationRegistration.class);
+ final BindingDOMRpcAdapterRegistration bindingDOMRpcAdapterRegistration =
+ new BindingDOMRpcAdapterRegistration<>(mock(RpcService.class), registration);
+ bindingDOMRpcAdapterRegistration.removeRegistration();
+ verify(registration).close();
+ }
+
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.mock;
+import static org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy;
+
+import org.junit.Test;
+import org.opendaylight.mdsal.dom.api.DOMMountPoint;
+import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry;
+import org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy;
+
+public class BindingMountPointAdapterTest {
+
+ @Test
+ public void basicTest() throws Exception {
+ final GeneratedClassLoadingStrategy loading = getTCCLClassLoadingStrategy();
+ final BindingNormalizedNodeCodecRegistry codecRegistry = mock(BindingNormalizedNodeCodecRegistry.class);
+ final BindingToNormalizedNodeCodec codec = new BindingToNormalizedNodeCodec(loading, codecRegistry);
+ final DOMMountPoint domMountPoint = mock(DOMMountPoint.class);
+ final BindingMountPointAdapter bindingMountPointAdapter = new BindingMountPointAdapter(codec, domMountPoint);
+ assertNull(bindingMountPointAdapter.getIdentifier());
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import org.junit.Test;
+import org.opendaylight.mdsal.dom.api.DOMRpcImplementationRegistration;
+import org.opendaylight.yangtools.yang.binding.RpcService;
+
+public class BindingRpcAdapterRegistrationTest {
+
+ @Test
+ public void removeRegistrationTest() throws Exception {
+ final RpcService rpcService = mock(RpcService.class);
+ final DOMRpcImplementationRegistration domRpcImplementationRegistration =
+ mock(DOMRpcImplementationRegistration.class);
+ final BindingRpcAdapterRegistration bindingRpcAdapterRegistration =
+ new BindingRpcAdapterRegistration<>(rpcService, domRpcImplementationRegistration);
+ doNothing().when(domRpcImplementationRegistration).close();
+ bindingRpcAdapterRegistration.removeRegistration();
+ verify(domRpcImplementationRegistration).close();
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import com.google.common.base.Optional;
+import org.junit.Test;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
+
+public class BindingStructuralTypeTest {
+
+ @Test
+ public void basicTest() throws Exception {
+ final NormalizedNode normalizedNode = mock(NormalizedNode.class);
+ final Optional optional = Optional.of(normalizedNode);
+ final DataTreeCandidateNode dataTreeCandidateNode = mock(DataTreeCandidateNode.class);
+ doReturn(optional).when(dataTreeCandidateNode).getDataAfter();
+ doReturn(optional).when(dataTreeCandidateNode).getDataBefore();
+ assertEquals(BindingStructuralType.UNKNOWN, BindingStructuralType.from(dataTreeCandidateNode));
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableBiMap;
+import com.google.common.util.concurrent.MoreExecutors;
+import org.junit.Test;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFactory;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService;
+import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RpcEffectiveStatementImpl;
+
+public class LazySerializedContainerNodeTest {
+
+ @Test
+ public void basicTest() throws Exception {
+ final SchemaPath rpcName;
+ final DataObject dataObject = mock(DataObject.class);
+ final BindingNormalizedNodeCodecRegistry codec = mock(BindingNormalizedNodeCodecRegistry.class);
+ final ContainerNode containerNode = mock(ContainerNode.class);
+ doReturn(containerNode).when(codec).toNormalizedNodeRpcData(any());
+ doReturn(Optional.absent()).when(containerNode).getChild(any());
+
+ final BindingBrokerTestFactory bindingBrokerTestFactory = new BindingBrokerTestFactory();
+ bindingBrokerTestFactory.setExecutor(MoreExecutors.newDirectExecutorService());
+ final BindingTestContext bindingTestContext = bindingBrokerTestFactory.getTestContext();
+ bindingTestContext.start();
+
+ final ImmutableBiMap biMap =
+ bindingTestContext.getCodec().getRpcMethodToSchema(OpendaylightTestRpcServiceService.class);
+ rpcName = ((RpcEffectiveStatementImpl) biMap.values().iterator().next()).getPath();
+ final LeafNode leafNode = ImmutableLeafNodeBuilder.create().withNodeIdentifier(NodeIdentifier
+ .create(QName.create("test"))).build();
+ final NormalizedNode normalizedNode = LazySerializedContainerNode.create(rpcName, dataObject, codec);
+ assertNotNull(normalizedNode);
+ final LazySerializedContainerNode lazySerializedContainerNode =
+ (LazySerializedContainerNode) LazySerializedContainerNode.withContextRef(rpcName, dataObject, leafNode,
+ codec);
+ assertNotNull(lazySerializedContainerNode);
+ assertEquals(leafNode, lazySerializedContainerNode.getChild(leafNode.getIdentifier()).get());
+ assertFalse(lazySerializedContainerNode.getChild(mock(PathArgument.class)).isPresent());
+ assertTrue(lazySerializedContainerNode.getAttributes().isEmpty());
+
+ assertTrue(lazySerializedContainerNode.getValue().isEmpty());
+ assertEquals(lazySerializedContainerNode.getIdentifier().getNodeType(), lazySerializedContainerNode.getNodeType());
+ assertEquals(rpcName.getLastComponent(), lazySerializedContainerNode.getIdentifier().getNodeType());
+ assertNull(lazySerializedContainerNode.getAttributeValue(null));
+ assertEquals(dataObject, lazySerializedContainerNode.bindingData());
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import org.junit.Test;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
+import org.opendaylight.mdsal.dom.api.DOMNotification;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.TwoLevelListChangedBuilder;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+
+public class LazySerializedDOMNotificationTest {
+
+ @Test
+ public void basicTest() throws Exception {
+ BindingNormalizedNodeSerializer codec = mock(BindingNormalizedNodeSerializer.class);
+ final DOMNotification lazySerializedDOMNotification =
+ LazySerializedDOMNotification.create(codec, new TwoLevelListChangedBuilder().build());
+ ContainerNode containerNode = mock(ContainerNode.class);
+ doReturn(containerNode).when(codec).toNormalizedNodeNotification(any());
+ assertEquals(containerNode, lazySerializedDOMNotification.getBody());
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.mdsal.binding.dom.adapter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import com.google.common.util.concurrent.MoreExecutors;
+import java.lang.reflect.Method;
+import org.junit.Test;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFactory;
+import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.RockTheHouseInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.rpc.routing.rev140701.OpendaylightTestRoutedRpcService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.rpc.routing.rev140701.RoutedSimpleRouteInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.rpc.routing.rev140701.RoutedSimpleRouteInputBuilder;
+import org.opendaylight.yangtools.yang.binding.RpcService;
+
+public class RpcServiceAdapterTest {
+
+ @Test
+ public void invoke() throws Throwable {
+ final BindingBrokerTestFactory bindingBrokerTestFactory = new BindingBrokerTestFactory();
+ bindingBrokerTestFactory.setExecutor(MoreExecutors.newDirectExecutorService());
+ final BindingTestContext bindingTestContext = bindingBrokerTestFactory.getTestContext();
+ bindingTestContext.start();
+
+ RpcServiceAdapter rpcServiceAdapter = new RpcServiceAdapter(OpendaylightTestRpcServiceService.class,
+ bindingTestContext.getCodec(), bindingTestContext.getDomRpcInvoker());
+
+ Method method = TestRpcService.class.getMethod("equals", Object.class);
+ assertTrue((boolean) rpcServiceAdapter.invoke(rpcServiceAdapter.getProxy(), method,
+ new Object[]{ rpcServiceAdapter.getProxy() }));
+ assertFalse((boolean) rpcServiceAdapter.invoke(rpcServiceAdapter.getProxy(), method,
+ new Object[]{ new Object() }));
+
+ method = TestRpcService.class.getMethod("hashCode");
+ assertEquals(rpcServiceAdapter.getProxy().hashCode(), rpcServiceAdapter.invoke(rpcServiceAdapter.getProxy(),
+ method, new Object[]{ }));
+
+ method = TestRpcService.class.getMethod("toString");
+ assertEquals(rpcServiceAdapter.getProxy().toString(), rpcServiceAdapter.invoke(rpcServiceAdapter.getProxy(),
+ method, new Object[]{ }));
+
+ method = OpendaylightTestRpcServiceService.class.getMethod("rockTheHouse", RockTheHouseInput.class);
+ assertNotNull(rpcServiceAdapter.invoke(rpcServiceAdapter.getProxy(), method, new Object[]{ null }));
+
+ rpcServiceAdapter = new RpcServiceAdapter(OpendaylightTestRoutedRpcService.class,
+ bindingTestContext.getCodec(), bindingTestContext.getDomRpcInvoker());
+ method = OpendaylightTestRoutedRpcService.class.getMethod("routedSimpleRoute", RoutedSimpleRouteInput.class);
+ assertNotNull(rpcServiceAdapter.invoke(rpcServiceAdapter.getProxy(), method,
+ new Object[]{ new RoutedSimpleRouteInputBuilder().build() }));
+ }
+
+ private interface TestRpcService extends RpcService {
+
+ String toString();
+ int hashCode();
+ boolean equals(Object o);
+ }
+}
\ No newline at end of file
import static org.opendaylight.mdsal.binding.test.model.util.ListsBindingUtils.path;
import static org.opendaylight.mdsal.binding.test.model.util.ListsBindingUtils.top;
import static org.opendaylight.mdsal.binding.test.model.util.ListsBindingUtils.topLevelList;
-import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.util.concurrent.SettableFuture;
+import java.util.Collection;
+import java.util.concurrent.TimeUnit;
+import org.junit.Test;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.DataObjectModification;
+import org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType;
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
-import org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType;
import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMDataBrokerAdapter;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.util.concurrent.SettableFuture;
-import java.util.Collection;
-import java.util.concurrent.TimeUnit;
-import org.junit.Test;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.augment.rev140709.TreeComplexUsesAugment;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.TwoLevelList;
verifyModification(afterBarDeleteEvent, TOP_ARGUMENT, ModificationType.SUBTREE_MODIFIED);
final DataObjectModification<TopLevelList> barDeleteMod = afterBarDeleteEvent.getModifiedChildListItem(TopLevelList.class, TOP_BAR_KEY);
verifyModification(barDeleteMod, BAR_ARGUMENT, ModificationType.DELETE);
+
+ dataBrokerImpl.registerDataTreeChangeListener(TOP_IDENTIFIER, listener).close();
}
@Test
import static com.google.common.base.Preconditions.checkState;
-import org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore;
-
-import org.opendaylight.mdsal.dom.spi.store.DOMStore;
-import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMRpcProviderServiceAdapter;
import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMRpcServiceAdapter;
import org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMDataBroker;
import org.opendaylight.mdsal.dom.api.DOMMountPointService;
import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService;
import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter;
import org.opendaylight.mdsal.dom.broker.DOMRpcRouter;
import org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker;
+import org.opendaylight.mdsal.dom.spi.store.DOMStore;
+import org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore;
import org.opendaylight.yangtools.binding.data.codec.gen.impl.DataObjectSerializerGenerator;
import org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator;
import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry;
return ctx.tryToCreateSchemaContext().get();
}
+ public SchemaContext getContext() {
+ return mockSchemaService.getSchemaContext();
+ }
+
public void start() {
startNewDomDataBroker();
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
+
import com.google.common.base.Optional;
import org.junit.Before;
import org.junit.Test;
doReturn(true).when(mockDOMService).isCandidateRegistered(DOM_ENTITY);
assertEquals("isCandidateRegistered", true, adapter.isCandidateRegistered(BINDING_ENTITY));
}
+
+ @Test(expected = IllegalStateException.class)
+ public void testOwnershipChangeWithException() throws Exception {
+ final DOMEntityOwnershipListenerAdapter domEntityOwnershipListenerAdapter =
+ new DOMEntityOwnershipListenerAdapter(mock(EntityOwnershipListener.class),
+ new BindingToNormalizedNodeCodec(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(),
+ mockCodecRegistry));
+ final DOMEntityOwnershipChange domOwnershipChange = mock(DOMEntityOwnershipChange.class);
+ doThrow(IllegalStateException.class).when(domOwnershipChange).getEntity();
+ domEntityOwnershipListenerAdapter.ownershipChanged(domOwnershipChange );
+ }
}