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.mdsal.dom.broker;
9 import static org.junit.Assert.assertTrue;
10 import static org.mockito.Matchers.any;
11 import static org.mockito.Mockito.doReturn;
12 import static org.mockito.Mockito.doThrow;
14 import com.google.common.util.concurrent.CheckedFuture;
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 DOMForwardedWriteTransactionTest {
28 private AbstractDOMForwardedTransactionFactory abstractDOMForwardedTransactionFactory;
31 private DOMStoreWriteTransaction domStoreWriteTransaction;
35 MockitoAnnotations.initMocks(this);
39 public void readyRuntimeExceptionAndCancel() {
40 RuntimeException thrown = new RuntimeException();
41 doThrow(thrown).when(domStoreWriteTransaction).ready();
42 DOMForwardedWriteTransaction<DOMStoreWriteTransaction> domForwardedWriteTransaction =
43 new DOMForwardedWriteTransaction<>(
45 Collections.singletonMap(LogicalDatastoreType.OPERATIONAL, domStoreWriteTransaction),
46 abstractDOMForwardedTransactionFactory);
47 CheckedFuture<Void, TransactionCommitFailedException> submitFuture = domForwardedWriteTransaction.submit();
49 submitFuture.checkedGet();
50 Assert.fail("TransactionCommitFailedException expected");
51 } catch (TransactionCommitFailedException e) {
52 assertTrue(e.getCause() == thrown);
53 domForwardedWriteTransaction.cancel();
58 public void submitRuntimeExceptionAndCancel() {
59 RuntimeException thrown = new RuntimeException();
60 doReturn(null).when(domStoreWriteTransaction).ready();
61 doThrow(thrown).when(abstractDOMForwardedTransactionFactory).submit(any(), any());
62 DOMForwardedWriteTransaction<DOMStoreWriteTransaction> domForwardedWriteTransaction =
63 new DOMForwardedWriteTransaction<>(
65 Collections.singletonMap(LogicalDatastoreType.OPERATIONAL, domStoreWriteTransaction),
66 abstractDOMForwardedTransactionFactory);
67 CheckedFuture<Void, TransactionCommitFailedException> submitFuture = domForwardedWriteTransaction.submit();
69 submitFuture.checkedGet();
70 Assert.fail("TransactionCommitFailedException expected");
71 } catch (TransactionCommitFailedException e) {
72 assertTrue(e.getCause() == thrown);
73 domForwardedWriteTransaction.cancel();