This page describes what happens when you start a test:
- The GUI tree is converted into a Test Element tree.
- The Engine compiles the test plan.
- The Engine starts the necessary threads and handles control to them.
- First, the GUI-tree is converted into a non-GUI-tree of equivalent Test Elements.
Next a JMeterEngine is created, and the tree is delivered.
The Engine then uses org.apache.jmeter.engine.PreCompiler (A HashTreeTraverser) to do some processing on the tree prior to the tree being cloned for each thread that will be run. In other words, the PreCompiler's changes will affect every thread. The PreCompiler, at this time, only replaces user-defined variables with their actual values (from the TestPlan GUI).
Then, all the ThreadGroup branches are extracted from the tree.
Then, for each ThreadGroup, the appropriate number of JMeterThread objects are created and handed the TestTree. However, the tree is cloned (a shallow cloning), and every element in the tree that implements PerThreadClonable is cloned.
JMeterThread takes over at that point.