Bug 3700 - UT GBP - 11 - neutron/ovsdb
[groupbasedpolicy.git] / neutron-ovsdb / src / test / java / org / opendaylight / groupbasedpolicy / neutron / ovsdb / util / NeutronOvsdbIidFactoryTest.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.groupbasedpolicy.neutron.ovsdb.util;
10
11 import java.util.Iterator;
12
13 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
14 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
15 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
16 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.UniqueId;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.FloatingIpAssociationMappings;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.GbpByNeutronMappings;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.NeutronByGbpMappings;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.InternalPortsByFloatingIpPorts;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.internal.ports.by.floating.ip.ports.InternalPortByFloatingIpPort;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.internal.ports.by.floating.ip.ports.InternalPortByFloatingIpPortKey;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.EndpointsByFloatingIpPorts;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.EndpointsByPorts;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.floating.ip.ports.EndpointByFloatingIpPort;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPort;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPortKey;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ExternalGatewaysAsL3Endpoints;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.external.gateways.as.l3.endpoints.ExternalGatewayAsL3Endpoint;
33 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
34 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
35 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
36
37 import static org.junit.Assert.assertEquals;
38 import static org.junit.Assert.assertFalse;
39 import static org.junit.Assert.assertNotNull;
40 import static org.junit.Assert.assertTrue;
41
42 import org.junit.Test;
43
44 public class NeutronOvsdbIidFactoryTest {
45
46     @Test
47     public void ovsdbNodeAugmentationIidTest() {
48         final String ovsdbTopologyId = "topologyId";
49         InstanceIdentifier<OvsdbNodeAugmentation> id = NeutronOvsdbIidFactory.ovsdbNodeAugmentationIid(new TopologyId(ovsdbTopologyId));
50         assertNotNull(id);
51         Class<?>[] expectedTypes = {NetworkTopology.class, Topology.class, Node.class, OvsdbNodeAugmentation.class};
52         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
53         assertEquals(OvsdbNodeAugmentation.class, id.getTargetType());
54         assertTrue(id.isWildcarded());
55         assertEquals(ovsdbTopologyId, id.firstKeyOf(Topology.class, TopologyKey.class).getTopologyId().getValue());
56     }
57
58     @Test
59     public void neutronGbpExternalGatewayIidWildcardTest() {
60         InstanceIdentifier<ExternalGatewayAsL3Endpoint> id = NeutronOvsdbIidFactory.neutronGbpExternalGatewayIidWildcard();
61         assertNotNull(id);
62         Class<?>[] expectedTypes = {Mappings.class, NeutronByGbpMappings.class,
63                 ExternalGatewaysAsL3Endpoints.class, ExternalGatewayAsL3Endpoint.class};
64         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
65         assertEquals(ExternalGatewayAsL3Endpoint.class, id.getTargetType());
66         assertTrue(id.isWildcarded());
67     }
68
69     @Test
70     public void neutronGbpFloatingIpIidWildcardTest() {
71         InstanceIdentifier<EndpointByFloatingIpPort> id = NeutronOvsdbIidFactory.neutronGbpFloatingIpIidWildcard();
72         assertNotNull(id);
73         Class<?>[] expectedTypes = {Mappings.class, GbpByNeutronMappings.class,
74                 EndpointsByFloatingIpPorts.class, EndpointByFloatingIpPort.class};
75         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
76         assertEquals(EndpointByFloatingIpPort.class, id.getTargetType());
77         assertTrue(id.isWildcarded());
78     }
79
80     @Test
81     public void endpointByPortIidTest() {
82         final String portId = "e0bb2cf8-8855-434e-839b-d2e59e045218";
83         InstanceIdentifier<EndpointByPort> id = NeutronOvsdbIidFactory.endpointByPortIid(new UniqueId(portId));
84         assertNotNull(id);
85         Class<?>[] expectedTypes = {Mappings.class, GbpByNeutronMappings.class,
86                 EndpointsByPorts.class, EndpointByPort.class};
87         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
88         assertEquals(EndpointByPort.class, id.getTargetType());
89         assertFalse(id.isWildcarded());
90         assertEquals(portId, id.firstKeyOf(EndpointByPort.class, EndpointByPortKey.class).getPortId().getValue());
91     }
92
93     @Test
94     public void internalPortByFloatingIpIidTest() {
95         final String floatingIpPortId = "02b9c2ed-8626-472b-8f58-808539cd62a7";
96         InstanceIdentifier<InternalPortByFloatingIpPort> id = NeutronOvsdbIidFactory.internalPortByFloatingIpIid(new UniqueId(floatingIpPortId));
97         assertNotNull(id);
98         Class<?>[] expectedTypes = {Mappings.class, FloatingIpAssociationMappings.class,
99                 InternalPortsByFloatingIpPorts.class, InternalPortByFloatingIpPort.class};
100         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
101         assertEquals(InternalPortByFloatingIpPort.class, id.getTargetType());
102         assertFalse(id.isWildcarded());
103         assertEquals(floatingIpPortId, id.firstKeyOf(InternalPortByFloatingIpPort.class, InternalPortByFloatingIpPortKey.class).getFloatingIpPortId().getValue());
104     }
105
106     @Test
107     public void neutronGbpInternalPortByFloatingIpIidWildcardTest() {
108         InstanceIdentifier<InternalPortByFloatingIpPort> id = NeutronOvsdbIidFactory.neutronGbpInternalPortByFloatingIpIidWildcard();
109         assertNotNull(id);
110         Class<?>[] expectedTypes = {Mappings.class, FloatingIpAssociationMappings.class,
111                 InternalPortsByFloatingIpPorts.class, InternalPortByFloatingIpPort.class};
112         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
113         assertEquals(InternalPortByFloatingIpPort.class, id.getTargetType());
114         assertTrue(id.isWildcarded());
115     }
116
117     @Test
118     public void neutronGbpMappingsIidWildcardTest() {
119         InstanceIdentifier<NeutronByGbpMappings> id = NeutronOvsdbIidFactory.neutronGbpMappingsIidWildcard();
120         assertNotNull(id);
121         Class<?>[] expectedTypes = {Mappings.class, NeutronByGbpMappings.class};
122         assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
123         assertEquals(NeutronByGbpMappings.class, id.getTargetType());
124         assertFalse(id.isWildcarded());
125     }
126
127     private static void assertPathArgumentTypes(Iterable<PathArgument> pathArguments, Class<?>[] expectedTypes) {
128         assertNotNull(pathArguments);
129         Iterator<PathArgument> it = pathArguments.iterator();
130         for (int i = 0; i < expectedTypes.length; ++i) {
131             assertTrue("Next path argument expected.", it.hasNext());
132             assertEquals("Unexpected path argument type.", expectedTypes[i] , it.next().getType());
133         }
134     }
135 }