mstover1    01/03/15 05:18:38

  Modified:    docs     bugs.html changes.html contributing.html
                        extending.html how_to_use_jmeter.html
                        httpsamplercontroller.html index.html
                        installing.html jdbcsamplercontroller.html
                        todo.html
               src/org/apache/jmeter/control GenericController.java
               src/org/apache/jmeter/gui/action AddToTree.java
               xdocs    index.xml
               xdocs/stylesheets project.xml
  Added:       src/org/apache/jmeter/control InterleaveControl.java
               xdocs/user_manual index.xml test_samples.xml
                        threadgroups.xml
  Log:
  Fixed minor bugs, updating documentation
  
  Revision  Changes    Path
  1.7       +1 -1      jakarta-jmeter/docs/bugs.html
  
  Index: bugs.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/bugs.html,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- bugs.html 2001/03/12 23:57:38     1.6
  +++ bugs.html 2001/03/15 13:18:33     1.7
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.20      +1 -1      jakarta-jmeter/docs/changes.html
  
  Index: changes.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/changes.html,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- changes.html      2001/03/12 23:57:38     1.19
  +++ changes.html      2001/03/15 13:18:33     1.20
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.9       +1 -1      jakarta-jmeter/docs/contributing.html
  
  Index: contributing.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/contributing.html,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- contributing.html 2001/03/12 23:57:39     1.8
  +++ contributing.html 2001/03/15 13:18:33     1.9
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.10      +1 -1      jakarta-jmeter/docs/extending.html
  
  Index: extending.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/extending.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- extending.html    2001/03/12 23:57:39     1.9
  +++ extending.html    2001/03/15 13:18:33     1.10
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.12      +1 -1      jakarta-jmeter/docs/how_to_use_jmeter.html
  
  Index: how_to_use_jmeter.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/how_to_use_jmeter.html,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- how_to_use_jmeter.html    2001/03/12 23:57:39     1.11
  +++ how_to_use_jmeter.html    2001/03/15 13:18:33     1.12
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.10      +1 -1      jakarta-jmeter/docs/httpsamplercontroller.html
  
  Index: httpsamplercontroller.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/httpsamplercontroller.html,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- httpsamplercontroller.html        2001/03/12 23:57:39     1.9
  +++ httpsamplercontroller.html        2001/03/15 13:18:33     1.10
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.21      +13 -39    jakarta-jmeter/docs/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/index.html,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- index.html        2001/03/12 23:57:39     1.20
  +++ index.html        2001/03/15 13:18:33     1.21
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  @@ -77,16 +77,16 @@
         <tr><td>
           <blockquote>
                                       <p>
  -<b>Apache JMeter</b> is a 100% pure Java desktop application designed to load test 
functional 
  -behavior and measure performance.  It was originally designed for testing Web 
Applications but has 
  +<b>Apache JMeter</b> is a 100% pure Java desktop application designed to load test 
functional
  +behavior and measure performance.  It was originally designed for testing Web 
Applications but has
   since expanded to other test functions.
   </p>
                                                   <h2>What can I do with it?</h2>
                                                   <p>
   Apache JMeter may be used to test performance both on static and dynamic
     resources (files or CGI, Servlets, Perl scripts, Java Objects). It may well be 
used to simulate a heavy
  -    load on a server, network or object to test its strength or to analyse overall 
performance under
  -    different load types. You can use it to make a graphical analysis of 
performance or to
  +      load on a server, network or object to test its strength or to analyse 
overall performance under
  +      different load types. You can use it to make a graphical analysis of 
performance or to
     test your server/script/object behavior under heavy concurrent load.</p>
                                                   <p>
   <a HREF="how_to_use_jmeter.html">Using JMeter</a>
  @@ -94,40 +94,14 @@
                                                   <h2>What does it do?</h2>
                                                   <p>Apache JMeter features 
include:</p>
                                                   <ul>
  -    <li>Complete portability and <b>100% Java purity</b>.</li>
  -    <li>Full <b>Swing</b> and lightweight component support (precompiled JAR uses 
packages <code>javax.swing.*</code>).</li>
  -    <li>Pluggable Samplers allow unlimited testing capabilities.</li>
  -    <li>Full <b>multithreading</b> framework allows concurrent sampling by many 
threads and simultaneous sampling of different functions by seperate thread 
groups.</li>
  -    <li>Several load statistics may be choosen with <b>pluggable timers</b>.</li>
  -    <li>Data analisys and <b>visualisation plugins</b> allow great extendibility as 
well as
  -      personalization.</li>
  -    <li>Careful <b>GUI</b> design allows faster operation and more precise 
timings.</li>
  -  </ul>
  -                                                <p>
  -Here you find all the information you need to use, understand and enhance Apache 
