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]>