Introducing new API in neutron-mapper
[groupbasedpolicy.git] / groupbasedpolicy / src / test / java / org / opendaylight / groupbasedpolicy / util / IidFactoryTest.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.util;
10
11 import static org.mockito.Mockito.mock;
12
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.mockito.Mockito;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoint.locations.AddressEndpointLocation;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoint.locations.AddressEndpointLocationKey;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoint.locations.ContainmentEndpointLocation;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoint.locations.ContainmentEndpointLocationKey;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpoint;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointKey;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocation;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.relative.location.relative.locations.ExternalLocation;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.relative.location.relative.locations.ExternalLocationKey;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.relative.location.relative.locations.InternalLocation;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.relative.location.relative.locations.InternalLocationKey;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionName;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClauseName;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2FloodDomainId;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.UniqueId;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.Endpoints;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointKey;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.LocationProvider;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderAddressEndpointLocation;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.IpPrefixType;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.ForwardingByTenant;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.ForwardingContext;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinition;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ClassifierDefinition;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ExternalImplicitGroup;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.Renderers;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.Renderer;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.SupportedActionDefinition;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.SupportedClassifierDefinition;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.interests.followed.tenants.FollowedTenant;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.interests.followed.tenants.followed.tenant.FollowedEndpointGroup;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
92 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
93
94 public class IidFactoryTest {
95
96     private final String LOCATION_PROVIDER_NAME = "location-provider";
97     private final String IP_ADDRESS = "192.68.50.71";
98     private final String IP_PREFIX = "192.168.50.0/24";
99     private final String L3_CONTEXT_ID = "l3Context";
100     private final String CONNECTOR = "connector";
101
102     private TenantId tenantId;
103     private EndpointGroupId epgId;
104     private ContractId contractId;
105     private SubjectName subjectName;
106     private RuleName ruleName;
107     private RendererName rendererName;
108
109     private InstanceIdentifier<Node> nodeIid = InstanceIdentifier.builder(Nodes.class)
110             .child(Node.class, new NodeKey(new NodeId("node"))).build();
111     private InstanceIdentifier<NodeConnector> connectorIid = InstanceIdentifier.builder(Nodes.class)
112             .child(Node.class, new NodeKey(new NodeId("node")))
113             .child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId("connector")))
114             .build();
115
116     @Before
117     public void initialise() {
118         tenantId = mock(TenantId.class);
119         epgId = mock(EndpointGroupId.class);
120         contractId = mock(ContractId.class);
121         subjectName = mock(SubjectName.class);
122         ruleName = mock(RuleName.class);
123         rendererName = mock(RendererName.class);
124     }
125
126     @Test
127     public void testTenantId() {
128         InstanceIdentifier<Tenant> identifier = IidFactory.tenantIid(tenantId);
129         Assert.assertEquals(tenantId, InstanceIdentifier.keyOf(identifier).getId());
130     }
131
132     @Test
133     public void testEndpointGroupIid() {
134         InstanceIdentifier<EndpointGroup> identifier = IidFactory.endpointGroupIid(tenantId, epgId);
135         Assert.assertEquals(epgId, InstanceIdentifier.keyOf(identifier).getId());
136         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
137     }
138
139     @Test
140     public void testContractIid() {
141         InstanceIdentifier<Contract> identifier = IidFactory.contractIid(tenantId, contractId);
142         Assert.assertEquals(contractId, InstanceIdentifier.keyOf(identifier).getId());
143         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
144     }
145
146     @Test
147     public void testContractWildcardIid() {
148         InstanceIdentifier<Contract> identifier = IidFactory.contractWildcardIid(tenantId);
149         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
150     }
151
152     @Test
153     public void testSubjectIid() {
154         SubjectName subjectName = mock(SubjectName.class);
155         InstanceIdentifier<Subject> identifier = IidFactory.subjectIid(tenantId, contractId, subjectName);
156         Assert.assertEquals(subjectName, InstanceIdentifier.keyOf(identifier).getName());
157         Assert.assertEquals(contractId, identifier.firstKeyOf(Contract.class).getId());
158         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
159     }
160
161     @Test
162     public void testProviderNamedSelectorIid() {
163         SelectorName providerSelectorName = mock(SelectorName.class);
164         InstanceIdentifier<ProviderNamedSelector> identifier = IidFactory.providerNamedSelectorIid(tenantId, epgId,
165                 providerSelectorName);
166         Assert.assertEquals(providerSelectorName, InstanceIdentifier.keyOf(identifier).getName());
167         Assert.assertEquals(epgId, identifier.firstKeyOf(EndpointGroup.class).getId());
168         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
169     }
170
171     @Test
172     public void testConsumerNamedSelectorIid() {
173         SelectorName consumerSelectorName = mock(SelectorName.class);
174         InstanceIdentifier<ConsumerNamedSelector> identifier = IidFactory.consumerNamedSelectorIid(tenantId, epgId,
175                 consumerSelectorName);
176         Assert.assertEquals(consumerSelectorName, InstanceIdentifier.keyOf(identifier).getName());
177         Assert.assertEquals(epgId, identifier.firstKeyOf(EndpointGroup.class).getId());
178         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
179     }
180
181     @Test
182     public void testClauseIid() {
183         ClauseName clauseName = mock(ClauseName.class);
184         InstanceIdentifier<Clause> identifier = IidFactory.clauseIid(tenantId, contractId, clauseName);
185         Assert.assertEquals(clauseName, InstanceIdentifier.keyOf(identifier).getName());
186         Assert.assertEquals(contractId, identifier.firstKeyOf(Contract.class).getId());
187         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
188     }
189
190     @Test
191     public void testRuleId() {
192         InstanceIdentifier<Rule> identifier = IidFactory.ruleIid(tenantId, contractId, subjectName, ruleName);
193         Assert.assertEquals(ruleName, InstanceIdentifier.keyOf(identifier).getName());
194         Assert.assertEquals(subjectName, identifier.firstKeyOf(Subject.class).getName());
195         Assert.assertEquals(contractId, identifier.firstKeyOf(Contract.class).getId());
196         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
197     }
198
199     @Test
200     public void testActionInstanceIid() {
201         ActionName actionName = mock(ActionName.class);
202         InstanceIdentifier<ActionInstance> identifier = IidFactory.actionInstanceIid(tenantId, actionName);
203         Assert.assertEquals(actionName, InstanceIdentifier.keyOf(identifier).getName());
204         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
205     }
206
207     @Test
208     public void testClassifierInstanceIid() {
209         ClassifierName classifierName = mock(ClassifierName.class);
210         InstanceIdentifier<ClassifierInstance> identifier = IidFactory.classifierInstanceIid(tenantId, classifierName);
211         Assert.assertEquals(classifierName, InstanceIdentifier.keyOf(identifier).getName());
212         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
213     }
214
215     @Test
216     public void testClassifierRefIid() {
217         ClassifierName classifierRefName = mock(ClassifierName.class);
218         InstanceIdentifier<ClassifierRef> identifier = IidFactory.classifierRefIid(tenantId, contractId, subjectName,
219                 ruleName, classifierRefName);
220         Assert.assertEquals(classifierRefName, InstanceIdentifier.keyOf(identifier).getName());
221         Assert.assertEquals(ruleName, identifier.firstKeyOf(Rule.class).getName());
222         Assert.assertEquals(subjectName, identifier.firstKeyOf(Subject.class).getName());
223         Assert.assertEquals(contractId, identifier.firstKeyOf(Contract.class).getId());
224         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
225     }
226
227     @Test
228     public void testL2FloodDomainIid() {
229         ContextId id = mock(ContextId.class);
230         InstanceIdentifier<ForwardingContext> identifier = IidFactory.l2FloodDomainIid(tenantId, id);
231         Assert.assertEquals(id, InstanceIdentifier.keyOf(identifier).getContextId());
232         Assert.assertEquals(tenantId, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
233     }
234
235     @Test
236     public void testL2FloodDomainIid_tenantApi() {
237         L2FloodDomainId l2FloodDomainId = mock(L2FloodDomainId.class);
238         InstanceIdentifier<L2FloodDomain> identifier = IidFactory.l2FloodDomainIid(tenantId, l2FloodDomainId);
239         Assert.assertEquals(l2FloodDomainId, InstanceIdentifier.keyOf(identifier).getId());
240         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
241     }
242
243     @Test
244     public void testL2BridgeDomainIid() {
245         ContextId id = mock(ContextId.class);
246         InstanceIdentifier<ForwardingContext> identifier = IidFactory.l2BridgeDomainIid(tenantId, id);
247         Assert.assertEquals(id, InstanceIdentifier.keyOf(identifier).getContextId());
248         Assert.assertEquals(tenantId, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
249     }
250
251     @Test
252     public void testL2BridgeDomainIid_tenantApi() {
253         L2BridgeDomainId l2BridgeDomainId = mock(L2BridgeDomainId.class);
254         InstanceIdentifier<L2BridgeDomain> identifier = IidFactory.l2BridgeDomainIid(tenantId, l2BridgeDomainId);
255         Assert.assertEquals(l2BridgeDomainId, InstanceIdentifier.keyOf(identifier).getId());
256         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
257     }
258
259     @Test
260     public void testL3ContextIid() {
261         ContextId id = mock(ContextId.class);
262         InstanceIdentifier<ForwardingContext> identifier = IidFactory.l3ContextIid(tenantId, id);
263         Assert.assertEquals(id, InstanceIdentifier.keyOf(identifier).getContextId());
264         Assert.assertEquals(tenantId, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
265     }
266
267     @Test
268     public void testL3ContextIid_tenantApi() {
269         L3ContextId l3ContextId = mock(L3ContextId.class);
270         InstanceIdentifier<L3Context> identifier = IidFactory.l3ContextIid(tenantId, l3ContextId);
271         Assert.assertEquals(l3ContextId, InstanceIdentifier.keyOf(identifier).getId());
272         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
273     }
274
275     @Test
276     public void testEndpointIid() {
277         L2BridgeDomainId l2Context = mock(L2BridgeDomainId.class);
278         MacAddress macAddress = mock(MacAddress.class);
279         InstanceIdentifier<Endpoint> identifier = IidFactory.endpointIid(l2Context, macAddress);
280         Assert.assertEquals(l2Context, InstanceIdentifier.keyOf(identifier).getL2Context());
281         Assert.assertEquals(macAddress, InstanceIdentifier.keyOf(identifier).getMacAddress());
282
283         EndpointKey key = mock(EndpointKey.class);
284         identifier = IidFactory.endpointIid(key);
285         Assert.assertEquals(key, identifier.firstKeyOf(Endpoint.class));
286     }
287
288     @Test
289     public void testL3EndpointIid() {
290         L3ContextId l3ContextId = mock(L3ContextId.class);
291         IpAddress ipAddress = mock(IpAddress.class);
292         InstanceIdentifier<EndpointL3> identifier = IidFactory.l3EndpointIid(l3ContextId, ipAddress);
293         Assert.assertEquals(l3ContextId, InstanceIdentifier.keyOf(identifier).getL3Context());
294         Assert.assertEquals(ipAddress, InstanceIdentifier.keyOf(identifier).getIpAddress());
295     }
296
297     @Test
298     public void testL3EndpointIidWildcard() {
299         InstanceIdentifier<EndpointL3> identifier = IidFactory.l3EndpointsIidWildcard();
300         Assert.assertNotNull(identifier);
301     }
302
303     @Test
304     public void testEndpointL3PrefixIid() {
305         L3ContextId l3Context = mock(L3ContextId.class);
306         IpPrefix ipPrefix = mock(IpPrefix.class);
307         InstanceIdentifier<EndpointL3Prefix> identifier = IidFactory.endpointL3PrefixIid(l3Context, ipPrefix);
308         Assert.assertEquals(l3Context, InstanceIdentifier.keyOf(identifier).getL3Context());
309         Assert.assertEquals(ipPrefix, InstanceIdentifier.keyOf(identifier).getIpPrefix());
310     }
311
312     @Test
313     public void testEndpointIidWildcard() {
314         InstanceIdentifier<Endpoints> identifier = IidFactory.endpointsIidWildcard();
315         Assert.assertNotNull(identifier);
316     }
317
318     @Test
319     public void testSubnetIid() {
320         NetworkDomainId id = mock(NetworkDomainId.class);
321         InstanceIdentifier<NetworkDomain> identifier = IidFactory.subnetIid(tenantId, id);
322         Assert.assertEquals(tenantId, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
323         Assert.assertEquals(id, identifier.firstKeyOf(NetworkDomain.class).getNetworkDomainId());
324     }
325
326     @Test
327     public void testSubnetIid_tenantApi() {
328         SubnetId subnetId = mock(SubnetId.class);
329         InstanceIdentifier<Subnet> identifier = IidFactory.subnetIid(tenantId, subnetId);
330         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
331         Assert.assertEquals(subnetId, identifier.firstKeyOf(Subnet.class).getId());
332     }
333
334     @Test
335     public void testSubnetWildcardIid() {
336         InstanceIdentifier<Subnet> identifier = IidFactory.subnetWildcardIid(tenantId);
337         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
338     }
339
340     @Test
341     public void testClassifierDefinitionIid() {
342         ClassifierDefinitionId classifierDefinitionId = mock(ClassifierDefinitionId.class);
343         InstanceIdentifier<ClassifierDefinition> identifier = IidFactory.classifierDefinitionIid(
344                 classifierDefinitionId);
345         Assert.assertEquals(classifierDefinitionId, identifier.firstKeyOf(ClassifierDefinition.class).getId());
346     }
347
348     @Test
349     public void testActionDefinitionIid() {
350         ActionDefinitionId actionDefinitionId = mock(ActionDefinitionId.class);
351         InstanceIdentifier<ActionDefinition> identifier = IidFactory.actionDefinitionIid(
352                 actionDefinitionId);
353         Assert.assertEquals(actionDefinitionId, identifier.firstKeyOf(ActionDefinition.class).getId());
354     }
355
356     @Test
357     public void testSupportedActionDefinitionIidWildcard() {
358         InstanceIdentifier<SupportedActionDefinition>
359                 identifier = IidFactory.supportedActionDefinitionIidWildcard();
360         Assert.assertNotNull(identifier);
361     }
362
363     @Test
364     public void testSupportedClassifierDefinitionIidWildcard() {
365         InstanceIdentifier<SupportedClassifierDefinition>
366                 identifier = IidFactory.supportedClassifierDefinitionIidWildcard();
367         Assert.assertNotNull(identifier);
368     }
369
370     @Test
371     public void  testFollowedEndpointgroupIid(){
372         InstanceIdentifier<FollowedEndpointGroup>
373                 identifier = IidFactory.followedEndpointgroupIid(rendererName, tenantId, epgId);
374         Assert.assertEquals(epgId, identifier.firstKeyOf(FollowedEndpointGroup.class).getId());
375     }
376
377     @Test
378     public void  testFollowedTenantIid(){
379         InstanceIdentifier<FollowedTenant>
380                 identifier = IidFactory.followedTenantIid(rendererName, tenantId);
381         Assert.assertEquals(tenantId, identifier.firstKeyOf(FollowedTenant.class).getId());
382     }
383
384     @Test
385     public void  testRendererIid(){
386         InstanceIdentifier<Renderer>
387                 identifier = IidFactory.rendererIid(rendererName);
388         Assert.assertEquals(rendererName, identifier.firstKeyOf(Renderer.class).getName());
389     }
390
391     @Test
392     public void  testRenderersIid(){
393         InstanceIdentifier<Renderers>
394                 identifier = IidFactory.renderersIid();
395         Assert.assertNotNull(identifier);
396     }
397
398     @Test
399     public void  testeExternalImplicitGroupIid(){
400         InstanceIdentifier<ExternalImplicitGroup>
401                 identifier = IidFactory.externalImplicitGroupIid(tenantId, epgId);
402         Assert.assertEquals(epgId, identifier.firstKeyOf(ExternalImplicitGroup.class).getId());
403     }
404
405     @Test
406     public void testProviderAddressEndpointLocationIid() {
407         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
408         InstanceIdentifier<ProviderAddressEndpointLocation> identifier = IidFactory
409             .providerAddressEndpointLocationIid(LOCATION_PROVIDER_NAME, IpPrefixType.class, IP_ADDRESS,
410                     org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
411                     l3Context);
412         Assert.assertEquals(LOCATION_PROVIDER_NAME,
413                 identifier.firstKeyOf(LocationProvider.class).getProvider().getValue());
414         Assert.assertEquals(IP_ADDRESS, identifier.firstKeyOf(ProviderAddressEndpointLocation.class).getAddress());
415         Assert.assertEquals(l3Context, identifier.firstKeyOf(ProviderAddressEndpointLocation.class).getContextId());
416     }
417
418     @Test
419     public void testAddressEndpointIid() {
420         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
421         InstanceIdentifier<AddressEndpoint> identifier =
422                 IidFactory.addressEndpointIid(new AddressEndpointKey(IP_ADDRESS, IpPrefixType.class, l3Context,
423                         org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class
424                         ));
425         Assert.assertEquals(IpPrefixType.class, identifier.firstKeyOf(AddressEndpoint.class).getAddressType());
426         Assert.assertEquals(IP_ADDRESS, identifier.firstKeyOf(AddressEndpoint.class).getAddress());
427         Assert.assertEquals(
428                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
429                 identifier.firstKeyOf(AddressEndpoint.class).getContextType());
430         Assert.assertEquals(l3Context, identifier.firstKeyOf(AddressEndpoint.class).getContextId());
431     }
432
433     @Test
434     public void testAddressEndpointLocationIid() {
435         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
436         AddressEndpointLocationKey addrEndpointLocationKey =
437                 new AddressEndpointLocationKey(IP_ADDRESS, IpPrefixType.class, l3Context,
438                         org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
439         InstanceIdentifier<AddressEndpointLocation> iid = IidFactory.addressEndpointLocationIid(addrEndpointLocationKey);
440         Assert.assertEquals(IpPrefixType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
441         Assert.assertEquals(IP_ADDRESS, iid.firstKeyOf(AddressEndpointLocation.class).getAddress());
442         Assert.assertEquals(
443                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
444                 iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
445         Assert.assertEquals(l3Context, iid.firstKeyOf(AddressEndpointLocation.class).getContextId());
446     }
447
448     @Test
449     public void testContainmentEndpointLocationIid() {
450         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
451         ContainmentEndpointLocationKey contEndpointLocationKey =
452                 new ContainmentEndpointLocationKey(l3Context,
453                         org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
454         InstanceIdentifier<ContainmentEndpointLocation> iid = IidFactory.containmentEndpointLocationIid(contEndpointLocationKey);
455         Assert.assertEquals(
456                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
457                 iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
458         Assert.assertEquals(l3Context, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextId());
459     }
460
461     @Test
462     public void internalLocationIid_AddrEndpoint() {
463         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
464         AddressEndpointLocationKey addrEndpointLocationKey =
465                 new AddressEndpointLocationKey(IP_ADDRESS, IpPrefixType.class, l3Context,
466                         org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
467         InternalLocationKey internalLocationKey = new InternalLocationKey(nodeIid, connectorIid);
468         InstanceIdentifier<InternalLocation> iid = IidFactory.internalLocationIid(addrEndpointLocationKey, internalLocationKey);
469         Assert.assertEquals(IpPrefixType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
470         Assert.assertEquals(IP_ADDRESS, iid.firstKeyOf(AddressEndpointLocation.class).getAddress());
471         Assert.assertEquals(
472                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
473                 iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
474         Assert.assertEquals(l3Context, iid.firstKeyOf(AddressEndpointLocation.class).getContextId());
475         Assert.assertEquals(nodeIid, iid.firstKeyOf(InternalLocation.class).getInternalNode());
476         Assert.assertEquals(connectorIid, iid.firstKeyOf(InternalLocation.class).getInternalNodeConnector());
477     }
478
479     @Test
480     public void internalLocationIid_ContEndpoint() {
481         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
482         ContainmentEndpointLocationKey contEndpointLocationKey =
483                 new ContainmentEndpointLocationKey(l3Context,
484                         org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
485         InternalLocationKey internalLocationKey = new InternalLocationKey(nodeIid, connectorIid);
486         InstanceIdentifier<InternalLocation> iid = IidFactory.internalLocationIid(contEndpointLocationKey, internalLocationKey);
487         Assert.assertEquals(
488                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
489                 iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
490         Assert.assertEquals(l3Context, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextId());
491         Assert.assertEquals(nodeIid, iid.firstKeyOf(InternalLocation.class).getInternalNode());
492         Assert.assertEquals(connectorIid, iid.firstKeyOf(InternalLocation.class).getInternalNodeConnector());
493     }
494
495     @Test
496     public void externalLocationIid_AddrEndpoint() {
497         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
498         AddressEndpointLocationKey addrEndpointLocationKey =
499                 new AddressEndpointLocationKey(IP_ADDRESS, IpPrefixType.class, l3Context,
500                         org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
501         ExternalLocationKey externalLocationKey = new ExternalLocationKey(CONNECTOR, nodeIid);
502         InstanceIdentifier<ExternalLocation> iid = IidFactory.externalLocationIid(addrEndpointLocationKey, externalLocationKey);
503         Assert.assertEquals(IpPrefixType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
504         Assert.assertEquals(IP_ADDRESS, iid.firstKeyOf(AddressEndpointLocation.class).getAddress());
505         Assert.assertEquals(
506                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
507                 iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
508         Assert.assertEquals(l3Context, iid.firstKeyOf(AddressEndpointLocation.class).getContextId());
509         Assert.assertEquals(CONNECTOR, iid.firstKeyOf(ExternalLocation.class).getExternalNodeConnector());
510         Assert.assertEquals(nodeIid, iid.firstKeyOf(ExternalLocation.class).getExternalNodeMountPoint());
511     }
512
513     @Test
514     public void externalLocationIid_ContEndpoint() {
515         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
516         ContainmentEndpointLocationKey addrEndpointLocationKey =
517                 new ContainmentEndpointLocationKey(l3Context,
518                         org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
519         ExternalLocationKey externalLocationKey = new ExternalLocationKey(CONNECTOR, nodeIid);
520         InstanceIdentifier<ExternalLocation> iid = IidFactory.externalLocationIid(addrEndpointLocationKey, externalLocationKey);
521         Assert.assertEquals(
522                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
523                 iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
524         Assert.assertEquals(l3Context, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextId());
525         Assert.assertEquals(CONNECTOR, iid.firstKeyOf(ExternalLocation.class).getExternalNodeConnector());
526         Assert.assertEquals(nodeIid, iid.firstKeyOf(ExternalLocation.class).getExternalNodeMountPoint());
527     }
528
529     @Test
530     public void absoluteLocationIid() {
531         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
532         AddressEndpointLocationKey addrEndpointLocationKey =
533                 new AddressEndpointLocationKey(IP_ADDRESS, IpPrefixType.class, l3Context,
534                         org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
535         InstanceIdentifier<AbsoluteLocation> iid = IidFactory.absoluteLocationIid(addrEndpointLocationKey);
536         Assert.assertEquals(IpPrefixType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
537         Assert.assertEquals(IP_ADDRESS, iid.firstKeyOf(AddressEndpointLocation.class).getAddress());
538         Assert.assertEquals(
539                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
540                 iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
541         Assert.assertEquals(l3Context, iid.firstKeyOf(AddressEndpointLocation.class).getContextId());
542     }
543 }