HONEYCOMB-154: update revison of models that changed since 16.09
[honeycomb.git] / lisp / lisp2vpp / src / test / java / io / fd / honeycomb / lisp / translate / read / dump / executor / LocatorDumpExecutorTest.java
1 package io.fd.honeycomb.lisp.translate.read.dump.executor;
2
3
4 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams.LocatorDumpParamsBuilder;
5 import static org.junit.Assert.assertArrayEquals;
6 import static org.junit.Assert.assertEquals;
7 import static org.junit.Assert.assertNotNull;
8 import static org.junit.Assert.assertTrue;
9 import static org.junit.Assert.fail;
10 import static org.mockito.Mockito.times;
11 import static org.mockito.Mockito.verify;
12
13 import com.google.common.collect.ImmutableList;
14 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
15 import io.fd.honeycomb.translate.read.ReadFailedException;
16 import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
17 import io.fd.vpp.jvpp.VppCallbackException;
18 import io.fd.vpp.jvpp.core.dto.LispLocatorDetails;
19 import io.fd.vpp.jvpp.core.dto.LispLocatorDetailsReplyDump;
20 import io.fd.vpp.jvpp.core.dto.LispLocatorDump;
21 import java.util.concurrent.TimeoutException;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.mockito.ArgumentCaptor;
25 import org.mockito.Captor;
26 import org.mockito.Mockito;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSet;
28 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
29
30
31 public class LocatorDumpExecutorTest extends JvppDumpExecutorTest<LocatorDumpExecutor> {
32
33     @Captor
34     private ArgumentCaptor<LispLocatorDump> requestCaptor;
35
36     private InstanceIdentifier identifier;
37     private LispLocatorDetailsReplyDump validDump;
38
39     @Before
40     public void init() {
41         identifier = InstanceIdentifier.create(LocatorSet.class);
42         validDump = new LispLocatorDetailsReplyDump();
43         LispLocatorDetails detail = new LispLocatorDetails();
44
45         detail.swIfIndex = 1;
46         detail.priority = 2;
47         detail.local = 1;
48         detail.weight = 3;
49         detail.isIpv6 = 0;
50         detail.context = 8;
51         detail.ipAddress = new byte[]{-64, -88, 4, 2};
52
53         validDump.lispLocatorDetails = ImmutableList.of(detail);
54     }
55
56     @Test
57     public void testExecuteDumpTimeout() throws Exception {
58         doThrowTimeoutExceptionWhen().lispLocatorDump(Mockito.any());
59         try {
60             getExecutor().executeDump(identifier, new LocatorDumpParamsBuilder().build());
61         } catch (Exception e) {
62             assertTrue(e instanceof ReadFailedException);
63             assertTrue(e.getCause() instanceof TimeoutException);
64             assertEquals(identifier, ((ReadFailedException) e).getFailedId());
65             return;
66         }
67         fail("Test should have thrown exception");
68     }
69
70     @Test
71     public void testExecuteDumpHalted() throws ReadFailedException {
72         doThrowFailExceptionWhen().lispLocatorDump(Mockito.any());
73         try {
74             getExecutor().executeDump(identifier, new LocatorDumpParamsBuilder().build());
75         } catch (ReadFailedException e) {
76             assertTrue(e.getCause() instanceof VppCallbackException);
77             assertEquals(identifier, ((ReadFailedException) e).getFailedId());
78             return;
79         }
80         fail("Test should have thrown ReadFailedException");
81     }
82
83     @Test
84     public void testExecuteDump() throws ReadFailedException {
85         doReturnResponseWhen(validDump).lispLocatorDump(Mockito.any());
86
87         final LocatorDumpParams params = new LocatorDumpParamsBuilder().setLocatorSetIndex(5).build();
88
89         final LispLocatorDetailsReplyDump reply = getExecutor().executeDump(identifier, params);
90         verify(api, times(1)).lispLocatorDump(requestCaptor.capture());
91
92         final LispLocatorDump request = requestCaptor.getValue();
93
94         //check passed params
95         assertNotNull(request);
96         assertEquals(5, request.lsIndex);
97
98         //check result
99         assertNotNull(reply);
100         assertEquals(1, reply.lispLocatorDetails.size());
101
102         final LispLocatorDetails details = reply.lispLocatorDetails.get(0);
103         assertEquals(1, details.swIfIndex);
104         assertEquals(2, details.priority);
105         assertEquals(1, details.local);
106         assertEquals(3, details.weight);
107         assertEquals(0, details.isIpv6);
108         assertEquals(8, details.context);
109         assertArrayEquals(new byte[]{-64, -88, 4, 2}, details.ipAddress);
110     }
111
112     @Override
113     protected LocatorDumpExecutor initExecutor() {
114         return new LocatorDumpExecutor(api);
115     }
116 }