Do not generate 'isFoo()' methods
[mdsal.git] / dom / mdsal-dom-broker / src / test / java / org / opendaylight / mdsal / dom / broker / ShardedDOMTransactionChainAdapterTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.mdsal.dom.broker;
9
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
13 import static org.mockito.ArgumentMatchers.any;
14 import static org.mockito.Mockito.doNothing;
15 import static org.mockito.Mockito.doReturn;
16 import static org.mockito.Mockito.mock;
17 import static org.mockito.Mockito.verify;
18 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL;
19
20 import org.junit.Test;
21 import org.opendaylight.mdsal.common.api.CommitInfo;
22 import org.opendaylight.mdsal.dom.api.DOMDataTreeCursorAwareTransaction;
23 import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
24 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
25 import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
26 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor;
27 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
28 import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener;
29 import org.opendaylight.mdsal.dom.broker.util.TestModel;
30 import org.opendaylight.yangtools.util.concurrent.FluentFutures;
31 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
32
33 public class ShardedDOMTransactionChainAdapterTest {
34
35     @Test
36     public void basicTest() throws Exception {
37         String identifier = "TestIdent";
38         DOMDataTreeService dataTreeService = mock(DOMDataTreeService.class);
39         DOMDataTreeProducer producer = mock(DOMDataTreeProducer.class);
40         DOMDataTreeCursorAwareTransaction transaction = mock(DOMDataTreeCursorAwareTransaction.class);
41         DOMDataTreeWriteCursor cursor = mock(DOMDataTreeWriteCursor.class);
42         doReturn(producer).when(dataTreeService).createProducer(any());
43         doReturn(transaction).when(producer).createTransaction(true);
44         doReturn(cursor).when(transaction).createCursor(any());
45         doNothing().when(producer).close();
46
47
48         DOMTransactionChainListener chainListener = new BlockingTransactionChainListener();
49         ShardedDOMTransactionChainAdapter transactionChainAdapter =
50                 new ShardedDOMTransactionChainAdapter(identifier, dataTreeService, chainListener);
51
52         DOMDataTreeWriteTransaction writeTransaction = transactionChainAdapter.newWriteOnlyTransaction();
53         assertNotNull(writeTransaction);
54         assertNotNull(writeTransaction.getIdentifier());
55
56         doNothing().when(cursor).write(any(), any());
57         writeTransaction.put(OPERATIONAL, TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME));
58         verify(cursor).write(any(), any());
59
60         doNothing().when(cursor).merge(any(), any());
61         writeTransaction.merge(OPERATIONAL, TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME));
62         verify(cursor).merge(any(), any());
63
64         doNothing().when(cursor).delete(any());
65         writeTransaction.delete(OPERATIONAL, TestModel.TEST_PATH);
66         verify(cursor).delete(any());
67
68         doNothing().when(cursor).close();
69         doReturn(CommitInfo.emptyFluentFuture()).when(transaction).commit();
70         doReturn(true).when(transaction).cancel();
71         assertTrue(writeTransaction.cancel());
72         transactionChainAdapter.closeWriteTransaction(FluentFutures.immediateNullFluentFuture());
73
74         transactionChainAdapter = new ShardedDOMTransactionChainAdapter(identifier, dataTreeService, chainListener);
75         writeTransaction = transactionChainAdapter.newWriteOnlyTransaction();
76         writeTransaction.put(OPERATIONAL, TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME));
77         assertNotNull(writeTransaction.commit());
78         assertFalse(writeTransaction.cancel());
79         transactionChainAdapter.closeWriteTransaction(FluentFutures.immediateNullFluentFuture());
80
81         assertNotNull(transactionChainAdapter.newWriteOnlyTransaction().commit());
82
83         DOMDataTreeReadTransaction readTransaction = transactionChainAdapter.newReadOnlyTransaction();
84         assertNotNull(readTransaction);
85         transactionChainAdapter.closeReadTransaction();
86         transactionChainAdapter.close();
87     }
88 }