/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.tests.unitofwork; | |
import java.util.Iterator; | |
import org.eclipse.persistence.annotations.IdValidation; | |
import org.eclipse.persistence.descriptors.ClassDescriptor; | |
import org.eclipse.persistence.testing.tests.writing.ComplexUpdateTest; | |
import org.eclipse.persistence.testing.tests.writing.UpdateChangeNothingTest; | |
import org.eclipse.persistence.testing.tests.writing.UpdateChangeObjectTest; | |
import org.eclipse.persistence.testing.tests.writing.UpdateChangeValueTest; | |
import org.eclipse.persistence.testing.tests.writing.UpdateDeepOwnershipTest; | |
import org.eclipse.persistence.testing.tests.writing.UpdateToNullTest; | |
import org.eclipse.persistence.tools.schemaframework.PopulationManager; | |
/** | |
* This model is used to test the unit of work on an isolated client/server session. | |
*/ | |
public class UnitOfWorkIsolatedAlwaysTestModel extends UnitOfWorkClientSessionTestModel { | |
public void setup() { | |
for (Iterator descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) { | |
ClassDescriptor descriptor = (ClassDescriptor)descriptors.next(); | |
descriptor.setUnitOfWorkCacheIsolationLevel(ClassDescriptor.ISOLATE_CACHE_ALWAYS); | |
} | |
super.setup(); | |
} | |
public void reset() { | |
for (Iterator descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) { | |
ClassDescriptor descriptor = (ClassDescriptor)descriptors.next(); | |
descriptor.setUnitOfWorkCacheIsolationLevel(ClassDescriptor.ISOLATE_NEW_DATA_AFTER_TRANSACTION); | |
} | |
super.reset(); | |
} | |
/** | |
* Add all unit of work test suite tests that are runnable with an isolated unit of work. | |
*/ | |
public void addTests() { | |
addTest(new MergeCloneWithReferencesWithNullTest()); | |
addTest(new MergeCloneWithReferencesTransparentIndirectionTest()); | |
//bug 4518570 | |
//addTest(new UnitOfWorkRevertAndResumeWithNewTest()); - Requires revert from cache. | |
//bug 4544221 | |
addTest(new UnitOfWorkRevertWithNewObjectTest()); | |
//bug 4569755 | |
addTest(new UnitOfWorkNullPrimaryKeyTest()); | |
PopulationManager manager = PopulationManager.getDefaultManager(); | |
org.eclipse.persistence.testing.models.employee.domain.Employee employee = | |
(org.eclipse.persistence.testing.models.employee.domain.Employee)manager.getObject(org.eclipse.persistence.testing.models.employee.domain.Employee.class, | |
"0001"); | |
// Tests with using unit of work. | |
ComplexUpdateTest test = new UpdateToNullTest(employee); | |
test.usesUnitOfWork = true; | |
addTest(test); | |
test = new UpdateChangeValueTest(employee); | |
test.usesUnitOfWork = true; | |
addTest(test); | |
test = new UpdateChangeNothingTest(employee); | |
test.usesUnitOfWork = true; | |
addTest(test); | |
test = new UpdateChangeObjectTest(employee); | |
test.usesUnitOfWork = true; | |
addTest(test); | |
test = | |
new UpdateDeepOwnershipTest((org.eclipse.persistence.testing.models.ownership.ObjectA)manager.getObject(org.eclipse.persistence.testing.models.ownership.ObjectA.class, | |
"example1")); | |
test.usesUnitOfWork = true; | |
addTest(test); | |
//addTest(new BidirectionalInsertTest(true)); - Requires merge. | |
addTest(new NestedUnitOfWorkTest(employee)); | |
addTest(new NestedUnitOfWorkMultipleCommitTest(employee)); | |
addTest(new DeepNestedUnitOfWorkTest(employee)); | |
addTest(new MultipleUnitOfWorkTest(employee)); | |
addTest(new InsertNewObjectTest()); | |
//addTest(new ComplexMultipleUnitOfWorkTest()); - Requires merge. | |
addTest(new FaultyUnitOfWorkTest()); | |
addTest(new LockFailureUnitOfWorkTest()); | |
//addTest(new UnitOfWorkResumeTest(employee)); - Requires merge. | |
addTest(new UnitOfWorkResumeOnFailureTest(employee)); | |
addTest(new DeletingFromParentSessionTest()); | |
//addTest(new org.eclipse.persistence.testing.models.mapping.EqualObjectUnitOfWorkTest()); - Requires merge. | |
addTest(new NoIMWithValueHolderTest()); | |
addTest(new UnitOfWorkRevertTest(employee)); | |
//addTest(new DeepMergeCloneSerializedTest()); - Requires merge. | |
//addTest(new DeepMergeCloneIndirectionTest()); - Requires merge. | |
//addTest(new RegisterNewObjectTest()); - Requires merge. | |
addTest(new NoIdentityMapUnitOfWorkTest()); | |
addTest(new RefreshObjectNoIdentityMapUnitOfWorkTest()); | |
addTest(new RelationshipTreeInsertTest()); | |
addTest(new UnitOfWorkComplexRefreshTest()); | |
addTest(new ViolateObjectSpaceTest()); | |
//code coverage | |
addTest(new NoValidationWithInitIdentityMaps()); | |
addTest(new NoIdentityTest()); | |
addTest(new NoIdentityMergeCloneTest()); | |
addTest(new org.eclipse.persistence.testing.tests.mapping.BiDirectionInsertOrderTest()); | |
addTest(new UnitOfWorkCommitResumeOnFailureNoFailureTest(employee)); | |
addTest(new UnitOfWorkCommitAndResume(employee)); | |
addTest(new NestedUnitOfWorkQuery()); | |
addTest(new DeleteAndConform()); | |
//addTest(new NullAggregateTest()); - Requires merge. | |
addTest(new UOWHasOnlyDeletesTest()); | |
//CR 2728 | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.NULL, false, false)); | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.ZERO, false, false)); | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.NEGATIVE, false, false)); | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.NULL, true, false)); | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.ZERO, true, false)); | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.NEGATIVE, true, false)); | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.NULL, true, true)); | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.ZERO, true, true)); | |
addTest(new RegisterNewObjectInIdentityMapNoSeqTest(IdValidation.NEGATIVE, true, true)); | |
//CR 2783 | |
addTest(new NestedUnitOfWorkDeleteNewObjectTest()); | |
//bug 3115160 | |
addTest(new NestedUnitOfWorkDeleteNestedNewObjectTest()); | |
//bug 3132979 | |
addTest(new NestedUnitOfWorkDeleteConformedNestedNewObjectTest()); | |
addTest(new DoubleNestedUnitOfWorkDeleteConformedNestedNewObjectTest()); | |
//bug 3228185 | |
addTest(new NestedUnitOfWorkNewObjectWithIndirectionTest()); | |
//CR#3216 | |
addTest(new UnitOfWorkDeleteNoValidationTest()); | |
addTest(new ConcurrentNewObjectTest()); | |
//addTest(new ConcurrentReadOnInsertTest()); - Test requires merge. | |
addTest(new ConcurrentRefreshOnUpdateTest()); | |
addTest(new ConcurrentRefreshOnCloneTest()); | |
//CR 4094 | |
addTest(new GetIdentityMapFromUOWForREADONLYClassTest()); | |
addTest(new UnitOfWorkCommitToDatabaseTest()); | |
addTest(new UnitOfWorkInitializeAllIdentityMapsTest()); | |
//CR#4204 | |
addTest(new WasTransactionBegunPrematurelyRollbackTest()); | |
//code coverage | |
addTest(new CanChangeReadOnlySetTest()); | |
// code coverage | |
addTest(new GetFromNewObjectWithConformTest()); | |
//addTest(new UOWCommitAndResumeWithPreCalcChangeSet(employee)); - Requires merge. | |
addTest(new PerformDeletesFirstTest()); | |
// bug 3815959 | |
addTest(new PerformDeletesFirstIgnoreUpdateTest()); | |
addTest(new PerformDeletesFirstIgnoreUpdateTest2()); | |
// bug 2612331 | |
addTest(new CreateDeleteCreateTest()); | |
//bug 2612602 | |
//addTest(new WorkingCloneCopyPolicyTest()); - Requires non-isolated. | |
addTest(new UnregisteredNewObjectOptimisticLockTest()); | |
//bug 3510459 | |
addTest(new DoubleNestedUnitOfWorkRegisterNewObjectTest()); | |
//bug 3582102 | |
addTest(new LockOnCloneTest()); | |
addTest(new LockOnCloneDeadlockAvoidanceTest()); | |
// bug 3287196 | |
addTest(new GetObjectFromIdentityMapTest()); | |
//bug 3656068 | |
//addTest(new ConcurrentReadOnUpdateWithEarlyTransTest()); - Requires non-isolated. | |
addTest(new MergeDeadIndirectionTest()); | |
//bug 4071929 | |
addTest(new UnitOfWorkConcurrentRevertTest()); | |
//Add new tests here, if any. | |
addTest(new CommitAfterExecuteModifyQueryDuringTransTest()); | |
//bug 4364283 | |
addTest(new AllChangeSetsTest()); | |
//bug 4438127 | |
//addTest(new NewObjectIdentityTest()); - Requires merge. | |
//bug 4453001 | |
addTest(new ErrorOnInsertTest()); | |
addTest(new CollectionMappingMergeObjectTest()); | |
addTest(new ExceptionsRaisedUnitOfWorkTest()); | |
//bug 4736360 | |
addTest(new NestedUOWWithNewObjectRegisteredTwiceTest()); | |
addTest(new NestedUnitOfWorkReadOnlyClassTest()); | |
} | |
} |