ae6fd385fa09e178d8d636d9ad50f1f3f31f2f29
[groupbasedpolicy.git] / neutron-mapper / src / test / java / org / opendaylight / groupbasedpolicy / neutron / gbp / util / NeutronGbpIidFactoryTest.java
1 package org.opendaylight.groupbasedpolicy.neutron.gbp.util;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertNotNull;
6 import static org.junit.Assert.assertTrue;
7 import static org.mockito.Mockito.mock;
8
9 import java.util.Iterator;
10
11 import org.junit.Test;
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.UniqueId;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.GbpByNeutronMappings;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.NeutronByGbpMappings;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.EndpointsByPorts;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPort;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ExternalGatewaysAsL3Endpoints;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.PortsByEndpoints;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.external.gateways.as.l3.endpoints.ExternalGatewayAsL3Endpoint;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ports.by.endpoints.PortByEndpoint;
26 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
28
29 public class NeutronGbpIidFactoryTest {
30
31     @Test
32     public void endpointByPortIidTest() {
33         UniqueId portId = mock(UniqueId.class);
34         InstanceIdentifier<EndpointByPort> id = NeutronGbpIidFactory.endpointByPortIid(portId);
35         assertNotNull(id);
36         Class<?>[] expectedTypes = {Mappings.class, GbpByNeutronMappings.class, EndpointsByPorts.class,
37                 EndpointByPort.class};
38         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
39         assertEquals(EndpointByPort.class, id.getTargetType());
40         assertFalse(id.isWildcarded());
41         assertEquals(portId, id.firstKeyOf(EndpointByPort.class).getPortId());
42     }
43
44     @Test
45     public void portByEndpointIidTest() {
46         L2BridgeDomainId l2BdId = mock(L2BridgeDomainId.class);
47         MacAddress mac = mock(MacAddress.class);
48         InstanceIdentifier<PortByEndpoint> id = NeutronGbpIidFactory.portByEndpointIid(l2BdId, mac);
49         assertNotNull(id);
50         Class<?>[] expectedTypes = {Mappings.class, NeutronByGbpMappings.class, PortsByEndpoints.class,
51                 PortByEndpoint.class};
52         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
53         assertEquals(PortByEndpoint.class, id.getTargetType());
54         assertFalse(id.isWildcarded());
55         assertEquals(l2BdId, id.firstKeyOf(PortByEndpoint.class).getL2Context());
56         assertEquals(mac, id.firstKeyOf(PortByEndpoint.class).getMacAddress());
57     }
58
59     @Test
60     public void externalGatewayAsL3EndpointTest() {
61         L3ContextId l3Context = mock(L3ContextId.class);
62         IpAddress ipAddress = mock(IpAddress.class);
63         InstanceIdentifier<ExternalGatewayAsL3Endpoint> id = NeutronGbpIidFactory.externalGatewayAsL3Endpoint(
64                 l3Context, ipAddress);
65         assertNotNull(id);
66         Class<?>[] expectedTypes = {Mappings.class, NeutronByGbpMappings.class, ExternalGatewaysAsL3Endpoints.class,
67                 ExternalGatewayAsL3Endpoint.class};
68         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
69         assertEquals(ExternalGatewayAsL3Endpoint.class, id.getTargetType());
70         assertFalse(id.isWildcarded());
71         assertEquals(l3Context, id.firstKeyOf(ExternalGatewayAsL3Endpoint.class)
72             .getL3Context());
73         assertEquals(ipAddress, id.firstKeyOf(ExternalGatewayAsL3Endpoint.class)
74             .getIpAddress());
75     }
76
77     private static void assertPathArgumentTypes(Iterable<PathArgument> pathArguments, Class<?>[] expectedTypes) {
78         assertNotNull(pathArguments);
79         Iterator<PathArgument> it = pathArguments.iterator();
80         for (int i = 0; i < expectedTypes.length; ++i) {
81             assertTrue("Next path argument expected.", it.hasNext());
82             assertEquals("Unexpected path argument type.", expectedTypes[i], it.next().getType());
83         }
84     }
85
86 }