2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.mdsal.dom.store.inmemory;
10 import static org.mockito.Mockito.mock;
11 import static org.mockito.Mockito.reset;
13 import com.google.common.util.concurrent.ListenableFuture;
14 import java.util.Collection;
15 import java.util.HashSet;
17 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
18 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
19 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor;
20 import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext;
21 import org.opendaylight.mdsal.dom.spi.shard.WriteCursorStrategy;
22 import org.opendaylight.mdsal.dom.spi.shard.WriteableModificationNode;
23 import org.opendaylight.mdsal.dom.spi.shard.WriteableSubshardBoundaryNode;
24 import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
25 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
26 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
27 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
28 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
29 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
31 final class TestUtils {
33 static final DOMDataTreeIdentifier DOM_DATA_TREE_IDENTIFIER =
34 new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.empty());
36 static final PathArgument PATH_ARGUMENT = mock(PathArgument.class);
38 static final NormalizedNode<?, ?> NORMALIZED_NODE = mock(NormalizedNode.class);
40 static final NormalizedNodeContainer NORMALIZED_NODE_CONTAINER = mock(NormalizedNodeContainer.class);
42 static final DOMStoreThreePhaseCommitCohort DOM_STORE_THREE_PHASE_COMMIT_COHORT =
43 mock(DOMStoreThreePhaseCommitCohort.class);
45 static final Collection<DOMStoreThreePhaseCommitCohort> COHORTS = new HashSet<>();
47 static final ListenableFuture<?> LISTENABLE_FUTURE = mock(ListenableFuture.class);
49 static final WriteableModificationNode WRITEABLE_MODIFICATION_NODE = mock(WriteableSubshardBoundaryNode.class);
51 static final DOMDataTreeWriteCursor DOM_DATA_TREE_WRITE_CURSOR = mock(DOMDataTreeWriteCursor.class);
53 static final WriteCursorStrategy WRITE_CURSOR_STRATEGY = mock(WriteCursorStrategy.class);
55 static final InMemoryDOMDataTreeShardProducer DOM_DATA_TREE_SHARD_PRODUCER =
56 mock(InMemoryDOMDataTreeShardProducer.class);
58 static final InmemoryDOMDataTreeShardWriteTransaction DOM_DATA_TREE_SHARD_WRITE_TRANSACTION =
59 mock(InmemoryDOMDataTreeShardWriteTransaction.class);
61 static final DataTree DATA_TREE = mock(DataTree.class);
63 static void resetMocks() {
64 reset(WRITE_CURSOR_STRATEGY, DOM_DATA_TREE_WRITE_CURSOR, WRITEABLE_MODIFICATION_NODE, LISTENABLE_FUTURE,
65 DOM_STORE_THREE_PHASE_COMMIT_COHORT, NORMALIZED_NODE_CONTAINER, NORMALIZED_NODE, PATH_ARGUMENT,
66 DOM_DATA_TREE_SHARD_PRODUCER, DOM_DATA_TREE_SHARD_WRITE_TRANSACTION, DATA_TREE);
69 private TestUtils() throws UnsupportedOperationException {
70 throw new UnsupportedOperationException("Utility class should not be instantiated");
73 static ShardDataModification createModification(final ShardRootModificationContext root,
74 final Map<YangInstanceIdentifier, ForeignShardModificationContext> shards) {
76 final InmemoryShardDataModificationFactoryBuilder builder = new InmemoryShardDataModificationFactoryBuilder(
77 root.getIdentifier());
78 for (ForeignShardModificationContext subshard : shards.values()) {
79 builder.addSubshard(subshard);
82 final InMemoryShardDataModificationFactory factory = builder.build();
83 return new ShardDataModification(root, factory.getChildren(), factory.getChildShards());