You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ri...@apache.org on 2007/11/25 11:25:36 UTC

svn commit: r597970 - in /maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test: java/org/apache/maven/continuum/store/jpa/JpaProjectStoreTest.java resources/sql/ resources/sql/table-project-data.sql

Author: rinku
Date: Sun Nov 25 02:25:35 2007
New Revision: 597970

URL: http://svn.apache.org/viewvc?rev=597970&view=rev
Log:
o  added mechanism to load test data from SQL files for unit tests. 
o  some initial test data. 

Added:
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/resources/sql/
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/resources/sql/table-project-data.sql
Modified:
    maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/java/org/apache/maven/continuum/store/jpa/JpaProjectStoreTest.java

Modified: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/java/org/apache/maven/continuum/store/jpa/JpaProjectStoreTest.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/java/org/apache/maven/continuum/store/jpa/JpaProjectStoreTest.java?rev=597970&r1=597969&r2=597970&view=diff
==============================================================================
--- maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/java/org/apache/maven/continuum/store/jpa/JpaProjectStoreTest.java (original)
+++ maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/java/org/apache/maven/continuum/store/jpa/JpaProjectStoreTest.java Sun Nov 25 02:25:35 2007
@@ -3,6 +3,14 @@
  */
 package org.apache.maven.continuum.store.jpa;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
@@ -20,13 +28,18 @@
  */
 public class JpaProjectStoreTest extends SingleEMTestCase
 {
-    private static final String PERSITENT_UNIT_CONTINUUM_STORE = "continuum-store";
+    private static final String PERSISTENT_UNIT_CONTINUUM_STORE = "continuum-store";
 
     @Override
     public void setUp()
     {
+        File testData = new File( "src/test/resources/sql/table-project-data.sql" );
+        assertTrue( "Unable to find test data resource: " + testData.getAbsolutePath(), testData.exists() );
         Properties propMap = new Properties();
         setUp( propMap );
+
+        // load test data from SQL file.
+        setSqlSource( testData );
     }
 
     /**
@@ -35,7 +48,7 @@
     @Override
     protected String getPersistenceUnitName()
     {
-        return PERSITENT_UNIT_CONTINUUM_STORE;
+        return PERSISTENT_UNIT_CONTINUUM_STORE;
     }
 
     public void testContinuumJPAStoreActions()
@@ -44,10 +57,9 @@
         String[] sql = q.getDataStoreActions( null );
         assertEquals( 1, sql.length );
         assertTrue( sql[0].startsWith( "SELECT" ) );
-        // TODO: Uncomment following!
         List results = q.getResultList();
         assertNotNull( results );
-        assertEquals( 0, results.size() );
+        assertEquals( 1, results.size() );
     }
 
     /**
@@ -57,8 +69,90 @@
     @Override
     public void tearDown() throws Exception
     {
-        // super.tearDown();
+        super.tearDown();
         // do nothing
+    }
+
+    /**
+     * Imports sql from the specified file.
+     * 
+     * @param sqlResource
+     *            Resource containing sql
+     */
+    public void setSqlSource( File sqlResource )
+    {
+        try
+        {
+            // TODO: Use Logger!
+            // System.out.println( "Loading sql: " + sqlResource.getAbsolutePath() );
+            List<String> statements = new ArrayList<String>( 20 );
+            BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream( sqlResource ) ) );
+            String line = null;
+            StringBuffer currentStatement = new StringBuffer();
+            while ( ( line = br.readLine() ) != null )
+            {
+                if ( line.trim().length() == 0 )
+                    continue;
+                if ( line.trim().startsWith( "#" ) )
+                    continue;
+
+                currentStatement.append( line );
+                if ( line.endsWith( ";" ) )
+                {
+                    statements.add( currentStatement.toString() );
+                    currentStatement = new StringBuffer();
+                }
+            }
+            // append a line if missing a ';'
+            if ( currentStatement.length() > 0 )
+            {
+                statements.add( currentStatement.toString() );
+            }
+            runSQLStatements( statements );
+        }
+        catch ( Throwable e )
+        {
+            // TODO: User logger!
+            System.err.println( "Problem executing SQL!" );
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Run a bunch of SQL statements.
+     * 
+     * @param statements
+     *            Statements to run.
+     * @throws SQLException
+     */
+
+    public void runSQLStatements( final List<String> statements ) throws SQLException
+    {
+        for ( String qry : statements )
+        {
+            Connection con = (Connection) this.em.getConnection();
+            try
+            {
+                Statement stmt = con.createStatement();
+                System.out.println( qry );
+                stmt.execute( qry );
+                con.commit();
+            }
+            catch ( SQLException e )
+            {
+                try
+                {
+                    con.rollback();
+                }
+                catch ( SQLException e1 )
+                {
+                    // TODO: Use logger!
+                    System.err.println( "Unable to rollback transaction." );
+                    throw e1;
+                }
+                throw e;
+            }
+        }
     }
 
 }

Added: maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/resources/sql/table-project-data.sql
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/resources/sql/table-project-data.sql?rev=597970&view=auto
==============================================================================
--- maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/resources/sql/table-project-data.sql (added)
+++ maven/continuum/branches/continuum-jpa/continuum-model-jpa/src/test/resources/sql/table-project-data.sql Sun Nov 25 02:25:35 2007
@@ -0,0 +1,4 @@
+# Test SQL to populate data here
+
+INSERT INTO PROJECT (ID, DATE_CREATED, DATE_UPDATED, MODEL_ENCODING, ARTIFACT_ID, GROUP_ID, DESCRIPTION, NAME, FLG_SCM_USE_CACHE)
+  VALUES (100, 2007-11-01, 2007-11-10, 'UTF-8', 'continuum-jpa-model', 'org.apache.maven.continuum', 'Model for Continuum using JPA', 'continuum-jpa-model', false);
\ No newline at end of file