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
  -        &nbsp;
  -        #end
  -    </font>
  +      <font color="#000000" size="-1" face="arial,helvetica,sanserif">
  +               #if ($value.getText().length() != 0 || $value.hasChildren())
  +               $xmlout.outputString($value, true)
  +               #else
  +               &nbsp;
  +               #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
  -        &nbsp;
  -        #end
  -    </font>
  +      <font color="#000000" size="-1" face="arial,helvetica,sanserif">
  +               #if ($value.getText().length() != 0 || $value.hasChildren())
  +               $xmlout.outputString($value, true)
  +               #else
  +               &nbsp;
  +               #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 &#169; 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 &#169; 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 &#169; 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 &#169; 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]>

Reply via email to