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.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import com.google.common.util.concurrent.MoreExecutors;
import java.lang.reflect.Field;
import java.util.Map;
+import java.util.concurrent.Executors;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor;
+import org.opendaylight.mdsal.dom.spi.shard.ChildShardContext;
+import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext;
+import org.opendaylight.mdsal.dom.spi.shard.ReadableWriteableDOMDataTreeShard;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip;
import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor;
import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
private static final ShardRootModificationContext SHARD_ROOT_MODIFICATION_CONTEXT =
mock(ShardRootModificationContext.class);
private static final YangInstanceIdentifier YANG_INSTANCE_IDENTIFIER =
- YangInstanceIdentifier.of(QName.create("test"));
+ YangInstanceIdentifier.of(QName.create("", "test"));
private static final DOMDataTreeIdentifier DOM_DATA_TREE_IDENTIFIER =
new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YANG_INSTANCE_IDENTIFIER);
private static final ForeignShardModificationContext FOREIGN_SHARD_MODIFICATION_CONTEXT =
new ChildShardContext(DOM_DATA_TREE_IDENTIFIER, READABLE_WRITEABLE_DOM_DATA_TREE_SHARD);
private static final Map<DOMDataTreeIdentifier, ChildShardContext> CHILD_SHARDS =
ImmutableMap.of(DOM_DATA_TREE_IDENTIFIER, CHILD_SHARD_CONTEXT);
+ private InMemoryDOMDataTreeShardProducer mockProducer;
@Before
public void setUp() throws Exception {
- DataTreeModification dataTreeModification = mock(DataTreeModification.class);
+ final DataTreeModification dataTreeModification = mock(DataTreeModification.class);
doReturn("testDataTreeModification").when(dataTreeModification).toString();
doReturn(dataTreeModification).when(SHARD_ROOT_MODIFICATION_CONTEXT).ready();
doReturn(DOM_DATA_TREE_IDENTIFIER).when(SHARD_ROOT_MODIFICATION_CONTEXT).getIdentifier();
- shardDataModification = ShardDataModification.from(SHARD_ROOT_MODIFICATION_CONTEXT,
+ shardDataModification = TestUtils.createModification(SHARD_ROOT_MODIFICATION_CONTEXT,
ImmutableMap.of(YANG_INSTANCE_IDENTIFIER, FOREIGN_SHARD_MODIFICATION_CONTEXT));
- DataTreeModificationCursor dataTreeModificationCursor = mock(DataTreeModificationCursor.class);
- doReturn(DataTreeModificationCursorAdaptor.of( dataTreeModificationCursor))
+ final DataTreeModificationCursor dataTreeModificationCursor = mock(DataTreeModificationCursor.class);
+ doReturn(DataTreeModificationCursorAdaptor.of(dataTreeModificationCursor))
.when(SHARD_ROOT_MODIFICATION_CONTEXT).cursor();
- DataTreeCandidate dataTreeCandidate = mock(DataTreeCandidate.class);
- DataTreeCandidateNode dataTreeCandidateNode = mock(DataTreeCandidateNode.class);
+ doNothing().when(SHARD_ROOT_MODIFICATION_CONTEXT).closeCursor();
+ final DataTreeCandidateTip dataTreeCandidate = mock(DataTreeCandidateTip.class);
+ final DataTreeCandidateNode dataTreeCandidateNode = mock(DataTreeCandidateNode.class);
doReturn(dataTreeCandidateNode).when(dataTreeCandidate).getRootNode();
doReturn(ModificationType.WRITE).when(dataTreeCandidateNode).getModificationType();
doReturn(YANG_INSTANCE_IDENTIFIER).when(dataTreeCandidate).getRootPath();
doReturn("testDataTreeCandidate").when(dataTreeCandidate).toString();
doReturn(dataTreeCandidate).when(DATA_TREE).prepare(any());
- InMemoryDOMDataTreeShardChangePublisher inMemoryDOMDataTreeShardChangePublisher =
- new InMemoryDOMDataTreeShardChangePublisher(MoreExecutors.newDirectExecutorService(), 1, DATA_TREE,
+ final InMemoryDOMDataTreeShardChangePublisher inMemoryDOMDataTreeShardChangePublisher =
+ new InMemoryDOMDataTreeShardChangePublisher(MoreExecutors.directExecutor(), 1, DATA_TREE,
YANG_INSTANCE_IDENTIFIER, CHILD_SHARDS);
+ mockProducer = mock(InMemoryDOMDataTreeShardProducer.class);
+ doNothing().when(mockProducer).transactionReady(any(), any());
+ doNothing().when(mockProducer).onTransactionCommited(any());
+ doNothing().when(mockProducer).transactionAborted(any());
inmemoryDOMDataTreeShardWriteTransaction =
- new InmemoryDOMDataTreeShardWriteTransaction(shardDataModification, DATA_TREE,
- inMemoryDOMDataTreeShardChangePublisher);
+ new InmemoryDOMDataTreeShardWriteTransaction(mockProducer, shardDataModification, DATA_TREE,
+ inMemoryDOMDataTreeShardChangePublisher,
+ MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor()));
}
@Test