1 package org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.rule;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertTrue;
9 import org.junit.Before;
10 import org.junit.Rule;
11 import org.junit.Test;
12 import org.junit.rules.ExpectedException;
13 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronEntityFactory;
14 import org.opendaylight.neutron.spi.NeutronSecurityRule;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
17 public class SecRuleDaoTest {
20 public ExpectedException thrown = ExpectedException.none();
22 private SecRuleDao secRuleDao;
25 public void setUp() throws Exception {
26 secRuleDao = new SecRuleDao();
30 public void testAddAndRemoveSecRule() {
31 final String xSecGrpId = "cccccccc-cccc-cccc-cccc-cccccccccccc";
32 final String ySecGrpId = "dddddddd-dddd-dddd-dddd-dddddddddddd";
33 final String nullSecGrpId = null;
35 EndpointGroupId xEpGrpId = new EndpointGroupId(xSecGrpId);
36 EndpointGroupId yEpGrpId = new EndpointGroupId(ySecGrpId);
37 EndpointGroupId nullEpGrpId = null;
39 NeutronSecurityRule secRule1 = NeutronEntityFactory.securityRuleWithGroupIds(
40 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", xSecGrpId, nullSecGrpId);
42 NeutronSecurityRule secRule2 = NeutronEntityFactory.securityRuleWithGroupIds(
43 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa2", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", xSecGrpId, xSecGrpId);
45 NeutronSecurityRule secRule3 = NeutronEntityFactory.securityRuleWithGroupIds(
46 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa3", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", xSecGrpId, ySecGrpId);
48 NeutronSecurityRule secRule4 = NeutronEntityFactory.securityRuleWithGroupIds(
49 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa4", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", ySecGrpId, nullSecGrpId);
51 NeutronSecurityRule secRule5 = NeutronEntityFactory.securityRuleWithGroupIds(
52 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa5", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", ySecGrpId, ySecGrpId);
54 NeutronSecurityRule secRule6 = NeutronEntityFactory.securityRuleWithGroupIds(
55 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa6", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", ySecGrpId, xSecGrpId);
57 secRuleDao.addSecRule(secRule1);
58 assertSecRulesByOwnerSecGrpId(xEpGrpId, secRule1);
59 assertSecRulesWithoutRemoteSecGrpBySecGrpId(xEpGrpId, secRule1);
60 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, nullEpGrpId, secRule1);
61 assertAllOwnerSecGrps(xEpGrpId);
63 secRuleDao.addSecRule(secRule2);
64 assertSecRulesByOwnerSecGrpId(xEpGrpId, secRule1, secRule2);
65 assertSecRulesWithoutRemoteSecGrpBySecGrpId(xEpGrpId, secRule1);
66 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, nullEpGrpId, secRule1);
67 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, xEpGrpId, secRule2);
68 assertAllOwnerSecGrps(xEpGrpId);
70 secRuleDao.addSecRule(secRule3);
71 assertSecRulesByOwnerSecGrpId(xEpGrpId, secRule1, secRule2, secRule3);
72 assertSecRulesWithoutRemoteSecGrpBySecGrpId(xEpGrpId, secRule1);
73 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, nullEpGrpId, secRule1);
74 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, xEpGrpId, secRule2);
75 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, yEpGrpId, secRule3);
76 assertAllOwnerSecGrps(xEpGrpId);
78 secRuleDao.addSecRule(secRule4);
79 assertSecRulesByOwnerSecGrpId(yEpGrpId, secRule4);
80 assertSecRulesWithoutRemoteSecGrpBySecGrpId(yEpGrpId, secRule4);
81 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, nullEpGrpId, secRule4);
82 assertAllOwnerSecGrps(xEpGrpId, yEpGrpId);
84 secRuleDao.addSecRule(secRule5);
85 assertSecRulesByOwnerSecGrpId(yEpGrpId, secRule4, secRule5);
86 assertSecRulesWithoutRemoteSecGrpBySecGrpId(yEpGrpId, secRule4);
87 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, nullEpGrpId, secRule4);
88 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, yEpGrpId, secRule5);
89 assertAllOwnerSecGrps(xEpGrpId, yEpGrpId);
91 secRuleDao.addSecRule(secRule6);
92 assertSecRulesByOwnerSecGrpId(yEpGrpId, secRule4, secRule5, secRule6);
93 assertSecRulesWithoutRemoteSecGrpBySecGrpId(yEpGrpId, secRule4);
94 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, nullEpGrpId, secRule4);
95 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, yEpGrpId, secRule5);
96 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, xEpGrpId, secRule6);
97 assertAllOwnerSecGrps(xEpGrpId, yEpGrpId);
99 // check once more security rules with owner group id = xSecGrpId
100 assertSecRulesByOwnerSecGrpId(xEpGrpId, secRule1, secRule2, secRule3);
101 assertSecRulesWithoutRemoteSecGrpBySecGrpId(xEpGrpId, secRule1);
102 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, nullEpGrpId, secRule1);
103 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, xEpGrpId, secRule2);
104 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, yEpGrpId, secRule3);
106 secRuleDao.removeSecRule(secRule6);
107 assertSecRulesByOwnerSecGrpId(yEpGrpId, secRule4, secRule5);
108 assertSecRulesWithoutRemoteSecGrpBySecGrpId(yEpGrpId, secRule4);
109 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, nullEpGrpId, secRule4);
110 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, yEpGrpId, secRule5);
111 assertAllOwnerSecGrps(xEpGrpId, yEpGrpId);
113 secRuleDao.removeSecRule(secRule5);
114 assertSecRulesByOwnerSecGrpId(yEpGrpId, secRule4);
115 assertSecRulesWithoutRemoteSecGrpBySecGrpId(yEpGrpId, secRule4);
116 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, nullEpGrpId, secRule4);
117 assertAllOwnerSecGrps(xEpGrpId, yEpGrpId);
119 secRuleDao.removeSecRule(secRule4);
121 // check once more security rules with owner group id = xSecGrpId
122 assertSecRulesByOwnerSecGrpId(xEpGrpId, secRule1, secRule2, secRule3);
123 assertSecRulesWithoutRemoteSecGrpBySecGrpId(xEpGrpId, secRule1);
124 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, nullEpGrpId, secRule1);
125 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, xEpGrpId, secRule2);
126 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, yEpGrpId, secRule3);
128 secRuleDao.removeSecRule(secRule3);
129 assertSecRulesByOwnerSecGrpId(xEpGrpId, secRule1, secRule2);
130 assertSecRulesWithoutRemoteSecGrpBySecGrpId(xEpGrpId, secRule1);
131 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, nullEpGrpId, secRule1);
132 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, xEpGrpId, secRule2);
133 assertAllOwnerSecGrps(xEpGrpId);
135 secRuleDao.removeSecRule(secRule2);
136 assertSecRulesByOwnerSecGrpId(xEpGrpId, secRule1);
137 assertSecRulesWithoutRemoteSecGrpBySecGrpId(xEpGrpId, secRule1);
138 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, nullEpGrpId, secRule1);
139 assertAllOwnerSecGrps(xEpGrpId);
141 secRuleDao.removeSecRule(secRule1);
142 assertSecRulesByOwnerSecGrpId(xEpGrpId);
143 assertSecRulesWithoutRemoteSecGrpBySecGrpId(xEpGrpId);
144 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, nullEpGrpId);
145 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, xEpGrpId);
146 assertSecRulesBySecGrpIdAndRemoteSecGrpId(xEpGrpId, yEpGrpId);
147 assertSecRulesByOwnerSecGrpId(yEpGrpId);
148 assertSecRulesWithoutRemoteSecGrpBySecGrpId(yEpGrpId);
149 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, nullEpGrpId);
150 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, yEpGrpId);
151 assertSecRulesBySecGrpIdAndRemoteSecGrpId(yEpGrpId, xEpGrpId);
152 assertAllOwnerSecGrps();
156 public void testAddSecGroup_nullArgument() {
157 thrown.expect(NullPointerException.class);
158 secRuleDao.addSecRule(null);
162 public void testRemoveNonExistingSecRule() {
163 NeutronSecurityRule secRule = NeutronEntityFactory.securityRuleWithGroupIds(
164 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
165 "cccccccc-cccc-cccc-cccc-cccccccccccc", "dddddddd-dddd-dddd-dddd-dddddddddddd");
166 secRuleDao.removeSecRule(secRule);
170 public void testRemoveNonExistingSecRule_remoteSecGroupIdIsNull() {
171 NeutronSecurityRule secRule = NeutronEntityFactory.securityRuleWithGroupIds(
172 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
173 "cccccccc-cccc-cccc-cccc-cccccccccccc", null);
174 secRuleDao.removeSecRule(secRule);
177 private static void assertSecRules(Set<NeutronSecurityRule> secRules, NeutronSecurityRule... expectedSecRules) {
178 assertNotNull(secRules);
179 assertEquals(expectedSecRules.length, secRules.size());
180 for (int i = 0; i < expectedSecRules.length; ++i) {
181 assertTrue(secRules.contains(expectedSecRules[i]));
185 private void assertSecRulesByOwnerSecGrpId(EndpointGroupId ownerEpGrpId, NeutronSecurityRule... expectedSecRules) {
186 Set<NeutronSecurityRule> secRules = secRuleDao.getSecRulesByOwnerSecGrpId(ownerEpGrpId);
187 assertSecRules(secRules, expectedSecRules);
190 private void assertSecRulesBySecGrpIdAndRemoteSecGrpId(EndpointGroupId ownerEpGrpId, EndpointGroupId remoteEpGrpId,
191 NeutronSecurityRule... expectedSecRules) {
192 Set<NeutronSecurityRule> secRules = secRuleDao.getSecRulesBySecGrpIdAndRemoteSecGrpId(ownerEpGrpId,
194 assertSecRules(secRules, expectedSecRules);
197 private void assertSecRulesWithoutRemoteSecGrpBySecGrpId(EndpointGroupId ownerEpGrpId,
198 NeutronSecurityRule... expectedSecRules) {
199 Set<NeutronSecurityRule> secRules = secRuleDao.getSecRulesWithoutRemoteSecGrpBySecGrpId(ownerEpGrpId);
200 assertSecRules(secRules, expectedSecRules);
203 private void assertAllOwnerSecGrps(EndpointGroupId... expectedEndpointGropuIds) {
204 Set<EndpointGroupId> allOwnerSecGrps = secRuleDao.getAllOwnerSecGrps();
205 assertNotNull(allOwnerSecGrps);
206 assertEquals(expectedEndpointGropuIds.length, allOwnerSecGrps.size());
207 for (int i = 0; i < expectedEndpointGropuIds.length; ++i) {
208 assertTrue(allOwnerSecGrps.contains(expectedEndpointGropuIds[i]));