You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2010/06/16 09:38:41 UTC

svn commit: r955148 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne: access/ unit/di/server/

Author: aadamchik
Date: Wed Jun 16 07:38:40 2010
New Revision: 955148

URL: http://svn.apache.org/viewvc?rev=955148&view=rev
Log:
DI-enabled unit tests

* switching old style unit tests

Added:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryInterceptor.java
      - copied, changed from r954855, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryBlocker.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryInterceptor.java
      - copied, changed from r954855, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseObjectContextProvider.java
      - copied, changed from r954855, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java
Removed:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryBlocker.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java
Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRollbackTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListTest.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinTest.java?rev=955148&r1=955147&r2=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinTest.java Wed Jun 16 07:38:40 2010
@@ -35,7 +35,7 @@ import org.apache.cayenne.testdo.testmap
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.UnitTestClosure;
-import org.apache.cayenne.unit.di.server.DataChannelQueryBlocker;
+import org.apache.cayenne.unit.di.server.DataChannelQueryInterceptor;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
@@ -49,7 +49,7 @@ public class DataContextEJBQLFetchJoinTe
     protected DBHelper dbHelper;
 
     @Inject
-    protected DataChannelQueryBlocker queryBlocker;
+    protected DataChannelQueryInterceptor queryBlocker;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRollbackTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRollbackTest.java?rev=955148&r1=955147&r2=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRollbackTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextRollbackTest.java Wed Jun 16 07:38:40 2010
@@ -23,14 +23,35 @@ import java.util.List;
 
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
-/**
- */
-public class DataContextRollbackTest extends DataContextCase {
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class DataContextRollbackTest extends ServerCase {
+
+    @Inject
+    protected DataContext context;
+
+    @Inject
+    protected ServerRuntime serverRuntime;
+
+    @Inject
+    protected DBHelper dbHelper;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("PAINTING_INFO");
+        dbHelper.deleteAll("PAINTING");
+        dbHelper.deleteAll("ARTIST_EXHIBIT");
+        dbHelper.deleteAll("ARTIST");
+    }
 
     public void testRollbackNew() {
         Artist artist = (Artist) context.newObject("Artist");
@@ -56,10 +77,6 @@ public class DataContextRollbackTest ext
 
         // after:
         assertEquals(PersistenceState.TRANSIENT, artist.getPersistenceState());
-
-        // TODO: should we expect relationships to be unset?
-        // assertNull(p1.getToArtist());
-        // assertEquals(0, artist.getPaintingArray().size());
     }
 
     public void testRollbackNewObject() {
@@ -74,17 +91,19 @@ public class DataContextRollbackTest ext
         // The commit should have made no changes, so
         // perform a fetch to ensure that this artist hasn't been persisted to the db
 
-        DataContext freshContext = createDataContext();
+        DataContext freshContext = (DataContext) serverRuntime.getContext();
+        assertNotSame(this.context, freshContext);
+
         SelectQuery query = new SelectQuery(Artist.class);
         query.setQualifier(ExpressionFactory.matchExp("artistName", artistName));
-        List queryResults = freshContext.performQuery(query);
+        List<?> queryResults = freshContext.performQuery(query);
 
         assertEquals(0, queryResults.size());
     }
 
     // Catches a bug where new objects were unregistered within an object iterator, thus
-    // modifying the
-    // collection the iterator was iterating over (ConcurrentModificationException)
+    // modifying the collection the iterator was iterating over
+    // (ConcurrentModificationException)
     public void testRollbackWithMultipleNewObjects() {
         String artistName = "rollbackTestArtist";
         String paintingTitle = "rollbackTestPainting";
@@ -95,23 +114,20 @@ public class DataContextRollbackTest ext
         painting.setPaintingTitle(paintingTitle);
         painting.setToArtist(artist);
 
-        try {
-            context.rollbackChanges();
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-            fail("rollbackChanges should not have caused the exception " + e.getMessage());
-        }
+        context.rollbackChanges();
 
         assertEquals(PersistenceState.TRANSIENT, artist.getPersistenceState());
         context.commitChanges();
+        
         // The commit should have made no changes, so
         // perform a fetch to ensure that this artist hasn't been persisted to the db
 
-        DataContext freshContext = createDataContext();
+        DataContext freshContext = (DataContext) serverRuntime.getContext();
+        assertNotSame(this.context, freshContext);
+
         SelectQuery query = new SelectQuery(Artist.class);
         query.setQualifier(ExpressionFactory.matchExp("artistName", artistName));
-        List queryResults = freshContext.performQuery(query);
+        List<?> queryResults = freshContext.performQuery(query);
 
         assertEquals(0, queryResults.size());
     }
@@ -138,7 +154,9 @@ public class DataContextRollbackTest ext
         assertEquals(1, artist.getPaintingArray().size());
         context.commitChanges();
 
-        DataContext freshContext = createDataContext();
+        DataContext freshContext = (DataContext) serverRuntime.getContext();
+        assertNotSame(this.context, freshContext);
+        
         SelectQuery query = new SelectQuery(Painting.class);
         query.setQualifier(ExpressionFactory.matchExp("paintingTitle", paintingTitle));
         List queryResults = freshContext.performQuery(query);
@@ -166,7 +184,9 @@ public class DataContextRollbackTest ext
         // The commit should have made no changes, so
         // perform a fetch to ensure that this artist hasn't been deleted from the db
 
-        DataContext freshContext = createDataContext();
+        DataContext freshContext = (DataContext) serverRuntime.getContext();
+        assertNotSame(this.context, freshContext);
+        
         SelectQuery query = new SelectQuery(Artist.class);
         query.setQualifier(ExpressionFactory.matchExp("artistName", artistName));
         List queryResults = freshContext.performQuery(query);
@@ -191,7 +211,10 @@ public class DataContextRollbackTest ext
         context.commitChanges();
 
         // .. and ensure that the correct data is in the db
-        DataContext freshContext = createDataContext();
+        DataContext freshContext = (DataContext) serverRuntime.getContext();
+        assertNotSame(this.context, freshContext);
+        
+        
         SelectQuery query = new SelectQuery(Artist.class);
         query.setQualifier(ExpressionFactory.matchExp("artistName", artistName));
         List queryResults = freshContext.performQuery(query);

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java?rev=955148&r1=955147&r2=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java Wed Jun 16 07:38:40 2010
@@ -20,6 +20,7 @@
 package org.apache.cayenne.access;
 
 import java.math.BigDecimal;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
@@ -27,12 +28,15 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.sql.DataSource;
+
 import org.apache.cayenne.DataObject;
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.Fault;
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.conn.PoolManager;
+import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.EJBQLQuery;
@@ -41,36 +45,140 @@ import org.apache.cayenne.query.Ordering
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.query.SortOrder;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Exhibit;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.testdo.testmap.ROArtist;
+import org.apache.cayenne.unit.AccessStackAdapter;
+import org.apache.cayenne.unit.di.UnitTestClosure;
+import org.apache.cayenne.unit.di.server.DataChannelQueryInterceptor;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class DataContextTest extends ServerCase {
+
+    @Inject
+    protected DataContext context;
+
+    @Inject
+    protected DBHelper dbHelper;
+
+    @Inject
+    protected AccessStackAdapter accessStackAdapter;
+
+    @Inject
+    protected DataChannelQueryInterceptor queryInterceptor;
+
+    @Inject
+    protected DataSource dataSource;
+
+    protected TableHelper tArtist;
+    protected TableHelper tExhibit;
+    protected TableHelper tGallery;
+    protected TableHelper tPaining;
 
-public class DataContextTest extends DataContextCase {
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("PAINTING_INFO");
+        dbHelper.deleteAll("PAINTING");
+        dbHelper.deleteAll("ARTIST_EXHIBIT");
+        dbHelper.deleteAll("ARTIST");
+        dbHelper.deleteAll("EXHIBIT");
+        dbHelper.deleteAll("GALLERY");
 
-    protected MockOperationObserver opObserver;
+        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
+        tExhibit = new TableHelper(dbHelper, "EXHIBIT");
+        tExhibit.setColumns("EXHIBIT_ID", "GALLERY_ID", "OPENING_DATE", "CLOSING_DATE");
+
+        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
+
+        tPaining = new TableHelper(dbHelper, "PAINTING");
+        tPaining.setColumns(
+                "PAINTING_ID",
+                "PAINTING_TITLE",
+                "ARTIST_ID",
+                "ESTIMATED_PRICE");
+    }
+
+    protected void createSingleArtistDataSet() throws Exception {
+        tArtist.insert(33001, "artist1");
+    }
+
+    protected void createFiveArtistDataSet_MixedCaseName() throws Exception {
+        tArtist.insert(33001, "artist1");
+        tArtist.insert(33002, "Artist3");
+        tArtist.insert(33003, "aRtist5");
+        tArtist.insert(33004, "arTist2");
+        tArtist.insert(33005, "artISt4");
+    }
+
+    protected void createGalleriesAndExhibitsDataSet() throws Exception {
 
-        opObserver = new MockOperationObserver();
+        tGallery.insert(33001, "gallery1");
+        tGallery.insert(33002, "gallery2");
+        tGallery.insert(33003, "gallery3");
+        tGallery.insert(33004, "gallery4");
+
+        Timestamp now = new Timestamp(System.currentTimeMillis());
+
+        tExhibit.insert(1, 33001, now, now);
+        tExhibit.insert(2, 33002, now, now);
+    }
+
+    protected void createArtistsDataSet() throws Exception {
+        tArtist.insert(33001, "artist1");
+        tArtist.insert(33002, "artist2");
+        tArtist.insert(33003, "artist3");
+        tArtist.insert(33004, "artist4");
+        tArtist.insert(33005, "artist5");
+        tArtist.insert(33006, "artist11");
+        tArtist.insert(33007, "artist21");
+    }
+
+    protected void createArtistsAndPaintingsDataSet() throws Exception {
+        createArtistsDataSet();
+
+        tPaining.insert(33001, "P_artist1", 33001, 1000);
+        tPaining.insert(33002, "P_artist2", 33002, 2000);
+        tPaining.insert(33003, "P_artist3", 33003, 3000);
+        tPaining.insert(33004, "P_artist4", 33004, 4000);
+        tPaining.insert(33005, "P_artist5", 33005, 5000);
+        tPaining.insert(33006, "P_artist11", 33006, 11000);
+        tPaining.insert(33007, "P_artist21", 33007, 21000);
     }
 
     public void testCurrentSnapshot1() throws Exception {
-        Artist artist = fetchArtist("artist1", false);
-        Map snapshot = context.currentSnapshot(artist);
+        createSingleArtistDataSet();
+
+        SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.matchExp(
+                Artist.ARTIST_NAME_PROPERTY,
+                "artist1"));
+        Artist artist = (Artist) context.performQuery(query).get(0);
+
+        DataRow snapshot = context.currentSnapshot(artist);
         assertEquals(artist.getArtistName(), snapshot.get("ARTIST_NAME"));
         assertEquals(artist.getDateOfBirth(), snapshot.get("DATE_OF_BIRTH"));
     }
 
     public void testCurrentSnapshot2() throws Exception {
+        createSingleArtistDataSet();
+
         // test null values
-        Artist artist = fetchArtist("artist1", false);
+        SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.matchExp(
+                Artist.ARTIST_NAME_PROPERTY,
+                "artist1"));
+        Artist artist = (Artist) context.performQuery(query).get(0);
+
         artist.setArtistName(null);
         artist.setDateOfBirth(null);
 
-        Map snapshot = context.currentSnapshot(artist);
+        DataRow snapshot = context.currentSnapshot(artist);
         assertTrue(snapshot.containsKey("ARTIST_NAME"));
         assertNull(snapshot.get("ARTIST_NAME"));
 
@@ -79,15 +187,21 @@ public class DataContextTest extends Dat
     }
 
     public void testCurrentSnapshot3() throws Exception {
-        // test FK relationship snapshotting
-        Artist a1 = fetchArtist("artist1", false);
+        createSingleArtistDataSet();
+
+        // test null values
+        SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.matchExp(
+                Artist.ARTIST_NAME_PROPERTY,
+                "artist1"));
+        Artist artist = (Artist) context.performQuery(query).get(0);
 
