VPP-378: update jvpp package names
[honeycomb.git] / lisp / lisp2vpp / src / test / java / io / fd / honeycomb / lisp / translate / read / dump / executor / MappingsDumpExecutorTest.java
1 package io.fd.honeycomb.lisp.translate.read.dump.executor;
2
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;
15
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;
30
31 public class MappingsDumpExecutorTest extends JvppDumpExecutorTest<MappingsDumpExecutor> {
32
33     private static final byte[] EID = {-64, -88, 2, 1};
34
35     @Captor
36     private ArgumentCaptor<LispEidTableDump> requestCaptor;
37
38     private LispEidTableDetailsReplyDump validDump;
39     private MappingsDumpParams emptyParams;
40     private MappingsDumpParams validParams;
41
42     @Before
43     public void init() {
44         validDump = new LispEidTableDetailsReplyDump();
45
46         LispEidTableDetails detail = new LispEidTableDetails();
47         detail.action = 0;
48         detail.authoritative = 1;
49         detail.context = 4;
50         detail.eid = new byte[]{-64, -88, 2, 1};
51         detail.eidPrefixLen = 32;
52         detail.isLocal = 1;
53         detail.locatorSetIndex = 2;
54         detail.ttl = 7;
55         detail.vni = 2;
56
57         validDump.lispEidTableDetails = ImmutableList.of(detail);
58
59         emptyParams = MappingsDumpParamsBuilder.newInstance().build();
60         validParams =
61                 MappingsDumpParamsBuilder.newInstance().setVni(2).setPrefixLength((byte) 32).setEidSet(QuantityType.ALL)
62                         .setEid(EID)
63                         .setEidType(EidType.IPV4).setFilter(FilterType.LOCAL).build();
64     }
65
66     @Test
67     public void testExecuteDumpTimeout() throws Exception {
68         doThrowTimeoutExceptionWhen().lispEidTableDump(any());
69         try {
70             getExecutor().executeDump(emptyParams);
71         } catch (Exception e) {
72             assertTrue(e instanceof DumpTimeoutException);
73             assertTrue(e.getCause() instanceof TimeoutException);
74             return;
75         }
76         fail("Test should have thrown exception");
77     }
78
79     @Test(expected = DumpCallFailedException.class)
80     public void testExecuteDumpHalted() throws DumpExecutionFailedException {
81         doThrowFailExceptionWhen().lispEidTableDump(any());
82         getExecutor().executeDump(emptyParams);
83     }
84
85     @Test
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());
90
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);
99
100         assertNotNull(reply);
101         assertEquals(1, reply.lispEidTableDetails.size());
102
103         final LispEidTableDetails detail = reply.lispEidTableDetails.get(0);
104
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);
115     }
116
117     @Override
118     protected MappingsDumpExecutor initExecutor() {
119         return new MappingsDumpExecutor(api);
120     }
121 }