You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by fc...@apache.org on 2012/12/03 15:25:13 UTC
svn commit: r1416540 -
/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultiThreadedTestBase.java
Author: fchrist
Date: Mon Dec 3 14:25:12 2012
New Revision: 1416540
URL: http://svn.apache.org/viewvc?rev=1416540&view=rev
Log:
STANBOL-826 Added data statistics to stress test tool
Modified:
stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultiThreadedTestBase.java
Modified: stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultiThreadedTestBase.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultiThreadedTestBase.java?rev=1416540&r1=1416539&r2=1416540&view=diff
==============================================================================
--- stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultiThreadedTestBase.java (original)
+++ stanbol/trunk/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/MultiThreadedTestBase.java Mon Dec 3 14:25:12 2012
@@ -9,17 +9,15 @@ import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.TreeMap;
-import java.util.Map.Entry;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -592,16 +590,16 @@ public abstract class MultiThreadedTestB
}
}
- void succeed(Request request, UriRef contentItemUri, TripleCollection results,Long rtt) {
- ExecutionMetadata em = ExecutionMetadata.parseFrom(results, (UriRef)contentItemUri);
- results.clear(); //we no longer need the results
- if(em != null){
+ void succeed(Request request, UriRef contentItemUri, TripleCollection results, Long rtt, int size) {
+ ExecutionMetadata em = ExecutionMetadata.parseFrom(results, (UriRef) contentItemUri);
+ results.clear(); // we no longer need the results
+ if (em != null) {
synchronized (statistics) {
- statistics.addResult(em,rtt);
+ statistics.addResult(em, rtt, size);
}
- } //no executionData available ... unable to collect statistics
+ } // no executionData available ... unable to collect statistics
synchronized (registered) {
- if(registered.remove(request)){
+ if (registered.remove(request)) {
completed++;
registered.notifyAll();
}
@@ -655,7 +653,7 @@ public abstract class MultiThreadedTestB
statistics.getAverageRtt(),
statistics.getNumRtt()});
}
- log.info(" processing time (server side)");
+ log.info(" Processing Time (server side)");
if(statistics.getNumSamples() < 1){
log.info(" - not available. Make shure the used "
+ "EnhancementJobManager supports ExecutionMetadata!");
@@ -665,6 +663,12 @@ public abstract class MultiThreadedTestB
statistics.getMinDuration(),
statistics.getAverageDuration(),
statistics.getNumSamples()});
+ log.info(" Bandwith Consumption (received data)");
+ log.info(" max: {}KB | min: {}KB | avr: {}KB received over {} requests",
+ new Object[]{statistics.getMaxReceivedKB(),
+ statistics.getMinReceivedKB(),
+ statistics.getAverageReceivedKB(),
+ statistics.getNumReceivedData()});
log.info("Enhancement Engines");
for(String name :statistics.getEngineNames()){
log.info(" {}: max: {}ms | min: {}ms | avr: {}ms over {} requests",
@@ -705,7 +709,7 @@ public abstract class MultiThreadedTestB
IndexedMGraph graph = new IndexedMGraph();
try {
rdfParser.parse(graph,executor.getStream(), executor.getContentType().getMimeType());
- }catch (Exception e) {
+ } catch (Exception e) {
Assert.fail("Unable to parse RDF data from Response with Content-Type "
+ executor.getContentType().getMimeType()+" ( "+e.getClass().getSimpleName()
+ ": "+e.getMessage()+")");
@@ -721,7 +725,7 @@ public abstract class MultiThreadedTestB
Resource contentItemUri = ciIt.next().getObject();
Assert.assertTrue("ContentItem URI is not an UriRef but an instance of "
+ contentItemUri.getClass().getSimpleName(), contentItemUri instanceof UriRef);
- tracker.succeed(request,(UriRef)contentItemUri,graph,rtt);
+ tracker.succeed(request, (UriRef) contentItemUri, graph, rtt, executor.getContent().length());
}
}
@@ -734,10 +738,14 @@ public abstract class MultiThreadedTestB
private long maxRtt = -1;
private long minRtt = Long.MAX_VALUE;
private long sumRtt = 0;
+ private int numReceivedData;
+ private int maxReceivedBytes = -1;
+ private int minReceivedBytes = Integer.MAX_VALUE;
+ private int sumReceivedBytes = 0;
private Map<String, long[]> engineStats = new TreeMap<String,long[]>();
- void addResult(ExecutionMetadata em,Long roundTripTime){
+ void addResult(ExecutionMetadata em,Long roundTripTime, Integer receivedBytes){
Long durationNumber = em.getChainExecution().getDuration();
long duration;
if(durationNumber != null){
@@ -762,6 +770,17 @@ public abstract class MultiThreadedTestB
sumRtt = sumRtt+rtt;
numRtt++;
}
+ if (receivedBytes != null) {
+ int rb = receivedBytes;
+ if (rb > maxReceivedBytes) {
+ maxReceivedBytes = rb;
+ }
+ if (rb < minReceivedBytes) {
+ minReceivedBytes = rb;
+ }
+ sumReceivedBytes += rb;
+ numReceivedData++;
+ }
for(Entry<String,Execution> ex : em.getEngineExecutions().entrySet()){
long[] stats = engineStats.get(ex.getKey());
if(stats == null){
@@ -811,6 +830,18 @@ public abstract class MultiThreadedTestB
public int getNumRtt(){
return numRtt;
}
+ public int getNumReceivedData() {
+ return numReceivedData;
+ }
+ public int getMaxReceivedKB() {
+ return maxReceivedBytes / 1024;
+ }
+ public int getMinReceivedKB() {
+ return minReceivedBytes / 1024;
+ }
+ public int getAverageReceivedKB() {
+ return sumReceivedBytes <= 0 && numReceivedData <= 0 ? null : Math.round(sumReceivedBytes/numReceivedData/1024);
+ }
public Long getMaxDuration(String engine){
long[] stats = engineStats.get(engine);
return stats == null ? null : stats[0];
@@ -821,7 +852,7 @@ public abstract class MultiThreadedTestB
}
public Long getAverage(String engine){
long[] stats = engineStats.get(engine);
- return stats == null && stats[2] <= 0 && stats[3] <= 0 ?
+ return stats == null || stats[2] <= 0 || stats[3] <= 0 ?
null : Math.round((double)stats[2]/(double)stats[3]);
}
public int getNumSamples(String engine){