You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2008/08/29 23:43:31 UTC

svn commit: r690399 [2/2] - in /incubator/uima/uimaj/trunk/uimaj-component-test-util: ./ src/main/java/org/apache/uima/test/junit_extension/ src/main/resources/

Modified: incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/java/org/apache/uima/test/junit_extension/PerformanceTestResultImpl.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/java/org/apache/uima/test/junit_extension/PerformanceTestResultImpl.java?rev=690399&r1=690398&r2=690399&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/java/org/apache/uima/test/junit_extension/PerformanceTestResultImpl.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/java/org/apache/uima/test/junit_extension/PerformanceTestResultImpl.java Fri Aug 29 14:43:30 2008
@@ -1,452 +1,452 @@
-/*
- * 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.uima.test.junit_extension;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-import org.apache.uima.internal.util.TimeSpan;
-
-/**
- * PerformanceTestResultImpl implements the PerformanceTestResult interface and provides the results of a performance
- * test run.
- * 
- */
-public class PerformanceTestResultImpl implements PerformanceTestResult {
-
-  private static String NEWLINE = System.getProperty("line.separator");
-
-  private boolean repeatSingleMode = false;
-
-  private boolean doWarmup = false;
-
-  private int numsToRun = 1;
-
-  private File aeDescFile = null;
-
-  private File testFileDir = null;
-
-  private int numberOfFiles = 0;
-
-  private long collectionFileSize = 0;
-
-  private int numberOfCharacters = 0;
-
-  private String datapath = null;
-
-  private int numberOfCreatedAnnotations = 0;
-
-  private TimeSpan initTime = null;
-
-  private TimeSpan warmupTime = null;
-
-  private TimeSpan overallTime = null;
-
-  private TimeSpan ioTime = null;
-
-  private TimeSpan processingTime = null;
-
-  private TimeSpan cleanupTime = null;
-
-  private TimeSpan documentPreparationTime = null;
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getNumberOfProcessedCharacters()
-   */
-  public int getNumberOfProcessedCharacters() {
-    return this.numberOfCharacters * this.numsToRun;
-  }
-
-  /**
-   * @param numberOfCharacters
-   *          The number of characters.
-   */
-  public void setNumberOfCharacters(int numberOfCharacters) {
-    this.numberOfCharacters = numberOfCharacters;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getNumberOfProcessedFiles()
-   */
-  public int getNumberOfProcessedFiles() {
-    return this.numberOfFiles * this.numsToRun;
-  }
-
-  /**
-   * @param numberOfFiles
-   *          The number of files.
-   */
-  public void setNumberOfFiles(int numberOfFiles) {
-    this.numberOfFiles = numberOfFiles;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getUIMADatapath()
-   */
-  public String getUIMADatapath() {
-    return this.datapath;
-  }
-
-  /**
-   * @param datapath
-   *          The UIMA datapath.
-   */
-  public void setDatapath(String datapath) {
-    this.datapath = datapath;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeInitTime()
-   */
-  public TimeSpan getAeInitTime() {
-    return this.initTime;
-  }
-
-  /**
-   * @param initTime
-   *          The analysis engine init time.
-   */
-  public void setInitTime(TimeSpan initTime) {
-    this.initTime = initTime;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getFileIoTime()
-   */
-  public TimeSpan getFileIoTime() {
-    return this.ioTime;
-  }
-
-  /**
-   * @param ioTime
-   *          The file io time to set.
-   */
-  public void setIoTime(TimeSpan ioTime) {
-    this.ioTime = ioTime;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getNumberOfCreatedAnnotations()
-   */
-  public int getNumberOfCreatedAnnotations() {
-    return this.numberOfCreatedAnnotations;
-  }
-
-  /**
-   * @param numberOfCreatedAnnotations
-   *          The number of created annotations to set.
-   */
-  public void setNumberOfCreatedAnnotations(int numberOfCreatedAnnotations) {
-    this.numberOfCreatedAnnotations = numberOfCreatedAnnotations;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getNumberOfRepeatedRuns()
-   */
-  public int getNumberOfRepeatedRuns() {
-    return this.numsToRun;
-  }
-
-  /**
-   * @param numsToRun
-   *          The number of repeated runs.
-   */
-  public void setNumsToRun(int numsToRun) {
-    this.numsToRun = numsToRun;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getOverallTime()
-   */
-  public TimeSpan getOverallTime() {
-    return this.overallTime;
-  }
-
-  /**
-   * @param overallTime
-   *          The overall processing time.
-   */
-  public void setOverallTime(TimeSpan overallTime) {
-    this.overallTime = overallTime;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeProcessingTime()
-   */
-  public TimeSpan getAeProcessingTime() {
-    return this.processingTime;
-  }
-
-  /**
-   * @param processingTime
-   *          The analysis engine processing time.
-   */
-  public void setProcessingTime(TimeSpan processingTime) {
-    this.processingTime = processingTime;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#isRepeatSingleMode()
-   */
-  public boolean isRepeatSingleMode() {
-    return this.repeatSingleMode;
-  }
-
-  /**
-   * @param repeatSingleMode
-   *          The repeat single mode setting
-   */
-  public void setRepeatSingleMode(boolean repeatSingleMode) {
-    this.repeatSingleMode = repeatSingleMode;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeDescFilePath()
-   */
-  public String getAeDescFilePath() {
-    return this.aeDescFile.getAbsolutePath();
-  }
-
-  /**
-   * @param aeDescFile
-   *          The analysis engine descriptor file.
-   */
-  public void setAeDescFilePath(File aeDescFile) {
-    this.aeDescFile = aeDescFile;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getTestFileDirectoryPath()
-   */
-  public String getTestFileDirectoryPath() {
-    return this.testFileDir.getAbsolutePath();
-  }
-
-  /**
-   * @param testFileDir
-   *          The test file directory.
-   */
-  public void setTestFileDir(File testFileDir) {
-    this.testFileDir = testFileDir;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeWarmupTime()
-   */
-  public TimeSpan getAeWarmupTime() {
-    return this.warmupTime;
-  }
-
-  /**
-   * @param warmupTime
-   *          The analysis engine warmup time.
-   */
-  public void setWarmupTime(TimeSpan warmupTime) {
-    this.warmupTime = warmupTime;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#isDoAeWarmup()
-   */
-  public boolean isDoAeWarmup() {
-    return this.doWarmup;
-  }
-
-  /**
-   * @param doWarmup
-   *          the doWarmup setting
-   */
-  public void setDoWarmup(boolean doWarmup) {
-    this.doWarmup = doWarmup;
-  }
-
-  /**
-   * returns a performance report with the current performance results.
-   * 
-   * @see java.lang.Object#toString()
-   */
-  public String toString() {
-    StringBuffer resultString = new StringBuffer();
-    resultString.append(NEWLINE + "Performance Test run results " + NEWLINE);
-    resultString.append("-----------------------------" + NEWLINE + NEWLINE);
-    resultString.append("ConfigParameters: " + NEWLINE);
-    resultString.append("repeat-single mode is: " + this.repeatSingleMode + NEWLINE);
-    resultString.append("doWarump is: " + this.doWarmup + NEWLINE);
-    resultString.append("Run test " + this.numsToRun + " times" + NEWLINE);
-    resultString.append("Use " + this.aeDescFile.getAbsolutePath() + " descriptor" + NEWLINE);
-    resultString.append("Fileset " + this.testFileDir + " is used" + NEWLINE);
-    resultString.append("Datapath setting is: " + this.datapath + NEWLINE);
-    resultString.append("Number of documents (overall): " + this.getNumberOfProcessedFiles() + NEWLINE);
-    resultString
-            .append("Number of characters (overall): " + this.getNumberOfProcessedCharacters() + NEWLINE);
-    resultString.append("Total document size (overall): "
-            + (float) (this.getProcessedFileSize() / 1024) + " KB" + NEWLINE);
-    resultString.append(NEWLINE + "Initialize: " + NEWLINE);
-    resultString.append("AE initialize time: " + this.initTime + NEWLINE);
-    if (this.doWarmup) {
-      resultString.append("AE warmup time: " + this.warmupTime + NEWLINE);
-    }
-    resultString.append("IO time for reading files: " + this.ioTime + NEWLINE);
-    resultString.append(NEWLINE + "Processing: " + NEWLINE);
-    resultString.append("Created annotations: " + this.numberOfCreatedAnnotations + NEWLINE);
-    resultString.append("Document preparation time: " + this.documentPreparationTime + NEWLINE);
-    resultString.append("Analysis Engine processing time: " + this.processingTime + NEWLINE);
-    if (this.processingTime.getFullMilliseconds() > 0 && this.getProcessedFileSize() > 0) {
-      resultString.append("Processing throughput: "
-              + (long) ((this.getProcessedFileSize() / 1024) / ((float) this.processingTime
-                      .getFullMilliseconds() / 1000)) + " KB/s" + NEWLINE);
-      long mbPerSecond = (long) ((this.getProcessedFileSize() / 1024 / 1024) / ((float) this.processingTime
-              .getFullMilliseconds() / 1000 / 60 / 60));
-      resultString.append("Processing throughput: " + mbPerSecond + " MB/h" + NEWLINE);
-    }
-
-    resultString.append(NEWLINE + "Cleanup: " + NEWLINE);
-    resultString.append("Cleanup time: " + this.cleanupTime + NEWLINE);
-
-    resultString.append(NEWLINE + "Overall: " + NEWLINE);
-    resultString.append("Overall time: " + this.overallTime + NEWLINE);
-
-    return resultString.toString();
-  }
-
-  /**
-   * write performance results as colum.
-   * 
-   * @param level
-   *          Test level name of the performance test
-   * @param file
-   *          Output file where the results are written to
-   * 
-   * @throws Exception
-   */
-  public void writePerfResultsAsColumn(String level, File file) throws Exception {
-
-    // set level name to "none" if it is not available
-    if (level == null) {
-      level = "none";
-    }
-
-    // create current time stamp
-    GregorianCalendar cal = new GregorianCalendar();
-    StringBuffer timestamp = new StringBuffer();
-    timestamp.append(cal.get(Calendar.DATE));
-    timestamp.append(".");
-    timestamp.append(cal.get(Calendar.MONTH) + 1);
-    timestamp.append(".");
-    timestamp.append(cal.get(Calendar.YEAR));
-    timestamp.append(" ");
-    timestamp.append(cal.get(Calendar.HOUR_OF_DAY));
-    timestamp.append(":");
-    timestamp.append(cal.get(Calendar.MINUTE));
-    timestamp.append(":");
-    timestamp.append(cal.get(Calendar.SECOND));
-
-    // create result line
-    StringBuffer resultLine = new StringBuffer();
-    resultLine.append(timestamp.toString()); // add timestamp
-    resultLine.append(" ; ");
-    resultLine.append(level); // add level name
-    resultLine.append(" ; ");
-    resultLine.append(this.repeatSingleMode); // repeate single mode
-    resultLine.append(" ; ");
-    resultLine.append(this.doWarmup); // doWarmup
-    resultLine.append(" ; ");
-    resultLine.append(this.numberOfFiles * this.numsToRun); // number of docs overall
-    resultLine.append(" ; ");
-    resultLine.append(this.numberOfCreatedAnnotations); // number of created annots
-    resultLine.append(" ; ");
-    resultLine.append(this.processingTime); // processing time
-    resultLine.append(" ; ");
-    resultLine.append(this.initTime); // init time
-    resultLine.append(" ; ");
-    resultLine.append(this.ioTime); // io time
-    resultLine.append(System.getProperty("line.separator"));
-
-    boolean writeHeader = false;
-    // check if file does not exist, write file header
-    if (!file.exists()) {
-      writeHeader = true;
-    }
-
-    // create outputStream in appending mode
-    FileWriter fileWriter = new FileWriter(file, true);
-
-    if (writeHeader) {
-      fileWriter
-              .write("Timestamp ; Levelname ; singleMode ; warmup; Docs ; Annotations ; Processing time ; init time ; io time");
-      fileWriter.write(System.getProperty("line.separator"));
-    }
-
-    // write result
-    fileWriter.write(resultLine.toString());
-
-    // flush and close writer
-    fileWriter.flush();
-    fileWriter.close();
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeCleanupTime()
-   */
-  public TimeSpan getAeCleanupTime() {
-    return this.cleanupTime;
-  }
-
-  /**
-   * @param cleanupTime
-   *          the analysis engine cleanup time
-   */
-  public void setCleanupTime(TimeSpan cleanupTime) {
-    this.cleanupTime = cleanupTime;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getDocumentPreparationTime()
-   */
-  public TimeSpan getDocumentPreparationTime() {
-    return this.documentPreparationTime;
-  }
-
-  /**
-   * @param documentPreparationTime
-   *          the document preparation time
-   */
-  public void setDocumentPreparationTime(TimeSpan documentPreparationTime) {
-    this.documentPreparationTime = documentPreparationTime;
-  }
-
-  /* (non-Javadoc)
-   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getProcessedFileSize()
-   */
-  public long getProcessedFileSize() {
-    return this.collectionFileSize * this.numsToRun;
-  }
-
-  /**
-   * @param collectionFileSize
-   *          the collection file size
-   */
-  public void setTotalFileSize(long collectionFileSize) {
-    this.collectionFileSize = collectionFileSize;
-  }
-
-}
+/*
+ * 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.uima.test.junit_extension;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+import org.apache.uima.internal.util.TimeSpan;
+
+/**
+ * PerformanceTestResultImpl implements the PerformanceTestResult interface and provides the results of a performance
+ * test run.
+ * 
+ */
+public class PerformanceTestResultImpl implements PerformanceTestResult {
+
+  private static String NEWLINE = System.getProperty("line.separator");
+
+  private boolean repeatSingleMode = false;
+
+  private boolean doWarmup = false;
+
+  private int numsToRun = 1;
+
+  private File aeDescFile = null;
+
+  private File testFileDir = null;
+
+  private int numberOfFiles = 0;
+
+  private long collectionFileSize = 0;
+
+  private int numberOfCharacters = 0;
+
+  private String datapath = null;
+
+  private int numberOfCreatedAnnotations = 0;
+
+  private TimeSpan initTime = null;
+
+  private TimeSpan warmupTime = null;
+
+  private TimeSpan overallTime = null;
+
+  private TimeSpan ioTime = null;
+
+  private TimeSpan processingTime = null;
+
+  private TimeSpan cleanupTime = null;
+
+  private TimeSpan documentPreparationTime = null;
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getNumberOfProcessedCharacters()
+   */
+  public int getNumberOfProcessedCharacters() {
+    return this.numberOfCharacters * this.numsToRun;
+  }
+
+  /**
+   * @param numberOfCharacters
+   *          The number of characters.
+   */
+  public void setNumberOfCharacters(int numberOfCharacters) {
+    this.numberOfCharacters = numberOfCharacters;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getNumberOfProcessedFiles()
+   */
+  public int getNumberOfProcessedFiles() {
+    return this.numberOfFiles * this.numsToRun;
+  }
+
+  /**
+   * @param numberOfFiles
+   *          The number of files.
+   */
+  public void setNumberOfFiles(int numberOfFiles) {
+    this.numberOfFiles = numberOfFiles;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getUIMADatapath()
+   */
+  public String getUIMADatapath() {
+    return this.datapath;
+  }
+
+  /**
+   * @param datapath
+   *          The UIMA datapath.
+   */
+  public void setDatapath(String datapath) {
+    this.datapath = datapath;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeInitTime()
+   */
+  public TimeSpan getAeInitTime() {
+    return this.initTime;
+  }
+
+  /**
+   * @param initTime
+   *          The analysis engine init time.
+   */
+  public void setInitTime(TimeSpan initTime) {
+    this.initTime = initTime;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getFileIoTime()
+   */
+  public TimeSpan getFileIoTime() {
+    return this.ioTime;
+  }
+
+  /**
+   * @param ioTime
+   *          The file io time to set.
+   */
+  public void setIoTime(TimeSpan ioTime) {
+    this.ioTime = ioTime;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getNumberOfCreatedAnnotations()
+   */
+  public int getNumberOfCreatedAnnotations() {
+    return this.numberOfCreatedAnnotations;
+  }
+
+  /**
+   * @param numberOfCreatedAnnotations
+   *          The number of created annotations to set.
+   */
+  public void setNumberOfCreatedAnnotations(int numberOfCreatedAnnotations) {
+    this.numberOfCreatedAnnotations = numberOfCreatedAnnotations;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getNumberOfRepeatedRuns()
+   */
+  public int getNumberOfRepeatedRuns() {
+    return this.numsToRun;
+  }
+
+  /**
+   * @param numsToRun
+   *          The number of repeated runs.
+   */
+  public void setNumsToRun(int numsToRun) {
+    this.numsToRun = numsToRun;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getOverallTime()
+   */
+  public TimeSpan getOverallTime() {
+    return this.overallTime;
+  }
+
+  /**
+   * @param overallTime
+   *          The overall processing time.
+   */
+  public void setOverallTime(TimeSpan overallTime) {
+    this.overallTime = overallTime;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeProcessingTime()
+   */
+  public TimeSpan getAeProcessingTime() {
+    return this.processingTime;
+  }
+
+  /**
+   * @param processingTime
+   *          The analysis engine processing time.
+   */
+  public void setProcessingTime(TimeSpan processingTime) {
+    this.processingTime = processingTime;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#isRepeatSingleMode()
+   */
+  public boolean isRepeatSingleMode() {
+    return this.repeatSingleMode;
+  }
+
+  /**
+   * @param repeatSingleMode
+   *          The repeat single mode setting
+   */
+  public void setRepeatSingleMode(boolean repeatSingleMode) {
+    this.repeatSingleMode = repeatSingleMode;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeDescFilePath()
+   */
+  public String getAeDescFilePath() {
+    return this.aeDescFile.getAbsolutePath();
+  }
+
+  /**
+   * @param aeDescFile
+   *          The analysis engine descriptor file.
+   */
+  public void setAeDescFilePath(File aeDescFile) {
+    this.aeDescFile = aeDescFile;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getTestFileDirectoryPath()
+   */
+  public String getTestFileDirectoryPath() {
+    return this.testFileDir.getAbsolutePath();
+  }
+
+  /**
+   * @param testFileDir
+   *          The test file directory.
+   */
+  public void setTestFileDir(File testFileDir) {
+    this.testFileDir = testFileDir;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeWarmupTime()
+   */
+  public TimeSpan getAeWarmupTime() {
+    return this.warmupTime;
+  }
+
+  /**
+   * @param warmupTime
+   *          The analysis engine warmup time.
+   */
+  public void setWarmupTime(TimeSpan warmupTime) {
+    this.warmupTime = warmupTime;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#isDoAeWarmup()
+   */
+  public boolean isDoAeWarmup() {
+    return this.doWarmup;
+  }
+
+  /**
+   * @param doWarmup
+   *          the doWarmup setting
+   */
+  public void setDoWarmup(boolean doWarmup) {
+    this.doWarmup = doWarmup;
+  }
+
+  /**
+   * returns a performance report with the current performance results.
+   * 
+   * @see java.lang.Object#toString()
+   */
+  public String toString() {
+    StringBuffer resultString = new StringBuffer();
+    resultString.append(NEWLINE + "Performance Test run results " + NEWLINE);
+    resultString.append("-----------------------------" + NEWLINE + NEWLINE);
+    resultString.append("ConfigParameters: " + NEWLINE);
+    resultString.append("repeat-single mode is: " + this.repeatSingleMode + NEWLINE);
+    resultString.append("doWarump is: " + this.doWarmup + NEWLINE);
+    resultString.append("Run test " + this.numsToRun + " times" + NEWLINE);
+    resultString.append("Use " + this.aeDescFile.getAbsolutePath() + " descriptor" + NEWLINE);
+    resultString.append("Fileset " + this.testFileDir + " is used" + NEWLINE);
+    resultString.append("Datapath setting is: " + this.datapath + NEWLINE);
+    resultString.append("Number of documents (overall): " + this.getNumberOfProcessedFiles() + NEWLINE);
+    resultString
+            .append("Number of characters (overall): " + this.getNumberOfProcessedCharacters() + NEWLINE);
+    resultString.append("Total document size (overall): "
+            + (float) (this.getProcessedFileSize() / 1024) + " KB" + NEWLINE);
+    resultString.append(NEWLINE + "Initialize: " + NEWLINE);
+    resultString.append("AE initialize time: " + this.initTime + NEWLINE);
+    if (this.doWarmup) {
+      resultString.append("AE warmup time: " + this.warmupTime + NEWLINE);
+    }
+    resultString.append("IO time for reading files: " + this.ioTime + NEWLINE);
+    resultString.append(NEWLINE + "Processing: " + NEWLINE);
+    resultString.append("Created annotations: " + this.numberOfCreatedAnnotations + NEWLINE);
+    resultString.append("Document preparation time: " + this.documentPreparationTime + NEWLINE);
+    resultString.append("Analysis Engine processing time: " + this.processingTime + NEWLINE);
+    if (this.processingTime.getFullMilliseconds() > 0 && this.getProcessedFileSize() > 0) {
+      resultString.append("Processing throughput: "
+              + (long) ((this.getProcessedFileSize() / 1024) / ((float) this.processingTime
+                      .getFullMilliseconds() / 1000)) + " KB/s" + NEWLINE);
+      long mbPerSecond = (long) ((this.getProcessedFileSize() / 1024 / 1024) / ((float) this.processingTime
+              .getFullMilliseconds() / 1000 / 60 / 60));
+      resultString.append("Processing throughput: " + mbPerSecond + " MB/h" + NEWLINE);
+    }
+
+    resultString.append(NEWLINE + "Cleanup: " + NEWLINE);
+    resultString.append("Cleanup time: " + this.cleanupTime + NEWLINE);
+
+    resultString.append(NEWLINE + "Overall: " + NEWLINE);
+    resultString.append("Overall time: " + this.overallTime + NEWLINE);
+
+    return resultString.toString();
+  }
+
+  /**
+   * write performance results as colum.
+   * 
+   * @param level
+   *          Test level name of the performance test
+   * @param file
+   *          Output file where the results are written to
+   * 
+   * @throws Exception
+   */
+  public void writePerfResultsAsColumn(String level, File file) throws Exception {
+
+    // set level name to "none" if it is not available
+    if (level == null) {
+      level = "none";
+    }
+
+    // create current time stamp
+    GregorianCalendar cal = new GregorianCalendar();
+    StringBuffer timestamp = new StringBuffer();
+    timestamp.append(cal.get(Calendar.DATE));
+    timestamp.append(".");
+    timestamp.append(cal.get(Calendar.MONTH) + 1);
+    timestamp.append(".");
+    timestamp.append(cal.get(Calendar.YEAR));
+    timestamp.append(" ");
+    timestamp.append(cal.get(Calendar.HOUR_OF_DAY));
+    timestamp.append(":");
+    timestamp.append(cal.get(Calendar.MINUTE));
+    timestamp.append(":");
+    timestamp.append(cal.get(Calendar.SECOND));
+
+    // create result line
+    StringBuffer resultLine = new StringBuffer();
+    resultLine.append(timestamp.toString()); // add timestamp
+    resultLine.append(" ; ");
+    resultLine.append(level); // add level name
+    resultLine.append(" ; ");
+    resultLine.append(this.repeatSingleMode); // repeate single mode
+    resultLine.append(" ; ");
+    resultLine.append(this.doWarmup); // doWarmup
+    resultLine.append(" ; ");
+    resultLine.append(this.numberOfFiles * this.numsToRun); // number of docs overall
+    resultLine.append(" ; ");
+    resultLine.append(this.numberOfCreatedAnnotations); // number of created annots
+    resultLine.append(" ; ");
+    resultLine.append(this.processingTime); // processing time
+    resultLine.append(" ; ");
+    resultLine.append(this.initTime); // init time
+    resultLine.append(" ; ");
+    resultLine.append(this.ioTime); // io time
+    resultLine.append(System.getProperty("line.separator"));
+
+    boolean writeHeader = false;
+    // check if file does not exist, write file header
+    if (!file.exists()) {
+      writeHeader = true;
+    }
+
+    // create outputStream in appending mode
+    FileWriter fileWriter = new FileWriter(file, true);
+
+    if (writeHeader) {
+      fileWriter
+              .write("Timestamp ; Levelname ; singleMode ; warmup; Docs ; Annotations ; Processing time ; init time ; io time");
+      fileWriter.write(System.getProperty("line.separator"));
+    }
+
+    // write result
+    fileWriter.write(resultLine.toString());
+
+    // flush and close writer
+    fileWriter.flush();
+    fileWriter.close();
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getAeCleanupTime()
+   */
+  public TimeSpan getAeCleanupTime() {
+    return this.cleanupTime;
+  }
+
+  /**
+   * @param cleanupTime
+   *          the analysis engine cleanup time
+   */
+  public void setCleanupTime(TimeSpan cleanupTime) {
+    this.cleanupTime = cleanupTime;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getDocumentPreparationTime()
+   */
+  public TimeSpan getDocumentPreparationTime() {
+    return this.documentPreparationTime;
+  }
+
+  /**
+   * @param documentPreparationTime
+   *          the document preparation time
+   */
+  public void setDocumentPreparationTime(TimeSpan documentPreparationTime) {
+    this.documentPreparationTime = documentPreparationTime;
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.test.junit_extension.PerformanceTestResult#getProcessedFileSize()
+   */
+  public long getProcessedFileSize() {
+    return this.collectionFileSize * this.numsToRun;
+  }
+
+  /**
+   * @param collectionFileSize
+   *          the collection file size
+   */
+  public void setTotalFileSize(long collectionFileSize) {
+    this.collectionFileSize = collectionFileSize;
+  }
+
+}

Propchange: incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/java/org/apache/uima/test/junit_extension/PerformanceTestResultImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/resources/AnnotationWriter.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/resources/AnnotationWriter.xml?rev=690399&r1=690398&r2=690399&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/resources/AnnotationWriter.xml (original)
+++ incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/resources/AnnotationWriter.xml Fri Aug 29 14:43:30 2008
@@ -1,25 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-	* 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.
--->
-
-<casConsumerDescription
+<!--
+	* 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.
+-->
+
+<casConsumerDescription
 	xmlns="http://uima.apache.org/resourceSpecifier">
 	<frameworkImplementation>
 		org.apache.uima.java

Propchange: incubator/uima/uimaj/trunk/uimaj-component-test-util/src/main/resources/AnnotationWriter.xml
------------------------------------------------------------------------------
    svn:eol-style = native