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.broker;
10 import static org.mockito.Mockito.doReturn;
11 import static org.mockito.Mockito.mock;
13 import com.google.common.collect.ImmutableList;
14 import com.google.common.util.concurrent.Futures;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
18 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
19 import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
20 import org.opendaylight.yangtools.util.concurrent.FluentFutures;
22 public class CommitCoordinationTaskTest {
24 private final DOMStoreThreePhaseCommitCohort cohort = mock(DOMStoreThreePhaseCommitCohort.class);
25 private CommitCoordinationTask task;
28 public void setUp() throws Exception {
29 final DOMDataTreeWriteTransaction tx = mock(DOMDataTreeWriteTransaction.class);
30 task = new CommitCoordinationTask(tx, ImmutableList.of(cohort), null);
31 doReturn("test").when(tx).getIdentifier();
34 @Test(expected = TransactionCommitFailedException.class)
35 public void canCommitBlockingWithFail() throws Exception {
36 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).abort();
38 doReturn(FluentFutures.immediateFalseFluentFuture()).when(cohort).canCommit();
42 @Test(expected = TransactionCommitFailedException.class)
43 public void canCommitBlockingWithFailException() throws Exception {
44 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).abort();
46 doReturn(Futures.immediateFailedFuture(new InterruptedException())).when(cohort).canCommit();
50 @Test(expected = TransactionCommitFailedException.class)
51 public void preCommitBlockingWithFail() throws Exception {
52 doReturn(FluentFutures.immediateTrueFluentFuture()).when(cohort).canCommit();
53 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).abort();
55 doReturn(Futures.immediateFailedFuture(new InterruptedException())).when(cohort).preCommit();
59 @Test(expected = TransactionCommitFailedException.class)
60 public void commitBlockingWithFail() throws Exception {
61 doReturn(FluentFutures.immediateTrueFluentFuture()).when(cohort).canCommit();
62 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).preCommit();
63 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).abort();
65 doReturn(Futures.immediateFailedFuture(new InterruptedException())).when(cohort).commit();