You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2014/07/10 03:34:01 UTC
[2/2] git commit: Added a disk performance test to help identify the
disk speed and parsing speed.
Added a disk performance test to help identify the disk speed and parsing speed.
Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/1b7d3aaf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/1b7d3aaf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/1b7d3aaf
Branch: refs/heads/prestonc/benchmark_updates
Commit: 1b7d3aafe23fec163527684ad499e84064263e6f
Parents: 5f72282
Author: Preston Carman <pr...@apache.org>
Authored: Wed Jul 9 18:29:41 2014 -0700
Committer: Preston Carman <pr...@apache.org>
Committed: Wed Jul 9 18:29:41 2014 -0700
----------------------------------------------------------------------
.../noaa-ghcn-daily/scripts/run_benchmark.sh | 10 +-
.../scripts/run_benchmark_cluster.sh | 8 +-
.../noaa-ghcn-daily/scripts/run_mrql_tests.sh | 6 +-
.../java/org/apache/vxquery/cli/VXQuery.java | 5 +
.../org/apache/vxquery/xmlparser/XMLParser.java | 18 +-
vxquery-xtest/pom.xml | 4 +
.../vxquery/xtest/util/DiskPerformance.java | 214 +++++++++++++++++++
.../xtest/util/tests/AbstractDiskTest.java | 78 +++++++
.../tests/BufferedParsedCharacterStream.java | 45 ++++
.../tests/BufferedReaderBufferedStream.java | 45 ++++
.../xtest/util/tests/BufferedReaderStream.java | 43 ++++
.../xtest/util/tests/BufferedStream.java | 42 ++++
.../vxquery/xtest/util/tests/IDiskTest.java | 15 ++
.../util/tests/ParsedBufferedByteStream.java | 48 +++++
.../tests/ParsedBufferedCharacterStream.java | 48 +++++
.../xtest/util/tests/ParsedByteStream.java | 46 ++++
.../xtest/util/tests/ParsedCharacterStream.java | 47 ++++
.../xtest/util/tests/ReaderBufferedStream.java | 43 ++++
.../vxquery/xtest/util/tests/ReaderStream.java | 42 ++++
.../apache/vxquery/xtest/util/tests/Stream.java | 41 ++++
20 files changed, 827 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark.sh
----------------------------------------------------------------------
diff --git a/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark.sh b/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark.sh
index 9b79277..ff2d761 100755
--- a/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark.sh
+++ b/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark.sh
@@ -27,7 +27,7 @@
#
REPEAT=5
FRAME_SIZE=10000
-BUFFER_SIZE=8192
+BUFFER_SIZE=$((8*1024*1024))
if [ -z "${1}" ]
then
@@ -35,18 +35,20 @@ then
exit
fi
-export JAVA_OPTS="$JAVA_OPTS -server -Xmx1G -XX:+HeapDumpOnOutOfMemoryError -Djava.util.logging.config.file=./vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/benchmark_logging.properties"
+export JAVA_OPTS="$JAVA_OPTS -server -Xmx8G -XX:+HeapDumpOnOutOfMemoryError -Djava.util.logging.config.file=./vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/benchmark_logging.properties"
for j in $(find ${1} -name '*q??.xq')
do
if [ -z "${3}" ] || [[ "${j}" =~ "${3}" ]]
then
- date
+ date
echo "Running query: ${j}"
log_file="$(basename ${j}).$(date +%Y%m%d%H%M).log"
log_base_path=$(dirname ${j/queries/query_logs})
mkdir -p ${log_base_path}
-time sh ./vxquery-cli/target/appassembler/bin/vxq ${j} ${2} -timing -showquery -showoet -showrp -frame-size ${FRAME_SIZE} -buffer-size ${BUFFER_SIZE} -repeatexec ${REPEAT} > ${log_base_path}/${log_file} 2>&1
+ time sh ./vxquery-cli/target/appassembler/bin/vxq ${j} ${2} -timing -showquery -showoet -showrp -frame-size ${FRAME_SIZE} -buffer-size ${BUFFER_SIZE} -repeatexec ${REPEAT} > ${log_base_path}/${log_file} 2>&1
+ echo "Buffer Size: ${BUFFER_SIZE}" >> ${log_base_path}/${log_file}
+ echo "Frame Size: ${FRAME_SIZE}" >> ${log_base_path}/${log_file}
fi;
done
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark_cluster.sh
----------------------------------------------------------------------
diff --git a/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark_cluster.sh b/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark_cluster.sh
index a00de98..67b7ca7 100644
--- a/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark_cluster.sh
+++ b/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_benchmark_cluster.sh
@@ -27,7 +27,7 @@
#
REPEAT=5
FRAME_SIZE=10000
-BUFFER_SIZE=8192
+BUFFER_SIZE=1*1024*1024
if [ -z "${1}" ]
then
@@ -48,7 +48,7 @@ python vxquery-server/src/main/resources/scripts/cluster_cli.py -c vxquery-serve
# wait for cluster to finish setting up
sleep 5
-export JAVA_OPTS="$JAVA_OPTS -server -Xmx1G -XX:+HeapDumpOnOutOfMemoryError -Djava.util.logging.config.file=./vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/benchmark_logging.properties"
+export JAVA_OPTS="$JAVA_OPTS -server -Xmx8G -XX:+HeapDumpOnOutOfMemoryError -Djava.util.logging.config.file=./vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/benchmark_logging.properties"
for j in $(find ${1} -name '*q??.xq')
do
@@ -58,12 +58,14 @@ do
# Only run for specified queries.
if [ -z "${4}" ] || [[ "${j}" =~ "${4}" ]]
then
- date
+ date
echo "Running query: ${j}"
log_file="$(basename ${j}).$(date +%Y%m%d%H%M).log"
log_base_path=$(dirname ${j/queries/query_logs})
mkdir -p ${log_base_path}
time sh ./vxquery-cli/target/appassembler/bin/vxq ${j} ${3} -timing -showquery -showoet -showrp -frame-size ${FRAME_SIZE} -buffer-size ${BUFFER_SIZE} -repeatexec ${REPEAT} > ${log_base_path}/${log_file} 2>&1
+ echo "\nBuffer Size: ${BUFFER_SIZE}" >> ${log_base_path}/${log_file}
+ echo "\nFrame Size: ${FRAME_SIZE}" >> ${log_base_path}/${log_file}
fi;
fi;
done
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_mrql_tests.sh
----------------------------------------------------------------------
diff --git a/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_mrql_tests.sh b/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_mrql_tests.sh
index eb1b2a2..1fa58dd 100644
--- a/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_mrql_tests.sh
+++ b/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/scripts/run_mrql_tests.sh
@@ -24,9 +24,9 @@ DATASET="hcn"
for n in `seq 0 7`
#for n in 0
do
- date
- echo "Running q0${n} on ${DATASET} for MRQL."
- time for i in {1..${REPEAT}}; do ~/mrql/incubator-mrql/bin/mrql -dist -nodes 5 ~/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/other_systems/mrql_${DATASET}/q0${n}.mrql >> weather_data/mrql/query_logs/${DATASET}/q0${n}.mrql.log 2>&1; done;
+ date
+ echo "Running q0${n} on ${DATASET} for MRQL."
+ time for i in {1..${REPEAT}}; do ~/mrql/incubator-mrql/bin/mrql -dist -nodes 5 ~/vxquery-benchmark/src/main/resources/noaa-ghcn-daily/other_systems/mrql_${DATASET}/q0${n}.mrql >> weather_data/mrql/query_logs/${DATASET}/q0${n}.mrql.log 2>&1; done;
done
SUBJECT="MRQL Tests Finished (${DATASET})"
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
----------------------------------------------------------------------
diff --git a/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
index 02697e9..61226e5 100644
--- a/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
+++ b/vxquery-cli/src/main/java/org/apache/vxquery/cli/VXQuery.java
@@ -148,6 +148,8 @@ public class VXQuery {
* @throws Exception
*/
private void execute() throws Exception {
+ System.setProperty("vxquery.buffer_size",Integer.toString(opts.bufferSize));
+
if (opts.clientNetIpAddress != null) {
hcc = new HyracksConnection(opts.clientNetIpAddress, opts.clientNetPort);
runQueries();
@@ -446,6 +448,9 @@ public class VXQuery {
@Option(name = "-frame-size", usage = "Frame size in bytes. (default 65536)")
public int frameSize = 65536;
+ @Option(name = "-buffer-size", usage = "Read file buffer size in bytes. (default 512)")
+ public int bufferSize = 512;
+
@Option(name = "-O", usage = "Optimization Level. Default: Full Optimization")
private int optimizationLevel = Integer.MAX_VALUE;
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
index 0c31d27..1aea1e6 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/XMLParser.java
@@ -14,6 +14,7 @@
*/
package org.apache.vxquery.xmlparser;
+import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -22,7 +23,6 @@ import java.io.InputStreamReader;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
-import java.util.zip.GZIPInputStream;
import org.apache.vxquery.context.StaticContext;
import org.apache.vxquery.exceptions.VXQueryFileNotFoundException;
@@ -44,6 +44,7 @@ public class XMLParser {
final SAXContentHandler handler;
final InputSource in;
final String nodeId;
+ final int buffer_size;
public XMLParser(boolean attachTypes, ITreeNodeIdProvider idProvider, String nodeId) throws HyracksDataException {
this(attachTypes, idProvider, nodeId, null, null, null, null);
@@ -52,9 +53,12 @@ public class XMLParser {
public XMLParser(boolean attachTypes, ITreeNodeIdProvider idProvider, String nodeId, ByteBuffer frame,
FrameTupleAppender appender, List<Integer> childSeq, StaticContext staticContext)
throws HyracksDataException {
+ buffer_size = Integer.parseInt(System.getProperty("vxquery.buffer_size"));
this.nodeId = nodeId;
try {
parser = XMLReaderFactory.createXMLReader();
+
+ System.out.println("XMLReader buffer:" +parser.getProperty("http://apache.org/xml/properties/input-buffer-size"));
if (frame == null || appender == null) {
handler = new SAXContentHandler(attachTypes, idProvider);
} else {
@@ -74,11 +78,7 @@ public class XMLParser {
public void parseDocument(File file, ArrayBackedValueStorage abvs) throws HyracksDataException {
try {
- if (file.getName().toLowerCase().endsWith(".xml.gz")) {
- in.setCharacterStream(new InputStreamReader(new GZIPInputStream(new FileInputStream(file))));
- } else {
- in.setCharacterStream(new InputStreamReader(new FileInputStream(file)));
- }
+ in.setCharacterStream(new BufferedReader(new InputStreamReader(new FileInputStream(file)), buffer_size));
parser.parse(in);
handler.writeDocument(abvs);
} catch (FileNotFoundException e) {
@@ -99,11 +99,7 @@ public class XMLParser {
public void parseElements(File file, IFrameWriter writer, FrameTupleAccessor fta, int tupleIndex)
throws HyracksDataException {
try {
- if (file.getName().toLowerCase().endsWith(".xml.gz")) {
- in.setCharacterStream(new InputStreamReader(new GZIPInputStream(new FileInputStream(file))));
- } else {
- in.setCharacterStream(new InputStreamReader(new FileInputStream(file)));
- }
+ in.setCharacterStream(new BufferedReader(new InputStreamReader(new FileInputStream(file)), buffer_size));
handler.setupElementWriter(writer, fta, tupleIndex);
parser.parse(in);
} catch (FileNotFoundException e) {
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/pom.xml
----------------------------------------------------------------------
diff --git a/vxquery-xtest/pom.xml b/vxquery-xtest/pom.xml
index 35bfa27..ee79b2a 100644
--- a/vxquery-xtest/pom.xml
+++ b/vxquery-xtest/pom.xml
@@ -50,6 +50,10 @@
<mainClass>org.apache.vxquery.xtest.Main</mainClass>
<name>xtest</name>
</program>
+ <program>
+ <mainClass>org.apache.vxquery.xtest.util.DiskPerformance</mainClass>
+ <name>diskperformance</name>
+ </program>
</programs>
<repositoryLayout>flat</repositoryLayout>
<repositoryName>lib</repositoryName>
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/DiskPerformance.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/DiskPerformance.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/DiskPerformance.java
new file mode 100644
index 0000000..913d22e
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/DiskPerformance.java
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.filefilter.TrueFileFilter;
+import org.apache.vxquery.datamodel.builders.atomic.StringValueBuilder;
+import org.apache.vxquery.metadata.VXQueryIOFileFilter;
+import org.apache.vxquery.types.AnyType;
+import org.apache.vxquery.types.ElementType;
+import org.apache.vxquery.types.NameTest;
+import org.apache.vxquery.types.Quantifier;
+import org.apache.vxquery.types.SequenceType;
+import org.apache.vxquery.xmlparser.SAXContentHandler;
+import org.apache.vxquery.xmlparser.TreeNodeIdProvider;
+import org.apache.vxquery.xtest.util.tests.BufferedParsedCharacterStream;
+import org.apache.vxquery.xtest.util.tests.BufferedReaderBufferedStream;
+import org.apache.vxquery.xtest.util.tests.BufferedReaderStream;
+import org.apache.vxquery.xtest.util.tests.BufferedStream;
+import org.apache.vxquery.xtest.util.tests.IDiskTest;
+import org.apache.vxquery.xtest.util.tests.ParsedBufferedByteStream;
+import org.apache.vxquery.xtest.util.tests.ParsedBufferedCharacterStream;
+import org.apache.vxquery.xtest.util.tests.ParsedByteStream;
+import org.apache.vxquery.xtest.util.tests.ParsedCharacterStream;
+import org.apache.vxquery.xtest.util.tests.ReaderBufferedStream;
+import org.apache.vxquery.xtest.util.tests.ReaderStream;
+import org.apache.vxquery.xtest.util.tests.Stream;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+
+public class DiskPerformance {
+ XMLReader parser;
+ SAXContentHandler handler;
+ Collection<File> cTestFiles;
+ Iterator<File> testFilesIt;
+
+ public DiskPerformance() {
+ Pair<XMLReader, SAXContentHandler> p = getNewParser();
+ parser = p.first;
+ handler = p.second;
+ cTestFiles = null;
+ }
+
+ public Pair<XMLReader, SAXContentHandler> getNewParser() {
+ XMLReader parser;
+ SAXContentHandler handler;
+
+ try {
+ parser = XMLReaderFactory.createXMLReader();
+ List<SequenceType> childSeq = new ArrayList<SequenceType>();
+ NameTest nt = new NameTest(createUTF8String(""), createUTF8String("data"));
+ childSeq.add(SequenceType.create(new ElementType(nt, AnyType.INSTANCE, false), Quantifier.QUANT_ONE));
+ handler = new SAXContentHandler(false, new TreeNodeIdProvider((short) 0), null, null, childSeq);
+ parser.setContentHandler(handler);
+ parser.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
+ return new Pair<XMLReader, SAXContentHandler>(parser, handler);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public void setDirectory(String filename) {
+ File directory = new File(filename);
+ if (directory.isDirectory()) {
+ cTestFiles = FileUtils.listFiles(directory, new VXQueryIOFileFilter(), TrueFileFilter.INSTANCE);
+ if (cTestFiles.size() < 1) {
+ System.err.println("No XML files found in given directory.");
+ return;
+ }
+ }
+ testFilesIt = cTestFiles.iterator();
+ }
+
+ public String getNextFile() {
+ if (!testFilesIt.hasNext()) {
+ testFilesIt = cTestFiles.iterator();
+ }
+ return testFilesIt.next().getAbsolutePath();
+ }
+
+ private byte[] createUTF8String(String str) {
+ ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
+ StringValueBuilder svb = new StringValueBuilder();
+ try {
+ svb.write(str, abvs.getDataOutput());
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ return Arrays.copyOf(abvs.getByteArray(), abvs.getLength());
+ }
+
+ public static void main(String... args) throws IOException {
+ // First Argument (XML folder)
+ if (args.length < 1) {
+ System.err.println("Please provide a directory for the test XML documents.");
+ return;
+ }
+ // Second argument (threads)
+ int threads = 1;
+ if (args.length > 1) {
+ threads = Integer.parseInt(args[1]);
+ }
+
+ // Third argument (repeat)
+ int repeat = 1;
+ if (args.length > 2) {
+ repeat = Integer.parseInt(args[2]);
+ }
+
+ // Fourth argument (buffer size)
+ int bufferSize = -1;
+ if (args.length > 3) {
+ bufferSize = Integer.parseInt(args[3]);
+ }
+
+ DiskPerformance dp = new DiskPerformance();
+ dp.setDirectory(args[0]);
+
+ ArrayList<Class> tests = new ArrayList<Class>();
+ // Character Streams
+ tests.add(ParsedBufferedCharacterStream.class);
+ tests.add(BufferedParsedCharacterStream.class);
+ tests.add(ParsedCharacterStream.class);
+ tests.add(BufferedReaderBufferedStream.class);
+ tests.add(BufferedReaderStream.class);
+ tests.add(ReaderBufferedStream.class);
+ tests.add(ReaderStream.class);
+ // Byte Streams
+ tests.add(ParsedBufferedByteStream.class);
+ tests.add(ParsedByteStream.class);
+ tests.add(BufferedStream.class);
+ tests.add(Stream.class);
+
+ System.out.println("------");
+ System.out.println("Started Test Group: " + new Date());
+ System.out.println("Thread: " + threads);
+ System.out.println("Repeat: " + repeat);
+ System.out.println("Buffer: " + bufferSize);
+ System.out.println("------");
+
+ for (Class<IDiskTest> testClass : tests) {
+ for (int r = 0; r < repeat; ++r) {
+ try {
+ if (threads > 1) {
+ runThreadTest(testClass, dp, threads, bufferSize);
+ } else {
+ IDiskTest test = testClass.newInstance();
+ test.setFilename(dp.getNextFile());
+ test.setBufferSize(bufferSize);
+ test.setParser(dp.parser);
+ test.run();
+ }
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+
+ }
+ System.out.println("------");
+ }
+
+ }
+
+ static <T> void runThreadTest(Class<T> testType, DiskPerformance dp, int threads, int bufferSize) throws InstantiationException,
+ IllegalAccessException {
+ ExecutorService es = Executors.newCachedThreadPool();
+ ArrayList<IDiskTest> threadTests = new ArrayList<IDiskTest>();
+ for (int i = 0; i < threads; ++i) {
+ threadTests.add((IDiskTest) testType.newInstance());
+ }
+ for (IDiskTest test : threadTests) {
+ test.setFilename(dp.getNextFile());
+ test.setBufferSize(bufferSize);
+ test.setParser(dp.getNewParser().first);
+ es.execute((Runnable) test);
+ }
+ es.shutdown();
+ try {
+ es.awaitTermination(60, TimeUnit.MINUTES);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ System.out.println("Completed thread batch: " + new Date());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/AbstractDiskTest.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/AbstractDiskTest.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/AbstractDiskTest.java
new file mode 100644
index 0000000..63d5922
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/AbstractDiskTest.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
+
+import org.xml.sax.XMLReader;
+
+abstract class AbstractDiskTest implements IDiskTest, Runnable {
+ private String filename;
+ private int bufferSize;
+ protected XMLReader parser;
+
+ public AbstractDiskTest() {
+ }
+
+ public AbstractDiskTest(String filename, int bufferSize) {
+ setFilename(filename);
+ setBufferSize(bufferSize);
+ }
+
+ public void setFilename(String filename) {
+ this.filename = filename;
+ }
+
+ public void setBufferSize(int bufferSize) {
+ this.bufferSize = bufferSize;
+ }
+
+ public void setParser(XMLReader parser) {
+ this.parser = parser;
+ }
+
+ public void start() {
+ run();
+ }
+
+ public void run() {
+ OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
+ System.out.printf(filename + "\t" + getMessage() + " - Starting%n");
+ long start = System.nanoTime();
+ try {
+ long checkSum = test(filename, bufferSize);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ long end = System.nanoTime();
+ // System.out.printf("checkSum: %d%n", checkSum);
+ System.out.printf(filename + "\t" + getMessage() + "%.2f MB/s", 1024 * 1e9 / (end - start));
+ if (isBuffered() && bufferSize > 0) {
+ System.out.printf("\t%.1f KB buffer", bufferSize / 1024.0);
+ }
+ System.out.println();
+ System.out.printf("%.2f%% load average last minute%n", os.getSystemLoadAverage());
+ }
+
+ public boolean isBuffered() {
+ return true;
+ }
+
+ abstract public String getMessage();
+
+ abstract public long test(String filename, int bufferSize) throws IOException;
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedParsedCharacterStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedParsedCharacterStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedParsedCharacterStream.java
new file mode 100644
index 0000000..37527ae
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedParsedCharacterStream.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+public class BufferedParsedCharacterStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Buffered Parsed - Character Stream\t";
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ try {
+ if (bufferSize > 0) {
+ parser.setProperty("http://apache.org/xml/properties/input-buffer-size", new Integer(bufferSize));
+ }
+ InputStreamReader f = new InputStreamReader(new FileInputStream(filename));
+ InputSource in = new InputSource();
+ in.setCharacterStream(f);
+ parser.parse(in);
+ } catch (SAXException e) {
+ e.printStackTrace();
+ }
+ return -1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedReaderBufferedStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedReaderBufferedStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedReaderBufferedStream.java
new file mode 100644
index 0000000..c553a3e
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedReaderBufferedStream.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class BufferedReaderBufferedStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Buffered Reader - Buffered Stream\t";
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ BufferedReader f;
+ if (bufferSize > 0) {
+ f = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(filename),
+ bufferSize)), bufferSize);
+ } else {
+ f = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(filename))));
+ }
+ int b;
+ long checkSum = 0L;
+ while ((b = f.read()) != -1)
+ checkSum += b;
+ f.close();
+ return checkSum;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedReaderStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedReaderStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedReaderStream.java
new file mode 100644
index 0000000..20b9bab
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedReaderStream.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class BufferedReaderStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Buffered Reader - Stream\t\t";
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ BufferedReader f;
+ if (bufferSize > 0) {
+ f = new BufferedReader(new InputStreamReader(new FileInputStream(filename)), bufferSize);
+ } else {
+ f = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
+ }
+ int b;
+ long checkSum = 0L;
+ while ((b = f.read()) != -1)
+ checkSum += b;
+ f.close();
+ return checkSum;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedStream.java
new file mode 100644
index 0000000..2bf582e
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/BufferedStream.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+public class BufferedStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Buffered Stream\t\t\t\t";
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ BufferedInputStream f;
+ if (bufferSize > 0) {
+ f = new BufferedInputStream(new FileInputStream(filename), bufferSize);
+ } else {
+ f = new BufferedInputStream(new FileInputStream(filename));
+ }
+ int b;
+ long checkSum = 0L;
+ while ((b = f.read()) != -1)
+ checkSum += b;
+ f.close();
+ return checkSum;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/IDiskTest.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/IDiskTest.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/IDiskTest.java
new file mode 100644
index 0000000..09ff240
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/IDiskTest.java
@@ -0,0 +1,15 @@
+package org.apache.vxquery.xtest.util.tests;
+
+import org.xml.sax.XMLReader;
+
+public interface IDiskTest {
+ public void setBufferSize(int bufferSize);
+
+ public void setFilename(String absolutePath);
+
+ public void setParser(XMLReader parser);
+
+ public void run();
+
+ public void start();
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedBufferedByteStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedBufferedByteStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedBufferedByteStream.java
new file mode 100644
index 0000000..5ae2a34
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedBufferedByteStream.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+public class ParsedBufferedByteStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Parsed - Buffered Byte Stream\t\t";
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ try {
+ BufferedInputStream f;
+ if (bufferSize > 0) {
+ f = new BufferedInputStream(new FileInputStream(filename), bufferSize);
+ } else {
+ f = new BufferedInputStream(new FileInputStream(filename));
+ }
+ InputSource in = new InputSource();
+ in.setByteStream(f);
+ in.setEncoding("UTF-8");
+ parser.parse(in);
+ } catch (SAXException e) {
+ e.printStackTrace();
+ }
+ return -1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedBufferedCharacterStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedBufferedCharacterStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedBufferedCharacterStream.java
new file mode 100644
index 0000000..c2d21d4
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedBufferedCharacterStream.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+public class ParsedBufferedCharacterStream extends AbstractDiskTest implements IDiskTest {
+ @Override
+ public String getMessage() {
+ return "Parsed - Buffered Character Stream\t";
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ try {
+ BufferedReader f;
+ if (bufferSize > 0) {
+ f = new BufferedReader(new InputStreamReader(new FileInputStream(filename)), bufferSize);
+ } else {
+ f = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
+ }
+ InputSource in = new InputSource();
+ in.setCharacterStream(f);
+ parser.parse(in);
+ } catch (SAXException e) {
+ e.printStackTrace();
+ }
+ return -1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedByteStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedByteStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedByteStream.java
new file mode 100644
index 0000000..2c8b85d
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedByteStream.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+public class ParsedByteStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Parsed - Byte Stream\t\t\t";
+ }
+
+ @Override
+ public boolean isBuffered() {
+ return false;
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ try {
+ InputSource in = new InputSource();
+ in.setByteStream(new FileInputStream(filename));
+ in.setEncoding("UTF-8");
+ parser.parse(in);
+ } catch (SAXException e) {
+ e.printStackTrace();
+ }
+ return -1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedCharacterStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedCharacterStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedCharacterStream.java
new file mode 100644
index 0000000..3dc9ed4
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ParsedCharacterStream.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+public class ParsedCharacterStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Parsed - Character Stream\t\t";
+ }
+
+ @Override
+ public boolean isBuffered() {
+ return false;
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ try {
+ InputStreamReader f = new InputStreamReader(new FileInputStream(filename));
+ InputSource in = new InputSource();
+ in.setCharacterStream(f);
+ parser.parse(in);
+ } catch (SAXException e) {
+ e.printStackTrace();
+ }
+ return -1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ReaderBufferedStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ReaderBufferedStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ReaderBufferedStream.java
new file mode 100644
index 0000000..3d87f96
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ReaderBufferedStream.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class ReaderBufferedStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Reader - Buffered Stream\t\t";
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ InputStreamReader f;
+ if (bufferSize > 0) {
+ f = new InputStreamReader(new BufferedInputStream(new FileInputStream(filename), bufferSize));
+ } else {
+ f = new InputStreamReader(new BufferedInputStream(new FileInputStream(filename)));
+ }
+ int b;
+ long checkSum = 0L;
+ while ((b = f.read()) != -1)
+ checkSum += b;
+ f.close();
+ return checkSum;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ReaderStream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ReaderStream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ReaderStream.java
new file mode 100644
index 0000000..2a01275
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/ReaderStream.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class ReaderStream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Reader - Stream\t\t\t\t";
+ }
+
+ @Override
+ public boolean isBuffered() {
+ return false;
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ InputStreamReader f = new InputStreamReader(new FileInputStream(filename));
+ int b;
+ long checkSum = 0L;
+ while ((b = f.read()) != -1)
+ checkSum += b;
+ f.close();
+ return checkSum;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/1b7d3aaf/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/Stream.java
----------------------------------------------------------------------
diff --git a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/Stream.java b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/Stream.java
new file mode 100644
index 0000000..96e7184
--- /dev/null
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/util/tests/Stream.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.vxquery.xtest.util.tests;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+
+public class Stream extends AbstractDiskTest {
+ @Override
+ public String getMessage() {
+ return "Stream\t\t\t\t\t\t";
+ }
+
+ @Override
+ public boolean isBuffered() {
+ return false;
+ }
+
+ @Override
+ public long test(String filename, int bufferSize) throws IOException {
+ FileInputStream f = new FileInputStream(filename);
+ int b;
+ long checkSum = 0L;
+ while ((b = f.read()) != -1)
+ checkSum += b;
+ f.close();
+ return checkSum;
+ }
+}