diff options
author | Eike Stepper | 2008-03-09 18:26:11 +0000 |
---|---|---|
committer | Eike Stepper | 2008-03-09 18:26:11 +0000 |
commit | ef2419ce8fe01f574c0668ff9c4a7fd3b94a0e40 (patch) | |
tree | 4377b7338e35db29d5a135073cf66f4c1f0bb12c /plugins/org.eclipse.net4j.db.tests/src | |
parent | 122d35629cbb26ccc87975279207965ce4bb874b (diff) | |
download | cdo-ef2419ce8fe01f574c0668ff9c4a7fd3b94a0e40.tar.gz cdo-ef2419ce8fe01f574c0668ff9c4a7fd3b94a0e40.tar.xz cdo-ef2419ce8fe01f574c0668ff9c4a7fd3b94a0e40.zip |
Added DB Tests
Diffstat (limited to 'plugins/org.eclipse.net4j.db.tests/src')
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 + { + } +} |