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.junit.Assert.fail;
11 import static org.mockito.ArgumentMatchers.any;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.doThrow;
15 import com.google.common.util.concurrent.FluentFuture;
16 import java.util.Collections;
17 import java.util.concurrent.ExecutionException;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.mockito.Mock;
21 import org.mockito.MockitoAnnotations;
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 public class DOMForwardedWriteTransactionTest {
30 private AbstractDOMForwardedTransactionFactory<?> abstractDOMForwardedTransactionFactory;
33 private DOMStoreWriteTransaction domStoreWriteTransaction;
37 MockitoAnnotations.initMocks(this);
41 public void readyRuntimeExceptionAndCancel() throws InterruptedException {
42 RuntimeException thrown = new RuntimeException();
43 doThrow(thrown).when(domStoreWriteTransaction).ready();
44 DOMForwardedWriteTransaction<DOMStoreWriteTransaction> domForwardedWriteTransaction =
45 new DOMForwardedWriteTransaction<>(
47 Collections.singletonMap(LogicalDatastoreType.OPERATIONAL, domStoreWriteTransaction),
48 abstractDOMForwardedTransactionFactory);
49 FluentFuture<? extends CommitInfo> submitFuture = domForwardedWriteTransaction.commit();
52 fail("TransactionCommitFailedException expected");
53 } catch (ExecutionException e) {
54 assertTrue(e.getCause() instanceof TransactionCommitFailedException);
55 assertTrue(e.getCause().getCause() == thrown);
56 domForwardedWriteTransaction.cancel();
61 public void submitRuntimeExceptionAndCancel() throws InterruptedException {
62 RuntimeException thrown = new RuntimeException();
63 doReturn(null).when(domStoreWriteTransaction).ready();
64 doThrow(thrown).when(abstractDOMForwardedTransactionFactory).commit(any(), any());
65 DOMForwardedWriteTransaction<DOMStoreWriteTransaction> domForwardedWriteTransaction =
66 new DOMForwardedWriteTransaction<>(
68 Collections.singletonMap(LogicalDatastoreType.OPERATIONAL, domStoreWriteTransaction),
69 abstractDOMForwardedTransactionFactory);
70 FluentFuture<? extends CommitInfo> submitFuture = domForwardedWriteTransaction.commit();
73 fail("TransactionCommitFailedException expected");
74 } catch (ExecutionException e) {
75 assertTrue(e.getCause() instanceof TransactionCommitFailedException);
76 assertTrue(e.getCause().getCause() == thrown);
77 domForwardedWriteTransaction.cancel();