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.Matchers.any;
11 import static org.mockito.Mockito.doThrow;
13 import com.google.common.util.concurrent.CheckedFuture;
14 import java.util.Collection;
15 import java.util.Collections;
16 import org.junit.Assert;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.mockito.Mock;
20 import org.mockito.MockitoAnnotations;
21 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
22 import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
23 import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction;
25 public class AbstractDOMBrokerWriteTransactionTest {
28 private AbstractDOMTransactionFactory abstractDOMTransactionFactory;
31 private DOMStoreWriteTransaction domStoreWriteTransaction;
33 private class AbstractDOMBrokerWriteTransactionTestImpl
34 extends AbstractDOMBrokerWriteTransaction<DOMStoreWriteTransaction> {
36 AbstractDOMBrokerWriteTransactionTestImpl() {
37 super(new Object(), Collections.emptyMap(), abstractDOMTransactionFactory);
41 protected DOMStoreWriteTransaction createTransaction(LogicalDatastoreType key) {
46 protected Collection<DOMStoreWriteTransaction> getSubtransactions() {
47 return Collections.singletonList(domStoreWriteTransaction);
53 MockitoAnnotations.initMocks(this);
57 public void readyRuntimeExceptionAndCancel() {
58 RuntimeException thrown = new RuntimeException();
59 doThrow(thrown).when(domStoreWriteTransaction).ready();
60 AbstractDOMBrokerWriteTransactionTestImpl abstractDOMBrokerWriteTransactionTestImpl =
61 new AbstractDOMBrokerWriteTransactionTestImpl();
63 CheckedFuture<Void, TransactionCommitFailedException> submitFuture =
64 abstractDOMBrokerWriteTransactionTestImpl.submit();
66 submitFuture.checkedGet();
67 Assert.fail("TransactionCommitFailedException expected");
68 } catch (TransactionCommitFailedException e) {
69 assertTrue(e.getCause() == thrown);
70 abstractDOMBrokerWriteTransactionTestImpl.cancel();
75 public void submitRuntimeExceptionAndCancel() {
76 RuntimeException thrown = new RuntimeException();
77 doThrow(thrown).when(abstractDOMTransactionFactory).commit(any(), any());
78 AbstractDOMBrokerWriteTransactionTestImpl abstractDOMBrokerWriteTransactionTestImpl
79 = new AbstractDOMBrokerWriteTransactionTestImpl();
81 CheckedFuture<Void, TransactionCommitFailedException> submitFuture =
82 abstractDOMBrokerWriteTransactionTestImpl.submit();
84 submitFuture.checkedGet();
85 Assert.fail("TransactionCommitFailedException expected");
86 } catch (TransactionCommitFailedException e) {
87 assertTrue(e.getCause() == thrown);
88 abstractDOMBrokerWriteTransactionTestImpl.cancel();