Author: sebb
Date: Thu Mar 11 11:37:54 2010
New Revision: 921807

URL: http://svn.apache.org/viewvc?rev=921807&view=rev
Log:
Simplify. Ensure only count or timer fire for a given sample.

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/BatchSampleSender.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleSender.java

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/BatchSampleSender.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/BatchSampleSender.java?rev=921807&r1=921806&r2=921807&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/BatchSampleSender.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/BatchSampleSender.java 
Thu Mar 11 11:37:54 2010
@@ -40,16 +40,16 @@ public class BatchSampleSender implement
 
     private static final long DEFAULT_TIME_THRESHOLD = 60000L;
 
-    private final RemoteSampleListener listener;
-
-    private final List<SampleEvent> sampleStore = new ArrayList<SampleEvent>();
-
-    private final int numSamplesThreshold = 
+    private static final int NUM_SAMPLES_THRESHOLD = 
         JMeterUtils.getPropDefault("num_sample_threshold", 
DEFAULT_NUM_SAMPLE_THRESHOLD); // $NON-NLS-1$
 
     private static final long TIME_THRESHOLD_MS =
         JMeterUtils.getPropDefault("time_threshold", DEFAULT_TIME_THRESHOLD); 
// $NON-NLS-1$
 
+    private final RemoteSampleListener listener;
+
+    private final List<SampleEvent> sampleStore = new ArrayList<SampleEvent>();
+
     private long batchSendTime = -1;
 
     /**
@@ -69,7 +69,7 @@ public class BatchSampleSender implement
     BatchSampleSender(RemoteSampleListener listener) {
         this.listener = listener;
         log.info("Using batching for this run."
-                + " Thresholds: num=" + numSamplesThreshold
+                + " Thresholds: num=" + NUM_SAMPLES_THRESHOLD
                 + ", time=" + TIME_THRESHOLD_MS);
     }
 
@@ -121,41 +121,39 @@ public class BatchSampleSender implement
     public void sampleOccurred(SampleEvent e) {
         synchronized (sampleStore) {
             sampleStore.add(e);
+            final int sampleCount = sampleStore.size();
 
-            if (numSamplesThreshold != -1) {
-                if (sampleStore.size() >= numSamplesThreshold) {
-                    try {
-                        log.debug("Firing sample");
-                        listener.processBatch(sampleStore);
-                        sampleStore.clear();
-                    } catch (RemoteException err) {
-                        log.error("sampleOccurred", err);
-                    }
+            boolean sendNow = false;            
+            if (NUM_SAMPLES_THRESHOLD != -1) {
+                if (sampleCount >= NUM_SAMPLES_THRESHOLD) {
+                    sendNow = true;
                 }
             }
 
+            long now = 0;
             if (TIME_THRESHOLD_MS != -1) {
-                SampleResult sr = e.getResult();
-                long timestamp = sr.getTimeStamp();
-
-                // Checking for and creating initial timestamp to cheak against
+                now = System.currentTimeMillis();
+                // Checking for and creating initial timestamp to check against
                 if (batchSendTime == -1) {
-                    this.batchSendTime = timestamp + TIME_THRESHOLD_MS;
+                    this.batchSendTime = now + TIME_THRESHOLD_MS;
+                }
+                if (batchSendTime < now && sampleCount > 0) {
+                    sendNow = true;
                 }
+            }
 
-                if (batchSendTime < timestamp) {
-                    try {
-                        log.debug("Firing time");
-                        if (sampleStore.size() > 0) {
-                            listener.processBatch(sampleStore);
-                            sampleStore.clear();
-                        }
-                        this.batchSendTime = timestamp + TIME_THRESHOLD_MS;
-                    } catch (RemoteException err) {
-                        log.error("sampleOccurred", err);
+            if (sendNow){
+                try {
+                    log.debug("Firing sample");
+                    listener.processBatch(sampleStore);
+                    sampleStore.clear();
+                    if (TIME_THRESHOLD_MS != -1) {
+                        this.batchSendTime = now + TIME_THRESHOLD_MS;
                     }
-                }
+                } catch (RemoteException err) {
+                    log.error("sampleOccurred", err);
+                }                
             }
-        }
+        } // synchronized(sampleStore)
     }
 }

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleSender.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleSender.java?rev=921807&r1=921806&r2=921807&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleSender.java
 (original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleSender.java
 Thu Mar 11 11:37:54 2010
@@ -42,19 +42,19 @@ public class StatisticalSampleSender imp
 
     private static final long DEFAULT_TIME_THRESHOLD = 60000L;
 
+    private static final int NUM_SAMPLES_THRESHOLD = 
JMeterUtils.getPropDefault(
+            "num_sample_threshold", DEFAULT_NUM_SAMPLE_THRESHOLD);
+
+    private static final long TIME_THRESHOLD_MS = 
JMeterUtils.getPropDefault("time_threshold",
+            DEFAULT_TIME_THRESHOLD);
+
     private final RemoteSampleListener listener;
 
     private final List<SampleEvent> sampleStore = new ArrayList<SampleEvent>();
 
     private final Map<String, StatisticalSampleResult> sampleTable = new 
HashMap<String, StatisticalSampleResult>();
 
-    private final int numSamplesThreshold = JMeterUtils.getPropDefault(
-            "num_sample_threshold", DEFAULT_NUM_SAMPLE_THRESHOLD);
-
-    private int sampleCount;
-
-    private static final long TIME_THRESHOLD_MS = 
JMeterUtils.getPropDefault("time_threshold",
-            DEFAULT_TIME_THRESHOLD);
+    private int sampleCount; // maintain separate count of samples for speed
 
     private long batchSendTime = -1;
 
@@ -76,7 +76,7 @@ public class StatisticalSampleSender imp
     StatisticalSampleSender(RemoteSampleListener listener) {
         this.listener = listener;
         log.info("Using batching for this run." + " Thresholds: num="
-                + numSamplesThreshold + ", time=" + TIME_THRESHOLD_MS);
+                + NUM_SAMPLES_THRESHOLD + ", time=" + TIME_THRESHOLD_MS);
     }
 
     /**
@@ -135,39 +135,38 @@ public class StatisticalSampleSender imp
             }
             statResult.add(e.getResult());
             sampleCount++;
-            if (numSamplesThreshold != -1) {
-                if (sampleCount >= numSamplesThreshold) {
-                    try {
-                        if (log.isDebugEnabled()) {
-                            log.debug("Firing sample");
-                        }
-                        sendBatch();
-                    } catch (RemoteException err) {
-                        log.warn("sampleOccurred", err);
-                    }
+            boolean sendNow = false;
+            if (NUM_SAMPLES_THRESHOLD != -1) {
+                if (sampleCount >= NUM_SAMPLES_THRESHOLD) {
+                    sendNow = true;
                 }
             }
 
+            long now = 0;
             if (TIME_THRESHOLD_MS != -1) {
-                long now = System.currentTimeMillis();
-                // Checking for and creating initial timestamp to cheak against
+                now = System.currentTimeMillis();
+                // Checking for and creating initial timestamp to check against
                 if (batchSendTime == -1) {
                     this.batchSendTime = now + TIME_THRESHOLD_MS;
                 }
-
                 if (batchSendTime < now) {
-                    try {
-                        if (log.isDebugEnabled()) {
-                            log.debug("Firing time");
-                        }
-                        sendBatch();
+                    sendNow = true;
+                }
+            }
+            if (sendNow) {
+                try {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Firing sample");
+                    }
+                    sendBatch();
+                    if (TIME_THRESHOLD_MS != -1) {
                         this.batchSendTime = now + TIME_THRESHOLD_MS;
-                    } catch (RemoteException err) {
-                        log.warn("sampleOccurred", err);
                     }
+                } catch (RemoteException err) {
+                    log.warn("sampleOccurred", err);
                 }
             }
-        }
+        } // synchronized(sampleStore)
     }
 
     private void sendBatch() throws RemoteException {



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscr...@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org

Reply via email to