You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2004/04/05 19:11:49 UTC
cvs commit: db-ojb/src/test/org/apache/ojb/junit OJBTestCase.java JUnitExtensions.java
arminw 2004/04/05 10:11:49
Modified: . build.xml build.properties
src/test/org/apache/ojb repository_junit.xml
src/test/org/apache/ojb/odmg ODMGRollbackTest.java
LockingMultithreadedTest.java CollectionsTest.java
src/test/org/apache/ojb/broker ReferenceTest.java
QueryTest.java OneToManyTest.java
NestedFieldsTest.java MultithreadedReadTest.java
MultipleTableExtentAwareQueryTest.java
MtoNTest.java M2NTest.java
KeyConstraintViolationTest.java
InheritanceMultipleTableTest.java
CollectionTest2.java AutomaticForeignKeys.java
AllTests.java
Added: src/test/org/apache/ojb/junit OJBTestCase.java
JUnitExtensions.java
Removed: src/test/org/apache/ojb/broker OneToOneTest.java
ManyToManyTest.java JUnitExtensions.java
Log:
- Add new package for OJB junit extension classes
- Add OJBTestCase, a base class for all junit tests.
This class provide a method called "ojbSkipKnownIssueProblem()"
help to skip failure tests
public void testXYZ()
{
if(ojbSkipKnownIssueProblem()) return;
// now the test began
...
}
This will skip the test by default (and print a message).
If in build.properties OJB.skip.issues=false
was set, the test wasn't skip.
- add new tests, update tests
- remove "empty" tests and test files
Revision Changes Path
1.121 +3 -1 db-ojb/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/db-ojb/build.xml,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -r1.120 -r1.121
--- build.xml 5 Apr 2004 00:52:54 -0000 1.120
+++ build.xml 5 Apr 2004 17:11:47 -0000 1.121
@@ -889,6 +889,7 @@
<junit printsummary="yes" fork="yes" dir="${build.test}/ojb">
<jvmarg value="-DOJB.bootLogLevel=INFO" />
+ <jvmarg value="-DOJB.skip.issues=${OJB.skip.issues}" />
<classpath refid="runtime-classpath"/>
<formatter type="plain" />
<formatter type="xml" />
@@ -929,6 +930,7 @@
<target name="junit-sqlcount-no-compile-no-prepare" depends="checkP6Spy" if="shouldUseP6Spy">
<junit printsummary="yes" fork="yes" dir="${build.test}/ojb">
<jvmarg value="-DOJB.bootLogLevel=INFO" />
+ <jvmarg value="-DOJB.skip.issues=${OJB.skip.issues}" />
<classpath refid="runtime-classpath"/>
<formatter type="plain" />
<formatter type="xml" />
1.52 +7 -1 db-ojb/build.properties
Index: build.properties
===================================================================
RCS file: /home/cvs/db-ojb/build.properties,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- build.properties 5 Apr 2004 13:58:58 -0000 1.51
+++ build.properties 5 Apr 2004 17:11:48 -0000 1.52
@@ -50,6 +50,12 @@
# By default the HSQLDB driver is used.
#useP6Spy=true
+###
+# If 'true', junit tests marked as known issue in the junit-test
+# source code (see OJBTestCase class for more detailed info) will be
+# skipped. Default value is 'true'. For development 'false' is recommended,
+# because this will show unsolved problems.
+OJB.skip.issues=true
# -------------------------------------------------------------------
# You should NOT have to edit anything below here.
1.111 +37 -2 db-ojb/src/test/org/apache/ojb/repository_junit.xml
Index: repository_junit.xml
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/repository_junit.xml,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -r1.110 -r1.111
--- repository_junit.xml 5 Apr 2004 13:58:59 -0000 1.110
+++ repository_junit.xml 5 Apr 2004 17:11:48 -0000 1.111
@@ -1,6 +1,6 @@
<!-- Mapping of classes used in junit tests and tutorials starts here -->
<!--
-#/* Copyright 2002-2004 The Apache Software Foundation
+/* Copyright 2002-2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1895,6 +1895,22 @@
column="NAME"
jdbc-type="VARCHAR"
/>
+
+ <field-descriptor
+ name="fkAddress"
+ column="FK_ADDRESS"
+ jdbc-type="INTEGER"
+ access="anonymous"
+ />
+
+ <reference-descriptor name="address"
+ class-ref="org.apache.ojb.broker.InheritanceMultipleTableTest$Address"
+ auto-retrieve="true"
+ auto-update="object"
+ auto-delete="object"
+ >
+ <foreignkey field-ref="fkAddress" />
+ </reference-descriptor>
</class-descriptor>
<class-descriptor
@@ -1984,6 +2000,25 @@
>
<inverse-foreignkey field-ref="managerId"/>
</collection-descriptor>
+</class-descriptor>
+
+<class-descriptor
+ class="org.apache.ojb.broker.InheritanceMultipleTableTest$Address"
+ table="INHERITANCE_MULTI_ADDRESS"
+ >
+ <field-descriptor
+ name="id"
+ column="OBJ_ID"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="street"
+ column="STREET"
+ jdbc-type="VARCHAR"
+ />
</class-descriptor>
1.22 +9 -6 db-ojb/src/test/org/apache/ojb/odmg/ODMGRollbackTest.java
Index: ODMGRollbackTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/odmg/ODMGRollbackTest.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- ODMGRollbackTest.java 28 Mar 2004 10:48:41 -0000 1.21
+++ ODMGRollbackTest.java 5 Apr 2004 17:11:48 -0000 1.22
@@ -5,7 +5,6 @@
import java.util.Iterator;
import java.util.List;
-import junit.framework.TestCase;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerFactory;
import org.apache.ojb.broker.Project;
@@ -13,8 +12,9 @@
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryByCriteria;
-import org.apache.ojb.broker.query.QueryFactory;
import org.apache.ojb.broker.query.QueryByIdentity;
+import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.junit.OJBTestCase;
import org.odmg.Database;
import org.odmg.Implementation;
import org.odmg.OQLQuery;
@@ -24,7 +24,7 @@
* Do some rollback tests and check behavior within transactions.
* CAUTION: This tests works only against the default repository.
*/
-public class ODMGRollbackTest extends TestCase
+public class ODMGRollbackTest extends OJBTestCase
{
private String databaseName;
@@ -99,8 +99,10 @@
* TODO: this testcase seems to fail for some strange problems with the testbed data
* the thrown error is unrelated to the things covered in the testcase.
*/
- public void tes_tResultsWhileTransactionWithCheckpoint() throws Exception
+ public void testResultsWhileTransactionWithCheckpoint() throws Exception
{
+ if(ojbSkipKnownIssueProblem()) return;
+
Implementation ojb = OJB.getInstance();
Database db = ojb.newDatabase();
db.open(databaseName, Database.OPEN_READ_WRITE);
@@ -180,10 +182,11 @@
* thma:
* TODO: this testcase seems to fail for some strange problems with the testbed data
* the thrown error is unrelated to the things covered in the testcase.
-
*/
- public void tes_tResultsAfterTransaction() throws Exception
+ public void testResultsAfterTransaction() throws Exception
{
+ if(ojbSkipKnownIssueProblem()) return;
+
Implementation ojb = OJB.getInstance();
Database db = ojb.newDatabase();
db.open(databaseName, Database.OPEN_READ_WRITE);
1.2 +2 -2 db-ojb/src/test/org/apache/ojb/odmg/LockingMultithreadedTest.java
Index: LockingMultithreadedTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/odmg/LockingMultithreadedTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LockingMultithreadedTest.java 11 Dec 2003 20:13:23 -0000 1.1
+++ LockingMultithreadedTest.java 5 Apr 2004 17:11:48 -0000 1.2
@@ -1,8 +1,8 @@
package org.apache.ojb.odmg;
-import org.apache.ojb.broker.JUnitExtensions;
import org.apache.ojb.broker.TestHelper;
import org.apache.ojb.broker.util.logging.LoggerFactory;
+import org.apache.ojb.junit.JUnitExtensions;
import org.odmg.Database;
import org.odmg.Implementation;
import org.odmg.LockNotGrantedException;
1.13 +66 -13 db-ojb/src/test/org/apache/ojb/odmg/CollectionsTest.java
Index: CollectionsTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/odmg/CollectionsTest.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- CollectionsTest.java 28 Mar 2004 10:48:41 -0000 1.12
+++ CollectionsTest.java 5 Apr 2004 17:11:48 -0000 1.13
@@ -1,32 +1,32 @@
package org.apache.ojb.odmg;
-import junit.framework.TestCase;
-import org.apache.ojb.broker.TestHelper;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerFactory;
+import org.apache.ojb.broker.TestHelper;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.junit.OJBTestCase;
import org.odmg.Database;
import org.odmg.Implementation;
import org.odmg.OQLQuery;
import org.odmg.Transaction;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Vector;
-import java.util.Iterator;
-
/**
* Test case handles with collections.
*
* @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
* @version $Id$
*/
-public class CollectionsTest extends TestCase
+public class CollectionsTest extends OJBTestCase
{
private Implementation odmg;
private Database db;
@@ -65,6 +65,57 @@
}
}
+
+ public void testStoreCollectionElementWithoutBackReference() throws Exception
+ {
+ // String queryColl = "select colls from " + CollectibleC.class.getName() + " where name=$1";
+ String queryGat = "select gatherer from " + Gatherer.class.getName() + " where gatId=$1";
+ String prefix = "testStoreCollectionElementWithoutBackReference_" + System.currentTimeMillis();
+
+ // prepare test case
+ Gatherer gat = new Gatherer(null, prefix + "_Gatherer");
+ TransactionExt tx = (TransactionExt)odmg.newTransaction();
+ tx.begin();
+ db.makePersistent(gat);
+ tx.commit();
+ // check if gatherer was stored
+ tx.begin();
+ tx.getBroker().clearCache();
+ assertNotNull(gat.getGatId());
+ OQLQuery query = odmg.newOQLQuery();
+ query.create(queryGat);
+ query.bind(gat.getGatId());
+ Collection result = (Collection) query.execute();
+ tx.commit();
+ assertEquals("Wrong number of objects found", 1, result.size());
+ gat = (Gatherer) result.iterator().next();
+ assertNotNull(gat);
+ //**********************************************
+ CollectibleC child = new CollectibleC(prefix, null, "a new CollectibleC");
+ tx.begin();
+ tx.lock(gat, Transaction.WRITE);
+ tx.lock(child, Transaction.WRITE);
+ List childs = new ArrayList();
+ childs.add(child);
+ gat.setCollectiblesB(childs);
+ tx.commit();
+ //**********************************************
+ // check if gatherer was stored
+ tx.begin();
+ tx.getBroker().clearCache();
+ assertNotNull(gat.getGatId());
+ query = odmg.newOQLQuery();
+ query.create(queryGat);
+ query.bind(gat.getGatId());
+ result = (Collection) query.execute();
+ tx.commit();
+ assertEquals("Wrong number of objects found", 1, result.size());
+ gat = (Gatherer) result.iterator().next();
+ assertNotNull(gat);
+ assertNotNull(gat.getCollectiblesC());
+ assertEquals(1, gat.getCollectiblesC().size());
+ }
+
/**
* Create an main object Gatherer with a collection of objects CollectiblesC.
* CollectiblesC hasn't a reference back to the main object. After creation we
@@ -426,8 +477,10 @@
* todo: see ...odmg.ObjectEnvelope line 311
* todo: as this bug is documented in the release notes I've taken it out from the Junit suite.
*/
- public void tes_tUpdateWhenExchangeObjectsInCollection() throws Exception
+ public void testUpdateWhenExchangeObjectsInCollection() throws Exception
{
+ if(ojbSkipKnownIssueProblem()) return;
+
final String prefix = "testUpdateWhenExchangeObjectsInCollection" + System.currentTimeMillis();
final String queryStr = "select gatherer from " + Gatherer.class.getName() + " where gatId=$1 or gatId=$2";
1.13 +24 -3 db-ojb/src/test/org/apache/ojb/broker/ReferenceTest.java
Index: ReferenceTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/ReferenceTest.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ReferenceTest.java 30 Mar 2004 17:44:10 -0000 1.12
+++ ReferenceTest.java 5 Apr 2004 17:11:48 -0000 1.13
@@ -4,12 +4,12 @@
import java.util.Collection;
import java.util.Iterator;
-import junit.framework.TestCase;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.junit.OJBTestCase;
/**
* Test case for checking the management of references.
@@ -17,7 +17,7 @@
* @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
* @version $Id$
*/
-public class ReferenceTest extends TestCase
+public class ReferenceTest extends OJBTestCase
{
private static String REF_TEST_STRING = "refTest";
private PersistenceBroker broker;
@@ -879,6 +879,27 @@
return new RepositoryFK[]{repository, repository2, repository3};
}
+
+ public void testMassOperations()
+ {
+ broker.beginTransaction();
+ for (int i = 1; i < 100; i++)
+ {
+
+ ProductGroup pg = new ProductGroup();
+ pg.setGroupName("1-1 test productgroup_" + i);
+ broker.store(pg);
+
+ Article article = Article.createInstance();
+ article.setArticleName("1-1 test article_" + i);
+ article.setProductGroupId(pg.getGroupId());
+
+ broker.retrieveReference(article, "productGroup");
+ broker.store(article);
+ }
+ broker.commitTransaction();
+ }
+
1.55 +36 -36 db-ojb/src/test/org/apache/ojb/broker/QueryTest.java
Index: QueryTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/QueryTest.java,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- QueryTest.java 31 Mar 2004 19:16:09 -0000 1.54
+++ QueryTest.java 5 Apr 2004 17:11:48 -0000 1.55
@@ -76,7 +76,7 @@
{
broker.close();
}
-
+
/**
* Criteria containing other Criteria only
*/
@@ -85,16 +85,16 @@
Criteria crit1 = new Criteria();
Criteria crit2 = new Criteria();
Criteria crit3 = new Criteria();
-
+
crit2.addEqualTo("lastname","tom");
crit2.setNegative(true);
-
+
crit3.addEqualTo("firstname","tom");
crit3.setNegative(true);
-
+
crit1.addAndCriteria(crit2);
crit1.addAndCriteria(crit3);
-
+
Query q = QueryFactory.newQuery(Person.class, crit1);
Collection results = broker.getCollectionByQuery(q);
@@ -247,7 +247,7 @@
Collection results = broker.getCollectionByQuery(q);
assertNotNull(results);
assertTrue(results.size() > 0);
-
+
// compare with count
int count = broker.getCount(q);
assertEquals(results.size(), count);
@@ -265,7 +265,7 @@
Collection results = broker.getCollectionByQuery(q);
assertNotNull(results);
assertEquals(results.size(), 1);
-
+
// compare with count
int count = broker.getCount(q);
assertEquals(results.size(), count);
@@ -277,7 +277,7 @@
public void testLikeEscapedCriteria2()
{
LikeCriteria.setEscapeCharacter('|');
-
+
Criteria crit = new Criteria();
crit.addLike("firstname", "h%|%");
Query q = QueryFactory.newQuery(Person.class, crit);
@@ -285,7 +285,7 @@
Collection results = broker.getCollectionByQuery(q);
assertNotNull(results);
assertEquals(results.size(), 1);
-
+
// compare with count
int count = broker.getCount(q);
assertEquals(results.size(), count);
@@ -428,7 +428,7 @@
crit.addLike("allArticlesInGroup.articleName", "C%");
QueryByCriteria q = QueryFactory.newQuery(ProductGroup.class, crit, true);
q.addOrderByAscending("groupId");
-
+
Collection results = broker.getCollectionByQuery(q);
assertNotNull(results);
assertEquals(results.size(), 5);
@@ -447,17 +447,17 @@
Criteria crit = new Criteria();
crit.addEqualTo("project_id", new Integer(1));
QueryByCriteria q = QueryFactory.newQuery(Role.class, crit, true);
-
+
Collection results = broker.getCollectionByQuery(q);
assertNotNull(results);
assertEquals(results.size(), 3);
// compare with count
int count = broker.getCount(q);
-
+
assertEquals(results.size(), count); // FAILS
}
-
+
/**
* Simple ReportQuery returning rows with 3 columns of Person
*/
@@ -478,10 +478,10 @@
{
Object[] row = (Object[])iter.next();
assertEquals(row.length, 3);
-
+
results.add(row);
}
-
+
assertEquals(results.size(), 5);
// compare with count
@@ -499,7 +499,7 @@
Criteria crit = new Criteria();
Collection results = new Vector();
int types[] = new int[]{Types.DECIMAL, Types.VARCHAR, Types.BIGINT};
-
+
crit.addLike("firstname", "%o%");
ReportQueryByCriteria q = QueryFactory.newReportQuery(Person.class, crit);
q.setAttributes(new String[] { "id", "firstname", "count(*)" });
@@ -513,18 +513,18 @@
{
Object[] row = (Object[])iter.next();
assertEquals(row.length, 3);
-
+
// assertEquals(row[0].getClass(), BigDecimal.class);
// assertEquals(row[1].getClass(), String.class);
// assertEquals(row[2].getClass(), Long.class);
results.add(row);
}
-
+
assertEquals(results.size(), 5);
}
-
+
/**
* Simple ReportQuery returning rows with 2 columns of Person
* needs SQL paging
@@ -575,8 +575,8 @@
// compare with count
int count = broker.getCount(q);
- assertEquals(results.size(), count);
-
+ assertEquals(results.size(), count);
+
}
/**
@@ -601,10 +601,10 @@
// compare with count
int count = broker.getCount(q);
- assertEquals(results.size(), count);
-
+ assertEquals(results.size(), count);
+
}
-
+
/**
* ReportQuery returning rows with some "Liquor" data ordered by price
*/
@@ -628,8 +628,8 @@
// compare with count
int count = broker.getCount(q);
- assertEquals(results.size(), count);
-
+ assertEquals(results.size(), count);
+
}
/**
@@ -655,10 +655,10 @@
// compare with count
int count = broker.getCount(q);
- assertEquals(results.size(), count);
+ assertEquals(results.size(), count);
}
-
+
/**
* ReportQuery returning rows with summed stock and price per article group
*/
@@ -678,10 +678,10 @@
results.add(iter.next());
}
assertTrue(results.size() > 0);
-
+
// compare with count
int count = broker.getCount(q);
-// assertEquals(results.size(), count); // FAILS !
+// assertEquals(results.size(), count); // FAILS !
}
@@ -1039,7 +1039,7 @@
assertTrue(results.size() > 0);
}
-
+
/**
* test PathExpression pointing to abstract class (InterfaceArticle)
*/
@@ -1370,7 +1370,7 @@
assertNotNull(result);
assertTrue(result.size() == 5); // bob, tom, cindy, albert ,betrand
}
-
+
public void testQueryCommutative12() throws Exception
{
Collection result;
@@ -1391,12 +1391,12 @@
result = broker.getCollectionByQuery(qry12);
assertNotNull(result);
-
+
int count = broker.getCount(qry12);
assertEquals(count, result.size());
}
-
-
+
+
public void testQueryCommutative21()
{
Collection result;
@@ -1409,7 +1409,7 @@
Criteria crit3 = new Criteria();
crit3.addEqualTo("stock", new Integer(42));
-
+
crit2.addOrCriteria(crit3);
crit2.addAndCriteria(crit1);
QueryByCriteria qry21 = QueryFactory.newQuery(Article.class, crit2);
1.9 +0 -20 db-ojb/src/test/org/apache/ojb/broker/OneToManyTest.java
Index: OneToManyTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/OneToManyTest.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- OneToManyTest.java 11 Aug 2003 08:53:00 -0000 1.8
+++ OneToManyTest.java 5 Apr 2004 17:11:48 -0000 1.9
@@ -1,11 +1,3 @@
-/*
- * Created by IntelliJ IDEA.
- * User: Matt
- * Date: Jun 9, 2002
- * Time: 10:29:27 PM
- * To change template for new class use
- * Code Style | Class Templates options (Tools | IDE Options).
- */
package org.apache.ojb.broker;
import java.util.List;
@@ -104,28 +96,16 @@
assertEquals(3, animals.size());
}
- /**
- * Insert the method's description here.
- * Creation date: (24.12.2000 00:33:40)
- */
public OneToManyTest(String name)
{
super(name);
}
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:58:53)
- */
public void setUp() throws PBFactoryException
{
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
}
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:59:14)
- */
public void tearDown()
{
try
1.8 +1 -0 db-ojb/src/test/org/apache/ojb/broker/NestedFieldsTest.java
Index: NestedFieldsTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/NestedFieldsTest.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- NestedFieldsTest.java 3 Mar 2004 21:18:14 -0000 1.7
+++ NestedFieldsTest.java 5 Apr 2004 17:11:48 -0000 1.8
@@ -6,6 +6,7 @@
import org.apache.ojb.broker.query.QueryFactory;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
+import org.apache.ojb.junit.OJBTestCase;
import java.util.Collection;
import java.util.ArrayList;
1.3 +2 -1 db-ojb/src/test/org/apache/ojb/broker/MultithreadedReadTest.java
Index: MultithreadedReadTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/MultithreadedReadTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MultithreadedReadTest.java 5 Feb 2004 17:43:12 -0000 1.2
+++ MultithreadedReadTest.java 5 Apr 2004 17:11:48 -0000 1.3
@@ -8,6 +8,7 @@
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.QueryByCriteria;
+import org.apache.ojb.junit.JUnitExtensions;
/**
* Tests multithreaded read of objects using proxy for nested 1:1 references
1.2 +2 -1 db-ojb/src/test/org/apache/ojb/broker/MultipleTableExtentAwareQueryTest.java
Index: MultipleTableExtentAwareQueryTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/MultipleTableExtentAwareQueryTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MultipleTableExtentAwareQueryTest.java 5 Sep 2003 14:45:55 -0000 1.1
+++ MultipleTableExtentAwareQueryTest.java 5 Apr 2004 17:11:48 -0000 1.2
@@ -4,6 +4,7 @@
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.QueryByCriteria;
import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.junit.OJBTestCase;
import java.util.Collection;
import java.util.Iterator;
1.14 +21 -38 db-ojb/src/test/org/apache/ojb/broker/MtoNTest.java
Index: MtoNTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/MtoNTest.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- MtoNTest.java 26 Feb 2004 20:22:37 -0000 1.13
+++ MtoNTest.java 5 Apr 2004 17:11:48 -0000 1.14
@@ -1,7 +1,3 @@
-/**
- * User: om
- */
-
package org.apache.ojb.broker;
import java.util.ArrayList;
@@ -12,7 +8,6 @@
import java.util.Vector;
import junit.framework.TestCase;
-
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.CollectionDescriptor;
import org.apache.ojb.broker.util.collections.ManageableArrayList;
@@ -96,7 +91,7 @@
}
/**
- * Store m-side and intermediary
+ * Store m-side and intermediary
*/
public void testStoringWithAutoUpdateFalse1()
{
@@ -105,7 +100,7 @@
boolean autoUpdate = cod.getCascadeStore();
cod.setCascadeStore(false);
-
+
try
{
String now = new Date().toString();
@@ -119,7 +114,7 @@
broker.store(paper); // store Paper and intermediary table only
Identity paperId = new Identity(paper, broker);
broker.commitTransaction();
-
+
broker.clearCache();
broker.beginTransaction();
Paper retPaper = (Paper) broker.getObjectByIdentity(paperId);
@@ -133,7 +128,7 @@
}
/**
- * Store m-side, intermediary and n-side
+ * Store m-side, intermediary and n-side
* n-side forced by using broker.store()
*/
public void testStoringWithAutoUpdateFalse2()
@@ -143,7 +138,7 @@
boolean autoUpdate = cod.getCascadeStore();
cod.setCascadeStore(false);
-
+
try
{
String now = new Date().toString();
@@ -158,7 +153,7 @@
broker.store(qual); // store Qualifier
Identity paperId = new Identity(paper, broker);
broker.commitTransaction();
-
+
broker.clearCache();
broker.beginTransaction();
Paper retPaper = (Paper) broker.getObjectByIdentity(paperId);
@@ -170,9 +165,9 @@
cod.setCascadeStore(autoUpdate);
}
}
-
+
/**
- * Store m-side, intermediary and n-side
+ * Store m-side, intermediary and n-side
*/
public void testStoringWithAutoUpdateTrue()
{
@@ -181,7 +176,7 @@
boolean autoUpdate = cod.getCascadeStore();
cod.setCascadeStore(true);
-
+
try
{
String now = new Date().toString();
@@ -195,7 +190,7 @@
broker.store(paper); // store Paper, intermediary and Qualifier
Identity paperId = new Identity(paper, broker);
broker.commitTransaction();
-
+
broker.clearCache();
broker.beginTransaction();
Paper retPaper = (Paper) broker.getObjectByIdentity(paperId);
@@ -333,7 +328,7 @@
Qualifier qual1 = (Qualifier) qualifiers.get(0);
Qualifier qual2 = (Qualifier) qualifiers.get(1);
- // now clear collection
+ // now clear collection
paper.getQualifiers().clear();
broker.beginTransaction();
broker.store(paper);
@@ -379,11 +374,11 @@
assertNotNull(retQual1);
assertNotNull(retQual2);
-
+
broker.commitTransaction();
}
-
+
public void testDeleteMtoNImplementor()
throws Exception
{
@@ -399,7 +394,7 @@
broker.clearCache();
newNews = (News) broker.getObjectByIdentity(id);
-
+
assertEquals(size - 1,newNews.getQualifiers().size());
}
@@ -418,35 +413,29 @@
broker.clearCache();
newNews = (News) broker.getObjectByIdentity(id);
-
+
assertEquals(size + 1,newNews.getQualifiers().size());
-
+
}
-
+
// Bidirectional m:n relationship using Collection
public void testStoreBidirectionalCollection()
{
- int id = (int)System.currentTimeMillis();
- id = Math.abs(id);
-
Person personA = new Person();
- personA.setId(id++);
personA.setFirstname("Anton");
Project proj1 = new Project();
- proj1.setId(id++);
proj1.setTitle("Project 1");
Project proj2 = new Project();
- proj2.setId(id++);
proj2.setTitle("Project 2");
Collection persons = new ArrayList();
persons.add(personA);
proj1.setPersons(persons);
proj2.setPersons(persons);
-
+
Collection projects = new ArrayList();
projects.add(proj1);
projects.add(proj2);
@@ -457,24 +446,18 @@
broker.store(proj1);
broker.store(proj2);
broker.commitTransaction();
- }
-
+ }
+
// Bidirectional m:n relationship using Array
public void testStoreBidirectionalArray()
{
- int id = (int)System.currentTimeMillis();
- id = Math.abs(id);
-
PersonWithArray personA = new PersonWithArray();
- personA.setId(id++);
personA.setFirstname("Anton");
ProjectWithArray proj1 = new ProjectWithArray();
- proj1.setId(id++);
proj1.setTitle("Project 1");
ProjectWithArray proj2 = new ProjectWithArray();
- proj2.setId(id++);
proj2.setTitle("Project 2");
proj1.setPersons(new PersonWithArray[] { personA });
1.3 +3 -2 db-ojb/src/test/org/apache/ojb/broker/M2NTest.java
Index: M2NTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/M2NTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- M2NTest.java 30 Mar 2004 17:44:10 -0000 1.2
+++ M2NTest.java 5 Apr 2004 17:11:48 -0000 1.3
@@ -12,6 +12,7 @@
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.junit.OJBTestCase;
/**
* Test (non-decomposed) M:N relations.
@@ -435,7 +436,7 @@
public void doTestStoreUpdateTTXX()
{
- String postfix = "" + System.currentTimeMillis();
+ String postfix = "doTestStoreUpdateTTXX_" + System.currentTimeMillis();
Movie movie = buildMovieWithActors(postfix);
broker.beginTransaction();
1.5 +23 -45 db-ojb/src/test/org/apache/ojb/broker/KeyConstraintViolationTest.java
Index: KeyConstraintViolationTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/KeyConstraintViolationTest.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- KeyConstraintViolationTest.java 5 Apr 2004 00:14:51 -0000 1.4
+++ KeyConstraintViolationTest.java 5 Apr 2004 17:11:48 -0000 1.5
@@ -1,46 +1,32 @@
package org.apache.ojb.broker;
-import junit.framework.TestCase;
import org.apache.ojb.broker.util.ObjectModificationDefaultImpl;
+import org.apache.ojb.junit.OJBTestCase;
/**
* @author Matthew Baird
*
*/
-public class KeyConstraintViolationTest extends TestCase
+public class KeyConstraintViolationTest extends OJBTestCase
{
public static void main(String[] args)
{
- String[] arr = { CLASS.getName()};
+ String[] arr = {KeyConstraintViolationTest.class.getName()};
junit.textui.TestRunner.main(arr);
}
PersistenceBroker broker;
- private static Class CLASS = BlobTest.class;
- /**
- * Insert the method's description here.
- *
- * Creation date: (24.12.2000 00:33:40)
- */
- public KeyConstraintViolationTest(String name)
+ public KeyConstraintViolationTest(String name)
{
super(name);
}
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:58:53)
- */
public void setUp() throws PBFactoryException
{
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
}
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:59:14)
- */
public void tearDown()
{
try
@@ -53,49 +39,41 @@
}
}
-
- /**
+ /**
* Test creating two objects with the same ID, should fail with
- * key constraint error
+ * key constraint error
**/
public void testKeyViolation() throws Exception
{
- try
+ ObjectModificationDefaultImpl objMod = new ObjectModificationDefaultImpl();
+ objMod.setNeedsInsert(true);
+
+ broker.beginTransaction();
+ Article obj = new Article();
+ obj.setProductGroupId(1);
+ obj.articleName = "repeated Article";
+ // storing once should be ok.
+ broker.store(obj,objMod);
+ broker.commitTransaction();
+
+ broker.clearCache();
+ try
{
- ObjectModificationDefaultImpl objMod = new ObjectModificationDefaultImpl();
- objMod.setNeedsInsert(true);
-
- broker.beginTransaction();
- Article obj = new Article();
- obj.articleId = 5440;
- obj.articleName = "repeated Article";
-
- // storing once should be ok.
- broker.store(obj,objMod);
-
- broker.clearCache();
-
- broker.commitTransaction();
-
broker.beginTransaction();
Article obj2 = new Article();
- obj2.articleId = 5440;
+ obj2.articleId = obj.getArticleId();
+ obj2.setProductGroupId(1);
obj2.articleName = "repeated Article";
-
+
// store it again!
broker.store(obj2,objMod);
broker.commitTransaction();
-
+
fail("Should have thrown a KeyConstraintViolatedException");
}
catch (KeyConstraintViolatedException t)
{
// this is a success.
- }
- catch (Throwable t)
- {
- System.out.println("CAUGHT");
- t.printStackTrace();
}
}
}
1.2 +200 -4 db-ojb/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java
Index: InheritanceMultipleTableTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InheritanceMultipleTableTest.java 26 Mar 2004 21:31:56 -0000 1.1
+++ InheritanceMultipleTableTest.java 5 Apr 2004 17:11:48 -0000 1.2
@@ -1,16 +1,16 @@
package org.apache.ojb.broker;
-import java.util.Collection;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
-import junit.framework.TestCase;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.junit.OJBTestCase;
/**
*
@@ -18,7 +18,7 @@
* @author <a href="mailto:arminw@apache.org">Armin Waibel</a>
* @version $Id$
*/
-public class InheritanceMultipleTableTest extends TestCase
+public class InheritanceMultipleTableTest extends OJBTestCase
{
private PersistenceBroker broker;
@@ -40,6 +40,156 @@
}
}
+ public void testQuery()
+ {
+ String name = "testInsert" + System.currentTimeMillis();
+ Manager m_1 = new Manager(name + "_manager_1");
+ Manager m_2 = new Manager(name + "_manager_2");
+ Manager m_3 = new Manager(name + "_manager_3");
+ m_3.setDepartment("none");
+
+ Executive ex_1 = new Executive(name+"_executive", "department_1", null);
+ Executive ex_2 = new Executive(name+"_executive", "department_1", null);
+
+ Employee em = new Employee(name+"_employee");
+
+ broker.beginTransaction();
+ broker.store(m_1);
+ broker.store(m_2);
+ broker.store(m_3);
+ broker.store(ex_1);
+ broker.store(ex_2);
+ broker.store(em);
+ broker.commitTransaction();
+
+ Criteria crit = new Criteria();
+ crit.addLike("name", name + "%");
+ crit.addLike("department", "none");
+ Query query = QueryFactory.newQuery(Manager.class, crit);
+ Collection result = broker.getCollectionByQuery(query);
+ assertEquals(1, result.size());
+
+ crit = new Criteria();
+ crit.addLike("name", name+"%");
+ query = QueryFactory.newQuery(Employee.class, crit);
+ result = broker.getCollectionByQuery(query);
+ assertEquals(6, result.size());
+
+ crit = new Criteria();
+ crit.addLike("name", name+"%");
+ query = QueryFactory.newQuery(Executive.class, crit);
+ result = broker.getCollectionByQuery(query);
+ assertEquals(5, result.size());
+
+ crit = new Criteria();
+ crit.addLike("name", name+"%");
+ query = QueryFactory.newQuery(Manager.class, crit);
+ result = broker.getCollectionByQuery(query);
+ assertEquals(3, result.size());
+ }
+
+ private void prepareForQueryTests(String name)
+ {
+ Manager m_1 = new Manager(name + "_manager_1");
+ Manager m_2 = new Manager(name + "_manager_2");
+ Manager m_3 = new Manager(name + "_manager_3");
+ m_3.setDepartment("none");
+ Address a_1 = new Address("snob allee");
+ m_1.setAddress(a_1);
+
+ Executive ex_1 = new Executive(name+"_executive", "department_1", null);
+ Executive ex_2 = new Executive(name+"_executive", "department_1", null);
+
+ Employee em = new Employee(name+"_employee");
+ Address a_2 = new Address("cockroaches valley");
+ em.setAddress(a_2);
+
+ broker.beginTransaction();
+ broker.store(m_1);
+ broker.store(m_2);
+ broker.store(m_3);
+ broker.store(ex_1);
+ broker.store(ex_2);
+ broker.store(em);
+ broker.commitTransaction();
+ }
+
+ public void testQuery_InheritedObjects()
+ {
+ String name = "testQuery_InheritedObjects" + System.currentTimeMillis();
+ prepareForQueryTests(name);
+ broker.clearCache();
+
+ Criteria crit = new Criteria();
+ crit.addLike("name", name+"%");
+ Query query = QueryFactory.newQuery(Employee.class, crit);
+ Collection result = broker.getCollectionByQuery(query);
+ assertEquals(6, result.size());
+
+ crit = new Criteria();
+ crit.addLike("name", name+"%");
+ query = QueryFactory.newQuery(Executive.class, crit);
+ result = broker.getCollectionByQuery(query);
+ assertEquals(5, result.size());
+
+ crit = new Criteria();
+ crit.addLike("name", name+"%");
+ query = QueryFactory.newQuery(Manager.class, crit);
+ result = broker.getCollectionByQuery(query);
+ assertEquals(3, result.size());
+ }
+
+ public void testQuery_InheritedField()
+ {
+ String name = "testQuery_InheritedField" + System.currentTimeMillis();
+ prepareForQueryTests(name);
+ broker.clearCache();
+
+ broker.clearCache();
+ Criteria crit = new Criteria();
+ crit.addLike("name", name + "%");
+ crit.addLike("department", "none");
+ Query query = QueryFactory.newQuery(Manager.class, crit);
+ Collection result = broker.getCollectionByQuery(query);
+ assertEquals(1, result.size());
+ }
+
+ public void testQuery_Reference()
+ {
+ String name = "testQuery_Reference" + System.currentTimeMillis();
+ prepareForQueryTests(name);
+ broker.clearCache();
+
+ Criteria crit = new Criteria();
+ crit.addLike("name", name + "%");
+ crit.addLike("address.street", "%valley");
+ Query query = QueryFactory.newQuery(Employee.class, crit);
+ Collection result = broker.getCollectionByQuery(query);
+ assertEquals(1, result.size());
+ }
+
+ public void testQuery_InheritedReference()
+ {
+ // TODO: skip this test, we have to fix this after 1.0
+ if(ojbSkipKnownIssueProblem()) return;
+
+ String name = "testQuery_InheritedReference" + System.currentTimeMillis();
+ prepareForQueryTests(name);
+ broker.clearCache();
+
+ Criteria crit = new Criteria();
+ crit.addLike("name", name + "%");
+ crit.addEqualTo("address.street", "snob allee");
+ Query query = QueryFactory.newQuery(Manager.class, crit);
+ Collection result = broker.getCollectionByQuery(query);
+ assertEquals(1, result.size());
+ Manager retManager = (Manager) result.iterator().next();
+ assertNotNull(retManager);
+ assertEquals(name + "_manager_1", retManager.getName());
+ assertNotNull(retManager.getAddress());
+ assertEquals("snob allee", retManager.getAddress().getStreet());
+ }
+
public void testInsertQuery()
{
String name = "testInsert" + System.currentTimeMillis();
@@ -270,6 +420,7 @@
{
private Integer id;
private String name;
+ private Address address;
public Employee()
{
@@ -290,6 +441,16 @@
this.id = id;
}
+ public Address getAddress()
+ {
+ return address;
+ }
+
+ public void setAddress(Address address)
+ {
+ this.address = address;
+ }
+
public String getName()
{
return name;
@@ -313,6 +474,41 @@
public String toString()
{
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE, false, Employee.class);
+ }
+ }
+
+ public static class Address
+ {
+ private Integer id;
+ private String street;
+
+ public Address()
+ {
+ }
+
+ public Address(String street)
+ {
+ this.street = street;
+ }
+
+ public Integer getId()
+ {
+ return id;
+ }
+
+ public void setId(Integer id)
+ {
+ this.id = id;
+ }
+
+ public String getStreet()
+ {
+ return street;
+ }
+
+ public void setStreet(String street)
+ {
+ this.street = street;
}
}
}
1.3 +75 -3 db-ojb/src/test/org/apache/ojb/broker/CollectionTest2.java
Index: CollectionTest2.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/CollectionTest2.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CollectionTest2.java 30 Mar 2004 17:44:10 -0000 1.2
+++ CollectionTest2.java 5 Apr 2004 17:11:48 -0000 1.3
@@ -4,13 +4,13 @@
import java.util.Collection;
import java.util.Iterator;
-import junit.framework.TestCase;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.CollectionDescriptor;
import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.junit.OJBTestCase;
/**
* Test case for collection handling.
@@ -22,7 +22,7 @@
* @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
* @version $Id$
*/
-public class CollectionTest2 extends TestCase
+public class CollectionTest2 extends OJBTestCase
{
private PersistenceBroker broker;
@@ -476,6 +476,78 @@
assertEquals(0, result.size());
}
+ public void testUpdate_1()
+ {
+ changeAutoSetting(Project.class, "subProjects", true,
+ CollectionDescriptor.CASCADE_OBJECT, CollectionDescriptor.CASCADE_NONE, false);
+ changeAutoSetting(Project.class, "developers", true,
+ CollectionDescriptor.CASCADE_LINK, CollectionDescriptor.CASCADE_LINK, false);
+ changeAutoSetting(SubProject.class, "project", true,
+ CollectionDescriptor.CASCADE_OBJECT, CollectionDescriptor.CASCADE_NONE, false);
+ }
+
+ public void testUpdate_2()
+ {
+ changeAutoSetting(Project.class, "subProjects", true,
+ CollectionDescriptor.CASCADE_OBJECT, CollectionDescriptor.CASCADE_NONE, true);
+ changeAutoSetting(Project.class, "developers", true,
+ CollectionDescriptor.CASCADE_LINK, CollectionDescriptor.CASCADE_LINK, true);
+ changeAutoSetting(SubProject.class, "project", true,
+ CollectionDescriptor.CASCADE_OBJECT, CollectionDescriptor.CASCADE_NONE, true);
+ }
+
+ public void doTestUpdate()
+ {
+ String name = "testStoreUpdateDelete_2" + System.currentTimeMillis();
+
+ changeAutoSetting(Project.class, "subProjects", true,
+ CollectionDescriptor.CASCADE_OBJECT, CollectionDescriptor.CASCADE_NONE, false);
+ changeAutoSetting(Project.class, "developers", true,
+ CollectionDescriptor.CASCADE_LINK, CollectionDescriptor.CASCADE_LINK, false);
+ changeAutoSetting(SubProject.class, "project", true,
+ CollectionDescriptor.CASCADE_OBJECT, CollectionDescriptor.CASCADE_NONE, false);
+
+ Developer dev1 = new Developer(name);
+ Developer dev2 = new Developer(name);
+ ArrayList devList = new ArrayList();
+ devList.add(dev1);
+ devList.add(dev2);
+
+ SubProject sub1 = new SubProject(name, null);
+ SubProject sub2 = new SubProject(name, null);
+ ArrayList subList = new ArrayList();
+ subList.add(sub1);
+ subList.add(sub2);
+
+ Project pro = new Project(name, subList, devList);
+ sub1.setProject(pro);
+ sub2.setProject(pro);
+
+ sub1.setProject(pro);
+ sub2.setProject(pro);
+ pro.setSubProjects(subList);
+ pro.setDevelopers(devList);
+
+ Query queryProject = createQueryFor(Project.class, "name", name);
+ Query querySubProject = createQueryFor(SubProject.class, "name", name);
+ Query queryDeveloper = createQueryFor(Developer.class, "name", name);
+
+ //*****************************************
+ // insert
+ //*****************************************
+ broker.beginTransaction();
+ broker.store(pro);
+ broker.commitTransaction();
+
+ broker.clearCache();
+ Collection result = broker.getCollectionByQuery(queryProject);
+ assertEquals(1, result.size());
+ assertNotNull(result.iterator().next());
+ result = broker.getCollectionByQuery(querySubProject);
+ assertEquals(2, result.size());
+ result = broker.getCollectionByQuery(queryDeveloper);
+ assertEquals(0, result.size());
+ }
//============================================================================
// helper methods
1.7 +6 -18 db-ojb/src/test/org/apache/ojb/broker/AutomaticForeignKeys.java
Index: AutomaticForeignKeys.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/AutomaticForeignKeys.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- AutomaticForeignKeys.java 28 Jun 2003 15:59:17 -0000 1.6
+++ AutomaticForeignKeys.java 5 Apr 2004 17:11:48 -0000 1.7
@@ -1,35 +1,27 @@
package org.apache.ojb.broker;
-import junit.framework.TestCase;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
+import org.apache.ojb.junit.OJBTestCase;
/**
* This TestClass tests OJB facilities to work with polymorphism.
*/
-public class AutomaticForeignKeys extends TestCase
+public class AutomaticForeignKeys extends OJBTestCase
{
public static void main(String[] args)
{
- String[] arr = { CLASS.getName()};
+ String[] arr = {AutomaticForeignKeys.class.getName()};
junit.textui.TestRunner.main(arr);
}
- PersistenceBroker broker;
- private static Class CLASS = AutomaticForeignKeys.class;
- /**
- * Insert the method's description here.
- * Creation date: (24.12.2000 00:33:40)
- */
- public AutomaticForeignKeys(String name)
+ private PersistenceBroker broker;
+
+ public AutomaticForeignKeys(String name)
{
super(name);
}
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:58:53)
- */
public void setUp() throws PBFactoryException
{
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
@@ -39,10 +31,6 @@
ord.setCascadeStore(true);
}
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:59:14)
- */
public void tearDown()
{
1.42 +0 -2 db-ojb/src/test/org/apache/ojb/broker/AllTests.java
Index: AllTests.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/AllTests.java,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- AllTests.java 26 Mar 2004 21:31:56 -0000 1.41
+++ AllTests.java 5 Apr 2004 17:11:48 -0000 1.42
@@ -63,8 +63,6 @@
suite.addTestSuite(RsIteratorTest.class);
suite.addTestSuite(BlobTest.class); /* doesn't work for hsqldb */
suite.addTestSuite(LogServiceTest.class);
- suite.addTestSuite(ManyToManyTest.class);
- suite.addTestSuite(OneToOneTest.class);
suite.addTestSuite(MetaDataSerializationTest.class);
suite.addTestSuite(MetadataTest.class);
suite.addTestSuite(MetadataMultithreadedTest.class);
1.1 db-ojb/src/test/org/apache/ojb/junit/OJBTestCase.java
Index: OJBTestCase.java
===================================================================
package org.apache.ojb.junit;
import junit.framework.TestCase;
/**
* Extension of the JUnit test class.
*
* @author <a href="mailto:arminw@apache.org">Armin Waibel</a>
* @version $Id: OJBTestCase.java,v 1.1 2004/04/05 17:11:49 arminw Exp $
*/
public class OJBTestCase extends TestCase
{
private static final String SKIP_STR = "OJB.skip.issues";
private static final String SKIP_DEFAULT_VALUE = "true";
public OJBTestCase()
{
}
public OJBTestCase(String name)
{
super(name);
}
/**
* This method could be used to skip 'problematic' test cases or known issues before
* a release was made. To enable the skipped tests set a system property 'skip.issues'
* to <tt>false</tt>.
*/
public boolean ojbSkipKnownIssueProblem()
{
return skipKnownIssueProblem(null);
}
/**
* This method could be used to skip 'problematic' test cases or known issues before
* a release was made. To enable the skipped tests set a system property 'skip.issues'
* to <tt>false</tt>.
*/
public boolean skipKnownIssueProblem(String message)
{
String result = SKIP_DEFAULT_VALUE;
boolean skip = true;
try
{
result = System.getProperty(SKIP_STR, result);
skip = new Boolean(result).booleanValue();
}
catch(Exception e)
{
System.err.println("Seems that system property '" + SKIP_STR + "=" + result + "' is not a valid boolean value");
}
if(skip)
{
if(message == null)
{
message = "Will skip a known issue";
}
String className = this.getClass().getName();
System.out.println("# [Skip test in " + className + "] " + message + " #");
}
return skip;
}
}
1.1 db-ojb/src/test/org/apache/ojb/junit/JUnitExtensions.java
Index: JUnitExtensions.java
===================================================================
package org.apache.ojb.junit;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import junit.framework.TestResult;
/**
* Extensions for junit to write test cases for multithreaded tests.
* All classes are from an
* <a href="http://www.javaworld.com/javaworld/jw-12-2000/jw-1221-junit.html">
* javaworld article</a> about junit.
*
* @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
* @version $Id: JUnitExtensions.java,v 1.1 2004/04/05 17:11:49 arminw Exp $
*/
public class JUnitExtensions
{
/**
* A multi-threaded JUnit test case.
* To perform test cases that spin off threads to do tests: <p>
* <UL>
* <LI>Extend <code>MultiThreadedTestCase</code>
* <LI>Write your tests cases as normal except for when you want to spin off threads.
* <LI>When you want to spin off threads:
* <UL>
* <LI>Instead of implementing <code>Runnable</code> extend <code>MultiThreadedTestCase.TestCaseRunnable</code>.
* <LI>Define <code>runTestCase ()</code> to do your test, you may call <code>fail (), assert ()</code> etc. and throw
* exceptions with impunity.
* <LI>Handle thread interrupts by finishing.
* </UL>
* <LI>Instantiate all the runnables (one for each thread you wish to spawn) and pass an array of them
* to <code>runTestCaseRunnables ()</code>.
* </UL>
* That's it. An example is below:
* <PRE>
* public class MTTest extends JUnitExtensions.MultiThreadedTestCase
* {
* MTTest (String s) { super (s); }
* public class CounterThread extends JUnitExtensions.TestCaseRunnable
* {
* public void runTestCase () throws Throwable
* {
* for (int i = 0; i < 1000; i++)
* {
* System.out.println ("Counter Thread: " + Thread.currentThread () + " : " + i);
* // Do some testing...
* if (Thread.currentThread ().isInterrupted ()) {
* return;
* }
* }
* }
* }
*
* public void test1 ()
* {
* TestCaseRunnable tct [] = new TestCaseRunnable [5];
* for (int i = 0; i < 5; i++)
* {
* tct[i] = new CounterThread ();
* }
* runTestCaseRunnables (tct);
* }
* }
* </PRE>
* <BR><STRONG>Category: Test</STRONG>
* <BR><STRONG>Not guaranteed to be thread safe.</STRONG>
*/
public static class MultiThreadedTestCase extends TestCase
{
/**
* The threads that are executing.
*/
private Thread threads[] = null;
/**
* The tests TestResult.*/
private TestResult testResult = null;
/**
* Simple constructor.
*/
public MultiThreadedTestCase(String s)
{
super(s);
}
/**
* Interrupt the running threads.
*/
public void interruptThreads()
{
if (threads != null)
{
for (int i = 0; i < threads.length; i++)
{
threads[i].interrupt();
}
}
}
/**
* Override run so we can squirrel away the test result.*/
public void run(final TestResult result)
{
testResult = result;
super.run(result);
testResult = null;
}
/**
* Run the test case threads.*/
protected void runTestCaseRunnables(final TestCaseRunnable[] runnables)
{
if (runnables == null)
{
throw new IllegalArgumentException("runnables is null");
}
threads = new Thread[runnables.length];
for (int i = 0; i < threads.length; i++)
{
threads[i] = new Thread(runnables[i]);
}
for (int i = 0; i < threads.length; i++)
{
threads[i].start();
}
try
{
for (int i = 0; i < threads.length; i++)
{
threads[i].join();
}
}
catch (InterruptedException ignore)
{
System.out.println("Thread join interrupted.");
}
threads = null;
}
/**
* Handle an exception. Since multiple threads won't have their
* exceptions caught the threads must manually catch them and call
* <code>handleException ()</code>.
* @param t Exception to handle.
*/
private void handleException(final Throwable t)
{
synchronized (testResult)
{
if (t instanceof AssertionFailedError)
{
testResult.addFailure(this, (AssertionFailedError) t);
}
else
{
testResult.addError(this, t);
}
}
}
// ======================================================================
// inner class
// ======================================================================
/**
* A test case thread. Override runTestCase () and define
* behaviour of test in there.*/
protected abstract class TestCaseRunnable implements Runnable
{
/**
* Override this to define the test*/
public abstract void runTestCase()
throws Throwable;
/**
* Run the test in an environment where
* we can handle the exceptions generated by the test method.*/
public void run()
{
try
{
runTestCase();
}
catch (Throwable t) /* Any other exception we handle and then we interrupt the other threads.*/
{
handleException(t);
interruptThreads();
}
}
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org