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();
}