2 * Copyright (c) 2014 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.resolver;
11 import org.junit.Test;
12 import org.opendaylight.groupbasedpolicy.resolver.MatcherUtils;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.CapabilityName;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.QualityName;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RequirementName;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TargetName;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.Matcher.MatchType;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.capabilities.Capability;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.capabilities.CapabilityBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.qualities.Quality;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.qualities.QualityBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.requirements.Requirement;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.requirements.RequirementBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.QualityMatcher;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.QualityMatcherBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.quality.matcher.MatcherQuality;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.quality.matcher.MatcherQualityBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.TargetBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.RequirementMatcher;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.RequirementMatcherBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.requirement.matcher.MatcherRequirement;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.requirement.matcher.MatcherRequirementBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.CapabilityMatcher;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.CapabilityMatcherBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.capability.matcher.MatcherCapability;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.capability.matcher.MatcherCapabilityBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelectorBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelectorBuilder;
48 import com.google.common.collect.ImmutableList;
50 import static org.junit.Assert.*;
52 public class MatcherUtilsTest {
55 public void testApplyQualityMatcher() throws Exception {
56 Quality q1 = new QualityBuilder().setName(new QualityName("q1")).build();
57 Quality q2 = new QualityBuilder().setName(new QualityName("q2")).build();
58 Quality q3 = new QualityBuilder().setName(new QualityName("q3")).build();
59 Quality q4 = new QualityBuilder().setName(new QualityName("q4")).build();
61 Target t1 = new TargetBuilder()
62 .setName(new TargetName("t1"))
63 .setQuality(ImmutableList.of(q1, q2))
65 Target t2 = new TargetBuilder()
66 .setName(new TargetName("t2"))
67 .setQuality(ImmutableList.of(q3, q4))
70 MatcherQuality mq1 = new MatcherQualityBuilder(q1).build();
71 MatcherQuality mq2 = new MatcherQualityBuilder(q2).build();
72 MatcherQuality mq1_ns1 = new MatcherQualityBuilder(q1)
73 .setTargetNamespace(t1.getName())
75 MatcherQuality mq1_ns2 = new MatcherQualityBuilder(q1)
76 .setTargetNamespace(t2.getName())
78 MatcherQuality mq3 = new MatcherQualityBuilder(q3).build();
80 QualityMatcher qm = new QualityMatcherBuilder()
81 .setMatchType(MatchType.All)
82 .setMatcherQuality(ImmutableList.of(mq1, mq1_ns1))
85 assertTrue(MatcherUtils.applyQualityMatcher(qm, t1));
86 assertFalse(MatcherUtils.applyQualityMatcher(qm, t2));
88 qm = new QualityMatcherBuilder()
89 .setMatcherQuality(ImmutableList.of(mq1_ns2))
92 assertFalse(MatcherUtils.applyQualityMatcher(qm, t1));
93 assertFalse(MatcherUtils.applyQualityMatcher(qm, t2));
95 qm = new QualityMatcherBuilder()
96 .setMatchType(MatchType.Any)
97 .setMatcherQuality(ImmutableList.of(mq1, mq3))
100 assertTrue(MatcherUtils.applyQualityMatcher(qm, t1));
101 assertTrue(MatcherUtils.applyQualityMatcher(qm, t2));
103 qm = new QualityMatcherBuilder()
104 .setMatchType(MatchType.Any)
105 .setMatcherQuality(ImmutableList.of(mq1, mq2))
108 assertTrue(MatcherUtils.applyQualityMatcher(qm, t1));
109 assertFalse(MatcherUtils.applyQualityMatcher(qm, t2));
111 qm = new QualityMatcherBuilder()
112 .setMatchType(MatchType.None)
113 .setMatcherQuality(ImmutableList.of(mq3, mq1_ns2))
116 assertTrue(MatcherUtils.applyQualityMatcher(qm, t1));
117 assertFalse(MatcherUtils.applyQualityMatcher(qm, t2));
119 qm = new QualityMatcherBuilder().build();
120 assertTrue(MatcherUtils.applyQualityMatcher(qm, t1));
122 qm = new QualityMatcherBuilder()
123 .setMatchType(MatchType.Any)
125 assertFalse(MatcherUtils.applyQualityMatcher(qm, t1));
129 public void testApplyCapMatcher() throws Exception {
130 Capability q1 = new CapabilityBuilder().setName(new CapabilityName("q1")).build();
131 Capability q2 = new CapabilityBuilder().setName(new CapabilityName("q2")).build();
132 Capability q3 = new CapabilityBuilder().setName(new CapabilityName("q3")).build();
133 Capability q4 = new CapabilityBuilder().setName(new CapabilityName("q4")).build();
135 ProviderTargetSelector t1 = new ProviderTargetSelectorBuilder()
136 .setName(new SelectorName("t1"))
137 .setCapability(ImmutableList.of(q1, q2))
139 ProviderNamedSelector t2 = new ProviderNamedSelectorBuilder()
140 .setName(new SelectorName("t2"))
141 .setCapability(ImmutableList.of(q3, q4))
144 MatcherCapability mq1 = new MatcherCapabilityBuilder(q1).build();
145 MatcherCapability mq2 = new MatcherCapabilityBuilder(q2).build();
146 MatcherCapability mq1_ns1 = new MatcherCapabilityBuilder(q1)
147 .setSelectorNamespace(t1.getName())
149 MatcherCapability mq1_ns2 = new MatcherCapabilityBuilder(q1)
150 .setSelectorNamespace(t2.getName())
152 MatcherCapability mq3 = new MatcherCapabilityBuilder(q3).build();
154 CapabilityMatcher qm = new CapabilityMatcherBuilder()
155 .setMatchType(MatchType.All)
156 .setMatcherCapability(ImmutableList.of(mq1, mq1_ns1))
159 assertTrue(MatcherUtils.applyCapMatcher(qm, t1));
160 assertFalse(MatcherUtils.applyCapMatcher(qm, t2));
162 qm = new CapabilityMatcherBuilder()
163 .setMatcherCapability(ImmutableList.of(mq1_ns2))
166 assertFalse(MatcherUtils.applyCapMatcher(qm, t1));
167 assertFalse(MatcherUtils.applyCapMatcher(qm, t2));
169 qm = new CapabilityMatcherBuilder()
170 .setMatchType(MatchType.Any)
171 .setMatcherCapability(ImmutableList.of(mq1, mq3))
174 assertTrue(MatcherUtils.applyCapMatcher(qm, t1));
175 assertTrue(MatcherUtils.applyCapMatcher(qm, t2));
177 qm = new CapabilityMatcherBuilder()
178 .setMatchType(MatchType.Any)
179 .setMatcherCapability(ImmutableList.of(mq1, mq2))
182 assertTrue(MatcherUtils.applyCapMatcher(qm, t1));
183 assertFalse(MatcherUtils.applyCapMatcher(qm, t2));
185 qm = new CapabilityMatcherBuilder()
186 .setMatchType(MatchType.None)
187 .setMatcherCapability(ImmutableList.of(mq3, mq1_ns2))
190 assertTrue(MatcherUtils.applyCapMatcher(qm, t1));
191 assertFalse(MatcherUtils.applyCapMatcher(qm, t2));
193 qm = new CapabilityMatcherBuilder().build();
194 assertTrue(MatcherUtils.applyCapMatcher(qm, t1));
196 qm = new CapabilityMatcherBuilder()
197 .setMatchType(MatchType.Any)
199 assertFalse(MatcherUtils.applyCapMatcher(qm, t1));
203 public void testApplyReqMatcher() throws Exception {
204 Requirement q1 = new RequirementBuilder().setName(new RequirementName("q1")).build();
205 Requirement q2 = new RequirementBuilder().setName(new RequirementName("q2")).build();
206 Requirement q3 = new RequirementBuilder().setName(new RequirementName("q3")).build();
207 Requirement q4 = new RequirementBuilder().setName(new RequirementName("q4")).build();
209 ConsumerNamedSelector t1 = new ConsumerNamedSelectorBuilder()
210 .setName(new SelectorName("t1"))
211 .setRequirement(ImmutableList.of(q1, q2))
213 ConsumerTargetSelector t2 = new ConsumerTargetSelectorBuilder()
214 .setName(new SelectorName("t2"))
215 .setRequirement(ImmutableList.of(q3, q4))
218 MatcherRequirement mq1 = new MatcherRequirementBuilder(q1).build();
219 MatcherRequirement mq2 = new MatcherRequirementBuilder(q2).build();
220 MatcherRequirement mq1_ns1 = new MatcherRequirementBuilder(q1)
221 .setSelectorNamespace(t1.getName())
223 MatcherRequirement mq1_ns2 = new MatcherRequirementBuilder(q1)
224 .setSelectorNamespace(t2.getName())
226 MatcherRequirement mq3 = new MatcherRequirementBuilder(q3).build();
228 RequirementMatcher qm = new RequirementMatcherBuilder()
229 .setMatchType(MatchType.All)
230 .setMatcherRequirement(ImmutableList.of(mq1, mq1_ns1))
233 assertTrue(MatcherUtils.applyReqMatcher(qm, t1));
234 assertFalse(MatcherUtils.applyReqMatcher(qm, t2));
236 qm = new RequirementMatcherBuilder()
237 .setMatcherRequirement(ImmutableList.of(mq1_ns2))
240 assertFalse(MatcherUtils.applyReqMatcher(qm, t1));
241 assertFalse(MatcherUtils.applyReqMatcher(qm, t2));
243 qm = new RequirementMatcherBuilder()
244 .setMatchType(MatchType.Any)
245 .setMatcherRequirement(ImmutableList.of(mq1, mq3))
248 assertTrue(MatcherUtils.applyReqMatcher(qm, t1));
249 assertTrue(MatcherUtils.applyReqMatcher(qm, t2));
251 qm = new RequirementMatcherBuilder()
252 .setMatchType(MatchType.Any)
253 .setMatcherRequirement(ImmutableList.of(mq1, mq2))
256 assertTrue(MatcherUtils.applyReqMatcher(qm, t1));
257 assertFalse(MatcherUtils.applyReqMatcher(qm, t2));
259 qm = new RequirementMatcherBuilder()
260 .setMatchType(MatchType.None)
261 .setMatcherRequirement(ImmutableList.of(mq3, mq1_ns2))
264 assertTrue(MatcherUtils.applyReqMatcher(qm, t1));
265 assertFalse(MatcherUtils.applyReqMatcher(qm, t2));
267 qm = new RequirementMatcherBuilder().build();
268 assertTrue(MatcherUtils.applyReqMatcher(qm, t1));
270 qm = new RequirementMatcherBuilder()
271 .setMatchType(MatchType.Any)
273 assertFalse(MatcherUtils.applyReqMatcher(qm, t1));