d038f8e8cec73bf662ca9241eb508a0adb3c8cf3
[taxeditor.git] / eu.etaxonomy.taxeditor.test / src / test / java / eu / etaxonomy / taxeditor / session / CdmEntitySessionAwareTest.java
1 // $Id$
2 /**
3 * Copyright (C) 2014 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.taxeditor.session;
11
12 import java.util.ArrayList;
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.Map;
16 import java.util.Set;
17 import java.util.UUID;
18
19 import org.apache.log4j.Logger;
20 import org.junit.Assert;
21 import org.junit.BeforeClass;
22 import org.junit.Ignore;
23 import org.junit.Test;
24 import org.unitils.dbunit.annotation.DataSet;
25
26 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
27 import eu.etaxonomy.cdm.api.service.ICommonService;
28 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
29 import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
30 import eu.etaxonomy.cdm.api.service.ITaxonService;
31 import eu.etaxonomy.cdm.api.service.ITermService;
32 import eu.etaxonomy.cdm.api.service.IUserService;
33 import eu.etaxonomy.cdm.api.service.IVocabularyService;
34 import eu.etaxonomy.cdm.model.agent.AgentBase;
35 import eu.etaxonomy.cdm.model.agent.Person;
36 import eu.etaxonomy.cdm.model.common.CdmBase;
37 import eu.etaxonomy.cdm.model.common.Credit;
38 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
39 import eu.etaxonomy.cdm.model.common.Extension;
40 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
41 import eu.etaxonomy.cdm.model.common.Language;
42 import eu.etaxonomy.cdm.model.common.LanguageString;
43 import eu.etaxonomy.cdm.model.common.TermType;
44 import eu.etaxonomy.cdm.model.common.TermVocabulary;
45 import eu.etaxonomy.cdm.model.description.KeyStatement;
46 import eu.etaxonomy.cdm.model.description.PolytomousKey;
47 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
48 import eu.etaxonomy.cdm.model.media.Rights;
49 import eu.etaxonomy.cdm.model.taxon.Taxon;
50 import eu.etaxonomy.taxeditor.httpinvoker.RemotingSessionAwareTest;
51 import eu.etaxonomy.taxeditor.httpinvoker.TestThread;
52
53
54 /**
55 * @author cmathew
56 * @date 7 Oct 2014
57 *
58 */
59 @DataSet
60 public class CdmEntitySessionAwareTest extends RemotingSessionAwareTest {
61
62 private static final Logger logger = Logger.getLogger(CdmEntitySessionAwareTest.class);
63
64 UUID polytomousKeyUuid = UUID.fromString("0d53ba20-7de4-4baa-bd8a-401048447d66");
65 UUID subKeyUuid = UUID.fromString("9d8bf4f6-a70a-4b80-8556-2ccfb436ff01");
66 //UUID polytomousKeyUuid = UUID.fromString("bab66772-2c83-428a-bb6d-655d12ac6097");
67 UUID taxon1Uuid = UUID.fromString("2b336df7-29e8-4f79-985f-66502739d22f");
68 UUID personUuid = UUID.fromString("945d08f2-eb92-45b6-9252-6275ea6d338b");
69
70
71
72 IPolytomousKeyService polytomousKeyService = getRemoteApplicationController().getPolytomousKeyService();
73 IPolytomousKeyNodeService polytomousKeyNodeService = getRemoteApplicationController().getPolytomousKeyNodeService();
74 ICommonService commonService = getRemoteApplicationController().getCommonService();
75 ITaxonService taxonService = getRemoteApplicationController().getTaxonService();
76 IVocabularyService vocabularyService = getRemoteApplicationController().getVocabularyService();
77 ITermService termService = getRemoteApplicationController().getTermService();
78 IUserService userService = getRemoteApplicationController().getUserService();
79
80 //Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
81
82
83
84 @BeforeClass
85 public static void initializePolytomousKeyTest() {
86 }
87
88
89 @Test
90 @Ignore
91 public void readAllPolytomousKeys() {
92 List<PolytomousKey> pKeys = polytomousKeyService.list(PolytomousKey.class, null, null, null, null);
93 Iterator<PolytomousKey> pKeysItr = pKeys.iterator();
94 Assert.assertEquals(pKeysItr.next().getUuid(),UUID.fromString("9d8bf4f6-a70a-4b80-8556-2ccfb436ff01"));
95 Assert.assertEquals(pKeysItr.next().getUuid(),UUID.fromString("0d53ba20-7de4-4baa-bd8a-401048447d66"));
96 }
97
98
99 @Test
100 //@DataSet("PolytomousKeyTest.readPolytmousKeyData.xml")
101 public void readPolytmousKeyData() {
102 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
103 Set<Taxon> taxonomicScope = pKey.getTaxonomicScope();
104 Iterator<Taxon> tsItr = taxonomicScope.iterator();
105 Taxon taxon = tsItr.next();
106
107 Assert.assertEquals("Achillea sec. Cyprus", taxon.getTitleCache());
108 Assert.assertEquals(tsItr.hasNext(), false);
109
110 List<Credit> credits = pKey.getCredits();
111 AgentBase agent = credits.get(0).getAgent();
112 Assert.assertEquals(agent.getId(),4809);
113 Assert.assertEquals(agent.getTitleCache(),"R. A. Graham");
114 Assert.assertEquals(credits.get(0).getText(),"Credits Text Test");
115
116 Set<Extension> exts = pKey.getExtensions();
117 Iterator<Extension> extItr = exts.iterator();
118 Extension ext = extItr.next();
119 Assert.assertEquals(ext.getValue(), "http://test.com");
120
121 Set<Rights> rights = pKey.getRights();
122 Iterator<Rights> rightsItr = rights.iterator();
123 Rights right = rightsItr.next();
124 Assert.assertEquals(right.getText(),"Rights Text Test");
125
126 Set<IdentifiableSource> sources = pKey.getSources();
127 Iterator<IdentifiableSource> sourcesItr = sources.iterator();
128 IdentifiableSource source = sourcesItr.next();
129 Assert.assertEquals(source.getId(), 23710);
130 source = sourcesItr.next();
131 Assert.assertEquals(source.getId(), 23711);
132
133 // TO DO : Added tests for Annotations , Markers
134 }
135
136
137
138 @Test
139 public void readPolytomousKeyDataFromNodes() {
140 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
141 PolytomousKeyNode rootNode = pKey.getRoot();
142
143
144 Assert.assertEquals(rootNode.getId(), 2750);
145
146 Assert.assertEquals(rootNode.getChildAt(0).getId(), 2751);
147 Assert.assertEquals(rootNode.getChildAt(0).getParent().getId(), rootNode.getId());
148 Assert.assertEquals(rootNode.getKey().getId(), pKey.getId());
149 Integer sortIndex = (Integer)getFieldValueViaReflection(rootNode.getChildAt(0), "sortIndex");
150 Assert.assertEquals(sortIndex, new Integer(0));
151 String statement = "Capitula without ligulate ray-florets; leaves entire or subentire";
152 Assert.assertEquals(rootNode.getChildAt(0).getStatement().getLabelText(Language.ENGLISH()), statement);
153
154 Assert.assertEquals(rootNode.getChildAt(1).getId(), 2753);
155 Assert.assertEquals(rootNode.getChildAt(1).getParent().getId(), rootNode.getId());
156 Assert.assertEquals(rootNode.getChildAt(1).getKey().getId(), pKey.getId());
157 sortIndex = (Integer)getFieldValueViaReflection(rootNode.getChildAt(1), "sortIndex");
158 Assert.assertEquals(sortIndex, new Integer(1));
159 statement = "Capitula with ligulate ray-florets; leaves pinnatisect";
160 Assert.assertEquals(rootNode.getChildAt(1).getStatement().getLabelText(Language.ENGLISH()), statement);
161
162 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getId(), 2754);
163 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getParent().getId(), rootNode.getChildAt(1).getId());
164 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getKey().getId(), pKey.getId());
165 sortIndex = (Integer)getFieldValueViaReflection(rootNode.getChildAt(1).getChildAt(0), "sortIndex");
166 Assert.assertEquals(sortIndex, new Integer(0));
167 statement = "Ray-florets yellow";
168 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getStatement().getLabelText(Language.ENGLISH()), statement);
169 Assert.assertEquals(rootNode.getChildAt(1).getChildAt(0).getChildAt(0).getTaxon().getTitleCache(), "Achillea arabica Kotschy sec. Cyprus");
170 }
171
172 @Test
173 public void addGrandChildPolytomousKeyNode() {
174
175 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
176 PolytomousKeyNode rootChildNode = pKey.getRoot().getChildAt(0);
177 PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance();
178 rootChildNode.addChild(grandChildNode);
179
180 polytomousKeyService.merge(pKey, true);
181 grandChildNode = pKey.getRoot().getChildAt(0).getChildAt(0);
182 Assert.assertTrue(0 != grandChildNode.getId());
183 KeyStatement ks = KeyStatement.NewInstance("test");
184 grandChildNode.setStatement(ks);
185 polytomousKeyService.merge(pKey, true);
186
187 //grandChildNode = pKey.getRoot().getChildAt(0).getChildAt(0);
188 //KeyStatement ks = grandChildNode.getStatement();
189 Assert.assertTrue(0 != ks.getId());
190
191 }
192
193 @Test
194 public void addGreatGrandChildPolytomousKeyNode() {
195
196 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
197 PolytomousKeyNode rootChildNode = pKey.getRoot().getChildAt(0);
198 PolytomousKeyNode grandChildNode = PolytomousKeyNode.NewInstance();
199 rootChildNode.addChild(grandChildNode);
200
201
202 polytomousKeyNodeService.merge(grandChildNode);
203
204
205 Assert.assertFalse(pKey.getRoot().getChildAt(0).getChildAt(0).getId() == 0);
206 }
207
208 @Test
209 public void savePolytomousKeyNodeData() {
210 PolytomousKey pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
211
212 PolytomousKeyNode pkeynode = pkey.getRoot();
213 String newQuestion = "New Question";
214 String newStatement = "New Statement";
215
216 Assert.assertEquals("Question 1",pkeynode.getQuestion().getLabel().get(Language.ENGLISH()).getText());
217 for(PolytomousKeyNode node : pkeynode.getChildren()) {
218
219 node.setQuestion(null);
220 node.setStatement(null);
221 }
222 //FIXME:Remoting Add tests for feature after fixing problem
223
224 //Feature feature = pkeynode.getFeature();
225 //Assert.assertEquals(feature.getTitleCache(),"Systematics");
226 //pkeynode.setFeature(null);
227
228 Assert.assertEquals(pkeynode.getChildAt(0).getModifyingText().get(Language.ENGLISH()).getText(),"Modifying Text 1a");
229 String modifyingText = "Modifying Text 1a updated";
230
231 //pkeynode.getChildAt(0).putModifyingText(Language.ENGLISH(), modifyingText);
232
233 Assert.assertEquals(pkeynode.getChildAt(0).getSubkey().getId(),751);
234 Assert.assertEquals("Asphodeline", pkeynode.getChildAt(0).getSubkey().getTitleCache());
235 Assert.assertNull(pkeynode.getChildAt(1).getTaxon());
236 Taxon taxon = CdmBase.deproxy(taxonService.find(taxon1Uuid),Taxon.class);
237 pkeynode.getChildAt(1).setTaxon(taxon);
238
239 polytomousKeyService.merge(pkey);
240
241 pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
242
243
244 pkeynode = pkey.getRoot();
245 for(PolytomousKeyNode node : pkeynode.getChildren()) {
246 Assert.assertNull(node.getQuestion());
247 node.setQuestion(KeyStatement.NewInstance(Language.ENGLISH(),newQuestion));
248 Assert.assertNull(node.getStatement());
249 node.setStatement(KeyStatement.NewInstance(Language.ENGLISH(),newStatement));
250 }
251
252 Assert.assertEquals(pkeynode.getChildAt(1).getTaxon(), taxon);
253
254 polytomousKeyService.merge(pkey);
255
256 pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
257
258 pkeynode = pkey.getRoot();
259 for(PolytomousKeyNode node : pkeynode.getChildren()) {
260 Assert.assertNotNull(node.getQuestion());
261 Map<Language, LanguageString> label = node.getQuestion().getLabel();
262 Assert.assertEquals(newQuestion, label.get(Language.ENGLISH()).getText());
263 Assert.assertNotNull(node.getStatement());
264 Assert.assertEquals(newStatement, node.getStatement().getLabel(Language.ENGLISH()).getText());
265 }
266 //Assert.assertEquals(pkeynode.getFeature().getId(), feature.getId());
267
268 }
269
270
271 @Test
272 public void savePolytomousKeyNodeDataWithSameSubKey() {
273
274 PolytomousKey pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
275
276
277 PolytomousKeyNode pkeynode = pkey.getRoot();
278
279 PolytomousKey subkey1 = CdmBase.deproxy(pkeynode.getChildAt(0).getSubkey(), PolytomousKey.class);
280 String subkey1title = subkey1.getTitleCache();
281 subkey1.setTitleCache(subkey1title + "test", true);
282
283
284 PolytomousKey subkey2 = CdmBase.deproxy(pkeynode.getChildAt(1).getChildAt(0).getSubkey(), PolytomousKey.class);
285 String subkey2title = subkey2.getTitleCache();
286 subkey2.setTitleCache(subkey2title + "test", true);
287
288 Assert.assertSame(subkey1, subkey2);
289
290 polytomousKeyService.merge(pkey);
291 }
292
293 @Test
294 public void savePolytomousKeyNodeDataWithSameSubKeyUsingService() {
295
296 PolytomousKey pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
297
298
299 PolytomousKeyNode pkeynode = pkey.getRoot();
300 //because of the check for null values in getChildren it isn't a persistent list anymore
301 // PersistentCollection children = (PersistentCollection) pkeynode.getChildren();
302 PolytomousKeyNode childNode0 = (PolytomousKeyNode)commonService.get(pkeynode.getUuid(), "children", 0);
303 PolytomousKey subkey1 = CdmBase.deproxy(childNode0.getSubkey(),PolytomousKey.class);
304 String subkey1title = subkey1.getTitleCache();
305 subkey1.setTitleCache(subkey1title + "test", true);
306
307 PolytomousKeyNode childNode1 = (PolytomousKeyNode)commonService.get(pkeynode.getUuid(), "children", 1);
308 PolytomousKey subkey2 = CdmBase.deproxy(childNode1.getSubkey(),PolytomousKey.class);
309 String subkey2title = subkey2.getTitleCache();
310 subkey2.setTitleCache(subkey2title + "test", true);
311
312 Assert.assertNotSame(childNode0, childNode1);
313
314 Assert.assertSame(subkey1, subkey2);
315
316 polytomousKeyService.merge(pkey);
317 }
318
319
320
321 @Test
322 public void savePolytomousKeyNodeDataWithSameLanguageInLabel() {
323
324 PolytomousKey pkey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
325 PolytomousKeyNode pkeynode = pkey.getRoot();
326
327 Map<Language, LanguageString> label1 = pkeynode.getQuestion().getLabel();
328 label1.size();
329
330
331 Map<Language, LanguageString> label2 = pkeynode.getChildAt(0).getStatement().getLabel();
332 label2.size();
333
334
335 polytomousKeyService.merge(pkey);
336 }
337
338 @Test
339 public void deleteSubKeyInPolytomousSubKeyWithoutInitializing() {
340 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
341
342
343 PolytomousKeyNode rootNode = pKey.getRoot();
344 PolytomousKeyNode child = rootNode.getChildAt(0);
345 PolytomousKey subKey = child.getSubkey();
346
347 polytomousKeyService.delete(subKey.getUuid());
348
349 // retrieving subkey shows its null
350 subKey = CdmBase.deproxy(polytomousKeyService.find(subKeyUuid),PolytomousKey.class);
351 Assert.assertNull(subKey);
352
353 pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
354
355
356 rootNode = pKey.getRoot();
357 child = rootNode.getChildAt(0);
358 subKey = child.getSubkey();
359 // subkey will not be null, because the delete functionality of the subkey
360 // does not currently delete it from a polytomous key node
361
362 // FIXME: With the new delete functionality this should be null, shouldn't it ?
363 Assert.assertNotNull(subKey);
364 }
365
366
367 @Test
368 public void deleteSubKeyInPolytomousNode() {
369 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
370
371
372 PolytomousKeyNode rootNode = pKey.getRoot();
373 List<PolytomousKeyNode> children = rootNode.getChildren();
374 PolytomousKeyNode child = rootNode.getChildAt(0);
375 polytomousKeyNodeService.delete(child.getUuid(), true);
376
377 pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
378
379 rootNode = pKey.getRoot();
380 children = rootNode.getChildren();
381 Assert.assertFalse(children.contains(child));
382 }
383
384 @Test
385 public void deleteSubKeyInPolytomousSubKeyAfterInitializing() {
386 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
387
388
389 PolytomousKeyNode rootNode = pKey.getRoot();
390 PolytomousKeyNode child = rootNode.getChildAt(0);
391 PolytomousKey subKey = child.getSubkey();
392 // this call initializes the subkey
393 subKey.getRoot();
394
395 polytomousKeyService.delete(subKey);
396
397 // since subKey was initialized before the delete, it will be
398 // accesible even after the delete. This behaviour is similar
399 // to hibernate session delete where the deleted object is
400 // made transient, but not deleted from the object graph
401
402 PolytomousKeyNode subKeyRootNode = subKey.getRoot();
403 Assert.assertNotNull(subKey);
404 }
405
406 @Test
407 public void saveNewTermVocabulary() {
408 TermVocabulary termVocabulary =
409 TermVocabulary.NewInstance(TermType.Feature,
410 null,
411 "Untitled",
412 null,
413 null);
414 try {
415 List<TermVocabulary<DefinedTermBase>> vocabularies = vocabularyService.findByTermType(TermType.Feature);
416
417 for(TermVocabulary vocab : vocabularies) {
418 vocab.getTermsOrderedByLabels(Language.ENGLISH());
419 }
420
421 termVocabulary = vocabularyService.merge(termVocabulary);
422 vocabularies.add(termVocabulary);
423 termVocabulary.setLabel("Test");
424 vocabularyService.merge(new ArrayList<TermVocabulary>(vocabularies));
425 } finally {
426 vocabularyService.delete(termVocabulary);
427 }
428 }
429
430 @Test
431 public void saveNewTerm() {
432 UUID vocNameFeatureUuid = UUID.fromString("fa7ca3eef-4092-49e1-beec-ed5096193e5e");
433 UUID vocFeatureUuid = UUID.fromString("b187d555-f06f-4d65-9e53-da7c93f8eaa8");
434 DefinedTermBase newTerm = TermType.Feature.getEmptyDefinedTermBase();
435 newTerm.setLabel("CreateTest");
436
437 try {
438
439 Assert.assertNotNull(newTerm);
440 TermVocabulary vocNameFeature = vocabularyService.find(vocNameFeatureUuid);
441 TermVocabulary vocFeature = vocabularyService.find(vocFeatureUuid);
442
443 List<TermVocabulary> vocs = new ArrayList<TermVocabulary>();
444
445 vocs.add(vocNameFeature);
446 vocs.add(vocFeature);
447
448 vocNameFeature.addTerm(newTerm);
449
450 vocs = vocabularyService.merge(vocs);
451 for(TermVocabulary voc : vocs) {
452 if(voc.getUuid().equals(vocNameFeatureUuid)) {
453 vocNameFeature = voc;
454 }
455 }
456
457 Assert.assertTrue(vocNameFeature.getTerms().contains(newTerm));
458
459 for(Object obj : vocNameFeature.getTerms()) {
460 DefinedTermBase dtb = (DefinedTermBase)obj;
461 if("CreateTest".equals(dtb.getLabel())) {
462 newTerm = dtb;
463 Assert.assertNotNull(dtb.getCreatedBy());
464 Assert.assertNotNull(dtb.getCreated());
465 } else {
466 Assert.assertNull(dtb.getCreatedBy());
467 }
468 }
469 newTerm.setLabel("UpdateTest");
470 newTerm = termService.merge(newTerm);
471 Assert.assertNotNull(newTerm.getUpdatedBy());
472 Assert.assertNotNull(newTerm.getUpdated());
473
474 Assert.assertNull(vocNameFeature.getCreatedBy());
475 Assert.assertNull(vocFeature.getCreatedBy());
476 } finally {
477 if(termService.find(newTerm.getUuid()) != null) {
478 termService.delete(newTerm.getUuid());
479 }
480 }
481 }
482
483
484 @Test
485 public void updatePerson() {
486 // Test for #5138
487 Person person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().load(personUuid);
488 person.setFirstname("Me");
489 CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
490 }
491
492
493 @Test
494 public void createPerson() {
495 // Test for #5138
496 Person person = Person.NewInstance();
497 person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
498 person = (Person) CdmApplicationState.getCurrentAppConfig().getAgentService().load(person.getUuid());
499 person.setFirstname("Some");
500 CdmApplicationState.getCurrentAppConfig().getAgentService().merge(person);
501 }
502
503 @Test
504 public void testThreadLocalActiveSession() throws InterruptedException {
505 MockSessionOwner<CdmBase> so1 = new MockSessionOwner<CdmBase>();
506 final ICdmEntitySession activeSession = getCdmEntitySessionManager().newSession(so1, true);
507 TestThread thread = new TestThread(true) {
508 @Override
509 public void doRun() throws InterruptedException {
510 ICdmEntitySession threadLocalActiveSession = getCdmEntitySessionManager().getActiveSession();
511 Assert.assertEquals(threadLocalActiveSession, activeSession);
512 }
513 };
514 invokeThread(thread);
515 MockSessionOwner<CdmBase> so2 = new MockSessionOwner<CdmBase>();
516 ICdmEntitySession newActiveSession = getCdmEntitySessionManager().newSession(so2, true);
517 Assert.assertFalse(activeSession.equals(newActiveSession));
518 thread.unblock();
519
520 }
521 }