Remove JournalWriter.getLastEntry()
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / databroker / actors / dds / LocalReadOnlyProxyTransactionTest.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. 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.controller.cluster.databroker.actors.dds;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertThrows;
12 import static org.junit.Assert.assertTrue;
13 import static org.mockito.Mockito.when;
14 import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtils.assertOperationThrowsException;
15
16 import akka.testkit.TestProbe;
17 import com.google.common.base.Ticker;
18 import com.google.common.base.VerifyException;
19 import java.util.Optional;
20 import org.junit.Test;
21 import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest;
22 import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequest;
23 import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequestBuilder;
24 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
25 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeSnapshot;
26
27 public class LocalReadOnlyProxyTransactionTest extends LocalProxyTransactionTest<LocalReadOnlyProxyTransaction> {
28     private DataTreeSnapshot snapshot;
29
30     @Override
31     @SuppressWarnings("checkstyle:hiddenField")
32     protected LocalReadOnlyProxyTransaction createTransaction(final ProxyHistory parent,
33                                                               final TransactionIdentifier id,
34                                                               final DataTreeSnapshot snapshot) {
35         when(snapshot.readNode(PATH_1)).thenReturn(Optional.of(DATA_1));
36         when(snapshot.readNode(PATH_3)).thenReturn(Optional.empty());
37         this.snapshot = snapshot;
38         return new LocalReadOnlyProxyTransaction(parent, id, this.snapshot);
39     }
40
41     @Test
42     public void testIsSnapshotOnly() {
43         assertTrue(transaction.isSnapshotOnly());
44     }
45
46     @Test
47     public void testReadOnlyView() {
48         assertEquals(snapshot, transaction.readOnlyView());
49     }
50
51     @Test
52     @Override
53     public void testDirectCommit() {
54         assertThrows(UnsupportedOperationException.class, () -> transaction.directCommit());
55     }
56
57     @Test
58     @Override
59     public void testCanCommit() {
60         assertThrows(UnsupportedOperationException.class,
61             () -> transaction.canCommit(new VotingFuture<>(new Object(), 1)));
62     }
63
64     @Test
65     @Override
66     public void testPreCommit() {
67         assertThrows(UnsupportedOperationException.class,
68             () -> transaction.preCommit(new VotingFuture<>(new Object(), 1)));
69     }
70
71     @Test
72     @Override
73     public void testDoCommit() {
74         assertThrows(UnsupportedOperationException.class,
75             () -> transaction.doCommit(new VotingFuture<>(new Object(), 1)));
76     }
77
78     @Test
79     @Override
80     public void testDelete() {
81         assertThrows(UnsupportedOperationException.class, () -> transaction.delete(PATH_1));
82     }
83
84     @Override
85     public void testMerge() {
86         assertThrows(UnsupportedOperationException.class, () -> transaction.merge(PATH_1, DATA_1));
87     }
88
89     @Test
90     @Override
91     public void testWrite() {
92         assertThrows(UnsupportedOperationException.class, () -> transaction.write(PATH_1, DATA_1));
93     }
94
95     @Test
96     public void testDoDelete() {
97         assertThrows(UnsupportedOperationException.class, () -> transaction.doDelete(PATH_1));
98     }
99
100     @Test
101     public void testDoMerge() {
102         assertThrows(UnsupportedOperationException.class, () -> transaction.doMerge(PATH_1, DATA_1));
103     }
104
105     @Test
106     public void testDoWrite() {
107         assertThrows(UnsupportedOperationException.class, () -> transaction.doWrite(PATH_1, DATA_1));
108     }
109
110     @Test
111     public void testCommitRequest() {
112         assertThrows(UnsupportedOperationException.class, () -> transaction.commitRequest(true));
113     }
114
115     @Test
116     public void testApplyModifyTransactionRequest() {
117         final TestProbe probe = createProbe();
118         final ModifyTransactionRequestBuilder builder =
119                 new ModifyTransactionRequestBuilder(TRANSACTION_ID, probe.ref());
120         builder.setSequence(0);
121         builder.setAbort();
122         final ModifyTransactionRequest request = builder.build();
123         transaction.replayModifyTransactionRequest(request, createCallbackMock(), Ticker.systemTicker().read());
124         getTester().expectTransactionRequest(AbortLocalTransactionRequest.class);
125     }
126
127     @Test
128     public void testApplyModifyTransactionRequestNotAbort() throws Exception {
129         final TestProbe probe = createProbe();
130         final ModifyTransactionRequestBuilder builder =
131                 new ModifyTransactionRequestBuilder(TRANSACTION_ID, probe.ref());
132         builder.setSequence(0);
133         builder.setReady();
134         final ModifyTransactionRequest request = builder.build();
135         assertOperationThrowsException(() -> transaction.replayModifyTransactionRequest(request, createCallbackMock(),
136             Ticker.systemTicker().read()), VerifyException.class);
137     }
138 }