2 * Copyright (c) 2017 Pantheon Technologies 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.controller.cluster.databroker.actors.dds;
10 import static org.mockito.Mockito.when;
11 import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtils.assertOperationThrowsException;
13 import akka.testkit.TestProbe;
14 import com.google.common.base.Ticker;
15 import com.google.common.base.VerifyException;
16 import java.util.Optional;
17 import org.junit.Assert;
18 import org.junit.Test;
19 import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest;
20 import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequest;
21 import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequestBuilder;
22 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
23 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeSnapshot;
25 public class LocalReadOnlyProxyTransactionTest extends LocalProxyTransactionTest<LocalReadOnlyProxyTransaction> {
26 private DataTreeSnapshot snapshot;
29 @SuppressWarnings("checkstyle:hiddenField")
30 protected LocalReadOnlyProxyTransaction createTransaction(final ProxyHistory parent,
31 final TransactionIdentifier id,
32 final DataTreeSnapshot snapshot) {
33 when(snapshot.readNode(PATH_1)).thenReturn(Optional.of(DATA_1));
34 when(snapshot.readNode(PATH_3)).thenReturn(Optional.empty());
35 this.snapshot = snapshot;
36 return new LocalReadOnlyProxyTransaction(parent, id, this.snapshot);
40 public void testIsSnapshotOnly() {
41 Assert.assertTrue(transaction.isSnapshotOnly());
45 public void testReadOnlyView() {
46 Assert.assertEquals(snapshot, transaction.readOnlyView());
50 @Test(expected = UnsupportedOperationException.class)
51 public void testDirectCommit() {
52 transaction.directCommit();
56 @Test(expected = UnsupportedOperationException.class)
57 public void testCanCommit() {
58 transaction.canCommit(new VotingFuture<>(new Object(), 1));
62 @Test(expected = UnsupportedOperationException.class)
63 public void testPreCommit() {
64 transaction.preCommit(new VotingFuture<>(new Object(), 1));
68 @Test(expected = UnsupportedOperationException.class)
69 public void testDoCommit() {
70 transaction.doCommit(new VotingFuture<>(new Object(), 1));
74 @Test(expected = UnsupportedOperationException.class)
75 public void testDelete() {
76 transaction.delete(PATH_1);
80 @Test(expected = UnsupportedOperationException.class)
81 public void testMerge() {
82 transaction.merge(PATH_1, DATA_1);
86 @Test(expected = UnsupportedOperationException.class)
87 public void testWrite() {
88 transaction.write(PATH_1, DATA_1);
91 @Test(expected = UnsupportedOperationException.class)
92 public void testDoDelete() {
93 transaction.doDelete(PATH_1);
96 @Test(expected = UnsupportedOperationException.class)
97 public void testDoMerge() {
98 transaction.doMerge(PATH_1, DATA_1);
101 @Test(expected = UnsupportedOperationException.class)
102 public void testDoWrite() {
103 transaction.doWrite(PATH_1, DATA_1);
106 @Test(expected = UnsupportedOperationException.class)
107 public void testCommitRequest() {
108 transaction.commitRequest(true);
112 public void testApplyModifyTransactionRequest() {
113 final TestProbe probe = createProbe();
114 final ModifyTransactionRequestBuilder builder =
115 new ModifyTransactionRequestBuilder(TRANSACTION_ID, probe.ref());
116 builder.setSequence(0);
118 final ModifyTransactionRequest request = builder.build();
119 transaction.replayModifyTransactionRequest(request, createCallbackMock(), Ticker.systemTicker().read());
120 getTester().expectTransactionRequest(AbortLocalTransactionRequest.class);
124 public void testApplyModifyTransactionRequestNotAbort() throws Exception {
125 final TestProbe probe = createProbe();
126 final ModifyTransactionRequestBuilder builder =
127 new ModifyTransactionRequestBuilder(TRANSACTION_ID, probe.ref());
128 builder.setSequence(0);
130 final ModifyTransactionRequest request = builder.build();
131 assertOperationThrowsException(() -> transaction.replayModifyTransactionRequest(request, createCallbackMock(),
132 Ticker.systemTicker().read()), VerifyException.class);