9b73267e4707700d437e462fd6cf5e8207f59cb7
[mdsal.git] / dom / mdsal-dom-inmemory-datastore / src / test / java / org / opendaylight / mdsal / dom / store / inmemory / TestUtils.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.mdsal.dom.store.inmemory;
9
10 import static org.mockito.Mockito.mock;
11 import static org.mockito.Mockito.reset;
12
13 import com.google.common.util.concurrent.ListenableFuture;
14 import java.util.Collection;
15 import java.util.HashSet;
16 import java.util.Map;
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;
30
31 final class TestUtils {
32
33     static final DOMDataTreeIdentifier DOM_DATA_TREE_IDENTIFIER =
34             new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.empty());
35
36     static final PathArgument PATH_ARGUMENT = mock(PathArgument.class);
37
38     static final NormalizedNode<?, ?> NORMALIZED_NODE = mock(NormalizedNode.class);
39
40     static final NormalizedNodeContainer NORMALIZED_NODE_CONTAINER = mock(NormalizedNodeContainer.class);
41
42     static final DOMStoreThreePhaseCommitCohort DOM_STORE_THREE_PHASE_COMMIT_COHORT =
43             mock(DOMStoreThreePhaseCommitCohort.class);
44
45     static final Collection<DOMStoreThreePhaseCommitCohort> COHORTS = new HashSet<>();
46
47     static final ListenableFuture<?> LISTENABLE_FUTURE = mock(ListenableFuture.class);
48
49     static final WriteableModificationNode WRITEABLE_MODIFICATION_NODE = mock(WriteableSubshardBoundaryNode.class);
50
51     static final DOMDataTreeWriteCursor DOM_DATA_TREE_WRITE_CURSOR = mock(DOMDataTreeWriteCursor.class);
52
53     static final WriteCursorStrategy WRITE_CURSOR_STRATEGY = mock(WriteCursorStrategy.class);
54
55     static final InMemoryDOMDataTreeShardProducer DOM_DATA_TREE_SHARD_PRODUCER =
56             mock(InMemoryDOMDataTreeShardProducer.class);
57
58     static final InmemoryDOMDataTreeShardWriteTransaction DOM_DATA_TREE_SHARD_WRITE_TRANSACTION =
59             mock(InmemoryDOMDataTreeShardWriteTransaction.class);
60
61     static final DataTree DATA_TREE = mock(DataTree.class);
62
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);
67     }
68
69     private TestUtils() throws UnsupportedOperationException {
70         throw new UnsupportedOperationException("Utility class should not be instantiated");
71     }
72
73     static ShardDataModification createModification(final ShardRootModificationContext root,
74             final Map<YangInstanceIdentifier, ForeignShardModificationContext> shards) {
75
76         final InmemoryShardDataModificationFactoryBuilder builder = new InmemoryShardDataModificationFactoryBuilder(
77                 root.getIdentifier());
78         for (ForeignShardModificationContext subshard : shards.values()) {
79             builder.addSubshard(subshard);
80         }
81
82         final InMemoryShardDataModificationFactory factory = builder.build();
83         return new ShardDataModification(root, factory.getChildren(), factory.getChildShards());
84     }
85
86 }