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