1 package io.fd.honeycomb.lisp.translate.read;
3 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType.IPV4;
4 import static org.junit.Assert.assertEquals;
5 import static org.junit.Assert.assertNotNull;
6 import static org.mockito.Matchers.any;
7 import static org.mockito.Mockito.when;
9 import com.google.common.collect.ImmutableList;
10 import io.fd.honeycomb.lisp.context.util.EidMappingContext;
11 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
12 import io.fd.honeycomb.lisp.translate.util.EidTranslator;
13 import io.fd.honeycomb.translate.MappingContext;
14 import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
15 import io.fd.honeycomb.translate.vpp.util.NamingContext;
16 import io.fd.honeycomb.vpp.test.read.ListReaderCustomizerTest;
17 import java.util.List;
18 import org.junit.Test;
19 import org.mockito.Mock;
20 import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.eid.mapping.context.rev160801.contexts.eid.mapping.context.mappings.mapping.EidBuilder;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Builder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.MappingId;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.LocalMappings;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.LocalMappingsBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMapping;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMappingBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMappingKey;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.local.mapping.Eid;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.EidTable;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.VniTable;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.VniTableKey;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
36 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
37 import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
38 import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
40 public class LocalMappingCustomizerTest extends
41 ListReaderCustomizerTest<LocalMapping, LocalMappingKey, LocalMappingBuilder> implements EidTranslator {
43 private static final Ipv4
44 EID_ADDRESS = new Ipv4Builder().setIpv4(new Ipv4Address("192.168.2.1")).build();
47 private EidMappingContext localMappingContext;
49 private InstanceIdentifier<LocalMapping> emptyIdentifier;
50 private InstanceIdentifier<LocalMapping> validIdentifier;
52 public LocalMappingCustomizerTest() {
53 super(LocalMapping.class, LocalMappingsBuilder.class);
58 emptyIdentifier = InstanceIdentifier.create(EidTable.class)
59 .child(VniTable.class, new VniTableKey(12L))
60 .child(VrfSubtable.class)
61 .child(LocalMappings.class)
62 .child(LocalMapping.class);
64 validIdentifier = InstanceIdentifier.create(EidTable.class)
65 .child(VniTable.class, new VniTableKey(12L))
66 .child(VrfSubtable.class)
67 .child(LocalMappings.class)
68 .child(LocalMapping.class, new LocalMappingKey(new MappingId("local-mapping")));
74 private void defineDumpData() {
75 LispEidTableDetailsReplyDump replyDump = new LispEidTableDetailsReplyDump();
76 LispEidTableDetails detail = new LispEidTableDetails();
78 detail.authoritative = 1;
80 detail.eid = new byte[]{-64, -88, 2, 1};
81 detail.eidPrefixLen = 32;
82 detail.eidType = (byte) IPV4.getValue();
84 detail.locatorSetIndex = 1;
88 replyDump.lispEidTableDetails = ImmutableList.of(detail);
89 when(api.lispEidTableDump(any())).thenReturn(future(replyDump));
92 private void defineMappings() {
95 when(localMappingContext.getId(any(Eid.class), any(MappingContext.class)))
96 .thenReturn(new MappingId("local-mapping"));
97 when(localMappingContext.containsEid(new MappingId("local-mapping"), mappingContext)).thenReturn(true);
98 when(localMappingContext.getEid(new MappingId("local-mapping"), mappingContext)).thenReturn(new EidBuilder()
99 .setAddress(EID_ADDRESS).build());
100 //naming context for locator
101 defineMapping(mappingContext, "loc-set", 1, "locator-set-context");
105 public void readCurrentAttributes() throws Exception {
106 LocalMappingBuilder builder = new LocalMappingBuilder();
107 getCustomizer().readCurrentAttributes(validIdentifier, builder, ctx);
109 final LocalMapping mapping = builder.build();
111 assertNotNull(mapping);
112 assertEquals(true, compareAddresses(EID_ADDRESS, mapping.getEid().getAddress()));
113 assertEquals("loc-set", mapping.getLocatorSet());
117 public void getAllIds() throws Exception {
118 final List<LocalMappingKey> keys = getCustomizer().getAllIds(emptyIdentifier, ctx);
120 assertEquals(1, keys.size());
121 assertEquals("local-mapping", keys.get(0).getId().getValue());
125 protected ReaderCustomizer<LocalMapping, LocalMappingBuilder> initCustomizer() {
126 return new LocalMappingCustomizer(api, new NamingContext("loc", "locator-set-context"), localMappingContext);