+        // test FK relationship snapshotting
         Painting p1 = new Painting();
         context.registerNewObject(p1);
-        p1.setToArtist(a1);
+        p1.setToArtist(artist);
 
-        Map s1 = context.currentSnapshot(p1);
-        Map idMap = a1.getObjectId().getIdSnapshot();
+        DataRow s1 = context.currentSnapshot(p1);
+        Map<String, Object> idMap = artist.getObjectId().getIdSnapshot();
         assertEquals(idMap.get("ARTIST_ID"), s1.get("ARTIST_ID"));
     }
 
@@ -96,14 +210,12 @@ public class DataContextTest extends Dat
      */
     public void testCurrentSnapshotWithToOneFault() throws Exception {
 
+        createGalleriesAndExhibitsDataSet();
+
         // Exhibit with Gallery as Fault must still include Gallery
         // Artist and Exhibit (Exhibit has unresolved to-one to gallery as in the
         // CAY-96 bug report)
 
-        // first prepare test fixture
-        createTestData("testGalleries");
-        populateExhibits();
-
         ObjectId eId = new ObjectId("Exhibit", Exhibit.EXHIBIT_ID_PK_COLUMN, 2);
         Exhibit e = (Exhibit) context.performQuery(new ObjectIdQuery(eId)).get(0);
 
@@ -122,9 +234,10 @@ public class DataContextTest extends Dat
      * a CHAR column with extra spaces, returned to the client. Cayenne should trim it.
      */
     public void testCharFetch() throws Exception {
-        SelectQuery q = new SelectQuery("Artist");
-        List artists = context.performQuery(q);
-        Artist a = (Artist) artists.get(0);
+        createSingleArtistDataSet();
+
+        SelectQuery query = new SelectQuery(Artist.class);
+        Artist a = (Artist) context.performQuery(query).get(0);
         assertEquals(a.getArtistName().trim(), a.getArtistName());
     }
 
@@ -134,9 +247,11 @@ public class DataContextTest extends Dat
      * Cayenne should trim it.
      */
     public void testCharInQualifier() throws Exception {
+        createArtistsDataSet();
+
         Expression e = ExpressionFactory.matchExp("artistName", "artist1");
-        SelectQuery q = new SelectQuery("Artist", e);
-        List artists = context.performQuery(q);
+        SelectQuery q = new SelectQuery(Artist.class, e);
+        List<Artist> artists = context.performQuery(q);
         assertEquals(1, artists.size());
     }
 
@@ -145,12 +260,12 @@ public class DataContextTest extends Dat
      * used in qualifier.
      */
     public void testMultiObjRelFetch() throws Exception {
-        createTestData("testPaintings");
+        createArtistsAndPaintingsDataSet();
 
-        SelectQuery q = new SelectQuery("Painting");
+        SelectQuery q = new SelectQuery(Painting.class);
         q.andQualifier(ExpressionFactory.matchExp("toArtist.artistName", "artist2"));
         q.orQualifier(ExpressionFactory.matchExp("toArtist.artistName", "artist4"));
-        List results = context.performQuery(q);
+        List<Painting> results = context.performQuery(q);
 
         assertEquals(2, results.size());
     }
@@ -160,72 +275,86 @@ public class DataContextTest extends Dat
      * used in qualifier.
      */
     public void testMultiDbRelFetch() throws Exception {
-        createTestData("testPaintings");
+        createArtistsAndPaintingsDataSet();
 
         SelectQuery q = new SelectQuery("Painting");
         q.andQualifier(ExpressionFactory.matchDbExp("toArtist.ARTIST_NAME", "artist2"));
         q.orQualifier(ExpressionFactory.matchDbExp("toArtist.ARTIST_NAME", "artist4"));
-        List results = context.performQuery(q);
+        List<?> results = context.performQuery(q);
 
         assertEquals(2, results.size());
     }
 
     public void testSelectDate() throws Exception {
-        createTestData("testGalleries");
-        populateExhibits();
+        createGalleriesAndExhibitsDataSet();
 
-        List objects = context.performQuery(new SelectQuery(Exhibit.class));
+        List<Exhibit> objects = context.performQuery(new SelectQuery(Exhibit.class));
         assertFalse(objects.isEmpty());
 
-        Exhibit e1 = (Exhibit) objects.get(0);
+        Exhibit e1 = objects.get(0);
         assertEquals(java.util.Date.class, e1.getClosingDate().getClass());
     }
 
     public void testCaseInsensitiveOrdering() throws Exception {
-        if (!getAccessStackAdapter().supportsCaseInsensitiveOrder()) {
+        if (!accessStackAdapter.supportsCaseInsensitiveOrder()) {
             return;
         }
 
+        createFiveArtistDataSet_MixedCaseName();
+
         // case insensitive ordering appends extra columns
         // to the query when query is using DISTINCT...
-        // verify that the result is not messaged up
+        // verify that the result is not messed up
 
         SelectQuery query = new SelectQuery(Artist.class);
-        Ordering ordering = new Ordering("artistName", SortOrder.ASCENDING_INSENSITIVE);
+        Ordering ordering = new Ordering(
+                Artist.ARTIST_NAME_PROPERTY,
+                SortOrder.ASCENDING_INSENSITIVE);
         query.addOrdering(ordering);
         query.setDistinct(true);
 
-        List objects = context.performQuery(query);
-        assertEquals(artistCount, objects.size());
+        List<Artist> objects = context.performQuery(query);
+        assertEquals(5, objects.size());
 
-        Artist artist = (Artist) objects.get(0);
-        Map snapshot = context.getObjectStore().getSnapshot(artist.getObjectId());
+        Artist artist = objects.get(0);
+        DataRow snapshot = context.getObjectStore().getSnapshot(artist.getObjectId());
         assertEquals(3, snapshot.size());
+
+        // assert the ordering
+        assertEquals("artist1", objects.get(0).getArtistName());
+        assertEquals("arTist2", objects.get(1).getArtistName());
+        assertEquals("Artist3", objects.get(2).getArtistName());
+        assertEquals("artISt4", objects.get(3).getArtistName());
+        assertEquals("aRtist5", objects.get(4).getArtistName());
     }
 
     public void testPerformSelectQuery1() throws Exception {
-        SelectQuery query = new SelectQuery("Artist");
-        List objects = context.performQuery(query);
+        createArtistsAndPaintingsDataSet();
+
+        SelectQuery query = new SelectQuery(Artist.class);
+        List<?> objects = context.performQuery(query);
 
         assertNotNull(objects);
-        assertEquals(artistCount, objects.size());
+        assertEquals(7, objects.size());
         assertTrue(
                 "Artist expected, got " + objects.get(0).getClass(),
                 objects.get(0) instanceof Artist);
     }
 
     public void testPerformSelectQuery2() throws Exception {
+        createArtistsAndPaintingsDataSet();
+
         // do a query with complex qualifier
-        List expressions = new ArrayList();
+        List<Expression> expressions = new ArrayList<Expression>();
         expressions.add(ExpressionFactory.matchExp("artistName", "artist3"));
         expressions.add(ExpressionFactory.matchExp("artistName", "artist5"));
-        expressions.add(ExpressionFactory.matchExp("artistName", "artist15"));
+        expressions.add(ExpressionFactory.matchExp("artistName", "artist21"));
 
-        SelectQuery query = new SelectQuery("Artist", ExpressionFactory.joinExp(
+        SelectQuery query = new SelectQuery(Artist.class, ExpressionFactory.joinExp(
                 Expression.OR,
                 expressions));
 
-        List objects = context.performQuery(query);
+        List<?> objects = context.performQuery(query);
 
         assertNotNull(objects);
         assertEquals(3, objects.size());
@@ -234,14 +363,10 @@ public class DataContextTest extends Dat
                 objects.get(0) instanceof Artist);
     }
 
-    public void testPerformQuery() throws Exception {
-        SelectQuery query = new SelectQuery("Artist");
-        List objects = context.performQuery(query);
-        assertNotNull(objects);
-        assertEquals(artistCount, objects.size());
-    }
-
     public void testPerformNonSelectingQuery() throws Exception {
+
+        createSingleArtistDataSet();
+
         SelectQuery select = new SelectQuery(Painting.class, Expression
                 .fromString("db:PAINTING_ID = 1"));
 
@@ -250,18 +375,20 @@ public class DataContextTest extends Dat
         SQLTemplate query = new SQLTemplate(
                 Painting.class,
                 "INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) "
-                        + "VALUES (1, 'PX', 33002, 1)");
+                        + "VALUES (1, 'PX', 33001, 1)");
         context.performNonSelectingQuery(query);
         assertEquals(1, context.performQuery(select).size());
     }
 
     public void testPerformNonSelectingQueryCounts1() throws Exception {
+        createArtistsDataSet();
+
         SQLTemplate query = new SQLTemplate(
                 Painting.class,
                 "INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) "
                         + "VALUES ($pid, '$pt', $aid, $price)");
 
-        Map map = new HashMap();
+        Map<String, Object> map = new HashMap<String, Object>();
         map.put("pid", new Integer(1));
         map.put("pt", "P1");
         map.put("aid", new Integer(33002));
@@ -277,14 +404,17 @@ public class DataContextTest extends Dat
     }
 
     public void testPerformNonSelectingQueryCounts2() throws Exception {
+        
+        createArtistsDataSet();
+        
         SQLTemplate query = new SQLTemplate(
                 Painting.class,
                 "INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) "
                         + "VALUES ($pid, '$pt', $aid, #bind($price 'DECIMAL' 2))");
 
-        Map[] maps = new Map[3];
+        Map<String, Object>[] maps = new Map[3];
         for (int i = 0; i < maps.length; i++) {
-            maps[i] = new HashMap();
+            maps[i] = new HashMap<String, Object>();
             maps[i].put("pid", new Integer(1 + i));
             maps[i].put("pt", "P-" + i);
             maps[i].put("aid", new Integer(33002));
@@ -309,58 +439,67 @@ public class DataContextTest extends Dat
     }
 
     public void testPerformPaginatedQuery() throws Exception {
-        SelectQuery query = new SelectQuery("Artist");
+        createArtistsDataSet();
+
+        SelectQuery query = new SelectQuery(Artist.class);
         query.setPageSize(5);
-        List objects = context.performQuery(query);
+        List<?> objects = context.performQuery(query);
         assertNotNull(objects);
         assertTrue(objects instanceof IncrementalFaultList);
         assertTrue(((IncrementalFaultList<?>) objects).elements.get(0) instanceof Long);
-        assertTrue(((IncrementalFaultList<?>) objects).elements.get(7) instanceof Long);
-        
+        assertTrue(((IncrementalFaultList<?>) objects).elements.get(6) instanceof Long);
+
         assertTrue(objects.get(0) instanceof Artist);
     }
-    
+
     public void testPerformPaginatedQuery1() throws Exception {
+        createArtistsDataSet();
+
         EJBQLQuery query = new EJBQLQuery("select a FROM Artist a");
         query.setPageSize(5);
-        List objects = context.performQuery(query);
+        List<?> objects = context.performQuery(query);
         assertNotNull(objects);
         assertTrue(objects instanceof IncrementalFaultList);
         assertTrue(((IncrementalFaultList<?>) objects).elements.get(0) instanceof Long);
-        assertTrue(((IncrementalFaultList<?>) objects).elements.get(7) instanceof Long);
-        
+        assertTrue(((IncrementalFaultList<?>) objects).elements.get(6) instanceof Long);
+
         assertTrue(objects.get(0) instanceof Artist);
     }
 
     public void testPerformPaginatedQueryBigPage() throws Exception {
-        SelectQuery query = new SelectQuery("Artist");
-        query.setPageSize(DataContextTest.artistCount + 2);
-        List objects = context.performQuery(query);
+        createArtistsDataSet();
+
+        SelectQuery query = new SelectQuery(Artist.class);
+        query.setPageSize(5);
+        final List<?> objects = context.performQuery(query);
         assertNotNull(objects);
         assertTrue(objects instanceof IncrementalFaultList);
 
-        blockQueries();
-        try {
-            assertEquals(DataContextTest.artistCount, objects.size());
-        }
-        finally {
-            unblockQueries();
-        }
+        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
+
+            public void execute() {
+                assertEquals(7, objects.size());
+            }
+        });
     }
 
     public void testPerformDataRowQuery() throws Exception {
-        SelectQuery query = new SelectQuery("Artist");
+
+        createArtistsDataSet();
+
+        SelectQuery query = new SelectQuery(Artist.class);
         query.setFetchingDataRows(true);
-        List objects = context.performQuery(query);
+        List<?> objects = context.performQuery(query);
 
         assertNotNull(objects);
-        assertEquals(artistCount, objects.size());
+        assertEquals(7, objects.size());
         assertTrue(
                 "Map expected, got " + objects.get(0).getClass(),
                 objects.get(0) instanceof Map);
     }
 
     public void testCommitChangesRO1() throws Exception {
+
         ROArtist a1 = (ROArtist) context.newObject("ROArtist");
         a1.writePropertyDirectly("artistName", "abc");
         a1.setPersistenceState(PersistenceState.MODIFIED);
@@ -376,8 +515,13 @@ public class DataContextTest extends Dat
     }
 
     public void testCommitChangesRO2() throws Exception {
-        ROArtist a1 = fetchROArtist("artist1");
-        a1.writeProperty("artistName", "abc");
+        createArtistsDataSet();
+
+        SelectQuery query = new SelectQuery(ROArtist.class, ExpressionFactory.matchExp(
+                Artist.ARTIST_NAME_PROPERTY,
+                "artist1"));
+        ROArtist a1 = (ROArtist) context.performQuery(query).get(0);
+        a1.writeProperty(ROArtist.ARTIST_NAME_PROPERTY, "abc");
 
         try {
             context.commitChanges();
@@ -390,7 +534,13 @@ public class DataContextTest extends Dat
     }
 
     public void testCommitChangesRO3() throws Exception {
-        ROArtist a1 = fetchROArtist("artist1");
+
+        createArtistsDataSet();
+
+        SelectQuery query = new SelectQuery(ROArtist.class, ExpressionFactory.matchExp(
+                Artist.ARTIST_NAME_PROPERTY,
+                "artist1"));
+        ROArtist a1 = (ROArtist) context.performQuery(query).get(0);
         context.deleteObject(a1);
 
         try {
@@ -404,8 +554,14 @@ public class DataContextTest extends Dat
     }
 
     public void testCommitChangesRO4() throws Exception {
-        ROArtist a1 = fetchROArtist("artist1");
-        Painting painting = (Painting) context.newObject("Painting");
+        createArtistsDataSet();
+
+        SelectQuery query = new SelectQuery(ROArtist.class, ExpressionFactory.matchExp(
+                Artist.ARTIST_NAME_PROPERTY,
+                "artist1"));
+        ROArtist a1 = (ROArtist) context.performQuery(query).get(0);
+
+        Painting painting = context.newObject(Painting.class);
         painting.setPaintingTitle("paint");
         a1.addToPaintingArray(painting);
 
@@ -422,7 +578,10 @@ public class DataContextTest extends Dat
     }
 
     public void testPerformIteratedQuery1() throws Exception {
-        SelectQuery q1 = new SelectQuery("Artist");
+
+        createArtistsDataSet();
+
+        SelectQuery q1 = new SelectQuery(Artist.class);
         ResultIterator it = context.performIteratedQuery(q1);
 
         try {
@@ -432,7 +591,7 @@ public class DataContextTest extends Dat
                 count++;
             }
 
-            assertEquals(DataContextTest.artistCount, count);
+            assertEquals(7, count);
         }
         finally {
             it.close();
@@ -440,7 +599,7 @@ public class DataContextTest extends Dat
     }
 
     public void testPerformIteratedQuery2() throws Exception {
-        createTestData("testPaintings");
+        createArtistsAndPaintingsDataSet();
 
         ResultIterator it = context.performIteratedQuery(new SelectQuery(Artist.class));
 
@@ -452,11 +611,8 @@ public class DataContextTest extends Dat
                 DataRow row = (DataRow) it.nextRow();
 
                 // try instantiating an object and fetching its relationships
-                Artist artist = context.objectFromDataRow(
-                        Artist.class,
-                        row,
-                        false);
-                List paintings = artist.getPaintingArray();
+                Artist artist = context.objectFromDataRow(Artist.class, row, false);
+                List<?> paintings = artist.getPaintingArray();
                 assertNotNull(paintings);
                 assertEquals("Expected one painting for artist: " + artist, 1, paintings
                         .size());
@@ -465,28 +621,16 @@ public class DataContextTest extends Dat
         finally {
             // change allowed connections back
             changeMaxConnections(-1);
-
             it.close();
         }
     }
 
-    public void changeMaxConnections(int delta) {
-        DataNode node = context
-                .getParentDataDomain()
-                .getDataNodes()
-                .iterator()
-                .next();
-
-        // access DS directly as 'getDataSource' returns a wrapper.
-        PoolManager manager = (PoolManager) node.dataSource;
-        manager.setMaxConnections(manager.getMaxConnections() + delta);
-    }
-
     /**
      * Tests that hasChanges performs correctly when an object is "modified" and the
      * property is simply set to the same value (an unreal modification)
      */
     public void testHasChangesPhantom() {
+
         String artistName = "ArtistName";
         Artist artist = (Artist) context.newObject("Artist");
         artist.setArtistName(artistName);
@@ -515,7 +659,6 @@ public class DataContextTest extends Dat
     }
 
     public void testInvalidateObjects() throws Exception {
-        DataContext context = createDataContext();
 
         DataRow row = new DataRow(10);
         row.put("ARTIST_ID", new Integer(1));
@@ -536,14 +679,16 @@ public class DataContextTest extends Dat
         assertNull(context.getObjectStore().getCachedSnapshot(oid));
         assertSame(object, context.getObjectStore().getNode(oid));
     }
-    
+
     public void testBeforeHollowDeleteShouldChangeStateToCommited() throws Exception {
-        ObjectId gid = new ObjectId("Artist","ARTIST_ID",33001);  
+        createSingleArtistDataSet();
+
+        ObjectId gid = new ObjectId("Artist", "ARTIST_ID", 33001);
         final Artist inflated = new Artist();
         inflated.setPersistenceState(PersistenceState.COMMITTED);
         inflated.setObjectId(gid);
         inflated.setArtistName("artist1");
-        
+
         Artist hollow = (Artist) context.localObject(gid, null);
         assertEquals(PersistenceState.HOLLOW, hollow.getPersistenceState());
 
@@ -551,8 +696,12 @@ public class DataContextTest extends Dat
         context.deleteObject(hollow);
         assertSame(hollow, context.getGraphManager().getNode(gid));
         assertEquals(inflated.getArtistName(), hollow.getArtistName());
-          
+
         assertEquals(PersistenceState.DELETED, hollow.getPersistenceState());
     }
 
+    private void changeMaxConnections(int delta) {
+        PoolManager manager = (PoolManager) dataSource;
+        manager.setMaxConnections(manager.getMaxConnections() + delta);
+    }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchTest.java?rev=955148&r1=955147&r2=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchTest.java Wed Jun 16 07:38:40 2010
@@ -17,31 +17,87 @@
  *  under the License.
  ****************************************************************/
 
-
 package org.apache.cayenne.access;
 
 import java.util.List;
 
 import org.apache.cayenne.DataObject;
+import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
+import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
+import org.apache.cayenne.testdo.testmap.Painting;
+import org.apache.cayenne.unit.di.UnitTestClosure;
+import org.apache.cayenne.unit.di.server.DataChannelQueryInterceptor;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class SimpleIdIncrementalFaultListPrefetchTest extends ServerCase {
+
+    @Inject
+    protected ObjectContext context;
+
+    @Inject
+    protected DBHelper dbHelper;
 
-/**
- */
-public class SimpleIdIncrementalFaultListPrefetchTest extends DataContextCase {
+    @Inject
+    protected DataChannelQueryInterceptor queryInterceptor;
+
+    protected TableHelper tArtist;
+    protected TableHelper tPaining;
 
     @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        createTestData("testPaintings");
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("PAINTING_INFO");
+        dbHelper.deleteAll("PAINTING");
+        dbHelper.deleteAll("ARTIST_EXHIBIT");
+        dbHelper.deleteAll("ARTIST");
+
+        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
+
+        tPaining = new TableHelper(dbHelper, "PAINTING");
+        tPaining.setColumns(
+                "PAINTING_ID",
+                "PAINTING_TITLE",
+                "ARTIST_ID",
+                "ESTIMATED_PRICE");
     }
-    
-    public void testListType() {
-        Expression e = ExpressionFactory.likeExp("artistName", "artist1%");
+
+    protected void createArtistsDataSet() throws Exception {
+        tArtist.insert(33001, "artist11");
+        tArtist.insert(33002, "artist12");
+        tArtist.insert(33003, "artist13");
+        tArtist.insert(33004, "artist14");
+        tArtist.insert(33005, "artist15");
+        tArtist.insert(33006, "artist16");
+        tArtist.insert(33007, "artist21");
+    }
+
+    protected void createArtistsAndPaintingsDataSet() throws Exception {
+        createArtistsDataSet();
+
+        tPaining.insert(33001, "P_artist11", 33001, 1000);
+        tPaining.insert(33002, "P_artist12", 33002, 2000);
+        tPaining.insert(33003, "P_artist13", 33003, 3000);
+        tPaining.insert(33004, "P_artist14", 33004, 4000);
+        tPaining.insert(33005, "P_artist15", 33005, 5000);
+        tPaining.insert(33006, "P_artist16", 33006, 11000);
+        tPaining.insert(33007, "P_artist21", 33007, 21000);
+    }
+
+    public void testListType() throws Exception {
+
+        createArtistsDataSet();
+
+        Expression e = ExpressionFactory.likeExp(Artist.ARTIST_NAME_PROPERTY, "artist1%");
         SelectQuery q = new SelectQuery("Artist", e);
         q.setPageSize(4);
 
@@ -53,49 +109,58 @@ public class SimpleIdIncrementalFaultLis
      * Test that all queries specified in prefetch are executed with a single prefetch
      * path.
      */
-    public void testPrefetch1() {
+    public void testPrefetch1() throws Exception {
+
+        createArtistsAndPaintingsDataSet();
 
         Expression e = ExpressionFactory.likeExp("artistName", "artist1%");
         SelectQuery q = new SelectQuery("Artist", e);
         q.addPrefetch("paintingArray");
-        q.setPageSize(4);
+        q.setPageSize(3);
 
-        IncrementalFaultList result = (IncrementalFaultList) context.performQuery(q);
+        final IncrementalFaultList<?> result = (IncrementalFaultList) context
+                .performQuery(q);
 
-        assertEquals(11, result.size());
+        assertEquals(6, result.size());
 
         // currently queries with prefetch do not resolve their first page
         assertEquals(result.size(), result.getUnfetchedObjects());
 
-        // go through the second page objects and count queries
-        getDomain().restartQueryCounter();
-        for (int i = 4; i < 8; i++) {
-            result.get(i);
+        int count = queryInterceptor.runWithQueryCounter(new UnitTestClosure() {
 
-            // within the same page only one query should've been executed
-            assertEquals(1, getDomain().getQueryCount());
-        }
+            public void execute() {
+                // go through the second page objects and count queries
+                for (int i = 3; i < 6; i++) {
+                    result.get(i);
+                }
+            }
+        });
+
+        // within the same page only one query should've been executed
+        assertEquals(1, count);
     }
 
     /**
      * Test that a to-many relationship is initialized.
      */
-    public void testPrefetch3() {
+    public void testPrefetch3() throws Exception {
+
+        createArtistsAndPaintingsDataSet();
 
         Expression e = ExpressionFactory.likeExp("artistName", "artist1%");
         SelectQuery q = new SelectQuery("Artist", e);
         q.addPrefetch("paintingArray");
-        q.setPageSize(4);
+        q.setPageSize(3);
 
         IncrementalFaultList result = (IncrementalFaultList) context.performQuery(q);
 
-        assertEquals(11, result.size());
+        assertEquals(6, result.size());
 
         // currently queries with prefetch do not resolve their first page
         assertEquals(result.size(), result.getUnfetchedObjects());
 
         // go through the second page objects and check their to many
-        for (int i = 4; i < 8; i++) {
+        for (int i = 3; i < 6; i++) {
             Artist a = (Artist) result.get(i);
 
             List paintings = a.getPaintingArray();
@@ -107,33 +172,32 @@ public class SimpleIdIncrementalFaultLis
     /**
      * Test that a to-one relationship is initialized.
      */
-    public void testPrefetch4() {
+    public void testPrefetch4() throws Exception {
 
-        SelectQuery q = new SelectQuery("Painting");
-        q.setPageSize(4);
+        createArtistsAndPaintingsDataSet();
+
+        SelectQuery q = new SelectQuery(Painting.class);
+        q.setPageSize(3);
         q.addPrefetch("toArtist");
 
-        IncrementalFaultList result = (IncrementalFaultList) context.performQuery(q);
+        IncrementalFaultList<?> result = (IncrementalFaultList) context.performQuery(q);
 
         // get an objects from the second page
-        DataObject p1 = (DataObject) result.get(q.getPageSize());
-
-        blockQueries();
+        final DataObject p1 = (DataObject) result.get(q.getPageSize());
 
-        try {
+        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
 
-            Object toOnePrefetch = p1.readNestedProperty("toArtist");
-            assertNotNull(toOnePrefetch);
-            assertTrue(
-                    "Expected DataObject, got: " + toOnePrefetch.getClass().getName(),
-                    toOnePrefetch instanceof DataObject);
-
-            DataObject a1 = (DataObject) toOnePrefetch;
-            assertEquals(PersistenceState.COMMITTED, a1.getPersistenceState());
-        }
-        finally {
-            unblockQueries();
-        }
+            public void execute() {
+                Object toOnePrefetch = p1.readNestedProperty("toArtist");
+                assertNotNull(toOnePrefetch);
+                assertTrue(
+                        "Expected DataObject, got: " + toOnePrefetch.getClass().getName(),
+                        toOnePrefetch instanceof DataObject);
+
+                DataObject a1 = (DataObject) toOnePrefetch;
+                assertEquals(PersistenceState.COMMITTED, a1.getPersistenceState());
+            }
+        });
     }
 
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListTest.java?rev=955148&r1=955147&r2=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListTest.java Wed Jun 16 07:38:40 2010
@@ -84,17 +84,17 @@ public class SimpleIdIncrementalFaultLis
 
     public void testSize() throws Exception {
         prepareList(6);
-        assertEquals(DataContextTest.artistCount, list.size());
+        assertEquals(25, list.size());
     }
 
     public void testSmallList() throws Exception {
         prepareList(49);
-        assertEquals(DataContextTest.artistCount, list.size());
+        assertEquals(25, list.size());
     }
 
     public void testOnePageList() throws Exception {
-        prepareList(DataContextTest.artistCount);
-        assertEquals(DataContextTest.artistCount, list.size());
+        prepareList(25);
+        assertEquals(25, list.size());
     }
 
     public void testIterator() throws Exception {
@@ -139,7 +139,7 @@ public class SimpleIdIncrementalFaultLis
                 context,
                 q);
 
-        assertSame(newArtist, list.get(DataContextTest.artistCount));
+        assertSame(newArtist, list.get(25));
     }
 
     public void testListIterator() throws Exception {
@@ -183,9 +183,9 @@ public class SimpleIdIncrementalFaultLis
 
     public void testUnfetchedObjects() throws Exception {
         prepareList(6);
-        assertEquals(DataContextTest.artistCount, list.getUnfetchedObjects());
+        assertEquals(25, list.getUnfetchedObjects());
         list.get(7);
-        assertEquals(DataContextTest.artistCount - 6, list.getUnfetchedObjects());
+        assertEquals(25 - 6, list.getUnfetchedObjects());
         list.resolveAll();
         assertEquals(0, list.getUnfetchedObjects());
     }

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryInterceptor.java (from r954855, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryBlocker.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryInterceptor.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryInterceptor.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryBlocker.java&r1=954855&r2=955148&rev=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryBlocker.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/DataChannelQueryInterceptor.java Wed Jun 16 07:38:40 2010
@@ -20,7 +20,9 @@ package org.apache.cayenne.unit.di.serve
 
 import org.apache.cayenne.unit.di.UnitTestClosure;
 
-public interface DataChannelQueryBlocker {
+public interface DataChannelQueryInterceptor {
 
     void runWithQueriesBlocked(UnitTestClosure closure);
+    
+    int runWithQueryCounter(UnitTestClosure closure);
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java?rev=955148&r1=955147&r2=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCase.java Wed Jun 16 07:38:40 2010
@@ -21,6 +21,7 @@ package org.apache.cayenne.unit.di.serve
 import javax.sql.DataSource;
 
 import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.configuration.server.ServerRuntime;
 import org.apache.cayenne.dba.DbAdapter;
@@ -74,8 +75,8 @@ public class ServerCase extends DICase {
                 binder.bind(AccessStackAdapter.class).toProviderInstance(
                         new CayenneResourcesAccessStackAdapterProvider(resources));
                 binder.bind(DataNode.class).toProvider(ServerCaseDataNodeProvider.class);
-                binder.bind(DataChannelQueryBlocker.class).to(
-                        ServerCaseDataChannelQueryBlocker.class);
+                binder.bind(DataChannelQueryInterceptor.class).to(
+                        ServerCaseDataChannelQueryInterceptor.class);
 
                 // test-scoped objects
                 binder
@@ -85,6 +86,8 @@ public class ServerCase extends DICase {
                 binder.bind(ServerRuntime.class).toProviderInstance(
                         new ServerRuntimeProvider(resources)).in(testScope);
                 binder.bind(ObjectContext.class).toProvider(
+                        ServerCaseObjectContextProvider.class).in(testScope);
+                binder.bind(DataContext.class).toProvider(
                         ServerCaseDataContextProvider.class).in(testScope);
                 binder
                         .bind(DBHelper.class)

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryInterceptor.java (from r954855, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryInterceptor.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryInterceptor.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java&r1=954855&r2=955148&rev=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryBlocker.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataChannelQueryInterceptor.java Wed Jun 16 07:38:40 2010
@@ -24,7 +24,7 @@ import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
 import org.apache.cayenne.unit.di.UnitTestClosure;
 
-public class ServerCaseDataChannelQueryBlocker implements DataChannelQueryBlocker {
+public class ServerCaseDataChannelQueryInterceptor implements DataChannelQueryInterceptor {
 
     @Inject
     // injecting provider to make this provider independent from scoping of ServerRuntime
@@ -44,4 +44,22 @@ public class ServerCaseDataChannelQueryB
             channel.setBlockingQueries(false);
         }
     }
+
+    public int runWithQueryCounter(UnitTestClosure closure) {
+
+        UnitTestDomain channel = (UnitTestDomain) serverRuntimeProvider
+                .get()
+                .getChannel();
+
+        int start = channel.getQueryCount();
+        int end;
+        try {
+            closure.execute();
+        }
+        finally {
+            end = channel.getQueryCount();
+        }
+
+        return end - start;
+    }
 }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java?rev=955148&r1=955147&r2=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java Wed Jun 16 07:38:40 2010
@@ -20,17 +20,16 @@ package org.apache.cayenne.unit.di.serve
 
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
 
-public class ServerCaseDataContextProvider implements Provider<ObjectContext> {
+public class ServerCaseDataContextProvider implements Provider<DataContext> {
 
     @Inject
-    // injecting provider to make this provider independent from scoping of ServerRuntime
-    protected Provider<ServerRuntime> serverRuntimeProvider;
+    protected Provider<ObjectContext> objectContextProvider;
 
-    public ObjectContext get() throws ConfigurationException {
-        return serverRuntimeProvider.get().getContext();
+    public DataContext get() throws ConfigurationException {
+        return (DataContext) objectContextProvider.get();
     }
 }

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseObjectContextProvider.java (from r954855, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseObjectContextProvider.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseObjectContextProvider.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java&r1=954855&r2=955148&rev=955148&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseDataContextProvider.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseObjectContextProvider.java Wed Jun 16 07:38:40 2010
@@ -24,7 +24,7 @@ import org.apache.cayenne.configuration.
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
 
-public class ServerCaseDataContextProvider implements Provider<ObjectContext> {
+public class ServerCaseObjectContextProvider implements Provider<ObjectContext> {
 
     @Inject
     // injecting provider to make this provider independent from scoping of ServerRuntime