Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: converted to 1.6 markup

Wiki Markup*Navigation trail:* \["JMeterProjectPages"\] - \["JMeterDevelopment"\] - \["JMeterDevelopment"\]/DeveloperDocumentation


This page describes what happens when you start a test:


  • First, the GUI-tree is converted into a non-GUI-tree of equivalent Test Elements.unmigrated-wiki-markup
  • 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.
  • All TestListeners are found in the tree (TestListener is a specific interface. Each TestListener will be notified when the test starts).
  • Wiki MarkupThen, 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.unmigrated-wiki-markup
  • \["JMeterThread"\] takes over at that point.