1 package org.opendaylight.groupbasedpolicy.resolver;
3 import static org.junit.Assert.assertTrue;
4 import static org.mockito.Mockito.mock;
6 import java.util.ArrayList;
7 import java.util.HashSet;
11 import com.google.common.collect.HashBasedTable;
12 import com.google.common.collect.Table;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.groupbasedpolicy.dto.ConditionGroup;
17 import org.opendaylight.groupbasedpolicy.dto.ConditionSet;
18 import org.opendaylight.groupbasedpolicy.dto.EndpointConstraint;
19 import org.opendaylight.groupbasedpolicy.dto.Policy;
20 import org.opendaylight.groupbasedpolicy.dto.RuleGroup;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ConditionName;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraint;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraintBuilder;
27 public class PolicyTest {
29 private Policy policy;
33 policy = new Policy(null);
37 public void testGetRules() {
38 ConditionSet conditionSet = newConditionSet();
39 Set<ConditionSet> conditionSets = new HashSet<>();
40 conditionSets.add(conditionSet);
42 ConditionGroup fromCg = new ConditionGroup(conditionSets);
43 ConditionGroup toCg = new ConditionGroup(conditionSets);
45 Set<ConditionSet> conditionSetsEmpty = new HashSet<>();
46 ConditionGroup fromCgEmpty = new ConditionGroup(conditionSetsEmpty);
47 ConditionGroup toCgEmpty = new ConditionGroup(conditionSetsEmpty);
49 EndpointConstraint endpointConstraint = new EndpointConstraint(conditionSet, null);
51 List<RuleGroup> ruleGroups = new ArrayList<>();
52 ruleGroups.add(mock(RuleGroup.class));
54 Table<EndpointConstraint, EndpointConstraint, List<RuleGroup>> ruleMap = HashBasedTable.create(1, 1);
55 ruleMap.put(endpointConstraint, endpointConstraint, ruleGroups);
57 Policy p = new Policy(ruleMap);
59 assertTrue(p.getRules(fromCg, toCg).size() == 1);
60 assertTrue(p.getRules(fromCg, toCgEmpty).isEmpty());
61 assertTrue(p.getRules(fromCgEmpty, toCg).isEmpty());
62 assertTrue(p.getRules(fromCgEmpty, toCgEmpty).isEmpty());
66 public void testGetIpPrefixesFrom() {
67 Set<PrefixConstraint> prefixConstraints = new HashSet<>();
68 final IpPrefix ipPrefix1 = IpPrefixBuilder.getDefaultInstance("10.1.0.1/24");
69 prefixConstraints.add(new PrefixConstraintBuilder().setIpPrefix(ipPrefix1).build());
70 final IpPrefix ipPrefix2 = IpPrefixBuilder.getDefaultInstance("10.2.0.1/24");
71 prefixConstraints.add(new PrefixConstraintBuilder().setIpPrefix(ipPrefix2).build());
73 Set<IpPrefix> ipPrefixes = Policy.getIpPrefixesFrom(prefixConstraints);
75 assertTrue(ipPrefixes.size() == 2);
76 assertTrue(ipPrefixes.contains(ipPrefix1));
77 assertTrue(ipPrefixes.contains(ipPrefix2));
81 public void testEquals() {
82 Policy other = new Policy(null);
84 assertTrue(policy.equals(other));
88 public void testToString() {
89 Assert.assertNotNull(policy.toString());
92 private ConditionSet newConditionSet(){
93 Set<ConditionName> all = new HashSet<>();
94 Set<ConditionName> none = new HashSet<>();
95 Set<Set<ConditionName>> any = new HashSet<>();
96 Set<ConditionName> any1 = new HashSet<>();
97 Set<ConditionName> any2 = new HashSet<>();
99 all.add(new ConditionName("condition-all-1"));
100 all.add(new ConditionName("condition-all-2"));
102 none.add(new ConditionName("condition-none-1"));
103 none.add(new ConditionName("condition-none-2"));
105 any1.add(new ConditionName("condition-any1-1"));
106 any1.add(new ConditionName("condition-any1-2"));
107 any2.add(new ConditionName("condition-any2-1"));
108 any2.add(new ConditionName("condition-any2-2"));
112 return new ConditionSet(all, none, any);