Add a couple of tests to CachedRowSetDataProvider scalability_root
authorjbaker@netbeans.org
Sat, 17 Nov 2007 01:30:17 +0000
changeset 187566d147e26903
parent 1874 32b3a15ea2a0
child 1876 9fba9f85f371
Add a couple of tests to CachedRowSetDataProvider
Not quite complete
visualweb.dataprovider/test/unit/src/org/netbeans/modules/visualweb/dataprovider/CachedRowSetDataProviderTest.java
     1.1 --- a/visualweb.dataprovider/test/unit/src/org/netbeans/modules/visualweb/dataprovider/CachedRowSetDataProviderTest.java	Fri Nov 16 23:25:14 2007 +0000
     1.2 +++ b/visualweb.dataprovider/test/unit/src/org/netbeans/modules/visualweb/dataprovider/CachedRowSetDataProviderTest.java	Sat Nov 17 01:30:17 2007 +0000
     1.3 @@ -6,12 +6,14 @@
     1.4  package org.netbeans.modules.visualweb.dataprovider;
     1.5  
     1.6  import com.sun.data.provider.FieldKey;
     1.7 +import com.sun.data.provider.RowKey;
     1.8  import com.sun.sql.rowset.CachedRowSetXImpl;
     1.9  import java.io.File;
    1.10  import junit.framework.TestCase;
    1.11  import com.sun.data.provider.impl.CachedRowSetDataProvider;
    1.12  
    1.13  
    1.14 +import java.beans.Beans;
    1.15  import java.sql.Connection;
    1.16  import java.sql.DriverManager;
    1.17  import java.sql.PreparedStatement;
    1.18 @@ -36,7 +38,7 @@
    1.19      private static final String IDNAME = "id";
    1.20      private static final String COL1NAME = "col1"; 
    1.21      private static final String COL2NAME = "col2";
    1.22 -    
    1.23 +    private static final String ROWID = "row1";  
    1.24      private static final int NUMROWS = 10;
    1.25      
    1.26      public CachedRowSetDataProviderTest(String testName) {
    1.27 @@ -166,6 +168,79 @@
    1.28         provider.close();
    1.29      }
    1.30      
    1.31 +    public void testInsertRow() {
    1.32 +        try {
    1.33 +            int newRowCount = 0;
    1.34 +            int currentRowCount = 0;
    1.35 +            CachedRowSetXImpl rowset = new CachedRowSetXImpl();
    1.36 +            Beans beans = new Beans();
    1.37 +            beans.setDesignTime(true);
    1.38 +            CachedRowSetDataProvider provider = new CachedRowSetDataProvider();
    1.39 +            provider.setCachedRowSet(rowset);
    1.40 +            currentRowCount = getRowCount(rowset);
    1.41 +            
    1.42 +            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
    1.43 +            Connection conn = DriverManager.getConnection(DBURL);           
    1.44 +
    1.45 +            PreparedStatement insert = conn.prepareStatement(
    1.46 +                    "INSERT INTO " + TABLENAME + " VALUES(?, ?, ?)");
    1.47 +
    1.48 +            for (int i = 1; i <= NUMROWS; i++) {
    1.49 +                insert.setInt(1, i);
    1.50 +                insert.setString(2, "col1_" + i);
    1.51 +                insert.setString(3, "col2_" + i);
    1.52 +
    1.53 +                insert.execute();
    1.54 +            }
    1.55 +            
    1.56 +            newRowCount = getRowCount(rowset);           
    1.57 +            assertEquals(newRowCount, currentRowCount + 1);
    1.58 +        } catch (ClassNotFoundException ex) {
    1.59 +            LOGGER.log(Level.FINE, null, ex);
    1.60 +        } catch (SQLException sqle) {
    1.61 +            LOGGER.log(Level.FINE, null, sqle);
    1.62 +        }
    1.63 +
    1.64 +    }
    1.65 +    
    1.66 +    public void testRevertChanges() {
    1.67 +        int newRowCount = 0;
    1.68 +        int currentRowCount = 0;
    1.69 +        
    1.70 +        try {
    1.71 +            CachedRowSetXImpl rowset = new CachedRowSetXImpl();
    1.72 +            Beans beans = new Beans();
    1.73 +            beans.setDesignTime(true);
    1.74 +            CachedRowSetDataProvider provider = new CachedRowSetDataProvider();
    1.75 +            provider.setCachedRowSet(rowset);
    1.76 +
    1.77 +            /* Select only one row and one extra column
    1.78 +             */
    1.79 +            rowset.setCommand("SELECT " + IDNAME + ", " + COL1NAME + " FROM " + TABLENAME + " WHERE " + IDNAME + " = 1");
    1.80 +
    1.81 +            rowset.setTableName(TABLENAME);
    1.82 +
    1.83 +            //commit changes
    1.84 +            rowset.execute();
    1.85 +            provider.commitChanges();
    1.86 +            currentRowCount = getRowCount(rowset);   
    1.87 +
    1.88 +            // add a new row
    1.89 +            FieldKey fk = new FieldKey(IDNAME);
    1.90 +            RowKey rk = new RowKey(ROWID);
    1.91 +            provider.setValue(fk, rk, beans);
    1.92 +            provider.appendRow();
    1.93 +            newRowCount = getRowCount(rowset);   
    1.94 +            // test revert changes
    1.95 +            provider.revertChanges();      
    1.96 +            assertEquals(newRowCount, currentRowCount);
    1.97 +
    1.98 +        } catch (SQLException sqle) {   
    1.99 +            LOGGER.log(Level.FINE, null, sqle);
   1.100 +        }            
   1.101 +    }
   1.102 +    
   1.103 +        
   1.104      private void checkRows(CachedRowSetDataProvider provider,
   1.105              int expectedRows, int expectedFields) {
   1.106          int numrows = provider.getRowCount();
   1.107 @@ -185,6 +260,27 @@
   1.108              }
   1.109          }
   1.110      }
   1.111 +    
   1.112 +    private int getRowCount(CachedRowSetXImpl rowset) {
   1.113 +
   1.114 +        CachedRowSetDataProvider provider = new CachedRowSetDataProvider();
   1.115 +        provider.setCachedRowSet(rowset);
   1.116 +
   1.117 +        // Select only one row and one extra column
   1.118 +        try {
   1.119 +            rowset.setUrl("jdbc:derby:mydb;create=true");
   1.120 +            rowset.setCommand("SELECT " + IDNAME + ", " + COL1NAME + " FROM " + TABLENAME + " WHERE " + IDNAME + " = 2");
   1.121 +            rowset.setTableName(TABLENAME);
   1.122 +
   1.123 +            //commit changes
   1.124 +            rowset.execute();
   1.125 +            
   1.126 +        } catch (SQLException sqle) {
   1.127 +            LOGGER.log(Level.FINE, null, sqle);
   1.128 +        }
   1.129 +        
   1.130 +        return provider.getRowCount();
   1.131 +    }
   1.132  
   1.133  
   1.134  }