JMeter.
  -</p>
  -                                                <ul>
  -    <li><a HREF="license.html">Public license</a></li>
  -    <li><a href="dist">Download</a></li>
  -    <li><a HREF="installing.html">Installation</a></li>
  -    <ul>
  -      <li><a HREF="installing.html#requirements">System requirements</a></li>
  -      <li><a HREF="installing.html#installing">Installing Apache JMeter</a></li>
  -    </ul>
  -    <li><a HREF="running.html">Running Apache JMeter</a></li>
  -    <ul>
  -      <li><a HREF="running.html#scripts">Using system wrappers</a></li>
  -      <li><a HREF="running.html#command">From the command line</a></li>
  -    </ul>
  -    <li><a HREF="how_to_use_jmeter.html">Using JMeter</a></li>
  -    <li>
  -      <a HREF="extending.html">Extending/Customizing JMeter for your needs</a>
  -    </li>
  -    <li><a HREF="api/index.html">Code documentation (javadoc)</a></li>
  -    <li><a HREF="changes.html">Changes history</a></li>
  -    <li><a href="bugs.html">Known bugs</a></li>
  -    <li><a href="todo.html">Wish and Todo List</a></li>
  -    <li><a HREF="contributing.html">How to contribute</a></li>
  +      <li>Complete portability and <b>100% Java purity</b>.</li>
  +      <li>Full <b>Swing</b> and lightweight component support (precompiled JAR uses 
packages <code>javax.swing.*</code>).</li>
  +      <li>Pluggable Samplers allow unlimited testing capabilities.</li>
  +      <li>Full <b>multithreading</b> framework allows concurrent sampling by many 
threads and simultaneous sampling of different functions by seperate thread 
groups.</li>
  +      <li>Several load statistics may be choosen with <b>pluggable timers</b>.</li>
  +      <li>Data analisys and <b>visualisation plugins</b> allow great extendibility 
as well as
  +             personalization.</li>
  +      <li>Careful <b>GUI</b> design allows faster operation and more precise 
timings.</li>
     </ul>
                               </blockquote>
         </td></tr>
  
  
  
  1.15      +1 -1      jakarta-jmeter/docs/installing.html
  
  Index: installing.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/installing.html,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- installing.html   2001/03/12 23:57:39     1.14
  +++ installing.html   2001/03/15 13:18:34     1.15
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.5       +1 -1      jakarta-jmeter/docs/jdbcsamplercontroller.html
  
  Index: jdbcsamplercontroller.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/jdbcsamplercontroller.html,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- jdbcsamplercontroller.html        2001/03/12 23:57:39     1.4
  +++ jdbcsamplercontroller.html        2001/03/15 13:18:35     1.5
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.9       +1 -1      jakarta-jmeter/docs/todo.html
  
  Index: todo.html
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/docs/todo.html,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- todo.html 2001/03/12 23:57:39     1.8
  +++ todo.html 2001/03/15 13:18:35     1.9
  @@ -38,7 +38,7 @@
           <ul>
                       <li>    <a href="./index.html">Overview</a>
   </li>
  -                    <li>    <a href="./how_to_use_jmeter.html">Usage</a>
  +                    <li>    <a href="./user_manual/index.html">Usage</a>
   </li>
                       <li>    <a 
href="http://jakarta.apache.org/builds/jakarta-jmeter/">Download</a>
   </li>
  
  
  
  1.9       +178 -65   
jakarta-jmeter/src/org/apache/jmeter/control/GenericController.java
  
  Index: GenericController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/GenericController.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- GenericController.java    2001/03/13 03:23:46     1.8
  +++ GenericController.java    2001/03/15 13:18:37     1.9
  @@ -1,95 +1,168 @@
  +/*
  + * ====================================================================
  + * The Apache Software License, Version 1.1
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + * notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + * notice, this list of conditions and the following disclaimer in
  + * the documentation and/or other materials provided with the
  + * distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + * if any, must include the following acknowledgment:
  + * "This product includes software developed by the
  + * Apache Software Foundation (http://www.apache.org/)."
  + * Alternately, this acknowledgment may appear in the software itself,
  + * if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache" and "Apache Software Foundation" and
  + * "Apache JMeter" must not be used to endorse or promote products
  + * derived from this software without prior written permission. For
  + * written permission, please contact [EMAIL PROTECTED]
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + * "Apache JMeter", nor may "Apache" appear in their name, without
  + * prior written permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.jmeter.control;
   import java.util.*;
  -import org.apache.jmeter.samplers.SampleResult;
   import org.apache.jmeter.config.ConfigElement;
  -import org.apache.jmeter.samplers.*;
   import org.apache.jmeter.gui.*;
  +import org.apache.jmeter.samplers.*;
  +import org.apache.jmeter.samplers.SampleResult;
   import org.apache.jmeter.save.Saveable;
   
   /************************************************************
    *  Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
    *
    *@author     Michael Stover
  - *@created    $Date: 2001/03/13 03:23:46 $
  + *@created    $Date: 2001/03/15 13:18:37 $
    *@version    1.0
    ***********************************************************/
   
  -public class GenericController implements 
