/******************************************************************************* * Copyright (c) 1998, 2015 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.aggregate; import org.eclipse.persistence.tools.schemaframework.PopulationManager; import org.eclipse.persistence.testing.framework.*; import org.eclipse.persistence.testing.models.aggregate.Agent; import org.eclipse.persistence.testing.models.aggregate.AggregateSystem; import org.eclipse.persistence.testing.models.aggregate.Builder; import org.eclipse.persistence.testing.models.aggregate.Client; import org.eclipse.persistence.testing.models.aggregate.Employee; import org.eclipse.persistence.testing.models.aggregate.Employee1; import org.eclipse.persistence.testing.models.aggregate.EvaluationClient; import org.eclipse.persistence.testing.models.aggregate.Transport; /** * This model tests reading/writing/deleting through using the aggregate model. */ public class AggregateTestModel extends TestModel { // The new apis added to AggregateCollectionMapping // in order to support jpa 2.0 element collections currently // are not compatible with project.xml // The flag provided so that XMLProjectWriterTestModel // could remove all tests that for this new feature. public static boolean useNewAggregateCollection = true; public AggregateTestModel() { setDescription("This model tests reading/writing/deleting of the complex aggregate model."); } public AggregateTestModel(boolean isSRG) { this(); this.isSRG = isSRG; } public void addForcedRequiredSystems() { //We need to ensure that the correct database schema is created addForcedRequiredSystem(new AggregateSystem()); } public void addRequiredSystems() { } public void addTests() { addTest(getReadObjectTestSuite()); addTest(getUpdateObjectTestSuite()); addTest(getReadAllTestSuite()); addTest(getDeleteObjectTestSuite()); addTest(getInsertObjectTestSuite()); addTest(getUnitOfWorkTestSuite()); addTest(getUnitOfWorkCommitResumeTestSuite()); addTest(getCheckForNullUnitOfWorkTestSuite()); addTest(getMergingUnitOfWorkTestSuite()); addTest(getDescriptorPropertiesTestSuite()); addTest(getEventTestSuite()); addTest(getNestedAggregateTestSuite()); addTest(getAggregateInheritanceTestSuite()); // EL bug 332080 addTest(getAggregateRelationshipsTestSuite()); } //SRG test set is maintained by QA only, do NOT add any new tests into it. public void addSRGTests() { addTest(getSRGReadObjectTestSuite()); addTest(getSRGUpdateObjectTestSuite()); addTest(getSRGReadAllTestSuite()); addTest(getSRGDeleteObjectTestSuite()); addTest(getSRGInsertObjectTestSuite()); addTest(getSRGUnitOfWorkTestSuite()); addTest(getSRGUnitOfWorkCommitResumeTestSuite()); addTest(getSRGCheckForNullUnitOfWorkTestSuite()); addTest(getSRGMergingUnitOfWorkTestSuite()); addTest(getSRGDescriptorPropertiesTestSuite()); addTest(getSRGEventTestSuite()); addTest(getSRGNestedAggregateTestSuite()); addTest(getSRGAggregateInheritanceTestSuite()); } public static TestSuite getAggregateInheritanceTestSuite() { TestSuite suite = getSRGAggregateInheritanceTestSuite(); suite.addTest(new AggregateInheritanceInitAggregateTestCase()); // Add new tests here... return suite; } public static TestSuite getAggregateRelationshipsTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateRelationshipsTestSuite"); suite.setDescription("This suite tests that aggregate relationships are handled correctly"); suite.addTest(new AggregateRelationshipsOneToOneTestCase()); suite.addTest(new AggregateRelationshipsTargetOneToOneTestCase()); suite.addTest(new AggregateRelationshipsOneToManyTestCase()); suite.addTest(new AggregateRelationshipsManyToManyTestCase()); suite.addTest(new AggregateRelationshipsDirectCollectionTestCase()); return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGAggregateInheritanceTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateInheritanceTestSuite"); suite.setDescription("This suite test that aggregate inheritance is handled correctly"); suite.addTest(new AggregateInheritanceTestCase()); suite.addTest(new AggregateInheritanceTypeFieldTestCase()); suite.addTest(new AggregateWithoutAttributesInheritanceTestCase()); suite.addTest(new AggregateTransientValueTestCase()); return suite; } public static TestSuite getCheckForNullUnitOfWorkTestSuite() { TestSuite suite = getSRGCheckForNullUnitOfWorkTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGCheckForNullUnitOfWorkTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateCheckForNullUnitOfWorkTestSuite"); suite.setDescription("This suite tests updating objects with UOW in the aggregate model."); Class employeeClass = Employee.class; Class clientClass = Client.class; PopulationManager manager = PopulationManager.getDefaultManager(); suite.addTest(new CheckForNullUnitOfWorkTest(manager.getObject(employeeClass, "example1"))); suite.addTest(new CheckForNullUnitOfWorkTest(manager.getObject(employeeClass, "example2"))); suite.addTest(new CheckForNullUnitOfWorkTest(manager.getObject(employeeClass, "example3"))); return suite; } public static TestSuite getDeleteObjectTestSuite() { TestSuite suite = getSRGDeleteObjectTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGDeleteObjectTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateDeleteObjectTestSuite"); suite.setDescription("This suite tests the deletion of each object in the aggregate model."); Class employeeClass = Employee.class; Class clientClass = Client.class; Class evaluationClientClass = EvaluationClient.class; PopulationManager manager = PopulationManager.getDefaultManager(); suite.addTest(new DeleteObjectTest(manager.getObject(employeeClass, "example1"))); suite.addTest(new DeleteObjectTest(manager.getObject(employeeClass, "example2"))); suite.addTest(new DeleteObjectTest(manager.getObject(employeeClass, "example3"))); suite.addTest(new DeleteObjectTest(manager.getObject(clientClass, "example1"))); suite.addTest(new DeleteObjectTest(manager.getObject(clientClass, "example2"))); suite.addTest(new DeleteObjectTest(manager.getObject(clientClass, "example3"))); suite.addTest(new DeleteObjectTest(manager.getObject(evaluationClientClass, "example1"))); suite.addTest(new DeleteObjectTest(manager.getObject(evaluationClientClass, "example2"))); suite.addTest(new DeleteObjectTest(manager.getObject(evaluationClientClass, "example3"))); //aggregate 1:m delete test suite.addTest(new DeleteObjectTest(manager.getObject(Agent.class, "example1"))); suite.addTest(new VerifyCascadeDelete(Agent.class)); suite.addTest(new AggregateCollectionClearTest(Agent.class)); if(useNewAggregateCollection) { suite.addTest(new DeleteObjectTest(manager.getObject(Builder.class, "example1"))); suite.addTest(new VerifyCascadeDelete(Builder.class)); suite.addTest(new AggregateCollectionClearTest(Builder.class)); } return suite; } public static TestSuite getDescriptorPropertiesTestSuite() { TestSuite suite = getSRGDescriptorPropertiesTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGDescriptorPropertiesTestSuite() { PopulationManager manager = PopulationManager.getDefaultManager(); TestSuite suite = new TestSuite(); suite.setName("AggregateDescriptorPropertiesTestSuite"); suite.setDescription("This suite tests descriptor properties on the aggregate model."); suite.addTest(new DescriptorRefreshCacheTest(manager.getObject(Employee.class, "example2"))); if(useNewAggregateCollection) { suite.addTest(new AgentBuilderTablesTest()); } return suite; } public static TestSuite getEventTestSuite() { TestSuite suite = getSRGEventTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGEventTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateEventTestSuite"); suite.setDescription("This suite test that aggregate events are being thrown appropiately"); suite.addTest(new AggregateEventTestCase()); return suite; } public static TestSuite getInsertObjectTestSuite() { TestSuite suite = getSRGInsertObjectTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGInsertObjectTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateInsertObjectTestSuite"); suite.setDescription("This suite tests the insertion of each object in the aggregate model."); suite.addTest(new InsertObjectTest(Employee.example1())); suite.addTest(new InsertObjectTest(Employee.example2())); suite.addTest(new InsertObjectTest(Employee.example3())); suite.addTest(new InsertObjectTest(Client.example1())); suite.addTest(new InsertObjectTest(Client.example2())); suite.addTest(new InsertObjectTest(Client.example3())); suite.addTest(new InsertObjectTest(EvaluationClient.example1())); suite.addTest(new InsertObjectTest(EvaluationClient.example2())); suite.addTest(new InsertObjectTest(EvaluationClient.example3())); //insert aggregate collection object suite.addTest(new InsertObjectTest(Agent.example2())); if(useNewAggregateCollection) { suite.addTest(new InsertObjectTest(Builder.example1())); } suite.addTest(new AggregateMappingNullNotAllow()); return suite; } public static TestSuite getMergingUnitOfWorkTestSuite() { TestSuite suite = getSRGMergingUnitOfWorkTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGMergingUnitOfWorkTestSuite() { PopulationManager manager = PopulationManager.getDefaultManager(); TestSuite suite = new TestSuite(); suite.setName("AggregateMergingUnitOfWorkTestSuite"); suite.setDescription("This suite tests merging of objects from two UOWs in the aggregate model."); suite.addTest(new MergingUnitOfWorkTest(manager.getObject(Employee.class, "example1"))); return suite; } public static TestSuite getNestedAggregateTestSuite() { TestSuite suite = getSRGNestedAggregateTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGNestedAggregateTestSuite() { TestSuite suite = new TestSuite(); suite.setName("NestedAggregateTestSuite"); suite.setDescription("Tested that nested aggregates are handled properly."); suite.addTest(new NestedAggregateTestCase()); //For CR#2587 suite.addTest(new NestedAggregateCollectionTest(Agent.class)); // CR#2896 suite.addTest(new NestedAggregateCollectionAbstractTestCase(Agent.class)); if(useNewAggregateCollection) { suite.addTest(new NestedAggregateCollectionTest(Builder.class)); suite.addTest(new NestedAggregateCollectionAbstractTestCase(Builder.class)); } return suite; } public static TestSuite getReadAllTestSuite() { TestSuite suite = getSRGReadAllTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGReadAllTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateReadAllTestSuite"); suite.setDescription("This suite tests the reading of all the objects of each class in the aggregate model."); suite.addTest(new ReadAllTest(Employee1.class, 2)); //==================== suite.addTest(new ReadAllTest(Employee.class, 3)); suite.addTest(new ReadAllTest(Client.class, 3)); suite.addTest(new ReadAllTest(EvaluationClient.class, 3)); //aggregate collection read all suite.addTest(new ReadAllTest(Agent.class, 1)); // Added May 5, 2000 - Jon D. for pr381 suite.addTest(new ReadAllTest(Transport.class, 4)); // Bug 2847621 suite.addTest(new AggregateCollectionOuterJoinTest(Agent.class)); if(useNewAggregateCollection) { suite.addTest(new ReadAllTest(Builder.class, 1)); suite.addTest(new AggregateCollectionOuterJoinTest(Builder.class)); } return suite; } public static TestSuite getReadObjectTestSuite() { TestSuite suite = getSRGReadObjectTestSuite(); // Add new tests here... suite.addTest(new JoinInAggregateAndOwnerTest()); suite.addTest(new InMemoryQueryKeyToAggregateTest(true)); suite.addTest(new InMemoryQueryKeyToAggregateTest(false)); // added for bug 5478648 suite.addTest(new AggregateWithOneToOneRelationshipTest()); // added for bug 6033380 suite.addTest(new AggregateInvalidationIdentityTest()); // EL Bug 326977 suite.addTest(new QueryKeyInAggregateTest(true)); suite.addTest(new QueryKeyInAggregateTest(false)); suite.addTest(new QueryKeyInAggregateInheritanceTest()); return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGReadObjectTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateReadObjectTestSuite"); suite.setDescription("This suite test the reading of each object in the aggregate model."); //===================================== Class employee1Class = Employee1.class; //====================================== Class employeeClass = Employee.class; Class clientClass = Client.class; Class evaluationClientClass = EvaluationClient.class; PopulationManager manager = PopulationManager.getDefaultManager(); //=============================================================================== suite.addTest(new ReadObjectTest(manager.getObject(employee1Class, "example1"))); suite.addTest(new ReadObjectTest(manager.getObject(employee1Class, "example2"))); //================================================================================== suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "example1"))); suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "example2"))); suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "example3"))); suite.addTest(new ReadObjectTest(manager.getObject(clientClass, "example1"))); suite.addTest(new ReadObjectTest(manager.getObject(clientClass, "example2"))); suite.addTest(new ReadObjectTest(manager.getObject(clientClass, "example3"))); suite.addTest(new ReadObjectTest(manager.getObject(evaluationClientClass, "example1"))); suite.addTest(new ReadObjectTest(manager.getObject(evaluationClientClass, "example2"))); suite.addTest(new ReadObjectTest(manager.getObject(evaluationClientClass, "example3"))); //aggregate collection read suite.addTest(new ReadObjectTest(manager.getObject(Agent.class, "example1"))); if(useNewAggregateCollection) { suite.addTest(new ReadObjectTest(manager.getObject(Builder.class, "example1"))); } return suite; } public static TestSuite getUnitOfWorkCommitResumeTestSuite() { TestSuite suite = getSRGUnitOfWorkCommitResumeTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGUnitOfWorkCommitResumeTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateUnitOfWorkCommitResumeTestSuite"); suite.setDescription("This suite tests updating objects with UOW in the aggregate model using the commitAndResume method."); Class employeeClass = Employee.class; PopulationManager manager = PopulationManager.getDefaultManager(); suite.addTest(new BatchReadingWithAggregateCollectionMapping(Agent.class)); if(useNewAggregateCollection) { suite.addTest(new BatchReadingWithAggregateCollectionMapping(Builder.class)); } suite.addTest(new UnitOfWorkCommitResumeTest(manager.getObject(employeeClass, "example1"))); suite.addTest(new UnitOfWorkCommitResumeTest(manager.getObject(employeeClass, "example2"))); suite.addTest(new UnitOfWorkCommitResumeTest(manager.getObject(employeeClass, "example3"))); return suite; } public static TestSuite getUnitOfWorkTestSuite() { TestSuite suite = getSRGUnitOfWorkTestSuite(); // Add new tests here... // bug 3443738 suite.addTest(new AggregateVersionOpimisticLockingTest()); return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGUnitOfWorkTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateUnitOfWorkTestSuite"); suite.setDescription("This suite tests updating objects with UOW in the aggregate model."); Class employeeClass = Employee.class; Class clientClass = Client.class; PopulationManager manager = PopulationManager.getDefaultManager(); suite.addTest(new UnitOfWorkTest(manager.getObject(employeeClass, "example1"))); suite.addTest(new UnitOfWorkTest(manager.getObject(employeeClass, "example2"))); suite.addTest(new UnitOfWorkTest(manager.getObject(employeeClass, "example3"))); /* suite.addTest(new DeletionUnitOfWorkTest(manager.getObject(clientClass, "example1"))); suite.addTest(new DeleteObjectTest(manager.getObject(clientClass, "example2"))); suite.addTest(new DeleteObjectTest(manager.getObject(clientClass, "example3"))); */ //aggregate collection UoW test suite.addTest(new AggregateCollectionUoWTest(manager.getObject(Agent.class, "example1"))); suite.addTest(new AggregateCollectionMultipleUoWTest(manager.getObject(Agent.class, "example1"))); //aggregate with transformation mapping test suite.addTest(new TransformationMappingTest()); //For CR#2285, handle adding nulls to a collection. suite.addTest(new AddNullToAggregateCollectionTest((Agent)manager.getObject(Agent.class, "example1"))); if(useNewAggregateCollection) { suite.addTest(new AggregateCollectionUoWTest(manager.getObject(Builder.class, "example1"))); suite.addTest(new AggregateCollectionMultipleUoWTest(manager.getObject(Builder.class, "example1"))); suite.addTest(new AddNullToAggregateCollectionTest((Builder)manager.getObject(Builder.class, "example1"))); } return suite; } public static TestSuite getUpdateObjectTestSuite() { TestSuite suite = getSRGUpdateObjectTestSuite(); // Add new tests here... return suite; } //SRG test set is maintained by QA only, do NOT add any new tests into it. public static TestSuite getSRGUpdateObjectTestSuite() { TestSuite suite = new TestSuite(); suite.setName("AggregateUpdateObjectTestSuite"); suite.setDescription("This suite tests the updating of each object in the aggregate model."); Class employee1Class = Employee1.class; Class employeeClass = Employee.class; Class clientClass = Client.class; Class evaluationClientClass = EvaluationClient.class; PopulationManager manager = PopulationManager.getDefaultManager(); //================================================================================= suite.addTest(new WriteObjectTest(manager.getObject(employee1Class, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(employee1Class, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(employee1Class, "example2"))); //================================================================================= suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(employeeClass, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(employeeClass, "example2"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(employeeClass, "example3"))); suite.addTest(new WriteObjectTest(manager.getObject(clientClass, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(clientClass, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(clientClass, "example2"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(clientClass, "example3"))); suite.addTest(new WriteObjectTest(manager.getObject(evaluationClientClass, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(evaluationClientClass, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(evaluationClientClass, "example2"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(evaluationClientClass, "example3"))); //update testing on aggregate collection mapping suite.addTest(new WriteObjectTest(manager.getObject(Agent.class, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Agent.class, "example1"))); if(useNewAggregateCollection) { suite.addTest(new WriteObjectTest(manager.getObject(Builder.class, "example1"))); suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Builder.class, "example1"))); } return suite; } }