Author: sebb
Date: Thu Mar 22 16:28:47 2012
New Revision: 1303878

URL: http://svn.apache.org/viewvc?rev=1303878&view=rev
Log:
Allow testing of dynamically loaded CSVLexers

Modified:
    
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/PerformanceTest.java

Modified: 
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/PerformanceTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/PerformanceTest.java?rev=1303878&r1=1303877&r2=1303878&view=diff
==============================================================================
--- 
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/PerformanceTest.java
 (original)
+++ 
commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/PerformanceTest.java
 Thu Mar 22 16:28:47 2012
@@ -20,6 +20,8 @@ package org.apache.commons.csv;
 import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 
 /**
  * Basic test harness.
@@ -86,10 +88,14 @@ public class PerformanceTest {
                 testCSVLexer(false, test);
             } else if ("lexnew".equals(test)) {
                 testCSVLexer(true, test);
+            } else if (test.startsWith("CSVLexer")) {
+                testCSVLexer(false, test);
             } else if ("extb".equals(test)) {
                 testExtendedBuffer(false);
             } else if ("exts".equals(test)) {
                 testExtendedBuffer(true);
+            } else {
+                System.out.println("Invalid test name: "+test);
             }
         }
     }
@@ -198,11 +204,26 @@ public class PerformanceTest {
        show();
    }
 
+
+   private static Constructor<Lexer> getLexerCtor(String clazz) throws 
Exception {
+       @SuppressWarnings("unchecked")
+       Class<Lexer> lexer = (Class<Lexer>) 
Class.forName("org.apache.commons.csv."+clazz);
+       Constructor<Lexer> ctor = lexer.getConstructor(new 
Class<?>[]{CSVFormat.class, ExtendedBufferedReader.class});
+       return ctor;
+   }
+
    private static void testCSVLexer(final boolean newToken, String test) 
throws Exception {
        Token token = new Token();
+       String dynamic = "";
        for (int i = 0; i < max; i++) {
-           final BufferedReader reader = getReader();
-           Lexer lexer = new CSVLexer(format, new 
ExtendedBufferedReader(reader));
+           final ExtendedBufferedReader input = new 
ExtendedBufferedReader(getReader());
+           Lexer lexer = null;
+           if (test.startsWith("CSVLexer")) {
+               dynamic="!";
+               lexer = getLexerCtor(test).newInstance(new Object[]{format, 
input});
+           } else {
+               lexer = new CSVLexer(format, input);
+           }
            int count = 0;
            int fields = 0;
            long t0 = System.currentTimeMillis();
@@ -229,8 +250,8 @@ public class PerformanceTest {
 
            } while (!token.type.equals(Token.Type.EOF));
            Stats s = new Stats(count, fields);
-           reader.close();
-           show(test, s, t0);
+           input.close();
+           show(lexer.getClass().getSimpleName()+dynamic+" "+(newToken ? "new" 
: "reset"), s, t0);
        }
        show();
    }


Reply via email to