1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 package edu.internet2.middleware.grouper.membership;
34 import java.util.Date;
35 import java.util.Set;
36
37 import org.apache.commons.logging.Log;
38
39 import edu.internet2.middleware.grouper.Group;
40 import edu.internet2.middleware.grouper.Membership;
41 import edu.internet2.middleware.grouper.MembershipFinder;
42 import edu.internet2.middleware.grouper.helper.DateHelper;
43 import edu.internet2.middleware.grouper.helper.GrouperTest;
44 import edu.internet2.middleware.grouper.helper.MembershipTestHelper;
45 import edu.internet2.middleware.grouper.helper.R;
46 import edu.internet2.middleware.grouper.helper.T;
47 import edu.internet2.middleware.grouper.misc.CompositeType;
48 import edu.internet2.middleware.grouper.util.GrouperUtil;
49 import edu.internet2.middleware.subject.Subject;
50
51
52
53
54 public class TestMembershipDeletes0 extends GrouperTest {
55
56 private static final Log LOG = GrouperUtil.getLog(TestMembershipDeletes0.class);
57
58 R r;
59 Date before;
60
61 Group gA;
62 Group gB;
63 Group gC;
64 Group gD;
65 Group gE;
66 Group gF;
67 Group gG;
68 Group gH;
69 Group gI;
70 Group gJ;
71 Group gK;
72 Group gL;
73 Group gM;
74 Group gN;
75 Group gO;
76 Group gP;
77 Group gQ;
78 Group gR;
79 Group gS;
80 Group gT;
81 Group gUDel;
82 Group gVDel;
83 Group gWDel;
84 Group gXDel;
85 Group gYDel;
86 Group gZDel;
87 Subject subjA;
88 Subject subjB;
89 Subject subjC;
90 Subject subjD;
91 Subject subjEDel;
92
93 public TestMembershipDeletes0(String name) {
94 super(name);
95 }
96
97 public void testMembershipDeletes0() {
98 LOG.info("testMembershipDeletes0");
99 runCompositeMembershipChangeLogConsumer();
100
101 try {
102 GrouperUtil.sleep(100);
103 before = new Date();
104 GrouperUtil.sleep(100);
105
106 r = R.populateRegistry(1, 26, 5);
107 gA = r.getGroup("a", "a");
108 gB = r.getGroup("a", "b");
109 gC = r.getGroup("a", "c");
110 gD = r.getGroup("a", "d");
111 gE = r.getGroup("a", "e");
112 gF = r.getGroup("a", "f");
113 gG = r.getGroup("a", "g");
114 gH = r.getGroup("a", "h");
115 gI = r.getGroup("a", "i");
116 gJ = r.getGroup("a", "j");
117 gK = r.getGroup("a", "k");
118 gL = r.getGroup("a", "l");
119 gM = r.getGroup("a", "m");
120 gN = r.getGroup("a", "n");
121 gO = r.getGroup("a", "o");
122 gP = r.getGroup("a", "p");
123 gQ = r.getGroup("a", "q");
124 gR = r.getGroup("a", "r");
125 gS = r.getGroup("a", "s");
126 gT = r.getGroup("a", "t");
127 gUDel = r.getGroup("a", "u");
128 gVDel = r.getGroup("a", "v");
129 gWDel = r.getGroup("a", "w");
130 gXDel = r.getGroup("a", "x");
131 gYDel = r.getGroup("a", "y");
132 gZDel = r.getGroup("a", "z");
133 subjA = r.getSubject("a");
134 subjB = r.getSubject("b");
135 subjC = r.getSubject("c");
136 subjD = r.getSubject("d");
137 subjEDel = r.getSubject("e");
138
139
140 gA.addMember(subjB);
141 gT.addMember(gP.toSubject());
142 gD.addCompositeMember(CompositeType.UNION, gB, gC);
143 gP.addCompositeMember(CompositeType.UNION, gD, gO);
144 gB.addMember(gA.toSubject());
145 gN.addMember(gG.toSubject());
146 gG.addMember(gD.toSubject());
147 gF.addMember(gH.toSubject());
148 gH.addMember(subjA);
149 gI.addCompositeMember(CompositeType.UNION, gJ, gK);
150 gJ.addMember(gE.toSubject());
151 gK.addMember(subjC);
152 gL.addMember(gI.toSubject());
153 gM.addMember(gJ.toSubject());
154 gE.addCompositeMember(CompositeType.UNION, gF, gG);
155 gQ.addMember(subjD);
156 gH.addMember(gQ.toSubject());
157 gR.addMember(gS.toSubject());
158 gF.addMember(gR.toSubject());
159 gR.addMember(gQ.toSubject());
160
161 gUDel.addCompositeMember(CompositeType.UNION, gVDel, gWDel);
162 gXDel.addCompositeMember(CompositeType.UNION, gWDel, gYDel);
163 gVDel.addMember(gXDel.toSubject());
164 gWDel.addMember(gZDel.toSubject());
165 gZDel.addMember(subjEDel);
166 runCompositeMembershipChangeLogConsumer();
167
168 verifyMembershipAddAndDelete(gA, subjEDel);
169 verifyMembershipAddAndDelete(gB, subjEDel);
170 verifyMembershipAddAndDelete(gC, subjEDel);
171 verifyMembershipAddAndDelete(gF, subjEDel);
172 verifyMembershipAddAndDelete(gG, subjEDel);
173 verifyMembershipAddAndDelete(gH, subjEDel);
174 verifyMembershipAddAndDelete(gJ, subjEDel);
175 verifyMembershipAddAndDelete(gK, subjEDel);
176 verifyMembershipAddAndDelete(gL, subjEDel);
177 verifyMembershipAddAndDelete(gM, subjEDel);
178 verifyMembershipAddAndDelete(gN, subjEDel);
179 verifyMembershipAddAndDelete(gO, subjEDel);
180 verifyMembershipAddAndDelete(gQ, subjEDel);
181 verifyMembershipAddAndDelete(gR, subjEDel);
182 verifyMembershipAddAndDelete(gS, subjEDel);
183 verifyMembershipAddAndDelete(gT, subjEDel);
184
185 verifyMembershipAddAndDelete(gA, gUDel.toSubject());
186 verifyMembershipAddAndDelete(gB, gUDel.toSubject());
187 verifyMembershipAddAndDelete(gC, gUDel.toSubject());
188 verifyMembershipAddAndDelete(gF, gUDel.toSubject());
189 verifyMembershipAddAndDelete(gG, gUDel.toSubject());
190 verifyMembershipAddAndDelete(gH, gUDel.toSubject());
191 verifyMembershipAddAndDelete(gJ, gUDel.toSubject());
192 verifyMembershipAddAndDelete(gK, gUDel.toSubject());
193 verifyMembershipAddAndDelete(gL, gUDel.toSubject());
194 verifyMembershipAddAndDelete(gM, gUDel.toSubject());
195 verifyMembershipAddAndDelete(gN, gUDel.toSubject());
196 verifyMembershipAddAndDelete(gO, gUDel.toSubject());
197 verifyMembershipAddAndDelete(gQ, gUDel.toSubject());
198 verifyMembershipAddAndDelete(gR, gUDel.toSubject());
199 verifyMembershipAddAndDelete(gS, gUDel.toSubject());
200 verifyMembershipAddAndDelete(gT, gUDel.toSubject());
201
202 verifyMembershipAddAndDelete(gA, gVDel.toSubject());
203 verifyMembershipAddAndDelete(gB, gVDel.toSubject());
204 verifyMembershipAddAndDelete(gC, gVDel.toSubject());
205 verifyMembershipAddAndDelete(gF, gVDel.toSubject());
206 verifyMembershipAddAndDelete(gG, gVDel.toSubject());
207 verifyMembershipAddAndDelete(gH, gVDel.toSubject());
208 verifyMembershipAddAndDelete(gJ, gVDel.toSubject());
209 verifyMembershipAddAndDelete(gK, gVDel.toSubject());
210 verifyMembershipAddAndDelete(gL, gVDel.toSubject());
211 verifyMembershipAddAndDelete(gM, gVDel.toSubject());
212 verifyMembershipAddAndDelete(gN, gVDel.toSubject());
213 verifyMembershipAddAndDelete(gO, gVDel.toSubject());
214 verifyMembershipAddAndDelete(gQ, gVDel.toSubject());
215 verifyMembershipAddAndDelete(gR, gVDel.toSubject());
216 verifyMembershipAddAndDelete(gS, gVDel.toSubject());
217 verifyMembershipAddAndDelete(gT, gVDel.toSubject());
218
219
220 r.rs.stop();
221 }
222 catch (Exception e) {
223 T.e(e);
224 }
225 }
226
227 public void verifyMembershipAddAndDelete(Group g, Subject s) throws Exception {
228 g.addMember(s);
229 g.deleteMember(s);
230 runCompositeMembershipChangeLogConsumer();
231 verifyMemberships();
232 }
233
234 public void verifyMemberships() throws Exception {
235
236
237 MembershipTestHelper.verifyImmediateMembership(r.rs, "SB -> gA", gA, subjB);
238
239
240 MembershipTestHelper.verifyImmediateMembership(r.rs, "gA -> gB", gB, gA.toSubject());
241
242
243 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SB -> gB", gB, subjB, gA, 1, gB, gA.toSubject(), null, 0);
244
245
246 MembershipTestHelper.verifyCompositeMembership(r.rs, "SB -> gD", gD, subjB);
247
248
249 MembershipTestHelper.verifyCompositeMembership(r.rs, "SA -> gE", gE, subjA);
250
251
252 MembershipTestHelper.verifyCompositeMembership(r.rs, "SB -> gE", gE, subjB);
253
254
255 MembershipTestHelper.verifyCompositeMembership(r.rs, "SD -> gE", gE, subjD);
256
257
258 Membership gHgF = MembershipTestHelper.verifyImmediateMembership(r.rs, "gH -> gF", gF, gH.toSubject());
259
260
261 Membership gRgF = MembershipTestHelper.verifyImmediateMembership(r.rs, "gR -> gF", gF, gR.toSubject());
262
263
264 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SA -> gF", gF, subjA, gH, 1, gF, gH.toSubject(), null, 0);
265
266
267 Membership gQgFThroughgH = MembershipTestHelper.verifyEffectiveMembership(r.rs, "gQ -> gF", gF, gQ.toSubject(), gH, 1, gHgF);
268
269
270 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SD -> gF", gF, subjD, gQ, 2, gQgFThroughgH);
271
272
273 MembershipTestHelper.verifyEffectiveMembership(r.rs, "gS -> gF", gF, gS.toSubject(), gR, 1, gF, gR.toSubject(), null, 0);
274
275
276 Membership gQgFThroughgR = MembershipTestHelper.verifyEffectiveMembership(r.rs, "gQ -> gF", gF, gQ.toSubject(), gR, 1, gRgF);
277
278
279 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SD -> gF", gF, subjD, gQ, 2, gQgFThroughgR);
280
281
282 MembershipTestHelper.verifyImmediateMembership(r.rs, "gD -> gG", gG, gD.toSubject());
283
284
285 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SB -> gG", gG, subjB, gD, 1, gG, gD.toSubject(), null, 0);
286
287
288 MembershipTestHelper.verifyImmediateMembership(r.rs, "SA -> gH", gH, subjA);
289
290
291 MembershipTestHelper.verifyImmediateMembership(r.rs, "gQ -> gH", gH, gQ.toSubject());
292
293
294 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SD -> gH", gH, subjD, gQ, 1, gH, gQ.toSubject(), null, 0);
295
296
297 MembershipTestHelper.verifyCompositeMembership(r.rs, "SA -> gI", gI, subjA);
298
299
300 MembershipTestHelper.verifyCompositeMembership(r.rs, "SB -> gI", gI, subjB);
301
302
303 MembershipTestHelper.verifyCompositeMembership(r.rs, "SC -> gI", gI, subjC);
304
305
306 MembershipTestHelper.verifyCompositeMembership(r.rs, "SD -> gI", gI, subjD);
307
308
309 MembershipTestHelper.verifyImmediateMembership(r.rs, "gE -> gJ", gJ, gE.toSubject());
310
311
312 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SA -> gJ", gJ, subjA, gE, 1, gJ, gE.toSubject(), null, 0);
313
314
315 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SB -> gJ", gJ, subjB, gE, 1, gJ, gE.toSubject(), null, 0);
316
317
318 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SD -> gJ", gJ, subjD, gE, 1, gJ, gE.toSubject(), null, 0);
319
320
321 MembershipTestHelper.verifyImmediateMembership(r.rs, "SC -> gK", gK, subjC);
322
323
324 MembershipTestHelper.verifyImmediateMembership(r.rs, "gI -> gL", gL, gI.toSubject());
325
326
327 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SA -> gL", gL, subjA, gI, 1, gL, gI.toSubject(), null, 0);
328
329
330 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SB -> gL", gL, subjB, gI, 1, gL, gI.toSubject(), null, 0);
331
332
333 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SC -> gL", gL, subjC, gI, 1, gL, gI.toSubject(), null, 0);
334
335
336 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SD -> gL", gL, subjD, gI, 1, gL, gI.toSubject(), null, 0);
337
338
339 MembershipTestHelper.verifyImmediateMembership(r.rs, "gJ -> gM", gM, gJ.toSubject());
340
341
342 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SA -> gM", gM, subjA, gE, 2, gM, gE.toSubject(), gJ, 1);
343
344
345 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SB -> gM", gM, subjB, gE, 2, gM, gE.toSubject(), gJ, 1);
346
347
348 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SD -> gM", gM, subjD, gE, 2, gM, gE.toSubject(), gJ, 1);
349
350
351 MembershipTestHelper.verifyEffectiveMembership(r.rs, "gE -> gM", gM, gE.toSubject(), gJ, 1, gM, gJ.toSubject(), null, 0);
352
353
354 MembershipTestHelper.verifyImmediateMembership(r.rs, "gG -> gN", gN, gG.toSubject());
355
356
357 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SB -> gN", gN, subjB, gD, 2, gN, gD.toSubject(), gG, 1);
358
359
360 MembershipTestHelper.verifyEffectiveMembership(r.rs, "gD -> gN", gN, gD.toSubject(), gG, 1, gN, gG.toSubject(), null, 0);
361
362
363 MembershipTestHelper.verifyCompositeMembership(r.rs, "SB -> gP", gP, subjB);
364
365
366 MembershipTestHelper.verifyImmediateMembership(r.rs, "SD -> gQ", gQ, subjD);
367
368
369 MembershipTestHelper.verifyImmediateMembership(r.rs, "gS -> gR", gR, gS.toSubject());
370
371
372 MembershipTestHelper.verifyImmediateMembership(r.rs, "gQ -> gR", gR, gQ.toSubject());
373
374
375 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SD -> gR", gR, subjD, gQ, 1, gR, gQ.toSubject(), null, 0);
376
377
378 MembershipTestHelper.verifyImmediateMembership(r.rs, "gP -> gT", gT, gP.toSubject());
379
380
381 MembershipTestHelper.verifyEffectiveMembership(r.rs, "SB -> gT", gT, subjB, gP, 1, gT, gP.toSubject(), null, 0);
382
383
384
385 Set<Membership> allMemberships = MembershipFinder.internal_findAllByCreatedAfter(r.rs, before, Group.getDefaultList());
386
387 T.amount("Number of memberships", 56, allMemberships.size());
388 }
389 }
390