// $Header: /home/cvs/jakarta-jmeter/src/examples/org/apache/jmeter/examples/sampler/ExampleSampler.java,v 1.1.2.1 2004/05/24 23:20:39 sebb Exp $
/*
* Copyright 2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.jmeter.examples.sampler;
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
/**
* Example Sampler (non-Bean version)
*
* JMeter creates an instance of a sampler class for every
* occurrence of the element in every thread.
* [some additional copies may be created before the test run starts]
*
* Thus each sampler is guaranteed to be called by a single thread -
* there is no need to synchronize access to instance variables.
*
* However, access to class fields must be synchronized.
*
* @version $Revision: 1.1.2.1 $ $Date: 2004/05/24 23:20:39 $
*/
public class ExampleSampler extends AbstractSampler
{
protected static Logger log = LoggingManager.getLoggerForClass();
// The name of the property used to hold our data
public final static String DATA = "ExampleSampler.data"; //$NON-NLS-1$
private transient static int classCount=0; // keep track of classes created
// (for instructional purposes only!)
public ExampleSampler()
{
classCount++;
trace("ExampleSampler()");
}
/* (non-Javadoc)
* Performs the sample, and returns the result
*
* @see org.apache.jmeter.samplers.Sampler#sample(org.apache.jmeter.samplers.Entry)
*/
public SampleResult sample(Entry e)
{
trace("sample()");
SampleResult res = new SampleResult();
boolean isOK = false; // Did sample succeed?
String data=getData(); // Sampler data
String response=null;
res.setSampleLabel(getTitle());
/*
* Perform the sampling
*/
res.sampleStart(); //Start timing
try {
// Do something here ...
response=Thread.currentThread().getName();
/*
* Set up the sample result details
*/
res.setSamplerData(data);
res.setResponseData(response.getBytes());
res.setDataType(SampleResult.TEXT);
res.setResponseCode("200");
res.setResponseMessage("OK");
isOK = true;
}
catch (Exception ex){
log.debug("",ex);
res.setResponseCode("500");
res.setResponseMessage(ex.toString());
}
res.sampleEnd(); //End timimg
res.setSuccessful(isOK);
return res;
}
/**
* @return a string for the sampleResult Title
*/
private String getTitle()
{
return this.getName();
}
/**
* @return the data for the sample
*/
public String getData()
{
return getPropertyAsString(DATA);
}
/*
* Helper method
*/
private void trace(String s)
{
String tl = getTitle();
String tn = Thread.currentThread().getName();
String th = this.toString();
log.debug(tn+" ("+classCount+") "+tl+" "+s+" "+th);
}
}