3 * This program and the accompanying materials are made available under the
4 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
5 * and is available at http://www.eclipse.org/legal/epl-v10.html
7 package org.opendaylight.controller.cluster.databroker;
9 import static org.junit.Assert.assertTrue;
10 import static org.mockito.ArgumentMatchers.any;
11 import static org.mockito.Mockito.doThrow;
13 import com.google.common.util.concurrent.FluentFuture;
14 import java.util.Collection;
15 import java.util.Collections;
16 import java.util.concurrent.ExecutionException;
17 import org.junit.Assert;
18 import org.junit.Test;
19 import org.junit.runner.RunWith;
20 import org.mockito.Mock;
21 import org.mockito.junit.MockitoJUnitRunner;
22 import org.opendaylight.mdsal.common.api.CommitInfo;
23 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
24 import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
25 import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction;
27 @RunWith(MockitoJUnitRunner.StrictStubs.class)
28 public class AbstractDOMBrokerWriteTransactionTest {
30 private AbstractDOMTransactionFactory<?> abstractDOMTransactionFactory;
32 private DOMStoreWriteTransaction domStoreWriteTransaction;
34 private class AbstractDOMBrokerWriteTransactionTestImpl
35 extends AbstractDOMBrokerWriteTransaction<DOMStoreWriteTransaction> {
37 AbstractDOMBrokerWriteTransactionTestImpl() {
38 super(new Object(), Collections.emptyMap(), abstractDOMTransactionFactory);
42 protected DOMStoreWriteTransaction createTransaction(final LogicalDatastoreType key) {
47 protected Collection<DOMStoreWriteTransaction> getSubtransactions() {
48 return Collections.singletonList(domStoreWriteTransaction);
53 public void readyRuntimeExceptionAndCancel() throws InterruptedException {
54 RuntimeException thrown = new RuntimeException();
55 doThrow(thrown).when(domStoreWriteTransaction).ready();
56 AbstractDOMBrokerWriteTransactionTestImpl abstractDOMBrokerWriteTransactionTestImpl =
57 new AbstractDOMBrokerWriteTransactionTestImpl();
59 FluentFuture<? extends CommitInfo> submitFuture = abstractDOMBrokerWriteTransactionTestImpl.commit();
62 Assert.fail("TransactionCommitFailedException expected");
63 } catch (ExecutionException e) {
64 assertTrue(e.getCause() instanceof TransactionCommitFailedException);
65 assertTrue(e.getCause().getCause() == thrown);
66 abstractDOMBrokerWriteTransactionTestImpl.cancel();
71 public void submitRuntimeExceptionAndCancel() throws InterruptedException {
72 RuntimeException thrown = new RuntimeException();
73 doThrow(thrown).when(abstractDOMTransactionFactory).commit(any(), any());
74 AbstractDOMBrokerWriteTransactionTestImpl abstractDOMBrokerWriteTransactionTestImpl
75 = new AbstractDOMBrokerWriteTransactionTestImpl();
77 FluentFuture<? extends CommitInfo> submitFuture = abstractDOMBrokerWriteTransactionTestImpl.commit();
80 Assert.fail("TransactionCommitFailedException expected");
81 } catch (ExecutionException e) {
82 assertTrue(e.getCause() instanceof TransactionCommitFailedException);
83 assertTrue(e.getCause().getCause() == thrown);
84 abstractDOMBrokerWriteTransactionTestImpl.cancel();