/* * Copyright (c) 2008-2014 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eike Stepper - initial API and implementation */ package org.eclipse.emf.cdo.tests.hibernate; import org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore; import org.eclipse.emf.cdo.tests.AllConfigs; import org.eclipse.emf.cdo.tests.AttributeTest; import org.eclipse.emf.cdo.tests.BackupTest; import org.eclipse.emf.cdo.tests.CommitInfoTest; import org.eclipse.emf.cdo.tests.CrossReferenceTest; import org.eclipse.emf.cdo.tests.DynamicXSDTest; import org.eclipse.emf.cdo.tests.EMFCompareTest; import org.eclipse.emf.cdo.tests.ExternalReferenceTest; import org.eclipse.emf.cdo.tests.FeatureMapTest; import org.eclipse.emf.cdo.tests.LockingManagerRestartRepositoryTest; import org.eclipse.emf.cdo.tests.LockingManagerRestartSessionTest; import org.eclipse.emf.cdo.tests.LockingManagerRestartTransactionTest; import org.eclipse.emf.cdo.tests.LockingManagerTest; import org.eclipse.emf.cdo.tests.LockingNotificationsTest; import org.eclipse.emf.cdo.tests.MEMStoreQueryTest; import org.eclipse.emf.cdo.tests.MultiValuedOfAttributeTest; import org.eclipse.emf.cdo.tests.OCLQueryTest; import org.eclipse.emf.cdo.tests.PackageRegistryTest; import org.eclipse.emf.cdo.tests.SecurityTest; import org.eclipse.emf.cdo.tests.TransactionTest; import org.eclipse.emf.cdo.tests.UnsetTest; import org.eclipse.emf.cdo.tests.WorkspaceTest; import org.eclipse.emf.cdo.tests.XATransactionTest; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_258933_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_272861_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_279982_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_303466_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_306998_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_322804_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_329254_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_334995_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_347964_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_351393_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_352204_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_359966_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_362270_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_362270b_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_362270c_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_365832_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_381472_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_390185_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_400236_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_405191_Test; import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_416474_Test; import org.eclipse.emf.cdo.tests.config.IRepositoryConfig; import org.eclipse.emf.cdo.tests.config.IScenario; import org.eclipse.emf.cdo.tests.config.impl.ConfigTest; import org.eclipse.emf.cdo.util.CommitException; import java.util.List; import junit.framework.Test; import junit.framework.TestSuite; /** * @author Eike Stepper */ public class AllTestsHibernate extends AllConfigs { public static Test suite() { return new AllTestsHibernate().getTestSuite(); } @Override protected void initConfigSuites(TestSuite parent) { addScenario(parent, HibernateConfig.INSTANCE, JVM, NATIVE); addScenario(parent, HibernateConfig.AUDIT_INSTANCE, JVM, NATIVE); } @Override protected void initTestClasses(List<Class<? extends ConfigTest>> testClasses, IScenario scenario) { // testClasses.clear(); // testClasses.add(HibernateBugzilla_417797_Test.class); // if (true) // { // return; // } super.initTestClasses(testClasses, scenario); // TODO: find out why this does not work for non-auditing if (scenario.getRepositoryConfig().isSupportingAudits()) { testClasses.add(HibernateBugzilla_380987_Test.class); } testClasses.add(HibernateChunkingTest.class); testClasses.add(Hibernate_Failure_Test.class); testClasses.add(Hibernate_Export_Test.class); testClasses.add(HibernateBugzilla_381013_Test.class); testClasses.add(HibernateBugzilla_417797_Test.class); testClasses.add(HibernateBugzilla_392653_Test.class); testClasses.add(HibernateBugzilla_387752_Test.class); testClasses.add(HibernateBugzilla_387752_True_Test.class); testClasses.add(HibernateBugzilla_333473_Test.class); testClasses.add(HibernateTimeStampTest.class); // removed stalls // testClasses.add(HibernateXATransactionTest.class); testClasses.add(HibernateExternalAnnotationTest.class); testClasses.add(HibernateQueryTest.class); testClasses.add(HibernateQueryNoCachingTest.class); testClasses.add(HibernateBugzilla_301104_Test.class); // this bugzilla persists an ecore package, not // supported without extra annotations. testClasses.remove(Bugzilla_416474_Test.class); testClasses.remove(TransactionTest.class); testClasses.add(HibernateTransactionTest.class); // remove as it tries to persist an eannotation testClasses.remove(Bugzilla_400236_Test.class); testClasses.add(HibernateBugzilla_362270b_Test.class); testClasses.remove(Bugzilla_362270b_Test.class); testClasses.add(HibernateBugzilla_362270c_Test.class); testClasses.remove(Bugzilla_362270c_Test.class); testClasses.add(HibernateBugzilla_405191_Test.class); testClasses.remove(Bugzilla_405191_Test.class); // for some reason this test needs to be done first... testClasses.remove(Bugzilla_306998_Test.class); testClasses.add(0, Bugzilla_306998_Test.class); testClasses.remove(CrossReferenceTest.class); testClasses.add(HibernateCrossReferenceTest.class); testClasses.add(HibernateBugzilla_356181_Test.class); // the hb store throws an error on deadlocked transaction // and does not block testClasses.remove(Bugzilla_390185_Test.class); testClasses.add(HibernateBugzilla_398057_Test.class); testClasses.add(HibernateBugzilla_397682_Test.class); testClasses.add(HibernateBugzilla_416530_Test.class); // not supported specific OCL operations // TODO: research this testClasses.remove(Bugzilla_416474_Test.class); if (scenario.getRepositoryConfig().isSupportingAudits()) { // need to add additional auditing annotations testClasses.remove(HibernateBugzilla_405191_Test.class); // stalls in case of auditing // TODO: research this testClasses.remove(OCLQueryTest.class); testClasses.remove(OCLQueryTest.Lazy.class); testClasses.add(HibernateBugzilla_395684_Test.class); testClasses.add(CDOObjectHistoryTest.class); // the security model inherits from the ecore model // not so well supported for now for auditing testClasses.remove(SecurityTest.class); // the package registry count changes when auditing // as auditing adds epackages testClasses.remove(PackageRegistryTest.class); testClasses.add(HibernatePackageRegistryTest.class); testClasses.remove(Bugzilla_303466_Test.class); testClasses.add(Hibernate_Bugzilla_303466_Test.class); // feature maps are not handled correctly in CDO with auditing testClasses.remove(FeatureMapTest.class); } else { // these testcases uses commitinfo // only supported with auditing testClasses.remove(Bugzilla_329254_Test.class); testClasses.remove(Hibernate_Bugzilla_329254_Test.class); // Commit info only works with auditing testClasses.remove(CommitInfoTest.class); } // renaming a resource is not possible in the hibernate store. testClasses.remove(Bugzilla_334995_Test.class); // repository restart is not supported in the hibernate store // as it clears the database testClasses.remove(Bugzilla_347964_Test.class); // workspaces are not supported testClasses.remove(WorkspaceTest.class); testClasses.remove(DynamicXSDTest.class); // delete repo is not yet supported testClasses.remove(Bugzilla_381472_Test.class); testClasses.remove(Bugzilla_362270_Test.class); // persisting models in a resource is not supported testClasses.remove(Bugzilla_365832_Test.class); testClasses.remove(Bugzilla_352204_Test.class); testClasses.remove(Bugzilla_359966_Test.class); // external reference in a resource not supported testClasses.remove(Bugzilla_351393_Test.class); // hibernate does not support persisting // java class and object testClasses.add(HibernateAttributeTest.class); testClasses.remove(AttributeTest.class); // Use a hibernate specific test class // https://bugs.eclipse.org/bugs/show_bug.cgi?id=339492 testClasses.add(Hibernate_BackupTest.class); testClasses.remove(BackupTest.class); // Teneo does not yet support lists of int arrays: // https://bugs.eclipse.org/bugs/show_bug.cgi?id=330212 testClasses.remove(Bugzilla_322804_Test.class); // overridden because Hibernate will treat all stale references as an exception testClasses.add(Hibernate_Bugzilla_279982_Test.class); testClasses.remove(Bugzilla_279982_Test.class); // locking not supported testClasses.remove(LockingManagerRestartRepositoryTest.class); testClasses.remove(LockingManagerRestartSessionTest.class); testClasses.remove(LockingManagerRestartTransactionTest.class); testClasses.remove(LockingNotificationsTest.class); testClasses.remove(LockingManagerRestartRepositoryTest.class); // Locking manager not supported testClasses.remove(LockingManagerTest.class); // problem with wrong version of EMF Compare testClasses.remove(EMFCompareTest.class); // replace a test with our local implementation: // the MultiValueOfAttributeTest class has a method // testListOfInteger which has a List with a null value // this is not nicely supported by Hibernate // therefore this step is removed testClasses.add(HibernateMultiValuedOfAttributeTest.class); testClasses.remove(MultiValuedOfAttributeTest.class); // MemStore is not relevant testClasses.remove(MEMStoreQueryTest.class); // replace test case to do external mapping testClasses.remove(XATransactionTest.class); // replace test case with one, disabling some non working testcases // see the HibernateExternalReferenceTest for a description testClasses.add(HibernateExternalReferenceTest.class); testClasses.remove(ExternalReferenceTest.class); // this testcases removes and creates a resource with the // same path in one transaction, that's not supported // by hibernate.. because of unique key constraints testClasses.remove(Bugzilla_272861_Test.class); // override a testcase because the hibernate store // has a different meaning of unset testClasses.add(HibernateBugzilla_258933_Test.class); testClasses.remove(Bugzilla_258933_Test.class); // replace as unsettable has to be re-visited for the hb store // see Bug 298579, it does not work for object types testClasses.add(HibernateUnsetTest.class); testClasses.remove(UnsetTest.class); } /** * Overridden because one testcase does not pass as Hibernate currently does not store the isset boolean values in the * database. * * @author Eike Stepper */ public static class HibernateUnsetTest extends UnsetTest { @Override public void testUnsettableBaseTypeVsObjectType() { } } public static class HibernatePackageRegistryTest extends PackageRegistryTest { @Override public void testCommitNestedPackages() throws Exception { } @Override public void testCommitTopLevelPackages() throws Exception { } } // overridden because Hibernate will treat all stale references as an exception public static class Hibernate_Bugzilla_279982_Test extends Bugzilla_279982_Test { @Override public void testBugzilla_279982_Single() throws Exception { try { super.testBugzilla_279982_Single(); } catch (Exception e) { assertEquals(true, e instanceof CommitException); assertEquals(true, e.getMessage().contains("org.hibernate.ObjectNotFoundException")); } } @Override public void testBugzilla_279982_Multi_RevisionPrefetchingPolicy() throws Exception { try { super.testBugzilla_279982_Multi_RevisionPrefetchingPolicy(); } catch (Exception e) { assertEquals(true, e instanceof CommitException); assertEquals(true, e.getMessage().contains("org.hibernate.ObjectNotFoundException")); } } } public static class Hibernate_BackupTest extends BackupTest { @Override protected void doSetUp() throws Exception { final IRepositoryConfig repConfig = getRepositoryConfig(); final HibernateConfig hbConfig = (HibernateConfig)repConfig; final String persistenceXML = "org/eclipse/emf/cdo/tests/hibernate/cdo_hibernate.persistence.xml"; hbConfig.getAdditionalProperties().put(HibernateStore.PERSISTENCE_XML, persistenceXML); super.doSetUp(); } @Override protected void doTearDown() throws Exception { final IRepositoryConfig repConfig = getRepositoryConfig(); final HibernateConfig hbConfig = (HibernateConfig)repConfig; hbConfig.getAdditionalProperties().clear(); super.doTearDown(); } } public static class Hibernate_Bugzilla_303466_Test extends Bugzilla_303466_Test { @Override public void test_missingDependency() throws Exception { } } public static class Hibernate_Bugzilla_329254_Test extends Bugzilla_329254_Test { // does not work for non audited cases @Override public void testCommitTimeStampUpdateOnError() throws Exception { } } public static class HibernateTransactionTest extends TransactionTest { // fails with timeout exceptions, ignore testcase for now @Override public void testCreateManySessionsAndTransactionsMultiThread() throws Exception { } } }