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.util.read.cache.exceptions.execution.DumpExecutionFailedException;
19 import io.fd.honeycomb.translate.util.read.cache.exceptions.execution.i.DumpCallFailedException;
20 import io.fd.honeycomb.translate.util.read.cache.exceptions.execution.i.DumpTimeoutException;
21 import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
22 import java.util.concurrent.TimeoutException;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.mockito.ArgumentCaptor;
26 import org.mockito.Captor;
27 import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
28 import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
29 import io.fd.vpp.jvpp.core.dto.LispEidTableDump;
31 public class MappingsDumpExecutorTest extends JvppDumpExecutorTest<MappingsDumpExecutor> {
33 private static final byte[] EID = {-64, -88, 2, 1};
36 private ArgumentCaptor<LispEidTableDump> requestCaptor;
38 private LispEidTableDetailsReplyDump validDump;
39 private MappingsDumpParams emptyParams;
40 private MappingsDumpParams validParams;
44 validDump = new LispEidTableDetailsReplyDump();
46 LispEidTableDetails detail = new LispEidTableDetails();
48 detail.authoritative = 1;
50 detail.eid = new byte[]{-64, -88, 2, 1};
51 detail.eidPrefixLen = 32;
53 detail.locatorSetIndex = 2;
57 validDump.lispEidTableDetails = ImmutableList.of(detail);
59 emptyParams = MappingsDumpParamsBuilder.newInstance().build();
61 MappingsDumpParamsBuilder.newInstance().setVni(2).setPrefixLength((byte) 32).setEidSet(QuantityType.ALL)
63 .setEidType(EidType.IPV4).setFilter(FilterType.LOCAL).build();
67 public void testExecuteDumpTimeout() throws Exception {
68 doThrowTimeoutExceptionWhen().lispEidTableDump(any());
70 getExecutor().executeDump(emptyParams);
71 } catch (Exception e) {
72 assertTrue(e instanceof DumpTimeoutException);
73 assertTrue(e.getCause() instanceof TimeoutException);
76 fail("Test should have thrown exception");
79 @Test(expected = DumpCallFailedException.class)
80 public void testExecuteDumpHalted() throws DumpExecutionFailedException {
81 doThrowFailExceptionWhen().lispEidTableDump(any());
82 getExecutor().executeDump(emptyParams);
86 public void testExecuteDump() throws DumpExecutionFailedException {
87 doReturnResponseWhen(validDump).lispEidTableDump(any());
88 final LispEidTableDetailsReplyDump reply = getExecutor().executeDump(validParams);
89 verify(api, times(1)).lispEidTableDump(requestCaptor.capture());
91 final LispEidTableDump request = requestCaptor.getValue();
92 assertNotNull(request);
93 assertEquals(2, request.vni);
94 assertEquals(QuantityType.ALL.getValue(), request.eidSet);
95 assertArrayEquals(EID, request.eid);
96 assertEquals(EidType.IPV4.getValue(), request.eidType);
97 assertEquals(FilterType.LOCAL.getValue(), request.filter);
98 assertEquals(32, request.prefixLength);
100 assertNotNull(reply);
101 assertEquals(1, reply.lispEidTableDetails.size());
103 final LispEidTableDetails detail = reply.lispEidTableDetails.get(0);
105 assertNotNull(detail);
106 assertEquals(0, detail.action);
107 assertEquals(1, detail.authoritative);
108 assertEquals(4, detail.context);
109 assertArrayEquals(EID, detail.eid);
110 assertEquals(32, detail.eidPrefixLen);
111 assertEquals(1, detail.isLocal);
112 assertEquals(2, detail.locatorSetIndex);
113 assertEquals(7, detail.ttl);
114 assertEquals(2, detail.vni);
118 protected MappingsDumpExecutor initExecutor() {
119 return new MappingsDumpExecutor(api);