blob: c4f70386d49575bffa8e38b39e53f2c4a0e1a8b5 [file] [log] [blame]
/*******************************************************************************
* 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:
* Vikram Bhatia - initial API and implementation.
* David Minsky - tweaks and comments
******************************************************************************/
package org.eclipse.persistence.testing.tests.writing;
import java.util.HashMap;
import java.util.List;
import org.eclipse.persistence.internal.helper.Helper;
import org.eclipse.persistence.sessions.DatabaseSession;
import org.eclipse.persistence.testing.framework.TestCase;
import org.eclipse.persistence.testing.framework.TestErrorException;
// MODEL SYSTEMS USED IN THIS TESTCASE FOR COMMIT ORDER TESTING
import org.eclipse.persistence.testing.models.employee.relational.EmployeeSystem;
import org.eclipse.persistence.testing.models.inheritance.InheritanceSystem;
import org.eclipse.persistence.testing.models.insurance.InsuranceSystem;
import org.eclipse.persistence.testing.models.ownership.OwnershipSystem;
/**
* This test compares a hard-coded commit order to a generated commit order from CommitManager.
* If mapped classes are added into the models above, the hard-coded commit order is no longer
* valid, and they need to be added into the expected commit order.
*/
public class CommitOrderTest extends TestCase {
private static final String expectedCommitOrder = initializeExpectedCommitOrder();
private String orderAResults = null;
private String orderBResults = null;
private String orderCResults = null;
private String orderDResults = null;
public CommitOrderTest() {
super();
setDescription("Test to verify that the generated commit order is consistent with an expected commit order.");
}
public void test() {
getSession().getProject().setDescriptors(new HashMap());
((DatabaseSession)getSession()).logout();
((DatabaseSession)getSession()).login();
new EmployeeSystem().addDescriptors(getDatabaseSession());
orderAResults = getCommitOrderListAsString(getAbstractSession().getCommitManager().getCommitOrder());
getSession().getProject().setDescriptors(new HashMap());
((DatabaseSession)getSession()).logout();
((DatabaseSession)getSession()).login();
new InsuranceSystem().addDescriptors(getDatabaseSession());
orderBResults = getCommitOrderListAsString(getAbstractSession().getCommitManager().getCommitOrder());
getSession().getProject().setDescriptors(new HashMap());
((DatabaseSession)getSession()).logout();
((DatabaseSession)getSession()).login();
new OwnershipSystem().addDescriptors(getDatabaseSession());
orderCResults = getCommitOrderListAsString(getAbstractSession().getCommitManager().getCommitOrder());
getSession().getProject().setDescriptors(new HashMap());
((DatabaseSession)getSession()).logout();
((DatabaseSession)getSession()).login();
new InheritanceSystem().addDescriptors(getDatabaseSession());
orderDResults = getCommitOrderListAsString(getAbstractSession().getCommitManager().getCommitOrder());
}
public void verify() {
if (!expectedCommitOrder.equals(orderAResults)) {
throw new TestErrorException(getErrorMessage(orderAResults));
}
if (!expectedCommitOrder.equals(orderBResults)) {
throw new TestErrorException(getErrorMessage(orderBResults));
}
if (!expectedCommitOrder.equals(orderCResults)) {
throw new TestErrorException(getErrorMessage(orderCResults));
}
if (!expectedCommitOrder.equals(orderDResults)) {
throw new TestErrorException(getErrorMessage(orderDResults));
}
}
public void reset() {
((DatabaseSession)getSession()).logout();
((DatabaseSession)getSession()).login();
orderAResults = null;
orderBResults = null;
orderCResults = null;
orderDResults = null;
}
protected String getErrorMessage(String resultList) {
StringBuffer sb = new StringBuffer();
String cr = Helper.cr();
sb.append("Error: An unexpected commit order was found.");
sb.append(cr);
sb.append("A possible cause of this problem may be additional mapped classes were added to test models used by the testcase ");
sb.append(getClass().getName());
sb.append(cr);
sb.append("Mapped classes added to these model(s) should be added into the expected commit order within this testcase.");
sb.append(cr);
sb.append("[Found commit order] : ");
sb.append(cr);
sb.append(cr);
sb.append(resultList);
sb.append(cr);
sb.append("[Expected commit order] : ");
sb.append(cr);
sb.append(cr);
sb.append(expectedCommitOrder);
return sb.toString();
}
protected String getCommitOrderListAsString(List<Class> classes) {
StringBuffer sb = new StringBuffer();
String cr = Helper.cr();
for (Class clazz : classes) {
sb.append(clazz.getName());
sb.append(cr);
}
return sb.toString();
}
protected static String initializeExpectedCommitOrder() {
StringBuffer sb = new StringBuffer();
String cr = Helper.cr();
sb.append("org.eclipse.persistence.testing.models.aggregate.Address" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Address1" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.AddressDescription" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Agent" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Cousin" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Aggregate" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Bicycle" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Builder" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Car" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Parent" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Child" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Client" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Company" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Computer" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Customer" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Dependant" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Employee" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Employee1" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.EvaluationClient" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Manufacturer" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.GolfClub" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.GolfClubShaft" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.HomeAddress" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.House" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Job" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Language" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Oid" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Period" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.PeriodDescription" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.ProjectDescription" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Relative" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Responsibility" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.RoomSellingPoint" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.SellingPoint" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.SingleHouse" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.StepChild" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Switch" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.SwitchState" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.SwitchStateOFF" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.SwitchStateON" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.TownHouse" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Transport" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Vehicle" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Version" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.Worker" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.WorkingAddress" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.nested.Guardian" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.nested.MailingAddress" + cr);
sb.append("org.eclipse.persistence.testing.models.aggregate.nested.Student" + cr);
sb.append("org.eclipse.persistence.testing.models.bigbad.BigBadAggregate" + cr);
sb.append("org.eclipse.persistence.testing.models.bigbad.BigBadReferenceData" + cr);
sb.append("org.eclipse.persistence.testing.models.bigbad.BigBadObject" + cr);
sb.append("org.eclipse.persistence.testing.models.collections.Diner" + cr);
sb.append("org.eclipse.persistence.testing.models.collections.Location" + cr);
sb.append("org.eclipse.persistence.testing.models.collections.Restaurant" + cr);
sb.append("org.eclipse.persistence.testing.models.collections.Menu" + cr);
sb.append("org.eclipse.persistence.testing.models.collections.MenuItem" + cr);
sb.append("org.eclipse.persistence.testing.models.collections.Person" + cr);
sb.append("org.eclipse.persistence.testing.models.collections.Waiter" + cr);
sb.append("org.eclipse.persistence.testing.models.employee.domain.Address" + cr);
sb.append("org.eclipse.persistence.testing.models.employee.domain.Employee" + cr);
sb.append("org.eclipse.persistence.testing.models.employee.domain.Child" + cr);
sb.append("org.eclipse.persistence.testing.models.employee.domain.EmploymentPeriod" + cr);
sb.append("org.eclipse.persistence.testing.models.employee.domain.LargeProject" + cr);
sb.append("org.eclipse.persistence.testing.models.employee.domain.PhoneNumber" + cr);
sb.append("org.eclipse.persistence.testing.models.employee.domain.Project" + cr);
sb.append("org.eclipse.persistence.testing.models.employee.domain.SmallProject" + cr);
sb.append("org.eclipse.persistence.testing.models.events.AboutToInsertMultiTableObject" + cr);
sb.append("org.eclipse.persistence.testing.models.events.AboutToInsertSingleTableObject" + cr);
sb.append("org.eclipse.persistence.testing.models.events.Address" + cr);
sb.append("org.eclipse.persistence.testing.models.events.CreditCard" + cr);
sb.append("org.eclipse.persistence.testing.models.events.EmailAccount" + cr);
sb.append("org.eclipse.persistence.testing.models.events.Phone" + cr);
sb.append("org.eclipse.persistence.testing.models.events.Customer" + cr);
sb.append("org.eclipse.persistence.testing.models.events.Order" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.A_1_King2" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.A_2_1_King2" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.A_2_King2" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.A_King2" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Animal_Matt" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Human" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.JavaProgrammer" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Mammal" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Primate" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Programmer" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Alligator" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Animal" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Teacher" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Apple" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.BudgettedProject" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.ProjectWorker" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.BaseProject" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Company" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Bicycle" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Boat" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Car" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.SportsCar" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.SalesRep" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.SoftwareEngineer" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Engineer" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Person" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Bus" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Cat" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.CompanyWorker" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Computer" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Developer_King" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Dog" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Entomologist" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Fruit" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.FueledVehicle" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.GrassHopper" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.IBMPC" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Insect" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.LabradorRetriever" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.LadyBug" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Mac" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Mainframe" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.NonFueledVehicle" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.PC" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Pear" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Person_King" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.SeniorDeveloper_King" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Vehicle" + cr);
sb.append("org.eclipse.persistence.testing.models.inheritance.Worker" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.PolicyHolder" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.Address" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.BicyclePolicy" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.Policy" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.HealthPolicy" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.HousePolicy" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.VehiclePolicy" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.Claim" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.HealthClaim" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.HouseClaim" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.Phone" + cr);
sb.append("org.eclipse.persistence.testing.models.insurance.VehicleClaim" + cr);
sb.append("org.eclipse.persistence.testing.models.legacy.Employee" + cr);
sb.append("org.eclipse.persistence.testing.models.legacy.Computer" + cr);
sb.append("org.eclipse.persistence.testing.models.legacy.GaurenteedShipment" + cr);
sb.append("org.eclipse.persistence.testing.models.legacy.InsuredShipment" + cr);
sb.append("org.eclipse.persistence.testing.models.legacy.Shipment" + cr);
sb.append("org.eclipse.persistence.testing.models.legacy.Order" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Address" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.BabyMonitor" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Crib" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Baby" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.CompanyCard" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Cubicle" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Employee" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Monitor" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Computer" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.EmergencyExit" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Employee1" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Employee2" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Hardware" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Identification" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Keyboard" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Joystick" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Key" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Peripheral" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Phone" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.SecureSystem" + cr);
sb.append("org.eclipse.persistence.testing.models.mapping.Shipment" + cr);
sb.append("org.eclipse.persistence.testing.models.multipletable.Budget" + cr);
sb.append("org.eclipse.persistence.testing.models.multipletable.BusinessProject" + cr);
sb.append("org.eclipse.persistence.testing.models.multipletable.LargeBusinessProject" + cr);
sb.append("org.eclipse.persistence.testing.models.ownership.ObjectB" + cr);
sb.append("org.eclipse.persistence.testing.models.ownership.ObjectA" + cr);
sb.append("org.eclipse.persistence.testing.models.ownership.ObjectD" + cr);
sb.append("org.eclipse.persistence.testing.models.ownership.ObjectC" + cr);
sb.append("org.eclipse.persistence.testing.models.ownership.ObjectE" + cr);
sb.append("org.eclipse.persistence.testing.models.sequencing.SeqTestClass1" + cr);
sb.append("org.eclipse.persistence.testing.models.sequencing.SeqTestClass2" + cr);
sb.append("org.eclipse.persistence.testing.models.vehicle.EngineType" + cr);
sb.append("org.eclipse.persistence.testing.models.vehicle.FuelType" + cr);
sb.append("org.eclipse.persistence.testing.models.vehicle.SportsCar" + cr);
sb.append("org.eclipse.persistence.testing.models.vehicle.CarOwner" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.TestClass1" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.options.QueryOptionHistory" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.options.QueryOptionEmployee" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.report.Brewer" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.report.Beer" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.report.Person" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.report.Bar" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.report.History" + cr);
sb.append("org.eclipse.persistence.testing.tests.queries.report.ReportEmployee" + cr);
return sb.toString();
}
}