Cleanup AbstractDOMBrokerWriteTransactionTest
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / databroker / AbstractDOMBrokerWriteTransactionTest.java
1 /*
2  *
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
6  */
7 package org.opendaylight.controller.cluster.databroker;
8
9 import static org.junit.Assert.assertTrue;
10 import static org.mockito.ArgumentMatchers.any;
11 import static org.mockito.Mockito.doThrow;
12
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;
26
27 @RunWith(MockitoJUnitRunner.StrictStubs.class)
28 public class AbstractDOMBrokerWriteTransactionTest {
29     @Mock
30     private AbstractDOMTransactionFactory<?> abstractDOMTransactionFactory;
31     @Mock
32     private DOMStoreWriteTransaction domStoreWriteTransaction;
33
34     private class AbstractDOMBrokerWriteTransactionTestImpl
35             extends AbstractDOMBrokerWriteTransaction<DOMStoreWriteTransaction> {
36
37         AbstractDOMBrokerWriteTransactionTestImpl() {
38             super(new Object(), Collections.emptyMap(), abstractDOMTransactionFactory);
39         }
40
41         @Override
42         protected DOMStoreWriteTransaction createTransaction(final LogicalDatastoreType key) {
43             return null;
44         }
45
46         @Override
47         protected Collection<DOMStoreWriteTransaction> getSubtransactions() {
48             return Collections.singletonList(domStoreWriteTransaction);
49         }
50     }
51
52     @Test
53     public void readyRuntimeExceptionAndCancel() throws InterruptedException {
54         RuntimeException thrown = new RuntimeException();
55         doThrow(thrown).when(domStoreWriteTransaction).ready();
56         AbstractDOMBrokerWriteTransactionTestImpl abstractDOMBrokerWriteTransactionTestImpl =
57                 new AbstractDOMBrokerWriteTransactionTestImpl();
58
59         FluentFuture<? extends CommitInfo> submitFuture = abstractDOMBrokerWriteTransactionTestImpl.commit();
60         try {
61             submitFuture.get();
62             Assert.fail("TransactionCommitFailedException expected");
63         } catch (ExecutionException e) {
64             assertTrue(e.getCause() instanceof TransactionCommitFailedException);
65             assertTrue(e.getCause().getCause() == thrown);
66             abstractDOMBrokerWriteTransactionTestImpl.cancel();
67         }
68     }
69
70     @Test
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();
76
77         FluentFuture<? extends CommitInfo> submitFuture = abstractDOMBrokerWriteTransactionTestImpl.commit();
78         try {
79             submitFuture.get();
80             Assert.fail("TransactionCommitFailedException expected");
81         } catch (ExecutionException e) {
82             assertTrue(e.getCause() instanceof TransactionCommitFailedException);
83             assertTrue(e.getCause().getCause() == thrown);
84             abstractDOMBrokerWriteTransactionTestImpl.cancel();
85         }
86     }
87 }