UT coverage increased in vpp-renderer
[groupbasedpolicy.git] / renderers / vpp / src / test / java / org / opendaylight / groupbasedpolicy / renderer / vpp / util / GbpNetconfTransactionTest.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
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.util;
10
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertTrue;
13 import static org.mockito.Mockito.doNothing;
14 import static org.mockito.Mockito.doThrow;
15 import static org.mockito.Mockito.mock;
16 import static org.mockito.Mockito.times;
17 import static org.mockito.Mockito.verify;
18 import static org.mockito.Mockito.when;
19
20 import com.google.common.base.Optional;
21 import com.google.common.util.concurrent.CheckedFuture;
22 import org.junit.Test;
23 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
24 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
25 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
26 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
27 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
28 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
29 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.ConfigCommand;
30 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
31 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
32 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
33 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
34 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
35
36 public class GbpNetconfTransactionTest {
37
38     private final DataBroker dataBroker = mock(DataBroker.class);
39     private final ReadWriteTransaction rwTx = mock(ReadWriteTransaction.class);
40     private final ReadOnlyTransaction rTx = mock(ReadOnlyTransaction.class);
41     private final Node node = mock(Node.class);
42     @SuppressWarnings("unchecked")
43     private final InstanceIdentifier<Node> nodeIid = mock(InstanceIdentifier.class);
44     @SuppressWarnings("unchecked")
45     private final CheckedFuture<Void, TransactionCommitFailedException> future = mock(CheckedFuture.class);
46     @SuppressWarnings("unchecked")
47     private final CheckedFuture<Optional<Node>, ReadFailedException> futureNode = mock(CheckedFuture.class);
48     private final ConfigCommand command = mock(ConfigCommand.class);
49
50     @Test
51     public void writeConfigCommandExceptionTest() {
52         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
53         doThrow(new RuntimeException()).when(command).execute(rwTx);
54
55         final boolean result = GbpNetconfTransaction.write(dataBroker, command, (byte)5);
56         verify(dataBroker, times(1)).newReadWriteTransaction();
57         assertFalse(result);
58
59     }
60
61     @Test
62     public void writeConfigCommandReattemptTest() {
63         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
64         doThrow(new IllegalStateException()).when(command).execute(rwTx);
65
66         final boolean result = GbpNetconfTransaction.write(dataBroker, command, (byte)5);
67         verify(dataBroker, times(6)).newReadWriteTransaction();
68         assertFalse(result);
69     }
70
71     @Test
72     public void writeConfigCommandTest() throws Exception {
73         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
74         when(rwTx.submit()).thenReturn(future);
75         doNothing().when(command).execute(rwTx);
76         when(future.get()).thenReturn(null);
77
78         final boolean result = GbpNetconfTransaction.write(dataBroker, command, (byte)5);
79         verify(dataBroker, times(1)).newReadWriteTransaction();
80         assertTrue(result);
81     }
82
83     @Test
84     public void writeDataExceptionTest() {
85         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
86         doThrow(new RuntimeException()).when(rwTx).put(LogicalDatastoreType.CONFIGURATION, nodeIid, node, true);
87
88         final boolean result = GbpNetconfTransaction.write(dataBroker, nodeIid, node, (byte)5);
89         verify(dataBroker, times(1)).newReadWriteTransaction();
90         assertFalse(result);
91     }
92
93     @Test
94     public void writeDataReattemptTest() {
95         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
96         doThrow(new IllegalStateException()).when(rwTx).put(LogicalDatastoreType.CONFIGURATION, nodeIid, node, true);
97
98         final boolean result = GbpNetconfTransaction.write(dataBroker, nodeIid, node, (byte)5);
99         verify(dataBroker, times(6)).newReadWriteTransaction();
100         assertFalse(result);
101     }
102
103     @Test
104     public void writeDataTest() throws Exception {
105         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
106         when(rwTx.submit()).thenReturn(future);
107         doNothing().when(rwTx).put(LogicalDatastoreType.CONFIGURATION, nodeIid, node, true);
108         when(future.get()).thenReturn(null);
109
110         final boolean result = GbpNetconfTransaction.write(dataBroker, nodeIid, node, (byte)5);
111         verify(dataBroker, times(1)).newReadWriteTransaction();
112         assertTrue(result);
113     }
114
115     @Test
116     public void readDataExceptionTest() {
117         when(dataBroker.newReadOnlyTransaction()).thenReturn(rTx);
118         doThrow(new RuntimeException()).when(rTx).read(LogicalDatastoreType.CONFIGURATION, nodeIid);
119
120         final Optional<Node> result = GbpNetconfTransaction.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
121                 nodeIid, (byte)5);
122         verify(dataBroker, times(1)).newReadOnlyTransaction();
123         assertFalse(result.isPresent());
124     }
125
126     @Test
127     public void readDataReattemptTest() {
128         when(dataBroker.newReadOnlyTransaction()).thenReturn(rTx);
129         doThrow(new IllegalStateException()).when(rTx).read(LogicalDatastoreType.CONFIGURATION, nodeIid);
130
131         final Optional<Node> result = GbpNetconfTransaction.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
132                 nodeIid, (byte)5);
133         verify(dataBroker, times(6)).newReadOnlyTransaction();
134         assertFalse(result.isPresent());
135     }
136
137     @Test
138     public void readDataTest() throws Exception {
139         when(dataBroker.newReadOnlyTransaction()).thenReturn(rTx);
140         when(rTx.read(LogicalDatastoreType.CONFIGURATION, nodeIid)).thenReturn(futureNode);
141         when(futureNode.get()).thenReturn(Optional.of(new NodeBuilder()
142                 .setKey(new NodeKey(new NodeId("node"))).build()));
143
144         final Optional<Node> result = GbpNetconfTransaction.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
145                 nodeIid, (byte)5);
146         verify(dataBroker, times(1)).newReadOnlyTransaction();
147         assertTrue(result.isPresent());
148     }
149
150     @Test
151     public void deleteConfigCommandExceptionTest() {
152         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
153         doThrow(new RuntimeException()).when(command).execute(rwTx);
154
155         final boolean result = GbpNetconfTransaction.delete(dataBroker, command, (byte)5);
156         verify(dataBroker, times(1)).newReadWriteTransaction();
157         assertFalse(result);
158     }
159
160     @Test
161     public void deleteConfigCommandReattemptTest() {
162         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
163         doThrow(new IllegalStateException()).when(command).execute(rwTx);
164
165         final boolean result = GbpNetconfTransaction.delete(dataBroker, command, (byte)5);
166         verify(dataBroker, times(6)).newReadWriteTransaction();
167         assertFalse(result);
168     }
169
170     @Test
171     public void deleteConfigCommandTest() throws Exception {
172         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
173         when(rwTx.submit()).thenReturn(future);
174         doNothing().when(command).execute(rwTx);
175         when(future.get()).thenReturn(null);
176
177         final boolean result = GbpNetconfTransaction.delete(dataBroker, command, (byte)5);
178         verify(dataBroker, times(1)).newReadWriteTransaction();
179         assertTrue(result);
180     }
181
182     @Test
183     public void deleteDataExceptionTest() {
184         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
185         doThrow(new RuntimeException()).when(rwTx).delete(LogicalDatastoreType.CONFIGURATION, nodeIid);
186
187         final boolean result = GbpNetconfTransaction.delete(dataBroker, nodeIid, (byte)5);
188         verify(dataBroker, times(1)).newReadWriteTransaction();
189         assertFalse(result);
190     }
191
192     @Test
193     public void deleteDataReattemptTest() {
194         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
195         doThrow(new IllegalStateException()).when(rwTx).delete(LogicalDatastoreType.CONFIGURATION, nodeIid);
196
197         final boolean result = GbpNetconfTransaction.delete(dataBroker, nodeIid, (byte)5);
198         verify(dataBroker, times(6)).newReadWriteTransaction();
199         assertFalse(result);
200     }
201
202     @Test
203     public void deleteDataTest() throws Exception {
204         when(dataBroker.newReadWriteTransaction()).thenReturn(rwTx);
205         when(rwTx.submit()).thenReturn(future);
206         doNothing().when(rwTx).delete(LogicalDatastoreType.CONFIGURATION, nodeIid);
207         when(future.get()).thenReturn(null);
208
209         final boolean result = GbpNetconfTransaction.delete(dataBroker, nodeIid, (byte)5);
210         verify(dataBroker, times(1)).newReadWriteTransaction();
211         assertTrue(result);
212     }
213 }