mstover1    02/04/18 19:10:50

  Added:       src_1/org/apache/jmeter/testelement PerSampleClonable.java
                        PerThreadClonable.java TestListener.java
               src_1/org/apache/jmeter/threads SamplePackage.java
                        TestCompiler.java
               src_1/org/apache/jmeter/util ListedHashTreeVisitor.java
                        SearchByClass.java
  Log:
  
  
  Revision  Changes    Path
  1.1                  
jakarta-jmeter/src_1/org/apache/jmeter/testelement/PerSampleClonable.java
  
  Index: PerSampleClonable.java
  ===================================================================
  package org.apache.jmeter.testelement;
  
  /**
   * <p>Title: </p>
   * <p>Description: </p>
   * <p>Copyright: Copyright (c) 2001</p>
   * <p>Company: </p>
   * @author unascribed
   * @version 1.0
   */
  
  public interface PerSampleClonable
  {
  
        public Object clone();
  }
  
  
  1.1                  
jakarta-jmeter/src_1/org/apache/jmeter/testelement/PerThreadClonable.java
  
  Index: PerThreadClonable.java
  ===================================================================
  package org.apache.jmeter.testelement;
  
  /**
   * <p>Title: </p>
   * <p>Description: </p>
   * <p>Copyright: Copyright (c) 2001</p>
   * <p>Company: </p>
   * @author unascribed
   * @version 1.0
   */
  
  public interface PerThreadClonable
  {
  
        public Object clone();
  }
  
  
  1.1                  
jakarta-jmeter/src_1/org/apache/jmeter/testelement/TestListener.java
  
  Index: TestListener.java
  ===================================================================
  package org.apache.jmeter.testelement;
  
  /**
   * <p>Title: </p>
   * <p>Description: </p>
   * <p>Copyright: Copyright (c) 2001</p>
   * <p>Company: </p>
   * @author unascribed
   * @version 1.0
   */
  
  public interface TestListener
  {
  
        public void testStarted();
  
        public void testEnded();
  }
  
  
  1.1                  
