2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.groupbasedpolicy.neutron.ovsdb.util;
11 import java.util.Iterator;
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;
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;
42 import org.junit.Test;
44 public class NeutronOvsdbIidFactoryTest {
47 public void ovsdbNodeAugmentationIidTest() {
48 final String ovsdbTopologyId = "topologyId";
49 InstanceIdentifier<OvsdbNodeAugmentation> id = NeutronOvsdbIidFactory.ovsdbNodeAugmentationIid(new TopologyId(ovsdbTopologyId));
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());
59 public void neutronGbpExternalGatewayIidWildcardTest() {
60 InstanceIdentifier<ExternalGatewayAsL3Endpoint> id = NeutronOvsdbIidFactory.neutronGbpExternalGatewayIidWildcard();
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());
70 public void neutronGbpFloatingIpIidWildcardTest() {
71 InstanceIdentifier<EndpointByFloatingIpPort> id = NeutronOvsdbIidFactory.neutronGbpFloatingIpIidWildcard();
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());
81 public void endpointByPortIidTest() {
82 final String portId = "e0bb2cf8-8855-434e-839b-d2e59e045218";
83 InstanceIdentifier<EndpointByPort> id = NeutronOvsdbIidFactory.endpointByPortIid(new UniqueId(portId));
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());
94 public void internalPortByFloatingIpIidTest() {
95 final String floatingIpPortId = "02b9c2ed-8626-472b-8f58-808539cd62a7";
96 InstanceIdentifier<InternalPortByFloatingIpPort> id = NeutronOvsdbIidFactory.internalPortByFloatingIpIid(new UniqueId(floatingIpPortId));
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());
107 public void neutronGbpInternalPortByFloatingIpIidWildcardTest() {
108 InstanceIdentifier<InternalPortByFloatingIpPort> id = NeutronOvsdbIidFactory.neutronGbpInternalPortByFloatingIpIidWildcard();
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());
118 public void neutronGbpMappingsIidWildcardTest() {
119 InstanceIdentifier<NeutronByGbpMappings> id = NeutronOvsdbIidFactory.neutronGbpMappingsIidWildcard();
121 Class<?>[] expectedTypes = {Mappings.class, NeutronByGbpMappings.class};
122 assertPathArgumentTypes(id.getPathArguments(), expectedTypes);
123 assertEquals(NeutronByGbpMappings.class, id.getTargetType());
124 assertFalse(id.isWildcarded());
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());