Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2008-03-09 18:26:11 +0000
committerEike Stepper2008-03-09 18:26:11 +0000
commitef2419ce8fe01f574c0668ff9c4a7fd3b94a0e40 (patch)
tree4377b7338e35db29d5a135073cf66f4c1f0bb12c /plugins/org.eclipse.net4j.db.tests/src
parent122d35629cbb26ccc87975279207965ce4bb874b (diff)
downloadcdo-ef2419ce8fe01f574c0668ff9c4a7fd3b94a0e40.tar.gz
cdo-ef2419ce8fe01f574c0668ff9c4a7fd3b94a0e40.tar.xz
cdo-ef2419ce8fe01f574c0668ff9c4a7fd3b94a0e40.zip
Added DB Tests
Diffstat (limited to 'plugins/org.eclipse.net4j.db.tests/src')
-rw-r--r--plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java85
-rw-r--r--plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AllTests.java31
-rw-r--r--plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/DerbyTest.java68
-rw-r--r--plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/TestSchema.java195
-rw-r--r--plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/bundle/Activator.java28
5 files changed, 407 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java
new file mode 100644
index 0000000000..c93e518a5a
--- /dev/null
+++ b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java
@@ -0,0 +1,85 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * 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.net4j.db.tests;
+
+import org.eclipse.net4j.db.DBType;
+import org.eclipse.net4j.db.DBUtil;
+import org.eclipse.net4j.db.IDBAdapter;
+import org.eclipse.net4j.db.IDBConnectionProvider;
+import org.eclipse.net4j.db.ddl.IDBField;
+import org.eclipse.net4j.db.ddl.IDBIndex;
+import org.eclipse.net4j.db.ddl.IDBSchema;
+import org.eclipse.net4j.db.ddl.IDBTable;
+import org.eclipse.net4j.util.tests.AbstractOMTest;
+
+import java.sql.Connection;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public abstract class AbstractDBTest extends AbstractOMTest
+{
+ protected IDBAdapter dbAdapter;
+
+ protected IDBConnectionProvider dbConnectionProvider;
+
+ @Override
+ protected void doSetUp() throws Exception
+ {
+ dbAdapter = createDBAdapter();
+ dbConnectionProvider = createDBConnectionProvider();
+ }
+
+ @Override
+ protected void doTearDown() throws Exception
+ {
+ }
+
+ protected abstract IDBAdapter createDBAdapter();
+
+ protected abstract IDBConnectionProvider createDBConnectionProvider();
+
+ protected Connection getConnection()
+ {
+ return dbConnectionProvider.getConnection();
+ }
+
+ public void testDBTypes() throws Exception
+ {
+ IDBSchema schema = DBUtil.createSchema("testDBTypes");
+ DBType[] dbTypes = DBType.values();
+
+ int i = 0;
+ for (DBType dbType : dbTypes)
+ {
+ IDBTable table = schema.addTable("table_" + i);
+ table.addField("field", dbType);
+
+ IDBTable idx_table = schema.addTable("idx_table" + i);
+ IDBField idx_field = idx_table.addField("field", dbType);
+ idx_table.addIndex(IDBIndex.Type.NON_UNIQUE, idx_field);
+
+ IDBTable uni_table = schema.addTable("uni_table" + i);
+ IDBField uni_field = uni_table.addField("field", dbType);
+ uni_table.addIndex(IDBIndex.Type.UNIQUE, uni_field);
+
+ IDBTable pk_table = schema.addTable("pk_table" + i);
+ IDBField pk_field = pk_table.addField("field", dbType);
+ pk_table.addIndex(IDBIndex.Type.PRIMARY_KEY, pk_field);
+
+ ++i;
+ }
+
+ Set<IDBTable> tables = schema.create(dbAdapter, dbConnectionProvider);
+ assertEquals(dbTypes.length * 4, tables.size());
+ }
+}
diff --git a/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AllTests.java b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AllTests.java
new file mode 100644
index 0000000000..82e9111932
--- /dev/null
+++ b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AllTests.java
@@ -0,0 +1,31 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * 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.net4j.db.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author Eike Stepper
+ */
+public class AllTests
+{
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("Tests for Net4j");
+
+ // $JUnit-BEGIN$
+ suite.addTestSuite(DerbyTest.class);
+ // $JUnit-END$
+
+ return suite;
+ }
+}
diff --git a/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/DerbyTest.java b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/DerbyTest.java
new file mode 100644
index 0000000000..8c6b9554a1
--- /dev/null
+++ b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/DerbyTest.java
@@ -0,0 +1,68 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * 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.net4j.db.tests;
+
+import org.eclipse.net4j.db.DBUtil;
+import org.eclipse.net4j.db.IDBAdapter;
+import org.eclipse.net4j.db.IDBConnectionProvider;
+import org.eclipse.net4j.db.internal.derby.DerbyAdapter;
+import org.eclipse.net4j.util.io.IOUtil;
+import org.eclipse.net4j.util.io.TMPUtil;
+
+import org.apache.derby.jdbc.EmbeddedDataSource;
+
+import java.io.File;
+
+/**
+ * @author Eike Stepper
+ */
+public class DerbyTest extends AbstractDBTest
+{
+ private File dbFolder;
+
+ @Override
+ protected void doTearDown() throws Exception
+ {
+ deleteDBFolder();
+ super.doTearDown();
+ }
+
+ @Override
+ protected IDBAdapter createDBAdapter()
+ {
+ return new DerbyAdapter();
+ }
+
+ @Override
+ protected IDBConnectionProvider createDBConnectionProvider()
+ {
+ dbFolder = TMPUtil.createTempFolder();
+ deleteDBFolder();
+ msg("Using DB folder: " + dbFolder.getAbsolutePath());
+
+ EmbeddedDataSource dataSource = new EmbeddedDataSource();
+ dataSource.setDatabaseName(dbFolder.getAbsolutePath());
+ dataSource.setCreateDatabase("true");
+
+ return DBUtil.createConnectionProvider(dataSource);
+ }
+
+ private void deleteDBFolder()
+ {
+ if (dbFolder != null)
+ {
+ if (dbFolder.exists())
+ {
+ IOUtil.delete(dbFolder);
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/TestSchema.java b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/TestSchema.java
new file mode 100644
index 0000000000..9ed3211db6
--- /dev/null
+++ b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/TestSchema.java
@@ -0,0 +1,195 @@
+package org.eclipse.net4j.db.tests;
+
+import org.eclipse.net4j.db.DBType;
+import org.eclipse.net4j.db.ddl.IDBField;
+import org.eclipse.net4j.db.ddl.IDBIndex;
+import org.eclipse.net4j.db.ddl.IDBTable;
+import org.eclipse.net4j.internal.db.ddl.DBSchema;
+
+public class TestSchema extends DBSchema
+{
+ public static final TestSchema INSTANCE = new TestSchema();
+
+ /**
+ * DBTable cdo_repository
+ */
+ public static final IDBTable REPOSITORY = INSTANCE.addTable("cdo_repository");
+
+ public static final IDBField REPOSITORY_NAME = //
+ REPOSITORY.addField("name", DBType.VARCHAR, 255);
+
+ public static final IDBField REPOSITORY_UUID = //
+ REPOSITORY.addField("uuid", DBType.VARCHAR, 64);
+
+ public static final IDBField REPOSITORY_STARTS = //
+ REPOSITORY.addField("starts", DBType.BIGINT);
+
+ public static final IDBField REPOSITORY_STARTED = //
+ REPOSITORY.addField("started", DBType.BIGINT);
+
+ public static final IDBField REPOSITORY_STOPPED = //
+ REPOSITORY.addField("stopped", DBType.BIGINT);
+
+ public static final IDBField REPOSITORY_NEXT_CDOID = //
+ REPOSITORY.addField("next_cdoid", DBType.BIGINT);
+
+ public static final IDBField REPOSITORY_NEXT_METAID = //
+ REPOSITORY.addField("next_metaid", DBType.BIGINT);
+
+ /**
+ * DBTable cdo_packages
+ */
+ public static final IDBTable PACKAGES = INSTANCE.addTable("cdo_packages");
+
+ public static final IDBField PACKAGES_ID = //
+ PACKAGES.addField("id", DBType.INTEGER);
+
+ public static final IDBField PACKAGES_URI = //
+ PACKAGES.addField("uri", DBType.VARCHAR, 255);
+
+ public static final IDBField PACKAGES_NAME = //
+ PACKAGES.addField("name", DBType.VARCHAR, 255);
+
+ public static final IDBField PACKAGES_ECORE = //
+ PACKAGES.addField("ecore", DBType.CLOB);
+
+ public static final IDBField PACKAGES_DYNAMIC = //
+ PACKAGES.addField("dynamic", DBType.BOOLEAN);
+
+ public static final IDBField PACKAGES_RANGE_LB = //
+ PACKAGES.addField("range_lb", DBType.BIGINT);
+
+ public static final IDBField PACKAGES_RANGE_UB = //
+ PACKAGES.addField("range_ub", DBType.BIGINT);
+
+ public static final IDBIndex INDEX_PACKAGES_PK = //
+ PACKAGES.addIndex(IDBIndex.Type.PRIMARY_KEY, PACKAGES_ID);
+
+ public static final IDBIndex INDEX_PACKAGES_URI = //
+ PACKAGES.addIndex(IDBIndex.Type.UNIQUE, PACKAGES_URI);
+
+ /**
+ * DBTable cdo_classes
+ */
+ public static final IDBTable CLASSES = INSTANCE.addTable("cdo_classes");
+
+ public static final IDBField CLASSES_ID = //
+ CLASSES.addField("id", DBType.INTEGER);
+
+ public static final IDBField CLASSES_PACKAGE = //
+ CLASSES.addField("package", DBType.INTEGER);
+
+ public static final IDBField CLASSES_CLASSIFIER = //
+ CLASSES.addField("classifier", DBType.INTEGER);
+
+ public static final IDBField CLASSES_NAME = //
+ CLASSES.addField("name", DBType.VARCHAR, 255);
+
+ public static final IDBField CLASSES_ABSTRACT = //
+ CLASSES.addField("abstract", DBType.BOOLEAN);
+
+ public static final IDBIndex INDEX_CLASSES_PK = //
+ CLASSES.addIndex(IDBIndex.Type.PRIMARY_KEY, CLASSES_ID);
+
+ /**
+ * DBTable cdo_supertypes
+ */
+ public static final IDBTable SUPERTYPES = INSTANCE.addTable("cdo_supertypes");
+
+ public static final IDBField SUPERTYPES_TYPE = //
+ SUPERTYPES.addField("type_id", DBType.INTEGER);
+
+ public static final IDBField SUPERTYPES_SUPERTYPE_PACKAGE = //
+ SUPERTYPES.addField("supertype_package", DBType.VARCHAR, 255);
+
+ public static final IDBField SUPERTYPES_SUPERTYPE_CLASSIFIER = //
+ SUPERTYPES.addField("supertype_classifier", DBType.INTEGER);
+
+ public static final IDBIndex INDEX_SUPERTYPES_PK = //
+ SUPERTYPES.addIndex(IDBIndex.Type.PRIMARY_KEY, SUPERTYPES_TYPE);
+
+ /**
+ * DBTable cdo_features
+ */
+ public static final IDBTable FEATURES = INSTANCE.addTable("cdo_features");
+
+ public static final IDBField FEATURES_ID = //
+ FEATURES.addField("id", DBType.INTEGER);
+
+ public static final IDBField FEATURES_CLASS = //
+ FEATURES.addField("class", DBType.INTEGER);
+
+ public static final IDBField FEATURES_FEATURE = //
+ FEATURES.addField("feature", DBType.INTEGER);
+
+ public static final IDBField FEATURES_NAME = //
+ FEATURES.addField("name", DBType.VARCHAR, 255);
+
+ public static final IDBField FEATURES_TYPE = //
+ FEATURES.addField("type", DBType.INTEGER);
+
+ public static final IDBField FEATURES_REFERENCE_PACKAGE = //
+ FEATURES.addField("reference_package", DBType.VARCHAR, 255);
+
+ public static final IDBField FEATURES_REFERENCE_CLASSIFIER = //
+ FEATURES.addField("reference_classifier", DBType.INTEGER);
+
+ public static final IDBField FEATURES_MANY = //
+ FEATURES.addField("many", DBType.BOOLEAN);
+
+ public static final IDBField FEATURES_CONTAINMENT = //
+ FEATURES.addField("containment", DBType.BOOLEAN);
+
+ public static final IDBField FEATURES_INDEX = //
+ FEATURES.addField("idx", DBType.INTEGER);
+
+ public static final IDBIndex INDEX_FEATURES_PK = //
+ FEATURES.addIndex(IDBIndex.Type.PRIMARY_KEY, FEATURES_ID);
+
+ /**
+ * Name of object table
+ */
+ public static final String CDO_OBJECTS = "cdo_objects";
+
+ /**
+ * Field names of attribute tables
+ */
+ public static final String ATTRIBUTES_ID = "cdo_id";
+
+ public static final String ATTRIBUTES_VERSION = "cdo_version";
+
+ public static final String ATTRIBUTES_CLASS = "cdo_class";
+
+ public static final String ATTRIBUTES_CREATED = "cdo_created";
+
+ public static final String ATTRIBUTES_REVISED = "cdo_revised";
+
+ public static final String ATTRIBUTES_RESOURCE = "cdo_resource";
+
+ public static final String ATTRIBUTES_CONTAINER = "cdo_container";
+
+ public static final String ATTRIBUTES_FEATURE = "cdo_feature";
+
+ /**
+ * Field names of reference tables
+ */
+ public static final String REFERENCES_FEATURE = "cdo_feature";
+
+ public static final String REFERENCES_SOURCE = "cdo_source";
+
+ public static final String REFERENCES_VERSION = "cdo_version";
+
+ public static final String REFERENCES_IDX = "cdo_idx";
+
+ public static final String REFERENCES_TARGET = "cdo_target";
+
+ private TestSchema()
+ {
+ super("CDO");
+ }
+
+ static
+ {
+ INSTANCE.lock();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/bundle/Activator.java b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/bundle/Activator.java
new file mode 100644
index 0000000000..c84184f4af
--- /dev/null
+++ b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/bundle/Activator.java
@@ -0,0 +1,28 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * 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.net4j.db.tests.bundle;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @author Eike Stepper
+ */
+public class Activator implements BundleActivator
+{
+ public void start(BundleContext context) throws Exception
+ {
+ }
+
+ public void stop(BundleContext context) throws Exception
+ {
+ }
+}

Back to the top