HONEYCOMB-58 - Routing Api
[honeycomb.git] / lisp / lisp2vpp / src / test / java / io / fd / honeycomb / lisp / translate / read / AdjacencyCustomizerTest.java
index 773c404..09d4d27 100644 (file)
 
 package io.fd.honeycomb.lisp.translate.read;
 
-import static org.junit.Assert.assertTrue;
+import static io.fd.honeycomb.lisp.translate.AdjacencyData.ADDRESS_ONE;
+import static io.fd.honeycomb.lisp.translate.AdjacencyData.ADDRESS_THREE;
+import static io.fd.honeycomb.lisp.translate.AdjacencyData.LOCAL_EID_ONE;
+import static io.fd.honeycomb.lisp.translate.AdjacencyData.LOCAL_EID_TWO;
+import static io.fd.honeycomb.lisp.translate.AdjacencyData.REMOTE_EID_ONE;
+import static io.fd.honeycomb.lisp.translate.AdjacencyData.REMOTE_EID_TWO;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.hasSize;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.when;
 
-import io.fd.honeycomb.translate.read.ReadFailedException;
+import io.fd.honeycomb.lisp.context.util.AdjacenciesMappingContext;
+import io.fd.honeycomb.lisp.context.util.EidMappingContext;
+import io.fd.honeycomb.lisp.translate.util.EidMetadataProvider;
+import io.fd.honeycomb.lisp.util.AdjacencyMappingContextTestHelper;
+import io.fd.honeycomb.lisp.util.EidMappingContextHelper;
 import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
+import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
 import io.fd.honeycomb.vpp.test.read.ListReaderCustomizerTest;
+import io.fd.vpp.jvpp.core.dto.LispAdjacenciesGetReply;
+import io.fd.vpp.jvpp.core.types.LispAdjacency;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.MappingId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.adjacencies.grouping.Adjacencies;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.adjacencies.grouping.AdjacenciesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.adjacencies.grouping.adjacencies.Adjacency;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.adjacencies.grouping.adjacencies.AdjacencyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.adjacencies.grouping.adjacencies.AdjacencyKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.RemoteMappings;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.RemoteMapping;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.RemoteMappingKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.EidTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.VniTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.VniTableKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 
-public class AdjacencyCustomizerTest extends ListReaderCustomizerTest<Adjacency, AdjacencyKey, AdjacencyBuilder> {
+public class AdjacencyCustomizerTest
+        extends ListReaderCustomizerTest<Adjacency, AdjacencyKey, AdjacencyBuilder>
+        implements ByteDataTranslator, EidMetadataProvider, EidMappingContextHelper, AdjacencyMappingContextTestHelper {
 
     private InstanceIdentifier<Adjacency> identifier;
 
@@ -40,21 +71,75 @@ public class AdjacencyCustomizerTest extends ListReaderCustomizerTest<Adjacency,
 
     @Before
     public void init() {
-        identifier = InstanceIdentifier.create(Adjacency.class);
+        identifier = InstanceIdentifier.create(EidTable.class)
+                .child(VniTable.class, new VniTableKey(2L))
+                .child(BridgeDomainSubtable.class)
+                .child(RemoteMappings.class)
+                .child(RemoteMapping.class, new RemoteMappingKey(new MappingId("remote-mapping")))
+                .child(Adjacencies.class)
+                .child(Adjacency.class, new AdjacencyKey("adj-one"));
+
+
+        mockApi();
+        defineEidMapping(mappingContext, LOCAL_EID_ONE, new MappingId("local-eid-one"), "local-mapping-context");
+        defineEidMapping(mappingContext, LOCAL_EID_TWO, new MappingId("local-eid-two"), "local-mapping-context");
+        defineEidMapping(mappingContext, REMOTE_EID_ONE, new MappingId("remote-eid-one"), "remote-mapping-context");
+        defineEidMapping(mappingContext, REMOTE_EID_TWO, new MappingId("remote-eid-two"), "remote-mapping-context");
+
+        defineAdjacencyMapping(mappingContext, "local-eid-one", "remote-eid-one", "adj-one",
+                "adjacencies-mapping-context");
+        defineAdjacencyMapping(mappingContext, "local-eid-two", "remote-eid-two", "adj-two",
+                "adjacencies-mapping-context");
+        mockApi();
     }
 
     @Test
     public void getAllIds() throws Exception {
-        assertTrue(getCustomizer().getAllIds(identifier, ctx).isEmpty());
+        final List<AdjacencyKey> keys = getCustomizer().getAllIds(identifier, ctx);
+
+        assertThat(keys, hasSize(2));
+        assertThat(keys, contains(new AdjacencyKey("adj-one"), new AdjacencyKey("adj-two")));
     }
 
-    @Test(expected = ReadFailedException.class)
+    @Test
     public void readCurrentAttributes() throws Exception {
-        getCustomizer().readCurrentAttributes(identifier, new AdjacencyBuilder(), ctx);
+        final AdjacencyBuilder builder = new AdjacencyBuilder();
+        getCustomizer().readCurrentAttributes(identifier, builder, ctx);
+
+        assertEquals("adj-one", builder.getId());
+        assertEquals(new AdjacencyKey("adj-one"), builder.getKey());
+        assertEquals(ADDRESS_ONE.getValue(), Ipv4.class.cast(builder.getLocalEid().getAddress()).getIpv4().getValue());
+        assertEquals(ADDRESS_THREE.getValue(),
+                Ipv4.class.cast(builder.getRemoteEid().getAddress()).getIpv4().getValue());
     }
 
     @Override
     protected ReaderCustomizer<Adjacency, AdjacencyBuilder> initCustomizer() {
-        return new AdjacencyCustomizer(api);
+        return new AdjacencyCustomizer(api, new EidMappingContext("local-mapping-context"),
+                new EidMappingContext("remote-mapping-context"),
+                new AdjacenciesMappingContext("adjacencies-mapping-context"));
+    }
+
+
+    private void mockApi() {
+        LispAdjacency adjacencyOne = new LispAdjacency();
+        adjacencyOne.eidType = 0;
+        adjacencyOne.leid = new byte[]{-64, -88, 2, 1};
+        adjacencyOne.leidPrefixLen = 32;
+        adjacencyOne.reid = new byte[]{-64, -88, 2, 3};
+        adjacencyOne.reidPrefixLen = 32;
+
+
+        LispAdjacency adjacencyTwo = new LispAdjacency();
+        adjacencyTwo.eidType = 0;
+        adjacencyTwo.leid = new byte[]{-64, -88, 2, 2};
+        adjacencyTwo.leidPrefixLen = 32;
+        adjacencyTwo.reid = new byte[]{-64, -88, 2, 4};
+        adjacencyTwo.reidPrefixLen = 32;
+
+        LispAdjacenciesGetReply reply = new LispAdjacenciesGetReply();
+        reply.adjacencies = new LispAdjacency[]{adjacencyOne, adjacencyTwo};
+
+        when(api.lispAdjacenciesGet(any())).thenReturn(future(reply));
     }
 }
\ No newline at end of file