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.util.concurrent.Futures;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
17 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
18 import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
19 import org.opendaylight.yangtools.util.concurrent.FluentFutures;
21 public class CommitCoordinationTaskTest {
22 private final DOMStoreThreePhaseCommitCohort cohort = mock(DOMStoreThreePhaseCommitCohort.class);
24 private CommitCoordinationTask task;
27 public void setUp() throws Exception {
28 final DOMDataTreeWriteTransaction tx = mock(DOMDataTreeWriteTransaction.class);
29 task = new CommitCoordinationTask(tx, cohort);
30 doReturn("test").when(tx).getIdentifier();
33 @Test(expected = TransactionCommitFailedException.class)
34 public void canCommitBlockingWithFail() throws Exception {
35 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).abort();
37 doReturn(FluentFutures.immediateFalseFluentFuture()).when(cohort).canCommit();
41 @Test(expected = TransactionCommitFailedException.class)
42 public void canCommitBlockingWithFailException() throws Exception {
43 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).abort();
45 doReturn(Futures.immediateFailedFuture(new InterruptedException())).when(cohort).canCommit();
49 @Test(expected = TransactionCommitFailedException.class)
50 public void preCommitBlockingWithFail() throws Exception {
51 doReturn(FluentFutures.immediateTrueFluentFuture()).when(cohort).canCommit();
52 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).abort();
54 doReturn(Futures.immediateFailedFuture(new InterruptedException())).when(cohort).preCommit();
58 @Test(expected = TransactionCommitFailedException.class)
59 public void commitBlockingWithFail() throws Exception {
60 doReturn(FluentFutures.immediateTrueFluentFuture()).when(cohort).canCommit();
61 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).preCommit();
62 doReturn(FluentFutures.immediateNullFluentFuture()).when(cohort).abort();
64 doReturn(Futures.immediateFailedFuture(new InterruptedException())).when(cohort).commit();