| /* |
| * 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 |
| { |
| } |
| } |
| } |