2 * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.restconf.nb.rfc8040.handlers;
10 import com.google.common.collect.ClassToInstanceMap;
11 import org.eclipse.jdt.annotation.NonNull;
12 import org.junit.After;
13 import org.junit.Assert;
14 import org.junit.Test;
15 import org.mockito.Mockito;
16 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
17 import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension;
18 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
19 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
20 import org.opendaylight.mdsal.dom.api.DOMDataTreeTransaction;
21 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
22 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
23 import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener;
24 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
26 public class TransactionChainHandlerTest {
28 private TransactionChainHandler transactionChainHandler;
29 private static final String EXCEPTION_MESSAGE = "(TEST) Unsupported Method";
32 public void shutdown() {
33 this.transactionChainHandler.close();
37 public void transactionChainTest() {
38 this.transactionChainHandler = new TransactionChainHandler(new DataBrokerLocal());
39 final DOMTransactionChain chain1 = this.transactionChainHandler.get();
40 final DOMTransactionChain chain2 = this.transactionChainHandler.get();
41 Assert.assertNotNull(chain1);
42 Assert.assertNotNull(chain2);
43 Assert.assertNotEquals(chain1, chain2);
45 Assert.assertFalse(this.transactionChainHandler.verifyIfExistTransactionChain(chain1));
48 chain2.newReadOnlyTransaction();
49 } catch (RestconfDocumentedException e) {
50 Assert.assertEquals(e.getCause().getLocalizedMessage(), EXCEPTION_MESSAGE);
52 Assert.assertFalse(this.transactionChainHandler.verifyIfExistTransactionChain(chain2));
55 private final class TxChainLocal implements DOMTransactionChain {
56 DOMTransactionChainListener listener;
58 TxChainLocal(DOMTransactionChainListener listener) {
59 this.listener = listener;
63 public DOMDataTreeReadTransaction newReadOnlyTransaction() {
64 final DOMDataTreeTransaction domDataTreeTransaction = Mockito.mock(DOMDataTreeTransaction.class);
65 listener.onTransactionChainFailed(this,
66 domDataTreeTransaction, new Throwable(EXCEPTION_MESSAGE));
71 public DOMDataTreeWriteTransaction newWriteOnlyTransaction() {
76 public DOMDataTreeReadWriteTransaction newReadWriteTransaction() {
82 listener.onTransactionChainSuccessful(this);
86 private final class DataBrokerLocal implements DOMDataBroker {
89 public @NonNull DOMTransactionChain createTransactionChain(DOMTransactionChainListener listener) {
90 return new TxChainLocal(listener);
94 public @NonNull DOMTransactionChain createMergingTransactionChain(DOMTransactionChainListener listener) {
99 public @NonNull ClassToInstanceMap<DOMDataBrokerExtension> getExtensions() {
104 public DOMDataTreeReadTransaction newReadOnlyTransaction() {
109 public DOMDataTreeWriteTransaction newWriteOnlyTransaction() {
114 public DOMDataTreeReadWriteTransaction newReadWriteTransaction() {