Inter-Thread CommunicationJP@GC offers global string queues for inter-thread communication. These queues work in First-In-First-Out manner. You can put a string value into a queue from one thread, and then get that value from another thread, even in another Thread Group. This allows you having separate Thread Groups with some synchronization and parameter passing between them. There may be any number of FIFOs and they differ by "queue name". PostProcessor & PreProcessorInter-thread communication plugins usually attached as a child of samplers that provide or utilize data transmission. Download example test plan that demonstrates the process.
FunctionsThere are 4 functions for inter-thread communication in JP@GC: fifoPut, fifoGet, fifoPop, fifoSize. There is example test plan to see how it works. fifoPut puts a value into queue and returns stored value. fifoPut parameters: 1. Name of FIFO queue 1. String to put into queue Example, put 'str' into queue named 'sync_tokens':
fifoPop gets the string value from FIFO and removes that item from the queue. If
the item not exists, fifoPop will block and wait until some thread
will make fifoPut into queue. There is timeout for such waits,
by default it is unlimited, and can be changed by setting fifoGet differs from fifoPop, it does not wait for data, just returns empty string if no data present in queue. Also it does not remove values from the queue. fifoSize returns the number of items in the queue. fifoPop, fifoGet and fifoSize parameters: 1. Name of FIFO queue 1. Variable name to store value Queue lengths by default is unlimited, but since 1.0.1 version there is capacity
limit property Example, getting value from example of fifoPut:
Note on Clearing QueuesFor PluginsPreProcessor and PostProcessor clear queues at test start and test stop. For FunctionsWhen you stop JMeter test, queues are not cleared automatically (if you haven't used Pre/PostProcessors), so when starting new test you may have some values from previous run in FIFOs. Queues are cleared with the first fifoPut call. To fight this issue you may choose queue names that changes with every test run (eg. relying on test start time, etc). TutorialYou can learn inter-thread communication by reading the "Async Download Tutorial". |