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/01/04 19:14:55 UTC
cvs commit: db-ojb/src/test/org/apache/ojb/broker PersistenceBrokerTest.java MtoNMapping.java
arminw 2004/01/04 10:14:55
Modified: src/test/org/apache/ojb/broker PersistenceBrokerTest.java
MtoNMapping.java
Log:
update tests regarding to creation of new objects with m:n relation
add test case for PBF.releaseAllInstances method
Revision Changes Path
1.36 +102 -86 db-ojb/src/test/org/apache/ojb/broker/PersistenceBrokerTest.java
Index: PersistenceBrokerTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/PersistenceBrokerTest.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- PersistenceBrokerTest.java 23 Nov 2003 09:23:38 -0000 1.35
+++ PersistenceBrokerTest.java 4 Jan 2004 18:14:55 -0000 1.36
@@ -19,6 +19,7 @@
import org.apache.ojb.broker.query.ReportQueryByCriteria;
import org.apache.ojb.broker.util.ObjectModificationDefaultImpl;
import org.apache.ojb.broker.util.logging.LoggerFactory;
+import org.apache.ojb.broker.core.DelegatingPersistenceBroker;
/**
* Junit test driver for elematary PB tests.
@@ -26,11 +27,8 @@
public class PersistenceBrokerTest extends TestCase
{
PersistenceBroker broker;
-
int testId = 12345;
- private static Class CLASS = PersistenceBrokerTest.class;
-
/**
* BrokerTests constructor comment.
* @param name java.lang.String
@@ -40,11 +38,77 @@
super(name);
}
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 22:15:33)
- * @param id int
- */
+ public static void main(String[] args)
+ {
+ String[] arr = {PersistenceBrokerTest.class.getName()};
+ junit.textui.TestRunner.main(arr);
+ }
+
+ public void setUp()
+ {
+ try
+ {
+ broker = PersistenceBrokerFactory.defaultPersistenceBroker();
+ }
+ catch (Throwable t)
+ {
+ LoggerFactory.getBootLogger().error("error getting broker", t);
+ }
+ }
+
+ public void tearDown()
+ {
+ try
+ {
+// Article a = createArticle(testId);
+// deleteArticle(a);
+ broker.clearCache();
+ }
+ catch (Throwable t)
+ {
+ }
+ finally
+ {
+ if (broker != null) broker.close();
+ }
+ }
+
+ public void testPBF() throws Exception
+ {
+ // we don't need this
+ broker.close();
+
+ PersistenceBroker pb_1 = PersistenceBrokerFactory.defaultPersistenceBroker();
+ pb_1.getObjectByQuery(QueryFactory.newQuery(Person.class, (Criteria) null));
+ PersistenceBroker pb_2 = PersistenceBrokerFactory.defaultPersistenceBroker();
+ pb_2.getObjectByQuery(QueryFactory.newQuery(Person.class, (Criteria) null));
+ PersistenceBroker pb_3 = PersistenceBrokerFactory.defaultPersistenceBroker();
+ pb_3.getObjectByQuery(QueryFactory.newQuery(Person.class, (Criteria) null));
+ pb_1.close();
+ pb_2.close();
+ pb_3.close();
+ PersistenceBrokerFactory.releaseAllInstances();
+ PersistenceBroker pbNew = PersistenceBrokerFactory.defaultPersistenceBroker();
+ if(pbNew instanceof DelegatingPersistenceBroker)
+ {
+ if(checkIdentityEquality(pbNew, pb_1)
+ || checkIdentityEquality(pbNew, pb_2)
+ || checkIdentityEquality(pbNew, pb_3))
+ {
+ fail("Reuse of released PB instance");
+ }
+ }
+ assertFalse(pbNew.isClosed());
+ assertFalse(pbNew.isInTransaction());
+ pbNew.close();
+ }
+
+ private boolean checkIdentityEquality(PersistenceBroker p1, PersistenceBroker p2)
+ {
+ return ((DelegatingPersistenceBroker) p1).getInnermostDelegate()
+ == ((DelegatingPersistenceBroker) p2).getInnermostDelegate();
+ }
+
protected Article createArticle(int id)
{
ProductGroup pg;
@@ -113,17 +177,6 @@
/**
* Insert the method's description here.
- * Creation date: (23.12.2000 18:30:38)
- * @param args java.lang.String[]
- */
- public static void main(String[] args)
- {
- String[] arr = {CLASS.getName()};
- junit.textui.TestRunner.main(arr);
- }
-
- /**
- * Insert the method's description here.
* Creation date: (06.12.2000 22:15:33)
* @param id int
*/
@@ -155,22 +208,6 @@
/**
* Insert the method's description here.
- * Creation date: (06.12.2000 21:58:53)
- */
- public void setUp()
- {
- try
- {
- broker = PersistenceBrokerFactory.defaultPersistenceBroker();
- }
- catch (Throwable t)
- {
- LoggerFactory.getBootLogger().error("error getting broker", t);
- }
- }
-
- /**
- * Insert the method's description here.
* Creation date: (06.12.2000 22:15:33)
* @param anArticle int
*/
@@ -180,27 +217,6 @@
}
/**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:59:14)
- */
- public void tearDown()
- {
- try
- {
- Article a = createArticle(testId);
- deleteArticle(a);
- broker.clearCache();
- }
- catch (Throwable t)
- {
- }
- finally
- {
- if (broker != null) broker.close();
- }
- }
-
- /**
* test the the PB delete() method.
*/
public void testDelete() throws Exception
@@ -727,12 +743,12 @@
assertEquals("should be same value - id number", itemNumberCheck, testIa.getArticleId());
itemNumberCheck++;
}
-
+
// read one item only
// 1. set query start equals end
query.setStartAtIndex(4);
query.setEndAtIndex(4);
-
+
// 2. check if only one item is found
OJBIterator ojbIter = (OJBIterator)broker.getIteratorByQuery(query);
assertEquals("size of iterator should be one", 1, ojbIter.size());
@@ -1342,7 +1358,7 @@
result = broker.getCollectionByQuery(query);
assertEquals("Expect to find none objects", 0, result.size());
}
-
+
/**
* Test if only one query is executed for each extent.<br>
* If the same query is run multiple times the result will contain duplicates
@@ -1355,15 +1371,15 @@
crit.addGreaterThan("articleId",new Integer(70));
QueryByCriteria qry = new QueryByCriteria(InterfaceArticle.class, crit);
- broker.clearCache();
+ broker.clearCache();
result = broker.getCollectionByQuery(qry);
set.addAll(result);
- assertEquals("Both sizes must be equal", set.size(), result.size());
+ assertEquals("Both sizes must be equal", set.size(), result.size());
}
-
+
/**
- * Size returned by Iterator must be same as size of Collection
+ * Size returned by Iterator must be same as size of Collection
*/
public void testIteratorSize()
{
@@ -1372,33 +1388,33 @@
QueryByCriteria query;
int collSize;
int iterSize;
-
+
crit = new Criteria();
query = QueryFactory.newQuery(Article.class, crit);
-
+
collSize = broker.getCollectionByQuery(query).size();
-
+
ojbIter = (OJBIterator)broker.getIteratorByQuery(query);
iterSize = ojbIter.size();
-
+
assertEquals("collSize == iterSize", collSize , iterSize);
ojbIter.releaseDbResources();
}
-
+
public void testPaging()
{
OJBIterator ojbIter;
Criteria crit;
QueryByCriteria query;
int fullSize;
-
+
// All Articles index in range
crit = new Criteria();
query = QueryFactory.newQuery(Article.class, crit);
fullSize = broker.getCollectionByQuery(query).size();
-
+
query.setStartAtIndex(10);
- query.setEndAtIndex(14);
+ query.setEndAtIndex(14);
ojbIter = (OJBIterator)broker.getIteratorByQuery(query);
assertEquals("index 10 - 14 expecting 5 rows", 5,ojbIter.size());
ojbIter.releaseDbResources();
@@ -1410,17 +1426,17 @@
Criteria crit;
QueryByCriteria query;
int fullSize;
-
+
// All Articles index out of range
crit = new Criteria();
query = QueryFactory.newQuery(Article.class, crit);
fullSize = broker.getCollectionByQuery(query).size();
-
+
query.setStartAtIndex(fullSize + 5);
- query.setEndAtIndex(fullSize + 14);
+ query.setEndAtIndex(fullSize + 14);
ojbIter = (OJBIterator)broker.getIteratorByQuery(query);
assertEquals("indices out of range expecting 0 rows", 0,ojbIter.size());
- ojbIter.releaseDbResources();
+ ojbIter.releaseDbResources();
}
public void testPagingEndIndexOutOfRange()
@@ -1429,37 +1445,37 @@
Criteria crit;
QueryByCriteria query;
int fullSize;
-
+
// All Articles index out of range
crit = new Criteria();
query = QueryFactory.newQuery(Article.class, crit);
fullSize = broker.getCollectionByQuery(query).size();
-
+
query.setStartAtIndex(fullSize - 9);
- query.setEndAtIndex(fullSize + 9);
+ query.setEndAtIndex(fullSize + 9);
ojbIter = (OJBIterator)broker.getIteratorByQuery(query);
assertEquals("end index out of range expecting 10 rows", 10,ojbIter.size());
- ojbIter.releaseDbResources();
+ ojbIter.releaseDbResources();
}
-
+
public void testPagingEmptyIterator()
{
OJBIterator ojbIter;
Criteria crit;
QueryByCriteria query;
int fullSize;
-
- // looking for inexistent Article
+
+ // looking for inexistent Article
crit = new Criteria();
crit.addEqualTo("articleId",new Integer(-777));
query = QueryFactory.newQuery(Article.class, crit);
fullSize = broker.getCollectionByQuery(query).size();
-
+
query.setStartAtIndex(10);
- query.setEndAtIndex(14);
+ query.setEndAtIndex(14);
ojbIter = (OJBIterator)broker.getIteratorByQuery(query);
assertEquals("index 10 - 14 expecting 0 rows for empty iterator", 0,ojbIter.size());
- ojbIter.releaseDbResources();
+ ojbIter.releaseDbResources();
}
-
+
}
1.18 +79 -227 db-ojb/src/test/org/apache/ojb/broker/MtoNMapping.java
Index: MtoNMapping.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/MtoNMapping.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- MtoNMapping.java 4 Jan 2004 12:14:49 -0000 1.17
+++ MtoNMapping.java 4 Jan 2004 18:14:55 -0000 1.18
@@ -18,7 +18,41 @@
*/
public class MtoNMapping extends TestCase
{
+ public static void main(String[] args)
+ {
+ String[] arr = {MtoNMapping.class.getName()};
+ junit.textui.TestRunner.main(arr);
+ }
+ PersistenceBroker broker;
+
+ public MtoNMapping(String name)
+ {
+ super(name);
+ }
+
+ public void setUp()
+ {
+ try
+ {
+ broker = PersistenceBrokerFactory.defaultPersistenceBroker();
+ }
+ catch (PBFactoryException e)
+ {
+ }
+ }
+
+ public void tearDown()
+ {
+ try
+ {
+ broker.clearCache();
+ broker.close();
+ }
+ catch (PersistenceBrokerException e)
+ {
+ }
+ }
/**
* this tests if polymorph collections (i.e. collections of objects
@@ -163,57 +197,6 @@
assertEquals(3, loadedDoris.getFavoriteFood().size());
}
- public static void main(String[] args)
- {
- String[] arr = {CLASS.getName()};
- junit.textui.TestRunner.main(arr);
- }
-
- PersistenceBroker broker;
- private static Class CLASS = MtoNMapping.class;
-
- /**
- * Insert the method's description here.
- * Creation date: (24.12.2000 00:33:40)
- */
- public MtoNMapping(String name)
- {
- super(name);
- }
-
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:58:53)
- */
- public void setUp()
- {
- try
- {
- broker = PersistenceBrokerFactory.defaultPersistenceBroker();
- }
- catch (PBFactoryException e)
- {
- }
- }
-
- /**
- * Insert the method's description here.
- * Creation date: (06.12.2000 21:59:14)
- */
- public void tearDown()
- {
-
- try
- {
- broker.clearCache();
- broker.close();
- }
- catch (PersistenceBrokerException e)
- {
- }
-
- }
-
/** test loading of m:n mapped object nets*/
public void testMNLoading() throws Exception
{
@@ -387,80 +370,11 @@
}
- /**
- * Add two new persons and one new project. Assign persons with the
- * new project.
- * FAILS because person-project-connection is not bidirectional
- */
- public void _testInsertWithIndirectionTable_1() throws Exception
+ private Project createProjectWithAssignedPersons(String title) throws Exception
{
- String title = "testInsertWithIndirectionTable_1_" + System.currentTimeMillis();
-
- broker.beginTransaction();
- // create new project and store
- Project project = new Project();
- project.setTitle(title);
- broker.store(project);
-
- // create two persons and assign project
- Person p1 = new Person();
- p1.setFirstname(title);
-
- List projects_1 = new ArrayList();
- projects_1.add(project);
- p1.setProjects(projects_1);
-
- Person p2 = new Person();
- p2.setFirstname(title);
-
- List projects_2 = new ArrayList();
- projects_2.add(project);
- p2.setProjects(projects_2);
-
- broker.store(p1);
- broker.store(p2);
- broker.commitTransaction();
-
/*
- Now I expect two entries in PERSON_PROJECT table
- with same project id, two new Person and one Project
- entries in PERSON/PROJECT table
+ the order of store statements is crucial
*/
- broker.clearCache();
- Criteria crit = new Criteria();
- crit.addEqualTo("firstname", title);
- Query query = new QueryByCriteria(Person.class, crit);
- Collection result = broker.getCollectionByQuery(query);
- assertNotNull(result);
- assertEquals("We expect 2 person instances", 2, result.size());
-
- crit = new Criteria();
- crit.addEqualTo("id", new Integer(project.getId()));
- query = new QueryByCriteria(Project.class, crit);
- result = broker.getCollectionByQuery(query);
- assertNotNull(result);
- assertEquals("We expect 1 project instance", 1, result.size());
- Project newProject = (Project) result.iterator().next();
- assertNotNull(newProject.getRoles());
- assertEquals("We expect 2 Role objects", 2, newProject.getRoles().size());
-
- // query for role objects representing PERSON_PROJECT entries
- crit = new Criteria();
- crit.addEqualTo("project_id", new Integer(project.getId()));
- query = new QueryByCriteria(Role.class, crit);
- result = broker.getCollectionByQuery(query);
- assertNotNull(result);
- assertEquals("We expect 2 role instances", 2, result.size());
- }
-
- /**
- * Add two new persons and one new project. Assign persons to
- * project and vice versa.
- */
- public void testInsertWithIndirectionTable_2() throws Exception
- {
- String title = "testInsertWithIndirectionTable_2_" + System.currentTimeMillis();
-
// create new project
Project project = new Project();
project.setTitle(title);
@@ -470,7 +384,7 @@
Person p1 = new Person();
p1.setFirstname(title);
broker.store(p1);
-
+
List projects_1 = new ArrayList();
projects_1.add(project);
p1.setProjects(projects_1); // connect project to person
@@ -478,7 +392,7 @@
Person p2 = new Person();
p2.setFirstname(title);
broker.store(p2);
-
+
List projects_2 = new ArrayList();
projects_2.add(project);
p2.setProjects(projects_2); // connect project to person
@@ -487,11 +401,24 @@
persons.add(p1);
persons.add(p2);
project.setPersons(persons); // connect persons to project
-
+
broker.beginTransaction();
broker.store(project);
broker.commitTransaction();
+ return project;
+ }
+
+ /**
+ * Add two new persons and one new project. Assign persons with the
+ * new project and vice versa.
+ */
+ public void testInsertWithIndirectionTable_1() throws Exception
+ {
+ String title = "testInsertWithIndirectionTable_1_" + System.currentTimeMillis();
+
+ Project project = createProjectWithAssignedPersons(title);
+
/*
Now I expect two entries in PERSON_PROJECT table
with same project id, two new Person and one Project
@@ -524,117 +451,41 @@
assertEquals("We expect 2 role instances", 2, result.size());
}
- /**
- * Add two new persons to existing project
- * FAILS because person-project-connection is not bidirectional
- */
- public void _testInsertWithIndirectionTable_3() throws Exception
+ /**
+ * Add two new persons to existing project. Assign persons with the
+ * existing project and vice versa.
+ */
+ public void testInsertWithIndirectionTable_3() throws Exception
{
String title = "testInsertWithIndirectionTable_3_" + System.currentTimeMillis();
- Criteria critProject = new Criteria();
- critProject.addEqualTo("id", new Integer(5));
- Query projectQuery = new QueryByCriteria(Project.class, critProject);
-
- Criteria critPerson = new Criteria();
- critPerson.addEqualTo("firstname", title);
- Query personQuery = new QueryByCriteria(Person.class, critPerson);
-
- // first we lookup roles for project id 5
- // query for role objects representing PERSON_PROJECT entries
- Criteria crit = new Criteria();
- crit.addEqualTo("project_id", new Integer(5));
- Query query = new QueryByCriteria(Role.class, crit);
- Collection result = broker.getCollectionByQuery(query);
- assertNotNull(result);
- assertTrue("test needs existing roles for given id", result.size() > 0);
- int roleCount = result.size();
-
- // lookup an existing project
- Project project = (Project) broker.getObjectByQuery(projectQuery);
- assertNotNull(project);
-
- // create two persons and assign project
- Person p1 = new Person();
- p1.setFirstname(title);
- broker.store(p1);
-
- List projects_1 = new ArrayList();
- projects_1.add(project);
- p1.setProjects(projects_1);
-
- Person p2 = new Person();
- p2.setFirstname(title);
- broker.store(p2);
-
- List projects_2 = new ArrayList();
- projects_2.add(project);
- p2.setProjects(projects_2);
-
-// project.getPersons().add(p1);
-// project.getPersons().add(p2);
-
- broker.beginTransaction();
- broker.store(project);
- broker.commitTransaction();
+ // first we create an project with assigned persons
+ // create new project with two assigned persons
+ Project tempProject = createProjectWithAssignedPersons(title);
- result = broker.getCollectionByQuery(personQuery);
- assertNotNull(result);
- assertEquals("We expect 2 person instances", 2, result.size());
-
- /*
- Now I expect two new entries in PERSON_PROJECT table
- with same project id, two new Person entries
- */
+ // now the real update test begins
broker.clearCache();
-
- result = broker.getCollectionByQuery(personQuery);
- assertNotNull(result);
- assertEquals("We expect 2 person instances", 2, result.size());
-
- crit = new Criteria();
- crit.addEqualTo("id", new Integer(project.getId()));
- query = new QueryByCriteria(Project.class, crit);
- result = broker.getCollectionByQuery(query);
- assertNotNull(result);
- assertEquals("We expect 1 project instance", 1, result.size());
- Project newProject = (Project) result.iterator().next();
- assertNotNull(newProject.getRoles());
- assertEquals("We expect 2 new Role objects", roleCount + 2, newProject.getRoles().size());
-
- // query for role objects representing PERSON_PROJECT entries
- crit = new Criteria();
- crit.addEqualTo("project_id", new Integer(project.getId()));
- query = new QueryByCriteria(Role.class, crit);
- result = broker.getCollectionByQuery(query);
- assertNotNull(result);
- assertEquals("We expect 2 new role instances", roleCount + 2, result.size());
- }
-
- /** Add two new persons to existing project and vice versa*/
- public void testInsertWithIndirectionTable_4() throws Exception
- {
- String title = "testInsertWithIndirectionTable_4_" + System.currentTimeMillis();
-
Criteria critProject = new Criteria();
- critProject.addEqualTo("id", new Integer(5));
+ critProject.addEqualTo("id", new Integer(tempProject.getId()));
Query projectQuery = new QueryByCriteria(Project.class, critProject);
Criteria critPerson = new Criteria();
critPerson.addEqualTo("firstname", title);
Query personQuery = new QueryByCriteria(Person.class, critPerson);
- // first we lookup roles for project id 5
+ broker.clearCache();
+
+ // first we lookup roles for existing project
// query for role objects representing PERSON_PROJECT entries
Criteria crit = new Criteria();
- crit.addEqualTo("project_id", new Integer(5));
+ crit.addEqualTo("project_id", new Integer(tempProject.getId()));
Query query = new QueryByCriteria(Role.class, crit);
Collection result = broker.getCollectionByQuery(query);
assertNotNull(result);
assertTrue("test needs existing roles for given id", result.size() > 0);
int roleCount = result.size();
- // lookup an existing project
+ // lookup the existing project
Project project = (Project) broker.getObjectByQuery(projectQuery);
assertNotNull(project);
@@ -642,40 +493,41 @@
Person p1 = new Person();
p1.setFirstname(title);
broker.store(p1);
-
+
List projects_1 = new ArrayList();
projects_1.add(project);
- p1.setProjects(projects_1); // connect project to person
+ p1.setProjects(projects_1);
Person p2 = new Person();
p2.setFirstname(title);
broker.store(p2);
-
+
List projects_2 = new ArrayList();
projects_2.add(project);
- p2.setProjects(projects_2); // connect project to person
+ p2.setProjects(projects_2);
// connect persons to project
project.getPersons().add(p1);
project.getPersons().add(p2);
-
+
+
broker.beginTransaction();
broker.store(project);
broker.commitTransaction();
result = broker.getCollectionByQuery(personQuery);
assertNotNull(result);
- assertEquals("We expect 2 person instances", 2, result.size());
+ assertEquals("We expect 2 new person instances", 2+2, result.size());
/*
- Now I expect two new entries in PERSON_PROJECT table
- with same project id, two new Person entries
- */
+ Now I expect two new entries in PERSON_PROJECT table
+ with same project id, two new Person entries
+ */
broker.clearCache();
result = broker.getCollectionByQuery(personQuery);
assertNotNull(result);
- assertEquals("We expect 2 person instances", 2, result.size());
+ assertEquals("We expect 2 new person instances", 2+2, result.size());
crit = new Criteria();
crit.addEqualTo("id", new Integer(project.getId()));
@@ -693,7 +545,7 @@
query = new QueryByCriteria(Role.class, crit);
result = broker.getCollectionByQuery(query);
assertNotNull(result);
- assertEquals("We expect 2 new role instances", roleCount + 2, result.size());
+ assertEquals("We expect 2 role instances", roleCount + 2, result.size());
}
/** test deleting objects from an m:n association*/
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org