SamplerController,JMeterComponentModel,Saveable
  +public class GenericController implements SamplerController, JMeterComponentModel, 
Saveable
   {
        protected List subControllers = new LinkedList();
        protected SamplerController current;
  -     private List configs = new LinkedList();
        protected Iterator controlIt;
  +     private List configs = new LinkedList();
        private boolean returnedNull = false;
        private boolean done = false, timeForNext = false;
        private String name;
   
        private static List addableList = new LinkedList();
  -     static
  -     {
  -             addableList.add(MenuFactory.getControllerMenu());
  -             addableList.add(MenuFactory.getConfigElementMenu());
  -     }
   
        /************************************************************
         *  !ToDo (Constructor description)
         ***********************************************************/
        public GenericController()
  +     {
  +             name = getClassLabel();
  +     }
  +
  +     /************************************************************
  +      *  !ToDo (Method description)
  +      *
  +      *@param  name  !ToDo (Parameter description)
  +      ***********************************************************/
  +     public void setName(String name)
        {
  -             name=getClassLabel();
  +             this.name = name;
        }
   
  +     /************************************************************
  +      *  Gets the TagHandlerClass attribute of the GenericController object
  +      *
  +      *@return    The TagHandlerClass value
  +      ***********************************************************/
        public Class getTagHandlerClass()
        {
                return org.apache.jmeter.save.handlers.GenericControllerHandler.class;
        }
   
  +     /************************************************************
  +      *  Gets the ConfigElements attribute of the GenericController object
  +      *
  +      *@return    The ConfigElements value
  +      ***********************************************************/
        public List getConfigElements()
        {
                return configs;
        }
   
  +     /************************************************************
  +      *  Gets the SubControllers attribute of the GenericController object
  +      *
  +      *@return    The SubControllers value
  +      ***********************************************************/
        public List getSubControllers()
        {
                return subControllers;
        }
   
  -     public void uncompile()
  -     {
  -             subControllers.clear();
  -             configs.clear();
  -             current = null;
  -             controlIt = null;
  -             returnedNull = false;
  -             done = false;
  -             timeForNext = false;
  -     }
  -
        /************************************************************
  -      *  !ToDo (Method description)
  +      *  Gets the GuiClass attribute of the GenericController object
         *
  -      *@param  name  !ToDo (Parameter description)
  +      *@return    The GuiClass value
         ***********************************************************/
  -     public void setName(String name)
  -     {
  -             this.name = name;
  -     }
  -
        public Class getGuiClass()
        {
                return org.apache.jmeter.gui.NamePanel.class;
        }
   
  +     /************************************************************
  +      *  Gets the ClassLabel attribute of the GenericController object
  +      *
  +      *@return    The ClassLabel value
  +      ***********************************************************/
        public String getClassLabel()
        {
                return "Default Controller";
        }
   
  +     /************************************************************
  +      *  Gets the Editable attribute of the GenericController object
  +      *
  +      *@return    The Editable value
  +      ***********************************************************/
        public boolean isEditable()
        {
                return true;
        }
   
  +     /************************************************************
  +      *  Gets the AddList attribute of the GenericController object
  +      *
  +      *@return    The AddList value
  +      ***********************************************************/
        public Collection getAddList()
        {
                return addableList;
  @@ -114,7 +187,7 @@
        {
                Collection listeners = new LinkedList();
                Iterator iter = subControllers.iterator();
  -             while (iter.hasNext())
  +             while(iter.hasNext())
                {
                        SamplerController item = (SamplerController)iter.next();
                        listeners.addAll(item.getListeners());
  @@ -123,15 +196,24 @@
                return listeners;
        }
   
  -     protected void addSelfOrNot(Collection listeners)
  +     /************************************************************
  +      *  Description of the Method
  +      ***********************************************************/
  +     public void uncompile()
        {
  +             subControllers.clear();
  +             configs.clear();
  +             current = null;
  +             controlIt = null;
  +             returnedNull = false;
  +             done = false;
  +             timeForNext = false;
        }
   
        /************************************************************
         *  !ToDo (Method description)
         *
  -      *@return                       !ToDo (Return description)
  -      *@exception  NoEntryException  !ToDo (Exception description)
  +      *@return    !ToDo (Return description)
         ***********************************************************/
        public Entry nextEntry()
        {
  @@ -156,27 +238,7 @@
                return entry;
        }
   
  -     protected Entry removeFromIterator()
  -     {
  -             controlIt.remove();
  -             return endEntryCycle();
  -     }
   
  -     protected Entry endEntryCycle()
  -     {
  -             if(controlIt.hasNext())
  -             {
  -                     current = (SamplerController)controlIt.next();
  -             }
  -             else
  -             {
  -                     controlIt = null;
  -                     return new CycleEntry();
  -             }
  -             return nextEntry();
  -     }
  -
  -
        /************************************************************
         *  !ToDo (Method description)
         *
  @@ -215,16 +277,50 @@
        public Object clone()
        {
                GenericController control = new GenericController();
  -             Iterator iter = configs.iterator();
  -             while (iter.hasNext())
  -             {
  -                     control.addConfigElement((ConfigElement)iter.next());
  -             }
                standardCloneProc(control);
                return control;
        }
   
        /************************************************************
  +      *  Adds a feature to the SelfOrNot attribute of the GenericController object
  +      *
  +      *@param  listeners  The feature to be added to the SelfOrNot attribute
  +      ***********************************************************/
  +     protected void addSelfOrNot(Collection listeners)
  +     {
  +     }
  +
  +     /************************************************************
  +      *  Description of the Method
  +      *
  +      *@return    Description of the Returned Value
  +      ***********************************************************/
  +     protected Entry removeFromIterator()
  +     {
  +             controlIt.remove();
  +             return endEntryCycle();
  +     }
  +
  +     /************************************************************
  +      *  Description of the Method
  +      *
  +      *@return    Description of the Returned Value
  +      ***********************************************************/
  +     protected Entry endEntryCycle()
  +     {
  +             if(controlIt.hasNext())
  +             {
  +                     current = (SamplerController)controlIt.next();
  +             }
  +             else
  +             {
  +                     controlIt = null;
  +                     return new CycleEntry();
  +             }
  +             return nextEntry();
  +     }
  +
  +     /************************************************************
         *  !ToDo (Method description)
         *
         *@param  control  !ToDo (Parameter description)
  @@ -232,24 +328,30 @@
        protected void standardCloneProc(SamplerController control)
        {
                Iterator iter = this.getConfigElements().iterator();
  -             while (iter.hasNext()) {
  -                     control.addConfigElement((ConfigElement) iter.next());
  +             while(iter.hasNext())
  +             {
  +                     control.addConfigElement((ConfigElement)iter.next());
                }
                iter = subControllers.iterator();
  -             while (iter.hasNext())
  +             while(iter.hasNext())
                {
                        
control.addSamplerController((SamplerController)((SamplerController)iter.next()).clone());

                }
                control.setName(getName());
        }
   
  +     /************************************************************
  +      *  Description of the Method
  +      *
  +      *@return    Description of the Returned Value
  +      ***********************************************************/
        protected boolean init()
        {
   
  -             if (controlIt == null)
  +             if(controlIt == null)
                {
                        controlIt = subControllers.iterator();
  -                     if (controlIt.hasNext())
  +                     if(controlIt.hasNext())
                        {
                                current = (SamplerController)controlIt.next();
                        }
  @@ -261,15 +363,26 @@
                return true;
        }
   
  +     /************************************************************
  +      *  Adds a feature to the ConfigElements attribute of the GenericController
  +      *  object
  +      *
  +      *@param  entry  The feature to be added to the ConfigElements attribute
  +      ***********************************************************/
        protected void addConfigElements(Entry entry)
        {
  -             if (entry != null)
  +             if(entry != null)
                {
                        Iterator iter = configs.iterator();
  -                     while (iter.hasNext())
  +                     while(iter.hasNext())
                        {
                                entry.addConfigElement((ConfigElement)iter.next());
                        }
                }
  +     }
  +     static
  +     {
  +             addableList.add(MenuFactory.getControllerMenu());
  +             addableList.add(MenuFactory.getConfigElementMenu());
        }
   }
  
  
  
  1.1                  
jakarta-jmeter/src/org/apache/jmeter/control/InterleaveControl.java
  
  Index: InterleaveControl.java
  ===================================================================
  package org.apache.jmeter.control;
  
  import java.util.*;
  
  import org.apache.jmeter.samplers.*;
  import org.apache.jmeter.config.ConfigElement;
  
  /**
   * Title:
   * Description:
   * Copyright:    Copyright (c) 2001
   * Company:
   * @author Michael Stover
   * @version 1.0
   */
  
  public class InterleaveControl extends GenericController
  {
  
        public InterleaveControl()
        {
        }
  
        public String getClassLabel()
        {
                return "Interleave Logic";
        }
  
        /************************************************************
         *  !ToDo (Method description)
         *
         *@return                       !ToDo (Return description)
         *@exception  NoEntryException  !ToDo (Exception description)
         ***********************************************************/
        public Entry nextEntry()
        {
                Entry entry = null;
                if(!init())
                {
                        return null;
                }
                if(current == null)
                {
                        entry = new CycleEntry();
                }
                else
                {
                        entry = current.nextEntry();
                }
                if(entry == null)
                {
                        return removeFromIterator();
                }
                else if(entry instanceof CycleEntry)
                {
                        return endEntryCycle();
                }
                else
                {
                        addConfigElements(entry);
                }
                return entry;
        }
  
        protected boolean init()
        {
  
                if (controlIt == null)
                {
                        controlIt = subControllers.iterator();
                        if (controlIt.hasNext())
                        {
                                current = (SamplerController)controlIt.next();
                        }
                        else
                        {
                                return false;
                        }
                }
                else
                {
                        if(controlIt.hasNext())
                        {
                                current = (SamplerController)controlIt.next();
                        }
                        else
                        {
                                current = null;
                                controlIt = null;
                        }
                }
                return true;
        }
  
                /************************************************************
         *  !ToDo (Method description)
         *
         *@return    !ToDo (Return description)
         ***********************************************************/
        public Object clone()
        {
                InterleaveControl control = new InterleaveControl();
                Iterator iter = this.getConfigElements().iterator();
                while (iter.hasNext())
                {
                        control.addConfigElement((ConfigElement)iter.next());
                }
                standardCloneProc(control);
                return control;
        }
  }
  
  
  1.4       +24 -27    jakarta-jmeter/src/org/apache/jmeter/gui/action/AddToTree.java
  
  Index: AddToTree.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/AddToTree.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AddToTree.java    2001/03/07 12:45:31     1.3
  +++ AddToTree.java    2001/03/15 13:18:37     1.4
  @@ -6,7 +6,7 @@
    * companies.
    *
    * All rights reserved
  - * $Header: 
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/AddToTree.java,v 1.3 
2001/03/07 12:45:31 mstover1 Exp $
  + * $Header: 
/home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/AddToTree.java,v 1.4 
2001/03/15 13:18:37 mstover1 Exp $
    */
   package org.apache.jmeter.gui.action;
   import org.apache.jmeter.gui.*;
  @@ -21,42 +21,39 @@
    *  !ToDo (Class description)
    *
    *@author     $Author: mstover1 $
  - *@created    $Date: 2001/03/07 12:45:31 $
  - *@version    $Revision: 1.3 $
  + *@created    $Date: 2001/03/15 13:18:37 $
  + *@version    $Revision: 1.4 $
    */
   public class AddToTree implements Command
   {
  -     static Map allJMeterComponentCommands = null;
  +     private Map allJMeterComponentCommands;
   
        public AddToTree()
        {
  -             if(allJMeterComponentCommands == null || 
allJMeterComponentCommands.size() == 0)
  +             allJMeterComponentCommands = new HashMap();
  +             List classes;
  +             try
                {
  -                     allJMeterComponentCommands = new HashMap();
  -                     List classes;
  +                     classes = ClassFinder.findClassesThatExtend(
  +                                     new Class[]{JMeterComponentModel.class});
  +             }
  +             catch (Exception ex)
  +             {
  +                     ex.printStackTrace();
  +                     classes = new LinkedList();
  +             }
  +
  +             Iterator iter = classes.iterator();
  +             while (iter.hasNext())
  +             {
                        try
                        {
  -                             classes = ClassFinder.findClassesThatExtend(
  -                                             new 
Class[]{JMeterComponentModel.class});
  +                             JMeterComponentModel item = (JMeterComponentModel)
  +                                             Class.forName((String) 
iter.next()).newInstance();
  +                             allJMeterComponentCommands.put(item.getClassLabel(), 
item.getClass());
                        }
  -                     catch (Exception ex)
  -                     {
  -                             ex.printStackTrace();
  -                             classes = new LinkedList();
  -                     }
  -
  -                     Iterator iter = classes.iterator();
  -                     while (iter.hasNext())
  +                     catch (Throwable ex)
                        {
  -                             try
  -                             {
  -                                     JMeterComponentModel item = 
(JMeterComponentModel)
  -                                                     Class.forName((String) 
iter.next()).newInstance();
  -                                     
allJMeterComponentCommands.put(item.getClassLabel(), item.getClass());
  -                             }
  -                             catch (Throwable ex)
  -                             {
  -                             }
                        }
                }
        }
  
  
  
  1.2       +44 -69    jakarta-jmeter/xdocs/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/xdocs/index.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- index.xml 2001/03/07 06:38:36     1.1
  +++ index.xml 2001/03/15 13:18:38     1.2
  @@ -1,69 +1,44 @@
  -<?xml version="1.0"?>
  -<document>
  -  <properties>
  -    <author email="[EMAIL PROTECTED]">Brendan Burns, et al.</author>
  -    <title>Apache JMeter</title>
  -  </properties>
  -
  -<body>
  -<section name="Apache JMeter">
  -<p>
  -<b>Apache JMeter</b> is a 100% pure Java desktop application designed to load test 
functional 
  -behavior and measure performance.  It was originally designed for testing Web 
Applications but has 
  -since expanded to other test functions.
  -</p>
  -
  -
  -<h2>What can I do with it?</h2>
  -<p>
  -Apache JMeter may be used to test performance both on static and dynamic
  -  resources (files or CGI, Servlets, Perl scripts, Java Objects). It may well be 
used to simulate a heavy
  -    load on a server, network or object to test its strength or to analyse overall 
performance under
  -    different load types. You can use it to make a graphical analysis of 
performance or to
  -  test your server/script/object behavior under heavy concurrent load.</p>
  -<p>
  -<a HREF="how_to_use_jmeter.html">Using JMeter</a>
  -</p>
  -
  -<h2>What does it do?</h2>
  -  <p>Apache JMeter features include:</p>
  -<ul>
  -    <li>Complete portability and <b>100% Java purity</b>.</li>
  -    <li>Full <b>Swing</b> and lightweight component support (precompiled JAR uses 
packages <code>javax.swing.*</code>).</li>
  -    <li>Pluggable Samplers allow unlimited testing capabilities.</li>
  -    <li>Full <b>multithreading</b> framework allows concurrent sampling by many 
threads and simultaneous sampling of different functions by seperate thread 
groups.</li>
  -    <li>Several load statistics may be choosen with <b>pluggable timers</b>.</li>
  -    <li>Data analisys and <b>visualisation plugins</b> allow great extendibility as 
well as
  -      personalization.</li>
  -    <li>Careful <b>GUI</b> design allows faster operation and more precise 
timings.</li>
  -  </ul>
  -
  -  <p>
  -Here you find all the information you need to use, understand and enhance Apache 
JMeter.
  -</p>
  -  <ul>
  -    <li><a HREF="license.html">Public license</a></li>
  -    <li><a href="dist">Download</a></li>
  -    <li><a HREF="installing.html">Installation</a></li>
  -    <ul>
  -      <li><a HREF="installing.html#requirements">System requirements</a></li>
  -      <li><a HREF="installing.html#installing">Installing Apache JMeter</a></li>
  -    </ul>
  -    <li><a HREF="running.html">Running Apache JMeter</a></li>
  -    <ul>
  -      <li><a HREF="running.html#scripts">Using system wrappers</a></li>
  -      <li><a HREF="running.html#command">From the command line</a></li>
  -    </ul>
  -    <li><a HREF="how_to_use_jmeter.html">Using JMeter</a></li>
  -    <li>
  -      <a HREF="extending.html">Extending/Customizing JMeter for your needs</a>
  -    </li>
  -    <li><a HREF="api/index.html">Code documentation (javadoc)</a></li>
  -    <li><a HREF="changes.html">Changes history</a></li>
  -    <li><a href="bugs.html">Known bugs</a></li>
  -    <li><a href="todo.html">Wish and Todo List</a></li>
  -    <li><a HREF="contributing.html">How to contribute</a></li>
  -  </ul>
  -</section>
  -</body>
  -</document>
  +<?xml version="1.0"?>
  +<document>
  +  <properties>
  +      <author email="[EMAIL PROTECTED]">Brendan Burns, et al.</author>
  +      <title>Apache JMeter</title>
  +  </properties>
  +
  +<body>
  +<section name="Apache JMeter">
  +<p>
  +<b>Apache JMeter</b> is a 100% pure Java desktop application designed to load test 
functional
  +behavior and measure performance.  It was originally designed for testing Web 
Applications but has
  +since expanded to other test functions.
  +</p>
  +
  +
  +<h2>What can I do with it?</h2>
  +<p>
  +Apache JMeter may be used to test performance both on static and dynamic
  +  resources (files or CGI, Servlets, Perl scripts, Java Objects). It may well be 
used to simulate a heavy
  +      load on a server, network or object to test its strength or to analyse 
overall performance under
  +      different load types. You can use it to make a graphical analysis of 
performance or to
  +  test your server/script/object behavior under heavy concurrent load.</p>
  +<p>
  +<a HREF="how_to_use_jmeter.html">Using JMeter</a>
  +</p>
  +
  +<h2>What does it do?</h2>
  +  <p>Apache JMeter features include:</p>
  +<ul>
  +      <li>Complete portability and <b>100% Java purity</b>.</li>
  +      <li>Full <b>Swing</b> and lightweight component support (precompiled JAR uses 
packages <code>javax.swing.*</code>).</li>
  +      <li>Pluggable Samplers allow unlimited testing capabilities.</li>
  +      <li>Full <b>multithreading</b> framework allows concurrent sampling by many 
threads and simultaneous sampling of different functions by seperate thread 
groups.</li>
  +      <li>Several load statistics may be choosen with <b>pluggable timers</b>.</li>
  +      <li>Data analisys and <b>visualisation plugins</b> allow great extendibility 
as well as
  +             personalization.</li>
  +      <li>Careful <b>GUI</b> design allows faster operation and more precise 
timings.</li>
  +  </ul>
  +
  +
  +</section>
  +</body>
  +</document>
  
  
  
  1.2       +1 -1      jakarta-jmeter/xdocs/stylesheets/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/xdocs/stylesheets/project.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- project.xml       2001/03/12 23:57:42     1.1
  +++ project.xml       2001/03/15 13:18:38     1.2
  @@ -9,7 +9,7 @@
       <body>
       <menu name="About">
           <item name="Overview"               href="/index.html"/>
  -        <item name="Usage"                  href="/how_to_use_jmeter.html"/>
  +        <item name="Usage"                  href="/user_manual/index.html"/>
           <item name="Download"               
href="http://jakarta.apache.org/builds/jakarta-jmeter/"/>
           <item name="Install"                href="/installing.html"/>
           <item name="Running"                href="/running.html"/>
  
  
  
  1.1                  jakarta-jmeter/xdocs/user_manual/index.xml
  
  Index: index.xml
  ===================================================================
  <?xml version="1.0"?>
  <document>
    <properties>
         <author email="[EMAIL PROTECTED]">Michael Stover, brendan Burns, et 
al.</author>
         <title>Using JMeter</title>
    </properties>
  <body>
  <section name="Using JMeter">
  
  <h2>Using JMeter effectively consists of the following activities</h2>:
  <UL>
        <li><a href="#overview">Overview</a></li>
        <li><a HREF="threadgroups.html">Creating ThreadGroups</a></li>
        <li><a HREF="test_samples.html">Creating Test Samples</a></li>
        <li><a HREF="#Choosing_a_delay">Creating Flow Logic Controls</a></li>
        <li><a HREF="#Managing_Thread_Groups">Using Visualizers</a></li>
        <li><a HREF="#Choosing_a_Visualizer">Choosing a Visualizer</a></li>
        <li><a HREF="#Running_the_test script">Running the test script</a></li>
        <li><a href="saving.html">Saving test script elements</a></li>
  </UL>
  
  <p>
  <a NAME="overview"></a>
  <H2>Overview</H2>
  JMeter 1.6 has a new UI layout.  The screen is divided into two sections.  On the 
left is
  a tree which represents your test configuration.  Trees are good for representing
  data that is hierarchical and ordered, and your test data is both. On the right,
  or the main window, control panels will be shown allowing you to enter your test 
data for
  each element in the tree.  It is also the window for you to view the data 
visualizers.
  </p>
  <table border="5"><tr><td><b>Most functions in the UI are available from popup menus
  that appear when you right-click on the element you wish to 
affect</b></td></tr></table>
  <p>
  The tree begins with two elements - TestPlan and WorkBench.  Under the testplan 
element
  will go all the elements involved with your test.  The workbench is simply an area to
  store test elements while you work.
  </p>
  <p>
  A testplan consists of one or more ThreadGroups. A ThreadGroup may contain 
<b>timers</b>,
  <b>listeners</b>, <b>controllers</b>, and <b>config elements</b>.  It also defines a 
number of threads
  to be used for the threadgroup.  ThreadGroups cannot be nested.
  </p>
  <ul>
  <li>A <b>timer</b> is a simple element that controls how long JMeter should delay 
between each test
  sample when it runs.  This allows JMeter to simulate human actions more closely.  
Timers do not
  contain sub-elements in the tree.
  </li>
  <li>A <b>listener</b> receives information about response data while JMeter runs.  
For instance, during testing
  of a website, a listener receives and collects sample data that indicates how many
  milliseconds it took the web server to respond to each request.  Normally, these 
listeners
  are visualizers (represent the data visually in the main window), or reporters 
(store the data
  to file).  Listeners also do not contain sub-elements in the tree.
  </li>
  <li>A <b>controller</b> is an element that controls the flow of test samples.  It 
also controls the process by which
  test samples are created.  They are the heart of JMeter. Controllers may have other 
controllers and/or config elements as
  sub-elements in the tree.
  </li>
  <li>A <b>Config Element</b> represents a coherent set of information that is usually 
specifically targeted at a particular
  protocol.  For instance, setting up a database test requires three config elements - 
one to configure the basic
  information about the database (what host, what driver, login and password to use), 
one to configure the SQL query
  to be tested, and one to configure the pool of database connections (how many 
connections to store in pool, etc).
  Config Elements do not have sub-elements in the tree.
  </li>
  </ul>
  
  <p>As a user, you create elements in the tree, and start your test when ready.  When 
you start the test, JMeter
  "compiles" your test script (note: this doesn't refer to an executable script, as in 
Python or Perl, but to the
  data in the hierarchical tree).  All elements in the tree are added up - meaning 
child objects are added to their
  parent objects until a single TestPlan object is created.  A JMeterEngine is then 
created, and the TestPlan sends
  all of its ThreadGroups to the engine.  The engine creates threads, and each thread
  iterates through the test cases.
  </p>
  <p>
  It's important to understand that all elements in the tree will be applied to all 
elements at
  that level and below.  This is why it makes sense to add a URL Config Element to the
  ThreadGroup in addition to a Web Test Controller with multiple test samples.  If the
  top level config element has only a host name, the host name will be applied to all
  URL test samples that are used within the ThreadGroup.
  </p>
  
  </section>
  </body>
  </document>
  
  
  
  1.1                  jakarta-jmeter/xdocs/user_manual/test_samples.xml
  
  Index: test_samples.xml
  ===================================================================
  <?xml version="1.0"?>
  <document>
    <properties>
         <author email="[EMAIL PROTECTED]">Michael Stover, brendan Burns, et 
al.</author>
         <title>ThreadGroups</title>
    </properties>
  <body>
  <section name="Test Samples">
  
  <h2>Test Samples describe Test Cases</h2>:
  <p>
  A test sample element is a controller that controls the creation of test cases.
  Although all controllers can technically contain sub-controllers, test sample 
controllers
  will almost never do so.  Their purpose is to describe specific test cases and to
  provide the logic necessary to create those test cases.
  </p>
  <p>
  Most test sample controllers will allow users to specify configurations for multiple
  test cases by allowing the user to add one or more configuration elements.  The Web
  Sample controller, for instance, allows users to add many URL config elements, and
  each one will generate one executable test case.  The order of iteration through 
these
  sub-elements is the order they appear in the tree.  Also, the Web Sample controller
  allows one to specify a cookie manage and an authorization manager, as well as a 
default
  URL config element.  These extra elements all act like default values, and will be
  applied to all test cases generated by the controller.
  </p>
  <p>
  For convenience, one can
  configure just the default URL element and forego adding sub-URL elements to the 
controller.
  The controller will treat the default as its single test case (this is only true if
  NO URL config elements have been added to the controller).
  </p>
  <p>
  Although one can add cookie managers and authorization managers, it's almost always
  preferable to add such elements at the ThreadGroup level.
  </p>
  
  </section>
  </body>
  </document>
  
  
  1.1                  jakarta-jmeter/xdocs/user_manual/threadgroups.xml
  
  Index: threadgroups.xml
  ===================================================================
  <?xml version="1.0"?>
  <document>
    <properties>
         <author email="[EMAIL PROTECTED]">Michael Stover, brendan Burns, et 
al.</author>
         <title>ThreadGroups</title>
    </properties>
  <body>
  <section name="ThreadGroups">
  
  <h2>ThreadGroups hold test scripts</h2>:
  <p>A ThreadGroup primarily holds controllers which deliver test cases to be tested.
  During test run, a ThreadGroup will iterate through all its controllers and extract
  test samples to execute.  The order of iteration is determined by the order the 
controllers
  appear in the tree.
  </p>
  <p>
  Controllers can be nested, so the actual behavior of the iterative process can
  be arbitrarily complex.
  </p>
  <p>
  Additionally, ThreadGroups can have timers added to them.  The timer will be used to
  create a delay between the execution of samples.  Although multiple timers can be
  added to a ThreadGroup, there isn't much point to doing so.  The timers delay values
  will simply be summed.
  </p>
  <p>
  Listeners can also be added to ThreadGroups.  Listeners collect test data and do
  some useful function with the data, such as displaying the data visually (sometimes,
  such listeners are called visualizers).  Other listeners save the data to file.
  Multiple visualizers can be added, allowing one multiple views of the data.
  </p>
  <p>
  Probably the most important concept to understand is the layering of logic that 
occurs
  when a test script is compiled and run.  ThreadGroups can have config elements added
  to them.  These config elements can be used to generate default settings for any
  sample that gets executed.
  </p>
  <p>
  Let's say one creates 10 web samples and configures them all, but leaves the "server"
  field blank.  One can then add a URL sample element to the ThreadGroup which has only
  its server field filled in.  When this script runs, all the test samples that get
  generated will have this top level config element applied to them, and their server 
fields
  will get filled in.  Note that fields from lower level samples are never overwritten 
by
  higher level config elements - they're only filled in if not already present.
  </p>
  <p>
  Two very common uses of this is to add a cookie manager to the ThreadGroup - this 
ensures that all
  samples are run with the same cookies.  Otherwise, one would have to use multiple
  cookie managers added to each separate controller, and there would be no guarantee 
that
  the same cookies were being used for all samples (actually, you'd be guaranteed that
  the cookies would be different).  Another common use is to have a single top level
  URL config element that specifies the server.  This allows a script to be portable
  from one server to another with only a single change.
  </p>
  </section>
  </body>
  </document>
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to