mstover1 02/02/22 19:47:57 Modified: xdocs/stylesheets site.vsl site.xsl xdocs/usermanual component_reference.xml gen-controller.xml get-started.xml index.xml listener.xml logic-controller.xml thread-group.xml Log: Documentation updates. Moving component reference info to component_reference.xml Using the "subsection tag" updating the stylesheet to use anchor attribute in subsection tag Revision Changes Path 1.3 +172 -172 jakarta-jmeter/xdocs/stylesheets/site.vsl Index: site.vsl =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/stylesheets/site.vsl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- site.vsl 20 Feb 2002 14:16:43 -0000 1.2 +++ site.vsl 23 Feb 2002 03:47:56 -0000 1.3 @@ -2,17 +2,17 @@ <!-- Content Stylesheet for Site --> - ## Defined variables - #set ($bodybg = "#ffffff") - #set ($bodyfg = "#000000") - #set ($bodylink = "#525D76") - #set ($bannerbg = "#525D76") - #set ($bannerfg = "#ffffff") - #set ($subbannerbg = "#828DA6") - #set ($subbannerfg = "#ffffff") - #set ($tablethbg = "#039acc") - #set ($tabletdbg = "#a0ddf0") - + ## Defined variables + #set ($bodybg = "#ffffff") + #set ($bodyfg = "#000000") + #set ($bodylink = "#525D76") + #set ($bannerbg = "#525D76") + #set ($bannerfg = "#ffffff") + #set ($subbannerbg = "#828DA6") + #set ($subbannerfg = "#ffffff") + #set ($tablethbg = "#039acc") + #set ($tabletdbg = "#a0ddf0") + <!-- start the processing --> #document() <!-- end the processing --> @@ -21,23 +21,23 @@ #macro ( table $table) <table> - #foreach ( $items in $table.getChildren() ) - #if ($items.getName().equals("tr")) - #tr ($items) - #end - #end + #foreach ( $items in $table.getChildren() ) + #if ($items.getName().equals("tr")) + #tr ($items) + #end + #end </table> #end #macro ( tr $tr) <tr> - #foreach ( $items in $tr.getChildren() ) - #if ($items.getName().equals("td")) - #td ($items) - #elseif ($items.getName().equals("th")) - #th ($items) - #end - #end + #foreach ( $items in $tr.getChildren() ) + #if ($items.getName().equals("td")) + #td ($items) + #elseif ($items.getName().equals("th")) + #th ($items) + #end + #end </tr> #end @@ -49,13 +49,13 @@ #set ($rowspan = $value.getAttributeValue("rowspan")) #end <td bgcolor="$tabletdbg" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left"> - <font color="#000000" size="-1" face="arial,helvetica,sanserif"> - #if ($value.getText().length() != 0 || $value.hasChildren()) - $xmlout.outputString($value, true) - #else - - #end - </font> + <font color="#000000" size="-1" face="arial,helvetica,sanserif"> + #if ($value.getText().length() != 0 || $value.hasChildren()) + $xmlout.outputString($value, true) + #else + + #end + </font> </td> #end @@ -67,29 +67,29 @@ #set ($rowspan = $value.getAttributeValue("rowspan")) #end <td bgcolor="$tablethbg" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left"> - <font color="#000000" size="-1" face="arial,helvetica,sanserif"> - #if ($value.getText().length() != 0 || $value.hasChildren()) - $xmlout.outputString($value, true) - #else - - #end - </font> + <font color="#000000" size="-1" face="arial,helvetica,sanserif"> + #if ($value.getText().length() != 0 || $value.hasChildren()) + $xmlout.outputString($value, true) + #else + + #end + </font> </td> #end #macro ( projectanchor $name $value ) #if ($value.startsWith("http://")) - <a href="$value">$name</a> + <a href="$value">$name</a> #elseif ($value.startsWith("/site")) - <a href="http://jakarta.apache.org$value">$name</a> + <a href="http://jakarta.apache.org$value">$name</a> #else - <a href="$relativePath$value">$name</a> + <a href="$relativePath$value">$name</a> #end #end #macro ( metaauthor $author $email ) - <meta name="author" value="$author"> - <meta name="email" value="$email"> + <meta name="author" value="$author"> + <meta name="email" value="$email"> #end #macro ( image $value ) @@ -106,93 +106,93 @@ #end #macro ( source $value) - <div align="left"> - <table cellspacing="4" cellpadding="0" border="0"> - <tr> - <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> - <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> - <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> - </tr> - <tr> - <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> - <td bgcolor="#ffffff"><pre>$escape.getText($value.getText())</pre></td> - <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> - </tr> - <tr> - <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> - <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> - <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> - </tr> - </table> - </div> + <div align="left"> + <table cellspacing="4" cellpadding="0" border="0"> + <tr> + <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> + <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> + <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> + </tr> + <tr> + <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> + <td bgcolor="#ffffff"><pre>$escape.getText($value.getText())</pre></td> + <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> + </tr> + <tr> + <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> + <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> + <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td> + </tr> + </table> + </div> #end #macro ( subsection $subsection) - <table border="0" cellspacing="0" cellpadding="2" width="100%"> - <tr><td bgcolor="$subbannerbg"> - <font color="$subbannerfg" face="arial,helvetica,sanserif"> - <a name="$subsection.getAttributeValue("name")"><strong>$subsection.getAttributeValue("name")</strong></a> - </font> - </td></tr> - <tr><td> - <blockquote> - #foreach ( $items in $subsection.getChildren() ) - #if ($items.getName().equals("img")) - #image ($items) - #elseif ($items.getName().equals("source")) - #source ($items) - #elseif ($items.getName().equals("table")) - #table ($items) - #else - $xmlout.outputString($items) - #end - #end - </blockquote> - </td></tr> - <tr><td><br/></td></tr> - </table> + <table border="0" cellspacing="0" cellpadding="2" width="100%"> + <tr><td bgcolor="$subbannerbg"> + <font color="$subbannerfg" face="arial,helvetica,sanserif"> + <a name="$subsection.getAttributeValue("anchor")"><strong>$subsection.getAttributeValue("name")</strong></a> + </font> + </td></tr> + <tr><td> + <blockquote> + #foreach ( $items in $subsection.getChildren() ) + #if ($items.getName().equals("img")) + #image ($items) + #elseif ($items.getName().equals("source")) + #source ($items) + #elseif ($items.getName().equals("table")) + #table ($items) + #else + $xmlout.outputString($items) + #end + #end + </blockquote> + </td></tr> + <tr><td><br/></td></tr> + </table> #end #macro ( section $section) - <table border="0" cellspacing="0" cellpadding="2" width="100%"> - <tr><td bgcolor="$bannerbg"> - <font color="$bannerfg" face="arial,helvetica,sanserif"> - <a name="$section.getAttributeValue("anchor")"><strong>$section.getAttributeValue("name")</strong></a> - </font> - </td></tr> - <tr><td> - <blockquote> - #foreach ( $items in $section.getChildren() ) - #if ($items.getName().equals("img")) - #image ($items) - #elseif ($items.getName().equals("source")) - #source ($items) - #elseif ($items.getName().equals("table")) - #table ($items) - #elseif ($items.getName().equals("subsection")) - #subsection ($items) - #else - $xmlout.outputString($items) - #end - #end - </blockquote> - </p> - </td></tr> - <tr><td><br/></td></tr> - </table> + <table border="0" cellspacing="0" cellpadding="2" width="100%"> + <tr><td bgcolor="$bannerbg"> + <font color="$bannerfg" face="arial,helvetica,sanserif"> + <a name="$section.getAttributeValue("anchor")"><strong>$section.getAttributeValue("name")</strong></a> + </font> + </td></tr> + <tr><td> + <blockquote> + #foreach ( $items in $section.getChildren() ) + #if ($items.getName().equals("img")) + #image ($items) + #elseif ($items.getName().equals("source")) + #source ($items) + #elseif ($items.getName().equals("table")) + #table ($items) + #elseif ($items.getName().equals("subsection")) + #subsection ($items) + #else + $xmlout.outputString($items) + #end + #end + </blockquote> + </p> + </td></tr> + <tr><td><br/></td></tr> + </table> #end #macro ( makeProject ) - #set ($menus = $project.getChild("body").getChildren("menu")) - #foreach ( $menu in $menus ) - <p><strong>$menu.getAttributeValue("name")</strong></p> - <ul> - #foreach ( $item in $menu.getChildren() ) - #set ($name = $item.getAttributeValue("name")) - <li>#projectanchor($name $item.getAttributeValue("href"))</li> - #end - </ul> - #end + #set ($menus = $project.getChild("body").getChildren("menu")) + #foreach ( $menu in $menus ) + <p><strong>$menu.getAttributeValue("name")</strong></p> + <ul> + #foreach ( $item in $menu.getChildren() ) + #set ($name = $item.getAttributeValue("name")) + <li>#projectanchor($name $item.getAttributeValue("href"))</li> + #end + </ul> + #end #end #macro (getProjectImage) @@ -216,56 +216,56 @@ #end #macro (document) - <!-- ====================================================================== --> - <!-- Main Page Section --> - <!-- ====================================================================== --> - <html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> - - #set ($authors = $root.getChild("properties").getChildren("author")) - #foreach ( $au in $authors ) - #metaauthor ( $au.getText() $au.getAttributeValue("email") ) - #end - - <title>$project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText()</title> - </head> - - <body bgcolor="$bodybg" text="$bodyfg" link="$bodylink"> - <table border="0" width="100%" cellspacing="0"> - <!-- TOP IMAGE --> - <tr> - #getProjectImage() - </tr> - </table> - <table border="0" width="100%" cellspacing="4"> - <tr><td colspan="2"> - <hr noshade="" size="1"/> - </td></tr> - - <tr> - <!-- LEFT SIDE NAVIGATION --> - <td width="20%" valign="top" nowrap="true"> - #makeProject() - </td> - <td width="80%" align="left" valign="top"> - #set ($allSections = $root.getChild("body").getChildren("section")) - #foreach ( $section in $allSections ) - #section ($section) - #end - </td> - </tr> - - <!-- FOOTER --> - <tr><td colspan="2"> - <hr noshade="" size="1"/> - </td></tr> - <tr><td colspan="2"> - <div align="center"><font color="$bodylink" size="-1"><em> - Copyright © 1999-2001, Apache Software Foundation - </em></font></div> - </td></tr> - </table> - </body> - </html> + <!-- ====================================================================== --> + <!-- Main Page Section --> + <!-- ====================================================================== --> + <html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> + + #set ($authors = $root.getChild("properties").getChildren("author")) + #foreach ( $au in $authors ) + #metaauthor ( $au.getText() $au.getAttributeValue("email") ) + #end + + <title>$project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText()</title> + </head> + + <body bgcolor="$bodybg" text="$bodyfg" link="$bodylink"> + <table border="0" width="100%" cellspacing="0"> + <!-- TOP IMAGE --> + <tr> + #getProjectImage() + </tr> + </table> + <table border="0" width="100%" cellspacing="4"> + <tr><td colspan="2"> + <hr noshade="" size="1"/> + </td></tr> + + <tr> + <!-- LEFT SIDE NAVIGATION --> + <td width="20%" valign="top" nowrap="true"> + #makeProject() + </td> + <td width="80%" align="left" valign="top"> + #set ($allSections = $root.getChild("body").getChildren("section")) + #foreach ( $section in $allSections ) + #section ($section) + #end + </td> + </tr> + + <!-- FOOTER --> + <tr><td colspan="2"> + <hr noshade="" size="1"/> + </td></tr> + <tr><td colspan="2"> + <div align="center"><font color="$bodylink" size="-1"><em> + Copyright © 1999-2001, Apache Software Foundation + </em></font></div> + </td></tr> + </table> + </body> + </html> #end 1.2 +169 -169 jakarta-jmeter/xdocs/stylesheets/site.xsl Index: site.xsl =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/stylesheets/site.xsl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- site.xsl 5 Aug 2001 13:22:09 -0000 1.1 +++ site.xsl 23 Feb 2002 03:47:56 -0000 1.2 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Content Stylesheet for "jakarta-site2" Documentation --> <!-- NOTE: Changes here should also be reflected in "site.vsl" and vice - versa, so either Anakia or XSLT can be used for document generation. --> + versa, so either Anakia or XSLT can be used for document generation. --> <!-- Outstanding Compatibility Issues (with Anakia-based stylesheets): @@ -21,7 +21,7 @@ --> -<!-- $Id: site.xsl,v 1.1 2001/08/05 13:22:09 mstover1 Exp $ --> +<!-- $Id: site.xsl,v 1.2 2002/02/23 03:47:56 mstover1 Exp $ --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> @@ -29,8 +29,8 @@ <!-- Output method --> <xsl:output method="html" - encoding="iso-8859-1" - indent="no"/> + encoding="iso-8859-1" + indent="no"/> <!-- Defined parameters (overrideable) --> @@ -51,203 +51,203 @@ <!-- Process an entire document into an HTML page --> <xsl:template match="document"> - <xsl:variable name="project" - select="document('project.xml')/project"/> + <xsl:variable name="project" + select="document('project.xml')/project"/> - <html> - <head> - <title><xsl:value-of select="$project/title"/> - <xsl:value-of select="properties/title"/></title> - <xsl:for-each select="properties/author"> - <xsl:variable name="name"> - <xsl:value-of select="."/> - </xsl:variable> - <xsl:variable name="email"> - <xsl:value-of select="@email"/> - </xsl:variable> - <meta name="author" value="{$name}"/> - <meta name="email" value="{$email}"/> - </xsl:for-each> - </head> - - <body bgcolor="{$body-bg}" text="{$body-fg}" link="{$body-link}" - alink="{$body-link}" vlink="{$body-link}"> - - <table border="0" width="100%" cellspacing="4"> - - <xsl:comment>PAGE HEADER</xsl:comment> - <tr><td colspan="2"> - - <xsl:comment>JAKARTA LOGO</xsl:comment> - <a href="http://jakarta.apache.org/"> - <img src="http://jakarta.apache.org/images/jakarta-logo.gif" - align="left" alt="The Jakarta Project" border="0"/> - </a> - <xsl:if test="$project/logo"> - <xsl:variable name="alt"> - <xsl:value-of select="$project/logo"/> - </xsl:variable> - <xsl:variable name="home"> - <xsl:value-of select="$project/@href"/> - </xsl:variable> - <xsl:variable name="src"> - <xsl:value-of select="$project/logo/@href"/> - </xsl:variable> - - <xsl:comment>PROJECT LOGO</xsl:comment> - <a href="{$home}"> - <img src="{$src}" align="right" alt="{$alt}" border="0"/> - </a> - </xsl:if> - - </td></tr> - - <xsl:comment>HEADER SEPARATOR</xsl:comment> - <tr> - <td colspan="2"> - <hr noshade="" size="1"/> - </td> - </tr> - - <tr> - - <xsl:comment>LEFT SIDE NAVIGATION</xsl:comment> - <td width="20%" valign="top" nowrap="true"> - <xsl:apply-templates select="$project/body/menu"/> - </td> - - <xsl:comment>RIGHT SIDE MAIN BODY</xsl:comment> - <td width="80%" valign="top" align="left"> - <xsl:apply-templates select="body/section"/> - </td> - - </tr> - - <xsl:comment>FOOTER SEPARATOR</xsl:comment> - <tr> - <td colspan="2"> - <hr noshade="" size="1"/> - </td> - </tr> - - <xsl:comment>PAGE FOOTER</xsl:comment> - <tr><td colspan="2"> - <div align="center"><font color="{$body-link}" size="-1"><em> - Copyright © 1999-2001, Apache Software Foundation - </em></font></div> - </td></tr> - - </table> - </body> - </html> + <html> + <head> + <title><xsl:value-of select="$project/title"/> - <xsl:value-of select="properties/title"/></title> + <xsl:for-each select="properties/author"> + <xsl:variable name="name"> + <xsl:value-of select="."/> + </xsl:variable> + <xsl:variable name="email"> + <xsl:value-of select="@email"/> + </xsl:variable> + <meta name="author" value="{$name}"/> + <meta name="email" value="{$email}"/> + </xsl:for-each> + </head> + + <body bgcolor="{$body-bg}" text="{$body-fg}" link="{$body-link}" + alink="{$body-link}" vlink="{$body-link}"> + + <table border="0" width="100%" cellspacing="4"> + + <xsl:comment>PAGE HEADER</xsl:comment> + <tr><td colspan="2"> + + <xsl:comment>JAKARTA LOGO</xsl:comment> + <a href="http://jakarta.apache.org/"> + <img src="http://jakarta.apache.org/images/jakarta-logo.gif" + align="left" alt="The Jakarta Project" border="0"/> + </a> + <xsl:if test="$project/logo"> + <xsl:variable name="alt"> + <xsl:value-of select="$project/logo"/> + </xsl:variable> + <xsl:variable name="home"> + <xsl:value-of select="$project/@href"/> + </xsl:variable> + <xsl:variable name="src"> + <xsl:value-of select="$project/logo/@href"/> + </xsl:variable> + + <xsl:comment>PROJECT LOGO</xsl:comment> + <a href="{$home}"> + <img src="{$src}" align="right" alt="{$alt}" border="0"/> + </a> + </xsl:if> + + </td></tr> + + <xsl:comment>HEADER SEPARATOR</xsl:comment> + <tr> + <td colspan="2"> + <hr noshade="" size="1"/> + </td> + </tr> + + <tr> + + <xsl:comment>LEFT SIDE NAVIGATION</xsl:comment> + <td width="20%" valign="top" nowrap="true"> + <xsl:apply-templates select="$project/body/menu"/> + </td> + + <xsl:comment>RIGHT SIDE MAIN BODY</xsl:comment> + <td width="80%" valign="top" align="left"> + <xsl:apply-templates select="body/section"/> + </td> + + </tr> + + <xsl:comment>FOOTER SEPARATOR</xsl:comment> + <tr> + <td colspan="2"> + <hr noshade="" size="1"/> + </td> + </tr> + + <xsl:comment>PAGE FOOTER</xsl:comment> + <tr><td colspan="2"> + <div align="center"><font color="{$body-link}" size="-1"><em> + Copyright © 1999-2001, Apache Software Foundation + </em></font></div> + </td></tr> + + </table> + </body> + </html> </xsl:template> <!-- Process a menu for the navigation bar --> <xsl:template match="menu"> - <p><strong><xsl:value-of select="@name"/></strong></p> - <ul> - <xsl:apply-templates select="item"/> - </ul> + <p><strong><xsl:value-of select="@name"/></strong></p> + <ul> + <xsl:apply-templates select="item"/> + </ul> </xsl:template> <!-- Process a menu item for the navigation bar --> <xsl:template match="item"> - <xsl:variable name="href"> - <xsl:value-of select="$relative-path"/><xsl:value-of select="@href"/> - </xsl:variable> - <li><a href="{$href}"><xsl:value-of select="@name"/></a></li> + <xsl:variable name="href"> + <xsl:value-of select="$relative-path"/><xsl:value-of select="@href"/> + </xsl:variable> + <li><a href="{$href}"><xsl:value-of select="@name"/></a></li> </xsl:template> <!-- Process a documentation section --> <xsl:template match="section"> - <xsl:variable name="name"> - <xsl:value-of select="@name"/> - </xsl:variable> - <table border="0" cellspacing="0" cellpadding="2" width="100%"> - <!-- Section heading --> - <tr><td bgcolor="{$banner-bg}"> - <font color="{$banner-fg}" face="arial,helvetica.sanserif"> - <a name="{$name}"> - <strong><xsl:value-of select="@name"/></strong></a></font> - </td></tr> - <!-- Section body --> - <tr><td><blockquote> - <xsl:apply-templates/> - </blockquote></td></tr> - </table> + <xsl:variable name="name"> + <xsl:value-of select="@anchor"/> + </xsl:variable> + <table border="0" cellspacing="0" cellpadding="2" width="100%"> + <!-- Section heading --> + <tr><td bgcolor="{$banner-bg}"> + <font color="{$banner-fg}" face="arial,helvetica.sanserif"> + <a name="{$name}"> + <strong><xsl:value-of select="@name"/></strong></a></font> + </td></tr> + <!-- Section body --> + <tr><td><blockquote> + <xsl:apply-templates/> + </blockquote></td></tr> + </table> </xsl:template> <!-- Process a documentation subsection --> <xsl:template match="subsection"> - <xsl:variable name="name"> - <xsl:value-of select="@name"/> - </xsl:variable> - <table border="0" cellspacing="0" cellpadding="2" width="100%"> - <!-- Subsection heading --> - <tr><td bgcolor="{$sub-banner-bg}"> - <font color="{$sub-banner-fg}" face="arial,helvetica.sanserif"> - <a name="{$name}"> - <strong><xsl:value-of select="@name"/></strong></a></font> - </td></tr> - <!-- Subsection body --> - <tr><td><blockquote> - <xsl:apply-templates/> - </blockquote></td></tr> - </table> + <xsl:variable name="anchor"> + <xsl:value-of select="@anchor"/> + </xsl:variable> + <table border="0" cellspacing="0" cellpadding="2" width="100%"> + <!-- Subsection heading --> + <tr><td bgcolor="{$sub-banner-bg}"> + <font color="{$sub-banner-fg}" face="arial,helvetica.sanserif"> + <a name="{$anchor}"> + <strong><xsl:value-of select="@name"/></strong></a></font> + </td></tr> + <!-- Subsection body --> + <tr><td><blockquote> + <xsl:apply-templates/> + </blockquote></td></tr> + </table> </xsl:template> <!-- Process a source code example --> <xsl:template match="source"> - <div align="left"> - <table cellspacing="4" cellpadding="0" border="0"> - <tr> - <td bgcolor="{$source-color}" width="1" height="1"> - <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> - </td> - <td bgcolor="{$source-color}" height="1"> - <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> - </td> - <td bgcolor="{$source-color}" width="1" height="1"> - <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> - </td> - </tr> - <tr> - <td bgcolor="{$source-color}" width="1"> - <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> - </td> - <td bgcolor="#ffffff" height="1"><pre> - <xsl:value-of select="."/> - </pre></td> - <td bgcolor="{$source-color}" width="1"> - <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> - </td> - </tr> - <tr> - <td bgcolor="{$source-color}" width="1" height="1"> - <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> - </td> - <td bgcolor="{$source-color}" height="1"> - <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> - </td> - <td bgcolor="{$source-color}" width="1" height="1"> - <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> - </td> - </tr> - </table> - </div> + <div align="left"> + <table cellspacing="4" cellpadding="0" border="0"> + <tr> + <td bgcolor="{$source-color}" width="1" height="1"> + <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> + </td> + <td bgcolor="{$source-color}" height="1"> + <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> + </td> + <td bgcolor="{$source-color}" width="1" height="1"> + <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> + </td> + </tr> + <tr> + <td bgcolor="{$source-color}" width="1"> + <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> + </td> + <td bgcolor="#ffffff" height="1"><pre> + <xsl:value-of select="."/> + </pre></td> + <td bgcolor="{$source-color}" width="1"> + <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> + </td> + </tr> + <tr> + <td bgcolor="{$source-color}" width="1" height="1"> + <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> + </td> + <td bgcolor="{$source-color}" height="1"> + <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> + </td> + <td bgcolor="{$source-color}" width="1" height="1"> + <img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/> + </td> + </tr> + </table> + </div> </xsl:template> <!-- Process everything else by just passing it through --> <xsl:template match="*|@*"> - <xsl:copy> - <xsl:apply-templates select="@*|*|text()"/> - </xsl:copy> + <xsl:copy> + <xsl:apply-templates select="@*|*|text()"/> + </xsl:copy> </xsl:template> </xsl:stylesheet> 1.2 +160 -5 jakarta-jmeter/xdocs/usermanual/component_reference.xml Index: component_reference.xml =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/component_reference.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- component_reference.xml 21 Feb 2002 13:43:07 -0000 1.1 +++ component_reference.xml 23 Feb 2002 03:47:56 -0000 1.2 @@ -11,7 +11,9 @@ </section> -<section name="4.2.1.1 FTP Request" anchor="ftp_request"> +<section name="12.1 Generative Controllers" anchor="generative_controllers"> + +<subsection name="4.2.1.1 FTP Request" anchor="ftp_request"> <p>This controller lets you send an FTP "retrieve file" request to an FTP server. If you are going to send multiple requests to the same FTP server, consider using a <a href="ftp-config.html#request_defaults">FTP Request Defaults</a> Configuration @@ -37,9 +39,9 @@ <a href="ftp-config.html#request_defaults">FTP Request Defaults</a>, <a href="build-ftp-test-plan.html">Building an FTP Test Plan</a></p> -</section> +</subsection> -<section name="4.2.1.2 HTTP Request" anchor="http_request"> +<subsection name="4.2.1.2 HTTP Request" anchor="http_request"> <p>This controller lets you send an HTTP/HTTPS request to a web server. It also lets you control whether or not JMeter parses HTML files for images and Java applets and sends HTTP requests to retrieve them.</p> @@ -120,9 +122,9 @@ <a href="build-adv-web-test-plan.html#url_rewriting">HTTP Requests and Session ID's: URL Rewriting</a> </p> -</section> +</subsection> -<section name="4.2.1.3 JDBC Request" anchor="jdbc_request"> +<subsection name="4.2.1.3 JDBC Request" anchor="jdbc_request"> <p>This controller lets you send an JDBC Request (an SQL query) to a database.</p> <p>If you are going to send multiple requests to the same database, consider using one or more of the Defaults Configuration Elements: @@ -172,6 +174,159 @@ <a href="jdbc-config.html#sql_query">JDBC SQL Query Defaults</a> </p> +</subsection> +</section> + +<section name="12.2 Logic Controllers" anchor="logic_controllers"> + +<subsection name="4.2.2.1 Interleave Controller" anchor="interleave"> +<p>If you add Generative or Logic Controllers to an Interleave Controller, JMeter will alternate among each of the +other controllers for each loop iteration. </p> + +<p><b>Control Panel</b></p> +<p><img src="../images/screenshots/logic-controller/interleave-controller.gif" width="390" height="62"></img> +<br>Figure 1- Interleave Controller Control Panel</br></p> +<p>Properties: +<ul> + <li>Name - Descriptive name for this controller that is shown in the tree. </li> +</ul> +</p> +<!-- +For example, if you +add three HTTP Requests to an Interleave Controller and configure the Thread +Group to loop, here is the sequence in which JMeter sends the requests: +</p> +<table border="1" cellspacing="0" cellpadding="4"> +<tr valign="top"><td>Loop Iteration</td><td>Description</td></tr> +<tr valign="top"><td>1</td><td>JMeter sends the first HTTP Request.</td></tr> +<tr valign="top"><td>2</td><td>JMeter sends the second HTTP Request.</td></tr> +<tr valign="top"><td>3</td><td>JMeter sends the third HTTP Request.</td></tr> +<tr valign="top"><td>4</td><td>Because there are no more requests in controller, JMeter start over and sends the first HTTP Request.</td></tr> +<tr valign="top"><td>5</td><td>JMeter sends the second HTTP Request.</td></tr> +<tr valign="top"><td>(and so on)</td><td>...</td></tr> +</table> +--> +<p><b>Example</b></p> + +<p><a href="../demos/InterleaveTestPlan.jmx">Download</a> this example (see Figure 2). In this example, +we configured the Thread Group to have two threads and a loop count of five, for a total of ten +requests. See the table below for the sequence JMeter sends the HTTP Requests.</p> + +<table border="1" cellspacing="0" cellpadding="4"> +<tr valign="top"><td>Loop Iteration</td><td>Each JMeter Thread Sends These HTTP Requests</td></tr> +<tr valign="top"><td>1</td><td>News Page</td></tr> +<tr valign="top"><td>2</td><td>FAQ Page</td></tr> +<tr valign="top"><td>3</td><td>Gump Page</td></tr> +<tr valign="top"><td>4</td><td>Because there are no more requests in controller, JMeter start over and sends the first HTTP Request, which is the News Page.</td></tr> +<tr valign="top"><td>5</td><td>FAQ Page</td></tr> +</table> + +<p>Note, the File Reporter is configured to store the results in a file named +"interleave-test.dat" in the current directory.</p> + +<p><img src="../images/screenshots/logic-controller/interleave.gif" width="368" height="210"></img> +<br>Figure 2 - Interleave Controller Example 1</br></p> + +<p><b>Example</b></p> + +<p><a href="../demos/InterleaveTestPlan2.jmx">Download</a> another example (see Figure 3). In this +example, we configured the Thread Group +to have a single thread and a loop count of eight. Notice that the Test Plan has an outer Interleave Controller with +two Interleave Controllers inside of it.</p> + +<p>The outer Interleave Controller alternates between the +two inner ones. Then, each inner Interleave Controller alternates between each of the HTTP Requests. Each JMeter +thread will send the requests in the following order: Home Page, Bug Page, CVS Page, and FAQ Page. +Note, the File Reporter is configured to store the results in a file named "interleave-test2.dat" in the current directory.</p> + +<p><img src="../images/screenshots/logic-controller/interleave2.gif" width="368" height="262"></img> +<br>Figure 3 - Interleave Controller Example 2</br></p> + +</subsection> + +<subsection name="4.2.2.2 Loop Controller" anchor="loop"> +<p>If you add Generative or Logic Controllers to a Loop Controller, JMeter will +loop through them a certain number of times, in addition to the loop value you +specified for the Thread Group. For example, if you add one HTTP Request to a +Loop Controller with a loop count of two, and configure the Thread Group loop +count to three, JMeter will send a total of 2 * 3 = 6 HTTP Requests. +</p> +<p><b>Control Panel</b></p> +<p><img src="../images/screenshots/logic-controller/loop-controller.gif" width="397" height="111"></img> +<br>Figure 4 - Loop Controller Control Panel</br></p> + +<p><b>Example</b></p> +<p><a href="../demos/LoopTestPlan.jmx">Download</a> this example (see Figure 5). +In this example, we created a Test Plan that sends a particular HTTP Request +only once and sends another HTTP Request five times.</p> +<p>We configured the Thread Group for a single thread and a loop count value of +one. Instead of letting the Thread Group control the looping, we used a Loop +Controller. You can see that we added one HTTP Request to the Thread Group and +another HTTP Request to a Loop Controller. We configured the Loop Controller +with a loop count value of five.</p> + +<p>JMeter will send the requests in the following order: Home Page, News Page, +News Page, News Page, News Page, and News Page. Note, the File Reporter +is configured to store the results in a file named "loop-test.dat" in the current directory.</p> + +<p><img src="../images/screenshots/logic-controller/loop-example.gif" width="368" height="185"></img> +<br>Figure 5 - Loop Controller Example</br></p> + +</subsection> + +<subsection name="4.2.2.3 Modification Manager" anchor="mod_manager"> +<p>Put description text here...</p> +<p>This element has no visual elements.</p> +</subsection> + +<subsection name="4.2.2.4 Once Only Controller" anchor="once_only_controller"> +<p>The Once Only Logic Controller tells JMeter to process the controller(s) inside it only once, regardless of the loop +count value you specify in the Thread Group or Loop Controller.</p> + +<p>For testing that requires a login, consider placing the login request in this controller since each thread only needs +to login once to establish a session.</p> + +<p><b>Control Panel</b></p> +<p><img src="../images/screenshots/logic-controller/once-only-controller.gif" width="390" height="62"></img> +<br>Figure x - Once Only Controller Control Panel</br></p> + +<p><b>Example</b></p> +<p><a href="../demos/OnceOnlyTestPlan.jmx">Download</a> this example (see Figure x). +In this example, we created a Test Plan that has two threads that send HTTP request. +Each thread sends one request to the Home Page, followed by three requests to the Bug Page. +Although we configured the Thread Group to iterate three times, each JMeter thread only +sends one request to the Home Page because this request lives inside a Once Only Controller.</p> + +<p>Each JMeter thread will send the requests in the following order: Home Page, Bug Page, +Bug Page, Bug Page. Note, the File Reporter is configured to store the results in a file named "loop-test.dat" in the current directory.</p> + +<p><img src="../images/screenshots/logic-controller/once-only-example.gif" width="368" height="190"></img> +<br>Figure x. Once Only Controller Example</br></p> +</subsection> + +<subsection name="4.2.2.5 Simple Controller" anchor="simple"> + +<p>The Simple Logic Controller lets you organize your Generative Controllers and other +Logic Controllers. Unlike other Logic Controllers, this controller provides no functionality beyond that of a +storage device.</p> + +<p><b>Control Panel</b></p> +<p><img src="../images/screenshots/logic-controller/simple-controller.gif" width="390" height="62"></img> +<br>Figure x. Simple Controller Control Panel</br></p> + +<p><b>Example</b></p> +<p><a href="../demos/SimpleTestPlan.jmx">Download</a> this example (see Figure x). +In this example, we created a Test Plan that sends two Ant HTTP requests and two +Log4J HTTP requests. We grouped the Ant and Log4J requests by placing them inside +Simple Logic Controllers. Remember, the Simple Logic Controller has no effect on how JMeter +processes the controller(s) you add to it. So, in this example, JMeter sends the requests in the +following order: Ant Home Page, Ant News Page, Log4J Home Page, Log4J History Page. +Note, the File Reporter +is configured to store the results in a file named "simple-test.dat" in the current directory.</p> + +<p><img src="../images/screenshots/logic-controller/simple-example.gif" width="368" height="245"></img> +<br>Figure x Simple Controller Example</br></p> +</subsection> </section> </body> 1.8 +2 -2 jakarta-jmeter/xdocs/usermanual/gen-controller.xml Index: gen-controller.xml =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/gen-controller.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- gen-controller.xml 21 Feb 2002 13:43:07 -0000 1.7 +++ gen-controller.xml 23 Feb 2002 03:47:56 -0000 1.8 @@ -22,7 +22,7 @@ <p>Remember to add a Listener to your Thread Group to view and/or store the results of your requests to disk.</p> -<p>If your are interested in having JMeter perform basic validation on +<p>If you are interested in having JMeter perform basic validation on the response of your request, add an <a href="assertion.html">Assertion</a> to the Request controller. For example, in stress testing a web application, the server may return a successful "HTTP Response" code, but the page may have errors on it or @@ -30,7 +30,7 @@ common error strings, and so on. JMeter lets you create these assertions using regular expressions.</p> - +<p><a href="component_reference.html#gen_controllers">JMeter's built-in generative controllers</a></p> </section> 1.7 +46 -41 jakarta-jmeter/xdocs/usermanual/get-started.xml Index: get-started.xml =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/get-started.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- get-started.xml 21 Feb 2002 14:22:42 -0000 1.6 +++ get-started.xml 23 Feb 2002 03:47:56 -0000 1.7 @@ -8,87 +8,91 @@ <body> <section name="2. Getting Started" anchor="get_started"> -<p>The easiest way to begin using JMeter is to first -<a href="http://jakarta.apache.org/builds/jakarta-jmeter/release/">download the latest production release</a> and install it. -The release contains all of the files you need to build and run Web, FTP, JDBC, and JNDI tests. If you want to perform JDBC testing, +<p>The easiest way to begin using JMeter is to first +<a href="http://jakarta.apache.org/builds/jakarta-jmeter/release/">download the latest production release</a> and install it. +The release contains all of the files you need to build and run Web, FTP, JDBC, and JNDI tests. If you want to perform JDBC testing, then you will, of course, need the appropriate JDBC driver from your vendor. JMeter does not come with any JDBC drivers.</p> -<p>Next, start JMeter and go through the <a href="build-test-plan.html">Building a Test Plan</a> section +<p>Next, start JMeter and go through the <a href="build-test-plan.html">Building a Test Plan</a> section of the User Guide to familiarize yourself with JMeter basics (for example, adding and removing elements).</p> <p>Finally, go through the appropriate section on how to build a specific type of Test Plan. -For example, if you are interested in testing a Web application, then see the section +For example, if you are interested in testing a Web application, then see the section <a href="build-web-test-plan.html">Building a Web Test Plan</a>. -The other specific Test Plan sections are for <a href="build-db-test-plan.html">JDBC</a>, +The other specific Test Plan sections are for <a href="build-db-test-plan.html">JDBC</a>, <a href="build-ftp-test-plan.html">FTP</a>, and <a href="build-jndi-test-plan.html">JNDI</a>.</p> -<p>Once you are comfortable with building and running JMeter Test Plans, you can look into the +<p>Once you are comfortable with building and running JMeter Test Plans, you can look into the various configuration elements (timers, listeners, assertions, and others) which give you more control over your Test Plans.</p> </section> <section name="2.1 Requirements" anchor="requirements"> -</section> +<p>JMeter requires your computing environment meets some minimum requirements.</p> -<section name="2.1.1 Java Version" anchor="java_ver"> -<p>JMeter requires a fully compliant JDK1.2 (or higher) environment. Because JMeter uses only -standard Java APIs (java.*), please do not file bug reports if your JRE fails to run +<subsection name="2.1.1 Java Version" anchor="java_ver"> +<p>JMeter requires a fully compliant JDK1.2 (or higher) environment. Because JMeter uses only +standard Java APIs (java.*), please do not file bug reports if your JRE fails to run JMeter because of JRE implementation issues.</p> -</section> +</subsection> -<section name="2.1.2 Operating Systems" anchor="os"> +<subsection name="2.1.2 Operating Systems" anchor="os"> <p>JMeter has been tested and works under Unix (Solaris, Linux, etc) and Windows (98, NT, 2000). JMeter is a 100% Java application and should run correctly on any system that has a compliant Java implementation.</p> +</subsection> </section> <section name="2.2 Optional" anchor="optional"> <p>If you plan on doing JMeter development or want to use Sun's Java Standard Extension packages, then you will need one or more optional packages listed below.</p> -</section> -<section name="2.2.1 Java Compiler" anchor="opt_compiler"> + +<subsection name="2.2.1 Java Compiler" anchor="opt_compiler"> <p>If you want to build the JMeter source or develop JMeter plugins, then you will need a fully compliant JDK1.2 or higher compiler.</p> -</section> +</subsection> -<section name="2.2.2 SAX XML Parser" anchor="opt_sax"> -<p>JMeter comes with Apache's <a href="http://xml.apache.org/">Xerces XML parser</a>. You have the option of telling JMeter +<subsection name="2.2.2 SAX XML Parser" anchor="opt_sax"> +<p>JMeter comes with Apache's <a href="http://xml.apache.org/">Xerces XML parser</a>. You have the option of telling JMeter to use a different XML parser. To do so, include the classes for the third-party parser in JMeter's <a href="#classpath">classpath</a>, and update the <a href="configuring_jmeter.html">jmeter.properties</a> file with the full classname of the parser -implementation.</p> -</section> +implementation.</p> +</subsection> -<section name="2.2.3 Email Support" anchor="opt_email"> +<subsection name="2.2.3 Email Support" anchor="opt_email"> <p>JMeter has limited Email capabilities (it can send email based on test results). To enable Email support, add Sun's JavaMail packages to JMeter's <a href="#classpath">classpath</a>.</p> -</section> +</subsection> -<section name="2.2.4 SSL Encryption" anchor="opt_ssl"> +<subsection name="2.2.4 SSL Encryption" anchor="opt_ssl"> <p>To test a web server using SSL encryption (HTTPS), JMeter requires that an -implementation of SSL be provided (such as Sun's <a href="http://java.sun.com/products/jsse/index.html">Java Secure Sockets Extension -- JSSE</a>). +implementation of SSL be provided (such as Sun's <a href="http://java.sun.com/products/jsse/index.html">Java Secure Sockets Extension -- JSSE</a>). Include the necessary encryption packages in JMeter's <a href="#classpath">classpath</a>. Also, update <a href="configuring_jmeter.html">jmeter.properties</a> by registering the SSL Provider.</p> <p>Note: if you are running JDK1.4, then you do not have to download JSSE because Sun integrated it into JDK1.4 as a standard library.</p> -</section> +</subsection> -<section name="2.2.5 JDBC Driver" anchor="opt_jdbc"> +<subsection name="2.2.5 JDBC Driver" anchor="opt_jdbc"> <p>You will need to add your database vendor's JDBC driver to the <a href="#classpath">classpath</a> if you want to do JDBC testing.</p> +</subsection> </section> - <section name="2.3 Installation" anchor="install"> -</section> +<p>Installing JMeter is a snap. Specifics depend on which release file you +downloaded.</p> -<section name="2.3.1 Downloading the Latest Release" anchor="download_release"> + +<subsection name="2.3.1 Downloading the Latest Release" anchor="download_release"> <p>We recommend that most users run the <a href="http://jakarta.apache.org/builds/jakarta-jmeter/release/">latest release</a>.</p> <p>To install a release build, simply unzip the zip/tar file into the directory where you want JMeter to be installed. Provided that you have a JDK correctly installed and the JAVA_HOME environment variable set, there is nothing more for you to do.</p> -</section> +</subsection> -<section name="2.3.2 Downloading Nightly Builds" anchor="download_nightly"> +<subsection name="2.3.2 Downloading Nightly Builds" anchor="download_nightly"> <p>If you do not mind working with beta-quality software, then you can download and run the <a href="http://jakarta.apache.org/builds/jakarta-jmeter/nightly">latest nightly build</a>.</p> <p>To install a nightly build, unzip the zip/tar file into the directory where you want JMeter -to be installed. Then, open a shell or command prompt and change to JMeter's top-level directory. +to be installed. Then, open a shell or command prompt and change to JMeter's top-level directory. Next, type "build install". Provided that you have a JDK correctly installed and the JAVA_HOME environment variable set, JMeter should be installed successfully.</p> +</subsection> </section> <section name="2.4 Running JMeter" anchor="running"> @@ -98,31 +102,32 @@ the commands contained in jmeter.bat/jmeter. If this is the case, you will need to rewrite the jmeter.bat/jmeter file to explicitly include all JAR files that are located in JMeter's "lib" directory in the JMeter classpath.</p> -</section> -<section name="2.4.1 JMeter's Classpath" anchor="classpath"> + +<subsection name="2.4.1 JMeter's Classpath" anchor="classpath"> <p>The jmeter.bat/jmeter file automatically adds all JAR files that are located in JMeter's "lib" -directory to JMeter's classpath. If you want to add other JAR files to JMeter's classpath, then +directory to JMeter's classpath. If you want to add other JAR files to JMeter's classpath, then you must copy them to JMeter's "lib" directory.</p> -</section> +</subsection> -<section name="2.4.2 Using a Proxy Server" anchor="proxy_server"> +<subsection name="2.4.2 Using a Proxy Server" anchor="proxy_server"> <p>If you are testing from behind a firewall/proxy server, you may need to provide JMeter with -the firewall/proxy server hostname and port number. To do so, run the jmeter.bat/jmeter file +the firewall/proxy server hostname and port number. To do so, run the jmeter.bat/jmeter file from a command line with the following parameters:</p> <p>-h [proxy server hostname or ip address]<br/> -p [proxy server port]</p> <p><b>Example</b>: jmeter -h my.proxy.server -p 8000</p> -</section> +</subsection> -<section name="2.4.3 Non-GUI Mode" anchor="non_gui"> -<p>For non-interactive testing, you may choose to run JMeter without the GUI. Run the +<subsection name="2.4.3 Non-GUI Mode" anchor="non_gui"> +<p>For non-interactive testing, you may choose to run JMeter without the GUI. Run the nongui.bat/nongui.sh script has one required parameter:</p> <p>-o [name of JMX file that contains the Test Plan].</p> <p>The script also lets you specify the optional firewall/proxy server information:</p> <p>-h [proxy server hostname or ip address]<br/> -p [proxy server port]</p> <p><b>Example</b>: nongui -o my_test.jmx -h my.proxy.server -p 8000</p> +</subsection> </section> </body> 1.9 +60 -65 jakarta-jmeter/xdocs/usermanual/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/index.xml,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- index.xml 21 Feb 2002 13:48:57 -0000 1.8 +++ index.xml 23 Feb 2002 03:47:56 -0000 1.9 @@ -10,8 +10,8 @@ <ul> <li><a href="intro.html">1. Introduction</a></li> <ul> - <li><a href="intro.html#history">1.1 History</a></li> - <li><a href="intro.html#future">1.2 The Future</a></li> + <li><a href="intro.html#history">1.1 History</a></li> + <li><a href="intro.html#future">1.2 The Future</a></li> </ul> <li><a href="get-started.html">2. Getting Started</a></li> <ul> @@ -47,78 +47,18 @@ <li><a href="build-test-plan.html#config_element">3.3 Configuring Tree Elements</a></li> <li><a href="build-test-plan.html#run">3.3 Running a Test Plan</a></li> </ul> - <li><a href="elements-test-plan.html">4. Elements of a Test Plan</a></li> + <li><a href="component_reference.html">4. Elements of a Test Plan</a></li> <ul> <li><a href="thread-group.html">4.1 Thread Group</a></li> <li><a href="controller.html">4.2 Controllers</a></li> <ul> <li><a href="gen-controller.html">4.2.1 Generative Controllers</a></li> - <ul> - <li><a href="gen-controller.html#ftp_request">4.2.1.1 FTP Request</a></li> - <li><a href="gen-controller.html#http_request">4.2.1.2 HTTP Request</a></li> - <li><a href="gen-controller.html#jdbc_request">4.2.1.3 JDBC Request</a></li> - </ul> <li><a href="logic-controller.html">4.2.2 Logic Controllers</a></li> - <ul> - <li><a href="logic-controller.html#interleave">4.2.2.1 Interleave Controller</a></li> - <li><a href="logic-controller.html#loop">4.2.2.2 Loop Controller</a></li> - <li><a href="logic-controller.html#mod_manager">4.2.2.3 Modification Manager</a></li> - <li><a href="logic-controller.html#once_only">4.2.2.4 Once Only Controller</a></li> - <li><a href="logic-controller.html#simple">4.2.2.5 Simple Controller</a></li> - </ul> </ul> <li><a href="listener.html">4.3 Listeners</a></li> - <ul> - <li><a href="listener.html#graph">4.3.1 Graphs</a></li> - <ul> - <li><a href="listener.html#view_graph_tree">4.3.1.1 View Graph Tree</a></li> - <li><a href="listener.html#graph_full_results">4.3.1.2 Graph Full Results</a></li> - <li><a href="listener.html#graph_results">4.3.1.3 Graph Results</a></li> - <li><a href="listener.html#spline">4.3.1.4 Spline Visualizer</a></li> - </ul> - <li><a href="listener.html#managers">4.3.2 Managers</a></li> - <ul> - <li><a href="listener.html#mod_manager">4.3.2.1 Modification Manager</a></li> - </ul> - <li><a href="listener.html#misc">4.3.3 Miscellaneous</a></li> - <ul> - <li><a href="listener.html#assertion_results">4.3.3.1 Assertion Results</a></li> - <li><a href="listener.html#file_reporter">4.3.3.2 File Reporter</a></li> - <li><a href="listener.html#view_results">4.3.3.3 View Results</a></li> - <li><a href="listener.html#view_results_tree">4.3.3.4 View Result Tree</a></li> - </ul> - </ul> <li><a href="timer.html">4.4 Timers</a></li> - <ul> - <li><a href="timer.html#constant">4.4.1 Constant Timer</a></li> - <li><a href="timer.html#gaussian">4.4.2 Gaussian Random Timer</a></li> - <li><a href="timer.html#uniform">4.4.3 Uniform Random Timer</a></li> - </ul> - <li><a href="assertion.html">4.5 Assertions</a></li> - - <li><a href="ftp-config.html">4.6 FTP Configuration Elements</a></li> - <ul> - <li><a href="ftp-config.html#request_defaults">4.6.1 FTP Request Defaults</a></li> - </ul> - - <li><a href="http-config.html">4.7 HTTP Configuration Elements</a></li> - <ul> - <li><a href="http-config.html#auth_manager">4.7.1 HTTP Authorization Manager</a></li> - <li><a href="http-config.html#cookie_manager">4.7.2 HTTP Cookie Manager</a></li> - <li><a href="http-config.html#header_manager">4.7.3 HTTP Header Manager</a></li> - <li><a href="http-config.html#proxy_server">4.7.4 HTTP Proxy Server</a></li> - <li><a href="http-config.html#request_defaults">4.7.5 HTTP Request Defaults</a></li> - </ul> - - <li><a href="jdbc-config.html">4.8 JDBC Configuration Elements</a></li> - <ul> - <li><a href="jdbc-config.html#conn_pool">4.8.1 JDBC Database Connection Pool Defaults</a></li> - <li><a href="jdbc-config.html#login">4.8.2 JDBC Database Login Defaults</a></li> - <li><a href="jdbc-config.html#sql_query">4.8.3 JDBC SQL Query Defaults</a></li> - </ul> - </ul> - + </ul> <li><a href="build-web-test-plan.html">5. Building a Web Test Plan</a></li> <ul> <li><a href="build-web-test-plan.htm#adding_users">5.1 Adding Users</a></li> @@ -128,7 +68,6 @@ <li><a href="build-web-test-plan.html#saving">5.5 Saving the Test Plan</a></li> <li><a href="build-web-test-plan.html#running">5.6 Running the Test Plan</a></li> </ul> - <li><a href="build-adv-web-test-plan.html">6. Building an Advanced Web Test Plan</a></li> <li><a href="build-db-test-plan.html">7. Building a Database Test Plan</a></li> <li><a href="build-ftp-test-plan.html">8. Building a FTP Test Plan</a></li> @@ -140,7 +79,63 @@ <li><a href="best-practices.html#put_auth_manager">10.3 [HTTP] Where to Put the Authorization Manager</a></li> </ul> <li><a href="boss.html">11. Help! My boss wants me to load test our web app!</a></li> + <li><a href="component_reference.html">12. Component Reference</a></li> + <ul> + <li><a href="component_reference.html#generative_controllers">12.1 Generative Controllers</a></li> + <ul> + <li><a href="component_reference.html#ftp_request">12.1.1 FTP Request</a></li> + <li><a href="component_reference.html#http_request">12.1.2 HTTP Request</a></li> + <li><a href="component_reference.html#jdbc_request">12.1.3 JDBC Request</a></li> + </ul> + <li><a href="component_reference.html#logic_controllers">12.2 Logic Controllers</a></li> + <ul> + <li><a href="component_reference.html#interleave_controller">12.2.1 Interleave Controller</a></li> + <li><a href="component_reference.html#loop_controller">12.2.2 Loop Controller</a></li> + <li><a href="component_reference.html#mod_manager">12.2.3 Modification Manager</a></li> + <li><a href="component_reference.html#once_only_controller">12.2.4 Once Only Controller</a></li> + <li><a href="component_reference.html#simple_controller">12.2.5 Simple Controller</a></li> + </ul> + <li><a href="component_reference.html#listeners">12.3 Listeners</a></li> + <ul> + <li><a href="component_reference.html#view_graph_tree">12.3.1 View Graph Tree</a></li> + <li><a href="component_reference.html#graph_full_results">12.3.2 Graph Full Results</a></li> + <li><a href="component_reference.html#graph_results">12.3.3 Graph Results</a></li> + <li><a href="component_reference.html#spline">12.3.4 Spline Visualizer</a></li> + <li><a href="component_reference.html#assertion_results">12.3.1 Assertion Results</a></li> + <li><a href="component_reference.html#file_reporter">12.3.2 File Reporter</a></li> + <li><a href="component_reference.html#view_results">12.3.3 View Results</a></li> + <li><a href="component_reference.html#view_results_tree">12.3.4 View Result Tree</a></li> + </ul> + <li><a href="component_reference.html#config_elements">12.4 Configuration Elements</a></li> + <ul> + <li><a href="component_reference.html">12.4.1 HTTP Configuration Elements</a></li> + <ul> + <li><a href="component_reference.html#auth_manager">12.4.1.1 HTTP Authorization Manager</a></li> + <li><a href="component_reference.html#cookie_manager">12.4.1.2 HTTP Cookie Manager</a></li> + <li><a href="component_reference.html#header_manager">12.4.1.3 HTTP Header Manager</a></li> + <li><a href="component_reference.html#proxy_server">12.4.1.4 HTTP Proxy Server</a></li> + <li><a href="component_reference.html#http_default_request">12.4.1.5 HTTP Request Defaults</a></li> + </ul> + <li><a href="component_reference.html">12.4.2 FTP Configuration Elements</a></li> + <ul> + <li><a href="component_reference.html#request_defaults">12.4.2.1 FTP Request Defaults</a></li> + </ul> + <li><a href="component_reference.html">12.4.3 JDBC Configuration Elements</a></li> + <ul> + <li><a href="component_reference.html#conn_pool">12.4.3.1 JDBC Database Connection Pool Defaults</a></li> + <li><a href="component_reference.html#login">12.4.3.2 JDBC Database Login Defaults</a></li> + <li><a href="component_reference.html#sql_query">12.4.3.3 JDBC SQL Query Defaults</a></li> + </ul> + </ul> + <li><a href="component_reference.html#assertions">12.5 Assertions</a></li> + <li><a href="component_reference.html#timers">12.6 Timers</a></li> + <ul> + <li><a href="component_reference.html#constant">12.6.1 Constant Timer</a></li> + <li><a href="component_reference.html#gaussian">12.6.2 Gaussian Random Timer</a></li> + <li><a href="component_reference.html#uniform">12.6.3 Uniform Random Timer</a></li> + </ul> + </ul> <li><a href="glossary.html">13. Glossary</a></li> </ul> 1.2 +13 -63 jakarta-jmeter/xdocs/usermanual/listener.xml Index: listener.xml =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/listener.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- listener.xml 14 Nov 2001 14:54:22 -0000 1.1 +++ listener.xml 23 Feb 2002 03:47:56 -0000 1.2 @@ -8,73 +8,23 @@ <body> <section name="4.3 Listeners"> -<p>Put description text here...</p> -</section> - -<section name="4.3.1 Graphs"> -<p>Put description text here...</p> -</section> - -<section name="4.3.1.1 View Graph Tree"> -<p>Put description text here...</p> -</section> - -<section name="4.3.1.2 Graph Full Results"> -<p>Put description text here...</p> -<p> -<img src="../images/screenshots/graph_full_results.gif" width="453" height="237" alt="Graph Full Results"></img> -</p> -</section> - -<section name="4.3.1.3 Graph Results"> -<p>Put description text here...</p> -</section> - -<section name="4.3.1.4 Spline Visualizer"> -<p>Put description text here...</p> -</section> +<p>Listeners provide access to the information JMeter gathers about the test cases while +JMeter runs. The simplest listener, the <a href="component_reference.html#graph_results">Graph +Results</a> listener plots the response times on a graph. Listeners usually provide a +graphical view of the data that JMeter generates.</p> + +<p>An exception to this is the <a href="component_reference.html#file_reporter">File +Reporter</a>, which, as you might expect, logs the result data to a file. </p> + +<p>Listeners can only be added to a Thread Group, and they only collect information +specific to that Thread Group. If you have 3 Thread Groups and a listener attached to +each one, those three listeners will show three different sets of data. </p> -<section name="4.3.2 Managers"> -<p>Put description text here...</p> +<p>There are several <a href="component_reference.html#listeners">interesting listeners</a> +that come with JMeter.</p> </section> -<section name="4.3.2.1 Modification Manager"> -<p>Put description text here...</p> -<p>This element has no visual elements.</p> -</section> - - -<section name="4.3.3 Miscellaneous"> -<p>Put description text here...</p> -</section> - -<section name="4.3.3.1 Assertion Results"> -<p>Put description text here...</p> -<p> -<img src="../images/screenshots/assertion_results.gif" width="475" height="273" alt="Assertion Results"></img> -</p> -</section> -<section name="4.3.3.2 File Reporter"> -<p>Put description text here...</p> -<p> -<img src="../images/screenshots/file_reporter.gif" width="390" height="317" alt="File Reporter"></img> -</p> -</section> - -<section name="4.3.3.3 View Results"> -<p>Put description text here...</p> -<p> -<img src="../images/screenshots/view_results.gif" width="446" height="352" alt="View Results"></img> -</p> -</section> - -<section name="4.3.3.4 View Result Tree"> -<p>Put description text here...</p> -<p> -<img src="../images/screenshots/view_result_tree.gif" width="490" height="210" alt="View Result Tree"></img> -</p> -</section> </body> </document> 1.6 +72 -157 jakarta-jmeter/xdocs/usermanual/logic-controller.xml Index: logic-controller.xml =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/logic-controller.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- logic-controller.xml 20 Feb 2002 13:40:27 -0000 1.5 +++ logic-controller.xml 23 Feb 2002 03:47:56 -0000 1.6 @@ -8,174 +8,89 @@ <body> <section name="4.2.2 Logic Controllers" anchor="logic_controller"> -<p>Logic Controllers let you customize the logic that JMeter uses to -decide when to send requests. JMeter currently has five such controllers: -<ul> - <li><b>Interleave Controller</b> <br></br>Alternates among each of the other controllers for each loop iteration.</li> - - <li><b>Loop Controller</b> <br></br>Repeats a controller a certain number of times.</li> - - <li><b>Modification Manager</b> <br></br>Parses the results of a previous -request, and use them to dynamically create the next request.</li> - - <li><b>Once Only Controller</b> <br></br>Processes a a controller only the first time.</li> - - <li><b>Simple Controller</b> <br></br>Organizes your other controllers.</li> -</ul> +<p>Logic Controllers let you customize the logic that JMeter uses to +decide when to send requests. Logic Controllers may have as child elements any +of the following: Generative Controllers (requests), Configuration Elements, and other Logic +Controllers. Logic Controllers can change the order of requests coming from their +child elements. They can modify the requests themselves, cause JMeter to repeat +requests, etc. </p> -<p>You can add Generative Controllers (requests), Configuration Elements, and even -other Logic Controllers to a Logic Controller. </p> -</section> +<p>To understand the effect of Logic Controllers on a test plan, consider the +following test tree:</p> -<section name="4.2.2.1 Interleave Controller" anchor="interleave"> -<p>If you add Generative or Logic Controllers to an Interleave Controller, JMeter will alternate among each of the -other controllers for each loop iteration. </p> - -<p><b>Control Panel</b></p> -<p><img src="../images/screenshots/logic-controller/interleave-controller.gif" width="390" height="62"></img> -<br>Figure 1- Interleave Controller Control Panel</br></p> -<p>Properties: +<p> <ul> - <li>Name - Descriptive name for this controller that is shown in the tree. </li> +<li>Test Plan</li> + <ul> + <li>Thread Group</li> + <ul> + <li>Once Only Controller</li> + <ul> + <li>Login Request (an <a href="component_reference.html#http_request">HTTP Generative Controller</a>)</li> + </ul> + <li>Load Search Page (HTTP Generative Controller)</li> + <li>Interleave Controller</li> + <ul> + <li>Search "A" (HTTP Generative Controller)</li> + <li>Search "B" (HTTP Generative Controller)</li> + <li>HTTP default request (Configuration Element)</li> + </ul> + <li>HTTP default request (Configuration Element)</li> + <li>Cookie Manager (Configuration Element)</li> + </ul> + </ul> </ul> </p> -<!-- -For example, if you -add three HTTP Requests to an Interleave Controller and configure the Thread -Group to loop, here is the sequence in which JMeter sends the requests: -</p> -<table border="1" cellspacing="0" cellpadding="4"> -<tr valign="top"><td>Loop Iteration</td><td>Description</td></tr> -<tr valign="top"><td>1</td><td>JMeter sends the first HTTP Request.</td></tr> -<tr valign="top"><td>2</td><td>JMeter sends the second HTTP Request.</td></tr> -<tr valign="top"><td>3</td><td>JMeter sends the third HTTP Request.</td></tr> -<tr valign="top"><td>4</td><td>Because there are no more requests in controller, JMeter start over and sends the first HTTP Request.</td></tr> -<tr valign="top"><td>5</td><td>JMeter sends the second HTTP Request.</td></tr> -<tr valign="top"><td>(and so on)</td><td>...</td></tr> -</table> ---> -<p><b>Example</b></p> - -<p><a href="../demos/InterleaveTestPlan.jmx">Download</a> this example (see Figure 2). In this example, -we configured the Thread Group to have two threads and a loop count of five, for a total of ten -requests. See the table below for the sequence JMeter sends the HTTP Requests.</p> - -<table border="1" cellspacing="0" cellpadding="4"> -<tr valign="top"><td>Loop Iteration</td><td>Each JMeter Thread Sends These HTTP Requests</td></tr> -<tr valign="top"><td>1</td><td>News Page</td></tr> -<tr valign="top"><td>2</td><td>FAQ Page</td></tr> -<tr valign="top"><td>3</td><td>Gump Page</td></tr> -<tr valign="top"><td>4</td><td>Because there are no more requests in controller, JMeter start over and sends the first HTTP Request, which is the News Page.</td></tr> -<tr valign="top"><td>5</td><td>FAQ Page</td></tr> -</table> - -<p>Note, the File Reporter is configured to store the results in a file named -"interleave-test.dat" in the current directory.</p> - -<p><img src="../images/screenshots/logic-controller/interleave.gif" width="368" height="210"></img> -<br>Figure 2 - Interleave Controller Example 1</br></p> - -<p><b>Example</b></p> - -<p><a href="../demos/InterleaveTestPlan2.jmx">Download</a> another example (see Figure 3). In this -example, we configured the Thread Group -to have a single thread and a loop count of eight. Notice that the Test Plan has an outer Interleave Controller with -two Interleave Controllers inside of it.</p> - -<p>The outer Interleave Controller alternates between the -two inner ones. Then, each inner Interleave Controller alternates between each of the HTTP Requests. Each JMeter -thread will send the requests in the following order: Home Page, Bug Page, CVS Page, and FAQ Page. -Note, the File Reporter is configured to store the results in a file named "interleave-test2.dat" in the current directory.</p> -<p><img src="../images/screenshots/logic-controller/interleave2.gif" width="368" height="262"></img> -<br>Figure 3 - Interleave Controller Example 2</br></p> +<p>The first thing about this test is that the login request will be executed only +the first time through. Subsequent iterations will skip it. This is due to the +effects of the <a href="component_referenct.html#once_only_controller">Once Only Controller</a>.</p> + +<p>After the login, the next Generative Controller loads the search page (imagine a +web application where the user logs in, and then goes to a search page to do a search). This +is just a simple request, not filtered through any Logic Controller.</p> + +<p>After loading the search page, we want to do a search. Actually, we want to do +two different searches. However, we want to re-load the search page itself between +each search. We could do this by having 4 simple HTTP request elements (load search, +search "A", load search, search "B"). Instead, we use the <a href="component_reference.html#interleave_controller">Interleave +Controller</a> which passes on one child request each time through the test. It keeps the +ordering (ie - it doesn't pass one on at random, but "remembers" its place) of its +child elements. Interleaving 2 child requests may be overkill, but there could easily have +been 8, or 20 child requests.</p> + +<p>Note the <a href="component_reference.html#http_default_request">HTTP default request</a> that +belongs to the Interleave Controller. Imagine that "Search A" and "Search B" share +the same PATH info (an HTTP request specification includes domain, port, method, protocol, +path, and arguments, plus other optional items). This makes sense - both are search requests, + hitting the same back-end search engine (a servlet or cgi-script, let's say). Rather than + configure both HTTP Generative Controllers with the same information in their PATH field, we + can abstract that information out to a single Configuration Element. When the Interleave + Controller "passes on" requests from "Search A" or "Search B", it will fill in the blanks with + values from the HTTP default request Configuration Element. So, we leave the PATH field + blank for those requests, and put that information into the Configuration Element. In this +case, this is a minor benefit at best, but it demonstrates the feature.</p> + +<p>The next element in the tree is another HTTP default request, this time added to the +Thread Group itself. The Thread Group has a built-in Logic Controller, and thus, it uses +this Configuration Element exactly as described above. It fills in the blanks of any +Request that passes through. It is extremely useful in web testing to leave the DOMAIN +field blank in all your HTTP Generative Controller elements, and instead, put that information +into an HTTP default request element, added to the Thread Group. By doing so, you can +test your application on a different server simply by changing one field in your Test Plan. +Otherwise, you'd have to edit each and every Generative Controller.</p> + +<p>The last element is a <a href="component_reference.html#cookie_manager">Cookie +Manager</a>. A Cookie Manager should be added to all web tests - otherwise JMeter will +ignore cookies. By adding it at the Thread Group level, we ensure that all HTTP requests +will share the same cookies.</p> +<p>Logic Controllers can be combined to achieve various results. See the list of <a href="component_reference.html#logic_controllers">built-in +Logic Controllers</a>.</p> </section> -<section name="4.2.2.2 Loop Controller" anchor="loop"> -<p>If you add Generative or Logic Controllers to a Loop Controller, JMeter will -loop through them a certain number of times, in addition to the loop value you -specified for the Thread Group. For example, if you add one HTTP Request to a -Loop Controller with a loop count of two, and configure the Thread Group loop -count to three, JMeter will send a total of 2 * 3 = 6 HTTP Requests. -</p> -<p><b>Control Panel</b></p> -<p><img src="../images/screenshots/logic-controller/loop-controller.gif" width="397" height="111"></img> -<br>Figure 4 - Loop Controller Control Panel</br></p> - -<p><b>Example</b></p> -<p><a href="../demos/LoopTestPlan.jmx">Download</a> this example (see Figure 5). -In this example, we created a Test Plan that sends a particular HTTP Request -only once and sends another HTTP Request five times.</p> -<p>We configured the Thread Group for a single thread and a loop count value of -one. Instead of letting the Thread Group control the looping, we used a Loop -Controller. You can see that we added one HTTP Request to the Thread Group and -another HTTP Request to a Loop Controller. We configured the Loop Controller -with a loop count value of five.</p> - -<p>JMeter will send the requests in the following order: Home Page, News Page, -News Page, News Page, News Page, and News Page. Note, the File Reporter -is configured to store the results in a file named "loop-test.dat" in the current directory.</p> -<p><img src="../images/screenshots/logic-controller/loop-example.gif" width="368" height="185"></img> -<br>Figure 5 - Loop Controller Example</br></p> - -</section> - -<section name="4.2.2.3 Modification Manager" anchor="mod_manager"> -<p>Put description text here...</p> -<p>This element has no visual elements.</p> -</section> - -<section name="4.2.2.4 Once Only Controller" anchor="once_only"> -<p>The Once Only Logic Controller tells JMeter to process the controller(s) inside it only once, regardless of the loop -count value you specify in the Thread Group or Loop Controller.</p> - -<p>For testing that requires a login, consider placing the login request in this controller since each thread only needs -to login once to establish a session.</p> - -<p><b>Control Panel</b></p> -<p><img src="../images/screenshots/logic-controller/once-only-controller.gif" width="390" height="62"></img> -<br>Figure x - Once Only Controller Control Panel</br></p> - -<p><b>Example</b></p> -<p><a href="../demos/OnceOnlyTestPlan.jmx">Download</a> this example (see Figure x). -In this example, we created a Test Plan that has two threads that send HTTP request. -Each thread sends one request to the Home Page, followed by three requests to the Bug Page. -Although we configured the Thread Group to iterate three times, each JMeter thread only -sends one request to the Home Page because this request lives inside a Once Only Controller.</p> - -<p>Each JMeter thread will send the requests in the following order: Home Page, Bug Page, -Bug Page, Bug Page. Note, the File Reporter is configured to store the results in a file named "loop-test.dat" in the current directory.</p> - -<p><img src="../images/screenshots/logic-controller/once-only-example.gif" width="368" height="190"></img> -<br>Figure x. Once Only Controller Example</br></p> -</section> - -<section name="4.2.2.5 Simple Controller" anchor="simple"> - -<p>The Simple Logic Controller lets you organize your Generative Controllers and other -Logic Controllers. Unlike other Logic Controllers, this controller provides no functionality beyond that of a -storage device.</p> - -<p><b>Control Panel</b></p> -<p><img src="../images/screenshots/logic-controller/simple-controller.gif" width="390" height="62"></img> -<br>Figure x. Simple Controller Control Panel</br></p> - -<p><b>Example</b></p> -<p><a href="../demos/SimpleTestPlan.jmx">Download</a> this example (see Figure x). -In this example, we created a Test Plan that sends two Ant HTTP requests and two -Log4J HTTP requests. We grouped the Ant and Log4J requests by placing them inside -Simple Logic Controllers. Remember, the Simple Logic Controller has no effect on how JMeter -processes the controller(s) you add to it. So, in this example, JMeter sends the requests in the -following order: Ant Home Page, Ant News Page, Log4J Home Page, Log4J History Page. -Note, the File Reporter -is configured to store the results in a file named "simple-test.dat" in the current directory.</p> - -<p><img src="../images/screenshots/logic-controller/simple-example.gif" width="368" height="245"></img> -<br>Figure x Simple Controller Example</br></p> -</section> </body> </document> 1.3 +4 -4 jakarta-jmeter/xdocs/usermanual/thread-group.xml Index: thread-group.xml =================================================================== RCS file: /home/cvs/jakarta-jmeter/xdocs/usermanual/thread-group.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- thread-group.xml 21 Feb 2002 13:43:07 -0000 1.2 +++ thread-group.xml 23 Feb 2002 03:47:56 -0000 1.3 @@ -12,16 +12,16 @@ of a test plan must be under a thread group. As the name implies, the thread group element controls the number of threads JMeter will use to execute your test. The controls for a thread group allow you to: -<ul><li> set the number of threads</li> +<ul><li>Set the number of threads</li> <li>Set the ramp-up period</li> <li>Set the number of times to execute the test</li> </ul></p> -<p>Each thread will execute the test plan in its entirety, and completely independent -of other test threads. Using multiple threads is used to simulate concurrent connections +<p>Each thread will execute the test plan in its entirety and completely independent +of other test threads. Multiple threads are used to simulate concurrent connections to your server application.</p> -<p>The ramp-up period tells JMeter how slowly to "ramp-up" to the full number of +<p>The ramp-up period tells JMeter how long to take to "ramp-up" to the full number of threads chosen. If 10 threads are used, and the ramp-up period is 100 seconds, then JMeter will take 100 seconds to get all 10 threads up and running. Each thread will start 10 (100/10) seconds after the previous thread was begun. If there are 30 threads
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>