1 package org.opendaylight.groupbasedpolicy.renderer.vpp.util;
3 import com.google.common.util.concurrent.Futures;
4 import org.junit.After;
5 import org.junit.Assert;
6 import org.junit.Before;
8 import org.junit.runner.RunWith;
9 import org.mockito.ArgumentCaptor;
10 import org.mockito.Captor;
11 import org.mockito.InOrder;
12 import org.mockito.Matchers;
13 import org.mockito.Mock;
14 import org.mockito.Mockito;
15 import org.mockito.runners.MockitoJUnitRunner;
16 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
17 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
18 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.Renderer;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.RendererNodes;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNode;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNodeBuilder;
23 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
26 * Test for {@link VppNodeWriter}.
28 @RunWith(MockitoJUnitRunner.class)
29 public class VppNodeWriterTest {
31 private static final String RENDERER_NAME = "vpp-renderer";
34 private DataBroker dataBroker;
36 private WriteTransaction wTx;
38 private ArgumentCaptor<InstanceIdentifier<RendererNodes>> rendererNodesPathCpt;
40 private ArgumentCaptor<RendererNodes> rendererNodesCpt;
42 private InOrder inOrder;
44 private VppNodeWriter nodeWriter;
47 public void setUp() throws Exception {
48 nodeWriter = new VppNodeWriter();
49 Mockito.when(dataBroker.newWriteOnlyTransaction()).thenReturn(wTx);
50 Mockito.when(wTx.submit()).thenReturn(Futures.immediateCheckedFuture(null));
54 public void tearDown() throws Exception {
55 inOrder.verifyNoMoreInteractions();
59 public void testCommitToDatastore_with_node() throws Exception {
60 final RendererNode node = new RendererNodeBuilder().build();
61 nodeWriter.cache(node);
62 nodeWriter.commitToDatastore(dataBroker);
66 final RendererNodes rendererNodes = rendererNodesCpt.getValue();
67 Assert.assertEquals(1, rendererNodes.getRendererNode().size());
71 public void testCommitToDatastore_empty() throws Exception {
72 nodeWriter.commitToDatastore(dataBroker);
76 final RendererNodes rendererNodes = rendererNodesCpt.getValue();
77 Assert.assertEquals(0, rendererNodes.getRendererNode().size());
80 private void commonChecks() {
81 inOrder = Mockito.inOrder(dataBroker, wTx);
82 inOrder.verify(dataBroker).newWriteOnlyTransaction();
83 inOrder.verify(wTx).merge(Matchers.eq(LogicalDatastoreType.OPERATIONAL), rendererNodesPathCpt.capture(),
84 rendererNodesCpt.capture(), Matchers.eq(true));
85 inOrder.verify(wTx).submit();
87 final InstanceIdentifier<RendererNodes> rendererNodesPath = rendererNodesPathCpt.getValue();
88 Assert.assertEquals(RENDERER_NAME, extractRendererName(rendererNodesPath));
91 private String extractRendererName(final InstanceIdentifier<RendererNodes> rendererNodesPath) {
92 return rendererNodesPath.firstKeyOf(Renderer.class).getName().getValue();