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.ArgumentMatchers.any;
11 import static org.mockito.Mockito.doNothing;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.mock;
14 import static org.mockito.Mockito.verify;
15 import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DOM_DATA_TREE_IDENTIFIER;
17 import java.lang.reflect.Field;
18 import java.util.Collections;
19 import org.junit.Before;
20 import org.junit.Test;
22 public class ShardSubmitCoordinationTaskTest {
24 private final InmemoryDOMDataTreeShardWriteTransaction tx = mock(InmemoryDOMDataTreeShardWriteTransaction.class);
27 public void setUp() throws Exception {
28 doReturn("TestTx").when(tx).getIdentifier();
29 doReturn("TestTx").when(tx).toString();
30 doNothing().when(tx).transactionCommited(any());
34 public void basicTest() throws Exception {
35 final ShardSubmitCoordinationTask shardSubmitCoordinationTask =
36 new ShardSubmitCoordinationTask(DOM_DATA_TREE_IDENTIFIER, Collections.EMPTY_SET, tx);
38 final ShardCanCommitCoordinationTask canCommitCoordinationTask = mock(ShardCanCommitCoordinationTask.class);
39 doNothing().when(canCommitCoordinationTask).canCommitBlocking();
40 final ShardPreCommitCoordinationTask preCommitCoordinationTask = mock(ShardPreCommitCoordinationTask.class);
41 doNothing().when(preCommitCoordinationTask).preCommitBlocking();
42 final ShardCommitCoordinationTask commitCoordinationTask = mock(ShardCommitCoordinationTask.class);
43 doNothing().when(commitCoordinationTask).commitBlocking();
45 Field canCommitCoordinationTaskField =
46 ShardSubmitCoordinationTask.class.getDeclaredField("canCommitCoordinationTask");
47 Field preCommitCoordinationTaskField =
48 ShardSubmitCoordinationTask.class.getDeclaredField("preCommitCoordinationTask");
49 Field commitCoordinationTaskField =
50 ShardSubmitCoordinationTask.class.getDeclaredField("commitCoordinationTask");
52 canCommitCoordinationTaskField.setAccessible(true);
53 preCommitCoordinationTaskField.setAccessible(true);
54 commitCoordinationTaskField.setAccessible(true);
56 canCommitCoordinationTaskField.set(shardSubmitCoordinationTask, canCommitCoordinationTask);
57 preCommitCoordinationTaskField.set(shardSubmitCoordinationTask, preCommitCoordinationTask);
58 commitCoordinationTaskField.set(shardSubmitCoordinationTask, commitCoordinationTask);
60 shardSubmitCoordinationTask.call();
62 verify(canCommitCoordinationTask).canCommitBlocking();
63 verify(preCommitCoordinationTask).preCommitBlocking();
64 verify(commitCoordinationTask).commitBlocking();