GBP core tests improvements
[groupbasedpolicy.git] / groupbasedpolicy / src / test / java / org / opendaylight / groupbasedpolicy / resolver / PolicyTest.java
1 package org.opendaylight.groupbasedpolicy.resolver;
2
3 import static org.junit.Assert.assertTrue;
4 import static org.mockito.Mockito.mock;
5
6 import java.util.ArrayList;
7 import java.util.HashSet;
8 import java.util.List;
9 import java.util.Set;
10
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;
26
27 public class PolicyTest {
28
29     private Policy policy;
30
31     @Before
32     public void init() {
33         policy = new Policy(null);
34     }
35
36     @Test
37     public void testGetRules() {
38         ConditionSet conditionSet = newConditionSet();
39         Set<ConditionSet> conditionSets = new HashSet<>();
40         conditionSets.add(conditionSet);
41
42         ConditionGroup fromCg = new ConditionGroup(conditionSets);
43         ConditionGroup toCg = new ConditionGroup(conditionSets);
44
45         Set<ConditionSet> conditionSetsEmpty = new HashSet<>();
46         ConditionGroup fromCgEmpty = new ConditionGroup(conditionSetsEmpty);
47         ConditionGroup toCgEmpty = new ConditionGroup(conditionSetsEmpty);
48
49         EndpointConstraint endpointConstraint = new EndpointConstraint(conditionSet, null);
50
51         List<RuleGroup> ruleGroups = new ArrayList<>();
52         ruleGroups.add(mock(RuleGroup.class));
53
54         Table<EndpointConstraint, EndpointConstraint, List<RuleGroup>> ruleMap = HashBasedTable.create(1, 1);
55         ruleMap.put(endpointConstraint, endpointConstraint, ruleGroups);
56
57         Policy p = new Policy(ruleMap);
58
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());
63     }
64
65     @Test
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());
72
73         Set<IpPrefix> ipPrefixes = Policy.getIpPrefixesFrom(prefixConstraints);
74
75         assertTrue(ipPrefixes.size() == 2);
76         assertTrue(ipPrefixes.contains(ipPrefix1));
77         assertTrue(ipPrefixes.contains(ipPrefix2));
78     }
79
80     @Test
81     public void testEquals() {
82         Policy other = new Policy(null);
83
84         assertTrue(policy.equals(other));
85     }
86
87     @Test
88     public void testToString() {
89         Assert.assertNotNull(policy.toString());
90     }
91
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<>();
98
99         all.add(new ConditionName("condition-all-1"));
100         all.add(new ConditionName("condition-all-2"));
101
102         none.add(new ConditionName("condition-none-1"));
103         none.add(new ConditionName("condition-none-2"));
104
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"));
109         any.add(any1);
110         any.add(any2);
111
112         return new ConditionSet(all, none, any);
113     }
114 }