Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-11-12 17:37:52 +0000
committerEike Stepper2010-11-12 17:37:52 +0000
commit7251cc0e0a009444373763794da5e698b6b48f5b (patch)
tree1b5298597f23b333ae1d206b341385323fc21b94 /plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/AllTestsDBDB2NonAudit.java
parent8dfd5bce28e3fb13dfd8bafeef03faad3c436f7a (diff)
downloadcdo-7251cc0e0a009444373763794da5e698b6b48f5b.tar.gz
cdo-7251cc0e0a009444373763794da5e698b6b48f5b.tar.xz
cdo-7251cc0e0a009444373763794da5e698b6b48f5b.zip
[330072] Provide a DB Adapter for DB2
https://bugs.eclipse.org/bugs/show_bug.cgi?id=330072
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/AllTestsDBDB2NonAudit.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/AllTestsDBDB2NonAudit.java213
1 files changed, 213 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/AllTestsDBDB2NonAudit.java b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/AllTestsDBDB2NonAudit.java
new file mode 100644
index 0000000000..287abb4504
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/AllTestsDBDB2NonAudit.java
@@ -0,0 +1,213 @@
+/**
+ * Copyright (c) 2004 - 2010 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.db;
+
+import org.eclipse.emf.cdo.server.IRepository;
+import org.eclipse.emf.cdo.server.db.CDODBUtil;
+import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
+import org.eclipse.emf.cdo.tests.AuditTest;
+import org.eclipse.emf.cdo.tests.AuditTestSameSession;
+import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_252214_Test;
+import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
+
+import org.eclipse.net4j.db.DBException;
+import org.eclipse.net4j.db.DBUtil;
+import org.eclipse.net4j.db.IDBAdapter;
+import org.eclipse.net4j.db.db2.DB2Adapter;
+import org.eclipse.net4j.db.db2.DB2SchemaDatasource;
+
+import javax.sql.DataSource;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author Eike Stepper
+ */
+public class AllTestsDBDB2NonAudit extends DBConfigs
+{
+ public static Test suite()
+ {
+ return new AllTestsDBDB2NonAudit().getTestSuite("CDO Tests (DBStore H2 Horizontal - non-audit mode)"); //$NON-NLS-1$
+ }
+
+ @Override
+ protected void initConfigSuites(TestSuite parent)
+ {
+ addScenario(parent, COMBINED, AllTestsDBDB2NonAudit.DB2NonAudit.INSTANCE, JVM, NATIVE);
+ }
+
+ @Override
+ protected boolean hasAuditSupport()
+ {
+ return false;
+ }
+
+ @Override
+ protected boolean hasBranchingSupport()
+ {
+ return false;
+ }
+
+ @Override
+ protected void initTestClasses(List<Class<? extends ConfigTest>> testClasses)
+ {
+ super.initTestClasses(testClasses);
+
+ // non-audit mode - remove audit tests
+ testClasses.remove(AuditTest.class);
+ testClasses.remove(AuditTestSameSession.class);
+ testClasses.remove(Bugzilla_252214_Test.class);
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class DB2NonAudit extends DBStoreRepositoryConfig
+ {
+ private static final String DB_NAME = "SAMPLE"; //$NON-NLS-1$
+
+ private static final String DB_USER = "DB2ADMIN"; //$NON-NLS-1$
+
+ private static final String DB_PASSWORD = "12345"; //$NON-NLS-1$
+
+ static final String DB_SCHEMA = "CDOTEST"; //$NON-NLS-1$
+
+ private static final long serialVersionUID = 1L;
+
+ public static final AllTestsDBDB2NonAudit.DB2NonAudit INSTANCE = new DB2NonAudit("DBStore: DB2 (non-audit)"); //$NON-NLS-1$
+
+ private transient String currentRepoName;
+
+ private static int tableCounter;
+
+ private static int dropCounter;
+
+ public DB2NonAudit(String name)
+ {
+ super(name);
+ }
+
+ @Override
+ protected void initRepositoryProperties(Map<String, String> props)
+ {
+ super.initRepositoryProperties(props);
+ props.put(IRepository.Props.SUPPORTING_AUDITS, "false"); //$NON-NLS-1$
+ }
+
+ @Override
+ protected IMappingStrategy createMappingStrategy()
+ {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("qualifiedNames", "false");
+ properties.put("forceNamesWithID", "false");
+
+ IMappingStrategy mappingStrategy = CDODBUtil.createHorizontalMappingStrategy(false);
+ mappingStrategy.setProperties(properties);
+
+ return mappingStrategy;
+ }
+
+ @Override
+ protected IDBAdapter createDBAdapter()
+ {
+ return new DB2Adapter();
+ }
+
+ @Override
+ protected DataSource createDataSource(final String repoName)
+ {
+ if (currentRepoName != null && !repoName.equals(currentRepoName))
+ {
+ throw new IllegalStateException("This test config only supports a single repository"); //$NON-NLS-1$
+ }
+
+ currentRepoName = repoName;
+
+ DB2SchemaDatasource dataSource = new DB2SchemaDatasource(DB_SCHEMA);
+ dataSource.setDatabaseName(DB_NAME);
+ dataSource.setUser(DB_USER);
+ dataSource.setPassword(DB_PASSWORD);
+
+ if (!isRestarting())
+ {
+ initAllTables(dataSource);
+ }
+
+ return dataSource;
+ }
+
+ @Override
+ public void tearDown() throws Exception
+ {
+ currentRepoName = null;
+ super.tearDown();
+ }
+
+ private static void initAllTables(DataSource dataSource)
+ {
+ Connection conn = null;
+ Statement statement = null;
+ String sql = null;
+
+ try
+ {
+ conn = dataSource.getConnection();
+ List<String> tableNames = DBUtil.getAllTableNames(conn, DB_SCHEMA);
+ if (tableCounter != 0)
+ {
+ if (tableCounter < tableNames.size())
+ {
+ dropCounter = 20;
+ }
+ }
+
+ tableCounter = tableNames.size();
+
+ boolean drop = false;
+ if (dropCounter > 0)
+ {
+ --dropCounter;
+ }
+ else if (dropCounter == 0)
+ {
+ tableCounter = 0;
+ dropCounter = -1;
+ drop = true;
+ }
+
+ statement = conn.createStatement();
+ for (String tableName : tableNames)
+ {
+ sql = (drop ? "DROP TABLE " : "DELETE FROM ") + tableName; //$NON-NLS-1$ //$NON-NLS-2$
+ DBUtil.trace(sql);
+ statement.execute(sql);
+ }
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException(ex, sql);
+ }
+ finally
+ {
+ DBUtil.close(statement);
+ DBUtil.close(conn);
+ }
+ }
+ }
+}

Back to the top