On 28 June 2011 23:18, E S <electric.or.sh...@gmail.com> wrote: > I have a custom sampler I wrote that spins off a number of threads to do the > actual requests, the results of which are added as sub results. So if your > test plan ran 5 users and each user made 10 requests from their virtual > browser, you'd have 5 results with 10 sub results under each one. The > problem I am having is setting the parent sampler start and end times > properly. Currently, I am starting the parent sampler before any of the > sub-threads start and ending it when all of the sub-threads have finished. > However, I'm getting times that are way too high in the parent sampler. My > guess is that it has to do with thread scheduling. For example, maybe there > are just so many threads running that it can't get to each one quick enough > to set the timer off at a reasonable time after the last request finished.
What timer? > An easy way to solve this would be to loop through the sub results and get > the earliest start time and latest end time and set the parent result's > start and end time equal to those. Unfortunately, I don't see a way to do > this. The API only appears to expose the sampleStart() and sampleEnd() > methods. You can't directly set the start and end times. That is deliberate. > Any ideas for a work around on this? http://jakarta.apache.org/jmeter/api/org/apache/jmeter/samplers/SampleResult.html#addSubResult%28org.apache.jmeter.samplers.SampleResult%29 should do what you need. > > For reference, here is a watered down version of my sampler code: > > public SampleResult sample(Entry e) { > //pool of threads to do sub-requests > List<Thread> requestRunners = new ArrayList<Thread>(); > > //4 because most browsers support 4 simultaneous requests > for (int i = 0; i < 4; i++) > requestRunners.add(new Thread(new RequestRunner()); > > result.sampleStart(); > > //start all the sub-requests > for (Thread runner : requestRunners) > runner.start(); > > //wait for all sub-requests to finish > for (Thread runner : requestRunners) { > runner.join(); > //this doesn't work right because too much time has passed since the last > sub-request came back in and the next line of code > result.sampleEnd(); > result.setSuccessful(allResultsSuccessful(result.getSubResults())); > return result; > } > --------------------------------------------------------------------- To unsubscribe, e-mail: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org