1 package io.fd.honeycomb.lisp.translate.read.dump.executor;
3 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType;
4 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.FilterType;
5 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.MappingsDumpParamsBuilder;
6 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.QuantityType;
7 import static org.junit.Assert.assertArrayEquals;
8 import static org.junit.Assert.assertEquals;
9 import static org.junit.Assert.assertNotNull;
10 import static org.junit.Assert.assertTrue;
11 import static org.junit.Assert.fail;
12 import static org.mockito.Matchers.any;
13 import static org.mockito.Mockito.times;
14 import static org.mockito.Mockito.verify;
16 import com.google.common.collect.ImmutableList;
17 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
18 import io.fd.honeycomb.translate.read.ReadFailedException;
19 import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
20 import io.fd.vpp.jvpp.VppCallbackException;
21 import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
22 import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
23 import io.fd.vpp.jvpp.core.dto.LispEidTableDump;
24 import java.util.concurrent.TimeoutException;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.mockito.ArgumentCaptor;
28 import org.mockito.Captor;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev160520.dp.subtable.grouping.local.mappings.LocalMapping;
30 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
32 public class MappingsDumpExecutorTest extends JvppDumpExecutorTest<MappingsDumpExecutor> {
34 private static final byte[] EID = {-64, -88, 2, 1};
37 private ArgumentCaptor<LispEidTableDump> requestCaptor;
39 private InstanceIdentifier identifier;
41 private LispEidTableDetailsReplyDump validDump;
42 private MappingsDumpParams emptyParams;
43 private MappingsDumpParams validParams;
47 identifier = InstanceIdentifier.create(LocalMapping.class);
48 validDump = new LispEidTableDetailsReplyDump();
50 LispEidTableDetails detail = new LispEidTableDetails();
52 detail.authoritative = 1;
54 detail.eid = new byte[]{-64, -88, 2, 1};
55 detail.eidPrefixLen = 32;
57 detail.locatorSetIndex = 2;
61 validDump.lispEidTableDetails = ImmutableList.of(detail);
63 emptyParams = MappingsDumpParamsBuilder.newInstance().build();
65 MappingsDumpParamsBuilder.newInstance().setVni(2).setPrefixLength((byte) 32).setEidSet(QuantityType.ALL)
67 .setEidType(EidType.IPV4).setFilter(FilterType.LOCAL).build();
71 public void testExecuteDumpTimeout() throws Exception {
72 doThrowTimeoutExceptionWhen().lispEidTableDump(any());
74 getExecutor().executeDump(identifier, emptyParams);
75 } catch (Exception e) {
76 assertTrue(e instanceof ReadFailedException);
77 assertTrue(e.getCause() instanceof TimeoutException);
78 assertEquals(identifier, ((ReadFailedException) e).getFailedId());
81 fail("Test should have thrown exception");
85 public void testExecuteDumpHalted() throws Exception {
86 doThrowFailExceptionWhen().lispEidTableDump(any());
88 getExecutor().executeDump(identifier, emptyParams);
89 } catch (ReadFailedException e) {
90 assertTrue(e.getCause() instanceof VppCallbackException);
91 assertEquals(identifier, ((ReadFailedException) e).getFailedId());
94 fail("Test should have thrown ReadFailedException");
98 public void testExecuteDump() throws ReadFailedException {
99 doReturnResponseWhen(validDump).lispEidTableDump(any());
100 final LispEidTableDetailsReplyDump reply = getExecutor().executeDump(identifier, validParams);
101 verify(api, times(1)).lispEidTableDump(requestCaptor.capture());
103 final LispEidTableDump request = requestCaptor.getValue();
104 assertNotNull(request);
105 assertEquals(2, request.vni);
106 assertEquals(QuantityType.ALL.getValue(), request.eidSet);
107 assertArrayEquals(EID, request.eid);
108 assertEquals(EidType.IPV4.getValue(), request.eidType);
109 assertEquals(FilterType.LOCAL.getValue(), request.filter);
110 assertEquals(32, request.prefixLength);
112 assertNotNull(reply);
113 assertEquals(1, reply.lispEidTableDetails.size());
115 final LispEidTableDetails detail = reply.lispEidTableDetails.get(0);
117 assertNotNull(detail);
118 assertEquals(0, detail.action);
119 assertEquals(1, detail.authoritative);
120 assertEquals(4, detail.context);
121 assertArrayEquals(EID, detail.eid);
122 assertEquals(32, detail.eidPrefixLen);
123 assertEquals(1, detail.isLocal);
124 assertEquals(2, detail.locatorSetIndex);
125 assertEquals(7, detail.ttl);
126 assertEquals(2, detail.vni);
130 protected MappingsDumpExecutor initExecutor() {
131 return new MappingsDumpExecutor(api);