jakarta-jmeter/src_1/org/apache/jmeter/threads/SamplePackage.java
  
  Index: SamplePackage.java
  ===================================================================
  package org.apache.jmeter.threads;
  
  import org.apache.jmeter.samplers.SampleListener;
  import org.apache.jmeter.samplers.Sampler;
  import org.apache.jmeter.timers.Timer;
  import org.apache.jmeter.assertions.Assertion;
  
  import java.util.*;
  
  /**
   * Title:        JMeter
   * Description:
   * Copyright:    Copyright (c) 2000
   * Company:      Apache
   * @author Michael Stover
   * @version 1.0
   */
  
  public class SamplePackage
  {
        List sampleListeners = new LinkedList();
        List timers = new LinkedList();
        List assertions = new LinkedList();
        Sampler sampler;
  
        public SamplePackage()
        {
        }
  
        public List getSampleListeners()
        {
                return sampleListeners;
        }
  
        public void addSampleListener(SampleListener listener)
        {
                sampleListeners.add(listener);
        }
  
        public List getTimers()
        {
                return timers;
        }
  
        public void addTimer(Timer timer)
        {
                timers.add(timer);
        }
  
        public void addAssertion(Assertion asser)
        {
                assertions.add(asser);
        }
  
        public List getAssertions()
        {
                return assertions;
        }
  
        public Sampler getSampler()
        {
                return sampler;
        }
  
        public void setSampler(Sampler s)
        {
                sampler = s;
        }
  }
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/threads/TestCompiler.java
  
  Index: TestCompiler.java
  ===================================================================
  package org.apache.jmeter.threads;
  import java.util.*;
  import org.apache.jmeter.config.Arguments;
  import org.apache.jmeter.assertions.Assertion;
  import org.apache.jmeter.timers.Timer;
  import org.apache.jmeter.config.ConfigTestElement;
  import org.apache.jmeter.config.Modifier;
  import org.apache.jmeter.config.ResponseBasedModifier;
  import org.apache.jmeter.control.GenericController;
  import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
  import org.apache.jmeter.samplers.SampleEvent;
  import org.apache.jmeter.samplers.SampleListener;
  import org.apache.jmeter.samplers.SampleResult;
  import org.apache.jmeter.samplers.Sampler;
  import org.apache.jmeter.testelement.PerSampleClonable;
  import org.apache.jmeter.testelement.TestElement;
  import org.apache.jmeter.util.ListedHashTree;
  import org.apache.jmeter.util.ListedHashTreeVisitor;
  
  /****************************************
   * <p>
   *
   * Title: </p> <p>
   *
   * Description: </p> <p>
   *
   * Copyright: Copyright (c) 2001</p> <p>
   *
   * Company: </p>
   *
   *@author    unascribed
   *@created   $Date: 2002/04/19 02:10:50 $
   *@version   1.0
   ***************************************/
  
  public class TestCompiler implements ListedHashTreeVisitor, SampleListener
  {
        LinkedList stack = new LinkedList();
        Map samplerConfigs = new HashMap();
        ListedHashTree testTree;
        SampleResult previousResult;
        private static Set pairing = new HashSet();
  
        /****************************************
         * !ToDo (Constructor description)
         *
         *@param testTree  !ToDo (Parameter description)
         ***************************************/
        public TestCompiler(ListedHashTree testTree)
        {
                this.testTree = testTree;
        }
  
        /****************************************
         * !ToDo (Method description)
         ***************************************/
        public static void initialize()
        {
                pairing.clear();
        }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@param e  !ToDo (Parameter description)
         ***************************************/
        public void sampleOccurred(SampleEvent e)
        {
                previousResult = e.getResult();
        }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@param e  !ToDo (Parameter description)
         ***************************************/
        public void sampleStarted(SampleEvent e) { }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@param e  !ToDo (Parameter description)
         ***************************************/
        public void sampleStopped(SampleEvent e) { }
  
        /****************************************
         * !ToDo (Method description)
         *
         *@param sampler  !ToDo (Parameter description)
         *@return         !ToDo (Return description)
         ***************************************/
        public SamplePackage configureSampler(Sampler sampler)
        {
                SamplePackage ret = new SamplePackage();
                Sampler clonedSampler = sampler;
                if(sampler instanceof PerSampleClonable)
                {
                        clonedSampler = (Sampler)((PerSampleClonable)sampler).clone();
                }
                ret.setSampler(clonedSampler);
                ret.addSampleListener(this);
                Iterator iter = ((List)samplerConfigs.get(sampler)).iterator();
                while(iter.hasNext())
                {
                        TestElement config = (TestElement)iter.next();
                        layerElement(ret,config, clonedSampler);
                }
                return ret;
        }
  
        /****************************************
         * !ToDo
         *
         *@param node     !ToDo
         *@param subTree  !ToDo
         ***************************************/
        public void addNode(Object node, ListedHashTree subTree)
        {
                stack.addLast(node);
        }
  
        /****************************************
         * !ToDo (Method description)
         ***************************************/
        public void subtractNode()
        {
                TestElement child = (TestElement)stack.getLast();
                if(child instanceof Sampler)
                {
                        saveSamplerConfigs((Sampler)child);
                }
                stack.removeLast();
                if(stack.size() > 0)
                {
                        ObjectPair pair = new ObjectPair(child, stack.getLast());
                        if(!pairing.contains(pair))
                        {
                                System.out.println("Adding "+child+" to 
"+stack.getLast());
                                ((TestElement)stack.getLast()).addTestElement(child);
                                pairing.add(pair);
                        }
                }
        }
  
        /****************************************
         * !ToDo (Method description)
         ***************************************/
        public void processPath() { }
  
        private void saveSamplerConfigs(Sampler sam)
        {
                List configs = new LinkedList();
                for(int i = stack.size(); i > 0; i--)
                {
                        Iterator iter = testTree.list(stack.subList(0, i)).iterator();
                        while(iter.hasNext())
                        {
                                configs.add(iter.next());
                        }
                }
                samplerConfigs.put(sam, configs);
        }
  
        /****************************************
         * !ToDo (Class description)
         *
         *@author    $Author: mstover1 $
         *@created   $Date: 2002/04/19 02:10:50 $
         *@version   $Revision: 1.1 $
         ***************************************/
        public static class Test extends junit.framework.TestCase
        {
                /****************************************
                 * !ToDo (Constructor description)
                 *
                 *@param name  !ToDo (Parameter description)
                 ***************************************/
                public Test(String name)
                {
                        super(name);
                }
  
                /****************************************
                 * !ToDo
                 *
                 *@exception Exception  !ToDo (Exception description)
                 ***************************************/
                public void testConfigGathering() throws Exception
                {
                        ListedHashTree testing = new ListedHashTree();
                        GenericController controller = new GenericController();
                        ConfigTestElement config1 = new ConfigTestElement();
                        config1.setName("config1");
                        config1.setProperty(HTTPSampler.DOMAIN, "www.jarkarta.org");
                        HTTPSampler sampler = new HTTPSampler();
                        sampler.setName("sampler");
                        Arguments args = new Arguments();
                        args.addArgument("param1", "value1");
                        testing.add(controller, config1);
                        testing.add(controller, sampler);
                        testing.get(controller).add(sampler, args);
                        TestCompiler.initialize();
  
                        TestCompiler compiler = new TestCompiler(testing);
                        testing.traverse(compiler);
                        compiler.configureSampler(sampler);
                        assertEquals(config1.getProperty(HTTPSampler.DOMAIN), 
sampler.getDomain());
                        assertEquals(args.getArgument(0).getName(), 
sampler.getArguments().getArgument(0).getName());
                }
        }
  
        /****************************************
         * !ToDo (Class description)
         *
         *@author    $Author: mstover1 $
         *@created   $Date: 2002/04/19 02:10:50 $
         *@version   $Revision: 1.1 $
         ***************************************/
        private class ObjectPair
        {
                Object one, two;
  
                /****************************************
                 * !ToDo (Constructor description)
                 *
                 *@param one  !ToDo (Parameter description)
                 *@param two  !ToDo (Parameter description)
                 ***************************************/
                public ObjectPair(Object one, Object two)
                {
                        this.one = one;
                        this.two = two;
                }
  
                /****************************************
                 * !ToDo (Method description)
                 *
                 *@return   !ToDo (Return description)
                 ***************************************/
                public int hashCode()
                {
                        return one.hashCode() + two.hashCode();
                }
  
                /****************************************
                 * !ToDo (Method description)
                 *
                 *@param o  !ToDo (Parameter description)
                 *@return   !ToDo (Return description)
                 ***************************************/
                public boolean equals(Object o)
                {
                        if(o instanceof ObjectPair)
                        {
                                return one == ((ObjectPair)o).one && two == 
((ObjectPair)o).two;
                        }
                        return false;
                }
        }
  
        private void layerElement(SamplePackage ret,TestElement config, Sampler 
clonedSampler)
        {
                if(config instanceof PerSampleClonable)
                {
                        config = (TestElement)((PerSampleClonable)config).clone();
                }
                if(config instanceof Modifier)
                {
                        ((Modifier)config).modifyEntry(clonedSampler);
                }
                if(config instanceof ResponseBasedModifier && previousResult != null)
                {
                        ((ResponseBasedModifier)config).modifyEntry(clonedSampler, 
previousResult);
                }
                if(config instanceof SampleListener)
                {
                        ret.addSampleListener((SampleListener)config);
                }
                if(config instanceof Assertion)
                {
                        ret.addAssertion((Assertion)config);
                }
                if(config instanceof Timer)
                {
                        ret.addTimer((Timer)config);
                }
                clonedSampler.addTestElement(config);
        }
  }
  
  
  
  1.1                  
jakarta-jmeter/src_1/org/apache/jmeter/util/ListedHashTreeVisitor.java
  
  Index: ListedHashTreeVisitor.java
  ===================================================================
  package org.apache.jmeter.util;
  
  /**
   * <p>Title: </p>
   * <p>Description: </p>
   * <p>Copyright: Copyright (c) 2001</p>
   * <p>Company: </p>
   * @author unascribed
   * @version 1.0
   */
  
  public interface ListedHashTreeVisitor
  {
  
        /**
         * The tree traverses itself depth-first, calling processNode for each object
         * it encounters as it goes.
         */
        public void addNode(Object node,ListedHashTree subTree);
  
        /**
         * Indicates traversal has moved up a step, and the visitor should remove the
         * top node from it's stack structure.
         */
        public void subtractNode();
  
        /**
         * Process path is called when a leaf is reached.  If a visitor wishes to 
generate
         * Lists of path elements to each leaf, it should keep a Stack data structure 
of
         * nodes passed to it with addNode, and removing top items for every 
subtractNode()
         * call.
         */
        public void processPath();
  }
  
  
  1.1                  jakarta-jmeter/src_1/org/apache/jmeter/util/SearchByClass.java
  
  Index: SearchByClass.java
  ===================================================================
  package org.apache.jmeter.util;
  
  import java.util.*;
  
  /**
   * <p>Title: </p>
   * <p>Description: </p>
   * <p>Copyright: Copyright (c) 2001</p>
   * <p>Company: </p>
   * @author unascribed
   * @version 1.0
   */
  
  public class SearchByClass implements ListedHashTreeVisitor
  {
        List objectsOfClass = new LinkedList();
        Map subTrees = new HashMap();
        Class searchClass = null;
  
        public SearchByClass()
        {
        }
  
        public SearchByClass(Class searchClass)
        {
                this.searchClass = searchClass;
        }
  
        public Collection getSearchResults()
        {
                return objectsOfClass;
        }
  
        public ListedHashTree getSubTree(Object root)
        {
                return (ListedHashTree)subTrees.get(root);
        }
  
        public void addNode(Object node,ListedHashTree subTree)
        {
                if(node.getClass().equals(searchClass))
                {
                        objectsOfClass.add(node);
                        ListedHashTree tree = new ListedHashTree(node);
                        tree.set(node,subTree);
                        subTrees.put(node,tree);
                }
        }
  
        public static class Test extends junit.framework.TestCase
        {
                public Test(String name)
                {
                        super(name);
                }
  
                public void testSearch() throws Exception
                {
                        ListedHashTree tree = new ListedHashTree();
                        SearchByClass searcher = new SearchByClass(Integer.class);
                        String one = "one";
                        String two = "two";
                        Integer o = new Integer(1);
                        tree.add(one,o);
                        tree.get(one).add(o,two);
                        tree.traverse(searcher);
                        assertEquals(1,searcher.getSearchResults().size());
                }
        }
  
        public void subtractNode()
        {
        }
  
        public void processPath()
        {
        }
  }
  
  

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

Reply via email to