2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.groupbasedpolicy.util;
11 import static org.mockito.Mockito.mock;
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.common.rev140421.ActionName;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClauseName;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2FloodDomainId;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.Endpoints;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointKey;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance;
52 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
54 public class IidFactoryTest {
56 private TenantId tenantId;
57 private EndpointGroupId epgId;
58 private ContractId contractId;
59 private SubjectName subjectName;
60 private RuleName ruleName;
63 public void initialise() {
64 tenantId = mock(TenantId.class);
65 epgId = mock(EndpointGroupId.class);
66 contractId = mock(ContractId.class);
67 subjectName = mock(SubjectName.class);
68 ruleName = mock(RuleName.class);
72 public void tenantIdTest() {
73 InstanceIdentifier<Tenant> identifier = IidFactory.tenantIid(tenantId);
74 Assert.assertEquals(tenantId, InstanceIdentifier.keyOf(identifier).getId());
78 public void endpointGroupIidTest() {
79 InstanceIdentifier<EndpointGroup> identifier = IidFactory.endpointGroupIid(tenantId, epgId);
80 Assert.assertEquals(epgId, InstanceIdentifier.keyOf(identifier).getId());
81 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
85 public void contractIidTest() {
86 InstanceIdentifier<Contract> identifier = IidFactory.contractIid(tenantId, contractId);
87 Assert.assertEquals(contractId, InstanceIdentifier.keyOf(identifier).getId());
88 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
92 public void subjectIidTest() {
93 SubjectName subjectName = mock(SubjectName.class);
94 InstanceIdentifier<Subject> identifier = IidFactory.subjectIid(tenantId, contractId, subjectName);
95 Assert.assertEquals(subjectName, InstanceIdentifier.keyOf(identifier).getName());
96 Assert.assertEquals(contractId, identifier.firstKeyOf(Contract.class).getId());
97 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
101 public void providerNamedSelectorIidTest() {
102 SelectorName providerSelectorName = mock(SelectorName.class);
103 InstanceIdentifier<ProviderNamedSelector> identifier = IidFactory.providerNamedSelectorIid(tenantId, epgId,
104 providerSelectorName);
105 Assert.assertEquals(providerSelectorName, InstanceIdentifier.keyOf(identifier).getName());
106 Assert.assertEquals(epgId, identifier.firstKeyOf(EndpointGroup.class).getId());
107 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
111 public void consumerNamedSelectorIidTest() {
112 SelectorName consumerSelectorName = mock(SelectorName.class);
113 InstanceIdentifier<ConsumerNamedSelector> identifier = IidFactory.consumerNamedSelectorIid(tenantId, epgId,
114 consumerSelectorName);
115 Assert.assertEquals(consumerSelectorName, InstanceIdentifier.keyOf(identifier).getName());
116 Assert.assertEquals(epgId, identifier.firstKeyOf(EndpointGroup.class).getId());
117 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
121 public void clauseIidTest() {
122 ClauseName clauseName = mock(ClauseName.class);
123 InstanceIdentifier<Clause> identifier = IidFactory.clauseIid(tenantId, contractId, clauseName);
124 Assert.assertEquals(clauseName, InstanceIdentifier.keyOf(identifier).getName());
125 Assert.assertEquals(contractId, identifier.firstKeyOf(Contract.class).getId());
126 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
130 public void ruleIdTest() {
131 InstanceIdentifier<Rule> identifier = IidFactory.ruleIid(tenantId, contractId, subjectName, ruleName);
132 Assert.assertEquals(ruleName, InstanceIdentifier.keyOf(identifier).getName());
133 Assert.assertEquals(subjectName, identifier.firstKeyOf(Subject.class).getName());
134 Assert.assertEquals(contractId, identifier.firstKeyOf(Contract.class).getId());
135 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
139 public void actionInstanceIidTest() {
140 ActionName actionName = mock(ActionName.class);
141 InstanceIdentifier<ActionInstance> identifier = IidFactory.actionInstanceIid(tenantId, actionName);
142 Assert.assertEquals(actionName, InstanceIdentifier.keyOf(identifier).getName());
143 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
147 public void classifierInstanceIidTest() {
148 ClassifierName classifierName = mock(ClassifierName.class);
149 InstanceIdentifier<ClassifierInstance> identifier = IidFactory.classifierInstanceIid(tenantId, classifierName);
150 Assert.assertEquals(classifierName, InstanceIdentifier.keyOf(identifier).getName());
151 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
155 public void classifierRefIidTest() {
156 ClassifierName classifierRefName = mock(ClassifierName.class);
157 InstanceIdentifier<ClassifierRef> identifier = IidFactory.classifierRefIid(tenantId, contractId, subjectName,
158 ruleName, classifierRefName);
159 Assert.assertEquals(classifierRefName, InstanceIdentifier.keyOf(identifier).getName());
160 Assert.assertEquals(ruleName, identifier.firstKeyOf(Rule.class).getName());
161 Assert.assertEquals(subjectName, identifier.firstKeyOf(Subject.class).getName());
162 Assert.assertEquals(contractId, identifier.firstKeyOf(Contract.class).getId());
163 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
167 public void l2FloodDomainIidTest() {
168 L2FloodDomainId l2FloodDomainId = mock(L2FloodDomainId.class);
169 InstanceIdentifier<L2FloodDomain> identifier = IidFactory.l2FloodDomainIid(tenantId, l2FloodDomainId);
170 Assert.assertEquals(l2FloodDomainId, InstanceIdentifier.keyOf(identifier).getId());
171 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
175 public void l2BridgeDomainIidTest() {
176 L2BridgeDomainId l2BridgeDomainId = mock(L2BridgeDomainId.class);
177 InstanceIdentifier<L2BridgeDomain> identifier = IidFactory.l2BridgeDomainIid(tenantId, l2BridgeDomainId);
178 Assert.assertEquals(l2BridgeDomainId, InstanceIdentifier.keyOf(identifier).getId());
179 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
183 public void l3ContextIidTest() {
184 L3ContextId l3ContextId = mock(L3ContextId.class);
185 InstanceIdentifier<L3Context> identifier = IidFactory.l3ContextIid(tenantId, l3ContextId);
186 Assert.assertEquals(l3ContextId, InstanceIdentifier.keyOf(identifier).getId());
187 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
191 public void endpointIidTest() {
192 L2BridgeDomainId l2Context = mock(L2BridgeDomainId.class);
193 MacAddress macAddress = mock(MacAddress.class);
194 InstanceIdentifier<Endpoint> identifier = IidFactory.endpointIid(l2Context, macAddress);
195 Assert.assertEquals(l2Context, InstanceIdentifier.keyOf(identifier).getL2Context());
196 Assert.assertEquals(macAddress, InstanceIdentifier.keyOf(identifier).getMacAddress());
198 EndpointKey key = mock(EndpointKey.class);
199 identifier = IidFactory.endpointIid(key);
200 Assert.assertEquals(key, identifier.firstKeyOf(Endpoint.class));
204 public void l3EndpointIidTest() {
205 L3ContextId l3ContextId = mock(L3ContextId.class);
206 IpAddress ipAddress = mock(IpAddress.class);
207 InstanceIdentifier<EndpointL3> identifier = IidFactory.l3EndpointIid(l3ContextId, ipAddress);
208 Assert.assertEquals(l3ContextId, InstanceIdentifier.keyOf(identifier).getL3Context());
209 Assert.assertEquals(ipAddress, InstanceIdentifier.keyOf(identifier).getIpAddress());
213 public void l3EndpointIidWildcardTest() {
214 InstanceIdentifier<EndpointL3> identifier = IidFactory.l3EndpointsIidWildcard();
215 Assert.assertNotNull(identifier);
219 public void endpointL3PrefixIidTest() {
220 L3ContextId l3Context = mock(L3ContextId.class);
221 IpPrefix ipPrefix = mock(IpPrefix.class);
222 InstanceIdentifier<EndpointL3Prefix> identifier = IidFactory.endpointL3PrefixIid(l3Context, ipPrefix);
223 Assert.assertEquals(l3Context, InstanceIdentifier.keyOf(identifier).getL3Context());
224 Assert.assertEquals(ipPrefix, InstanceIdentifier.keyOf(identifier).getIpPrefix());
228 public void endpointIidWildcardTest() {
229 InstanceIdentifier<Endpoints> identifier = IidFactory.endpointsIidWildcard();
230 Assert.assertNotNull(identifier);
234 public void subnetIidTest() {
235 SubnetId subnetId = mock(SubnetId.class);
236 InstanceIdentifier<Subnet> identifier = IidFactory.subnetIid(tenantId, subnetId);
237 Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
238 Assert.assertEquals(subnetId, identifier.firstKeyOf(Subnet.class).getId());