Class ResourcesDownloader
java.lang.Object
org.apache.jmeter.protocol.http.sampler.ResourcesDownloader
Manages the parallel http resources download.
A shared thread pool is used by all the sample.
A sampler will usually do the following
the Future list only contains task that have been scheduled in the threadpool.
The status of those futures are either done or cancelled
Future enhancements:
A shared thread pool is used by all the sample.
A sampler will usually do the following
// list of AsynSamplerResultHolder to download
List<Callable<AsynSamplerResultHolder>> list = ...
// max parallel downloads
int maxConcurrentDownloads = ...
// get the singleton instance
ResourcesDownloader resourcesDownloader = ResourcesDownloader.getInstance();
// schedule the downloads and wait for the completion
List<Future<AsynSamplerResultHolder>> retExec =
resourcesDownloader.invokeAllAndAwaitTermination(maxConcurrentDownloads, list);
the call to invokeAllAndAwaitTermination will block until the downloads complete or get interruptedthe Future list only contains task that have been scheduled in the threadpool.
The status of those futures are either done or cancelled
Future enhancements:
- this implementation should be replaced with a NIO async download in order to reduce the number of threads needed
- Since:
- 3.0
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Holder of AsynSampler result -
Method Summary
Modifier and TypeMethodDescriptionstatic ResourcesDownloader
invokeAllAndAwaitTermination
(int maxConcurrentDownloads, List<Callable<ResourcesDownloader.AsynSamplerResultHolder>> list) This method will block until the downloads complete or it get interrupted the Future list returned by this method only contains tasks that have been scheduled in the threadpool.
The status of those futures are either done or cancelledvoid
shrink()
this method will try to shrink the thread pool size as much as possible it should be called at the end of a test
-
Method Details
-
getInstance
-
shrink
public void shrink()this method will try to shrink the thread pool size as much as possible it should be called at the end of a test -
invokeAllAndAwaitTermination
public List<Future<ResourcesDownloader.AsynSamplerResultHolder>> invokeAllAndAwaitTermination(int maxConcurrentDownloads, List<Callable<ResourcesDownloader.AsynSamplerResultHolder>> list) throws InterruptedException This method will block until the downloads complete or it get interrupted the Future list returned by this method only contains tasks that have been scheduled in the threadpool.
The status of those futures are either done or cancelled- Parameters:
maxConcurrentDownloads
- max concurrent downloadslist
- list of resources to download- Returns:
- list tasks that have been scheduled
- Throws:
InterruptedException
- when interrupted while waiting
-