* 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.dom.broker.test;
+package org.opendaylight.mdsal.dom.broker;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyMap;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
-import static org.opendaylight.mdsal.dom.broker.test.MockingUtilities.captorFor;
+import static org.opendaylight.mdsal.dom.broker.MockingUtilities.captorFor;
import java.util.Collection;
import java.util.Collections;
import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
import org.opendaylight.mdsal.dom.api.DOMDataTreeShard;
import org.opendaylight.mdsal.dom.api.DOMDataTreeShardingConflictException;
-import org.opendaylight.mdsal.dom.broker.ShardedDOMDataTree;
-import org.opendaylight.mdsal.dom.broker.test.util.TestModel;
+import org.opendaylight.mdsal.dom.broker.util.TestModel;
import org.opendaylight.mdsal.dom.spi.store.DOMStore;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionChain;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreTreeChangePublisher;
@Mock(name = "storeTxChain")
private DOMStoreTransactionChain txChainMock;
+ @Mock
+ private ShardedDOMDataTreeProducer rootProducer;
+
private DOMDataTreeService treeService;
private ListenerRegistration<ListenableShard> shardReg;
@Before
public void setUp() throws DOMDataTreeShardingConflictException {
MockitoAnnotations.initMocks(this);
+ doReturn(Collections.singleton(ROOT_ID)).when(rootProducer).getSubtrees();
+ doNothing().when(rootProducer).subshardAdded(anyMap());
final ShardedDOMDataTree impl = new ShardedDOMDataTree();
treeService = impl;
- shardReg = impl.registerDataTreeShard(ROOT_ID, rootShard);
+ shardReg = impl.registerDataTreeShard(ROOT_ID, rootShard, rootProducer);
doReturn("rootShard").when(rootShard).toString();
doReturn("childShard").when(childShard).toString();
@Test
public void registerListenerWithOneProducer() throws DOMDataTreeLoopException {
- DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
- DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_TEST2);
+ final DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
+ final DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_TEST2);
treeService.registerListener(listener, SUBTREES_TEST, true, Collections.singleton(producer));
}
@Test(expected = IllegalStateException.class)
public void registerListenerWithAlreadyBoundProducer() throws DOMDataTreeLoopException {
- DOMDataTreeListener listener1 = MockingUtilities.mock(DOMDataTreeListener.class, "listener1");
- DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_TEST2);
+ final DOMDataTreeListener listener1 = MockingUtilities.mock(DOMDataTreeListener.class, "listener1");
+ final DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_TEST2);
treeService.registerListener(listener1, SUBTREES_TEST, true, Collections.singleton(producer));
- DOMDataTreeListener listener2 = MockingUtilities.mock(DOMDataTreeListener.class, "listener2");
+ final DOMDataTreeListener listener2 = MockingUtilities.mock(DOMDataTreeListener.class, "listener2");
treeService.registerListener(listener2, SUBTREES_TEST, true, Collections.singleton(producer));
}
@Test(expected = DOMDataTreeLoopException.class)
public void loopSameSubtree() throws DOMDataTreeLoopException {
- DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
- DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_TEST);
+ final DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
+ final DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_TEST);
treeService.registerListener(listener, SUBTREES_TEST, true, Collections.singleton(producer));
}
@Test(expected = DOMDataTreeLoopException.class)
public void loopListenParentWritesChild() throws DOMDataTreeLoopException {
- DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
- DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_TEST);
+ final DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
+ final DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_TEST);
treeService.registerListener(listener, SUBTREES_ROOT, true, Collections.singleton(producer));
}
@Test(expected = DOMDataTreeLoopException.class)
public void loopListenChildWritesParent() throws DOMDataTreeLoopException {
- DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
- DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_ROOT);
+ final DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
+ final DOMDataTreeProducer producer = treeService.createProducer(SUBTREES_ROOT);
treeService.registerListener(listener, SUBTREES_ROOT, true, Collections.singleton(producer));
}
@Test
public void receiveChangeEvent() throws DOMDataTreeLoopException {
- DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
- ArgumentCaptor<DOMDataTreeChangeListener> storeListener =
+ final DOMDataTreeListener listener = Mockito.mock(DOMDataTreeListener.class);
+ final ArgumentCaptor<DOMDataTreeChangeListener> storeListener =
ArgumentCaptor.forClass(DOMDataTreeChangeListener.class);
treeService.registerListener(listener, SUBTREES_TEST, true, Collections.<DOMDataTreeProducer>emptyList());
verify(rootShard, times(1)).registerTreeChangeListener(eq(TEST_ID.getRootIdentifier()),
storeListener.capture());
- DataTreeCandidate sentStoreCandidate =
+ final DataTreeCandidate sentStoreCandidate =
DataTreeCandidates.fromNormalizedNode(TEST_ID.getRootIdentifier(), TEST_CONTAINER);
- Collection<DataTreeCandidate> changes = Collections.singleton(sentStoreCandidate);
+ final Collection<DataTreeCandidate> changes = Collections.singleton(sentStoreCandidate);
doNothing().when(listener).onDataTreeChanged(Mockito.<Collection<DataTreeCandidate>>any(), Mockito.anyMap());
storeListener.getValue().onDataTreeChanged(changes);
- ArgumentCaptor<Collection<DataTreeCandidate>> candidateCapture = captorFor(Collection.class);
- ArgumentCaptor<Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>>> mapCapture = captorFor(Map.class);
+ final ArgumentCaptor<Collection<DataTreeCandidate>> candidateCapture = captorFor(Collection.class);
+ final ArgumentCaptor<Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>>> mapCapture = captorFor(Map.class);
verify(listener, times(1)).onDataTreeChanged(candidateCapture.capture(), mapCapture.capture());
- Collection<DataTreeCandidate> receivedCandidate = candidateCapture.getValue();
- Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>> receivedMap = mapCapture.getValue();
+ final Collection<DataTreeCandidate> receivedCandidate = candidateCapture.getValue();
+ final Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>> receivedMap = mapCapture.getValue();
assertNotNull("receivedCandidate", receivedCandidate);
assertNotNull("receivedMap", receivedMap);
assertFalse("candidate collection must not be empty", receivedCandidate.isEmpty());
assertEquals(1, receivedCandidate.size());
- DataTreeCandidate firstItem = receivedCandidate.iterator().next();
+ final DataTreeCandidate firstItem = receivedCandidate.iterator().next();
assertEquals(TEST_ID.getRootIdentifier(), firstItem.getRootPath());
assertEquals(TEST_CONTAINER, receivedMap.get(TEST_ID));
}