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