1 package io.fd.honeycomb.lisp.translate.read.dump.executor;
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;
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.rev160520.locator.sets.grouping.locator.sets.LocatorSet;
28 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
31 public class LocatorDumpExecutorTest extends JvppDumpExecutorTest<LocatorDumpExecutor> {
34 private ArgumentCaptor<LispLocatorDump> requestCaptor;
36 private InstanceIdentifier identifier;
37 private LispLocatorDetailsReplyDump validDump;
41 identifier = InstanceIdentifier.create(LocatorSet.class);
42 validDump = new LispLocatorDetailsReplyDump();
43 LispLocatorDetails detail = new LispLocatorDetails();
51 detail.ipAddress = new byte[]{-64, -88, 4, 2};
53 validDump.lispLocatorDetails = ImmutableList.of(detail);
57 public void testExecuteDumpTimeout() throws Exception {
58 doThrowTimeoutExceptionWhen().lispLocatorDump(Mockito.any());
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());
67 fail("Test should have thrown exception");
71 public void testExecuteDumpHalted() throws ReadFailedException {
72 doThrowFailExceptionWhen().lispLocatorDump(Mockito.any());
74 getExecutor().executeDump(identifier, new LocatorDumpParamsBuilder().build());
75 } catch (ReadFailedException e) {
76 assertTrue(e.getCause() instanceof VppCallbackException);
77 assertEquals(identifier, ((ReadFailedException) e).getFailedId());
80 fail("Test should have thrown ReadFailedException");
84 public void testExecuteDump() throws ReadFailedException {
85 doReturnResponseWhen(validDump).lispLocatorDump(Mockito.any());
87 final LocatorDumpParams params = new LocatorDumpParamsBuilder().setLocatorSetIndex(5).build();
89 final LispLocatorDetailsReplyDump reply = getExecutor().executeDump(identifier, params);
90 verify(api, times(1)).lispLocatorDump(requestCaptor.capture());
92 final LispLocatorDump request = requestCaptor.getValue();
95 assertNotNull(request);
96 assertEquals(5, request.lsIndex);
100 assertEquals(1, reply.lispLocatorDetails.size());
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);
113 protected LocatorDumpExecutor initExecutor() {
114 return new LocatorDumpExecutor(api);