Skip to content

Instantly share code, notes, and snippets.

@JanPaulEttles
Created April 26, 2012 09:59
Show Gist options
  • Select an option

  • Save JanPaulEttles/2498420 to your computer and use it in GitHub Desktop.

Select an option

Save JanPaulEttles/2498420 to your computer and use it in GitHub Desktop.
Sampler
import java.util.ArrayList;
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.testbeans.TestBean;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
import com.mongodb.DB;
import com.mongodb.Mongo;
import com.mongodb.ServerAddress;
public class Sampler
extends AbstractSampler
implements TestBean {
private static final long serialVersionUID = -678108159079724396L;
private static final Logger log = LoggingManager.getLoggerForClass();
public final static String SCRIPT = "Sampler.script"; //$NON-NLS-1$
private static int classCount = 0; // keep track of classes created
public Sampler() {
classCount++;
trace("Sampler()");
}
public SampleResult sample(Entry e) {
trace("sample()");
SampleResult res = new SampleResult();
String data = getScript(); // Sampler script
String response = null;
Mongo m = null;
res.setSampleLabel(getTitle());
res.sampleStart();
try {
ArrayList<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(new ServerAddress(YOUR_REPLICASET_BOX_1, YOUR_REPLICASET_PORT_1));
addrs.add(new ServerAddress(YOUR_REPLICASET_BOX_2, YOUR_REPLICASET_PORT_1));
m = new Mongo(addrs);
DB db = m.getDB(YOUR_DB_NAME);
boolean authenticated = db.authenticate(YOUR_DB_USERNAME, YOUR_DB_PASSWORD.toCharArray());
db.eval(getScript());
response = Thread.currentThread().getName();
res.setSamplerData(data);
res.setResponseData(response.getBytes());
res.setDataType(SampleResult.TEXT);
res.setResponseCodeOK();
res.setResponseCode("200");
res.setSuccessful(true);
res.setResponseMessage("OK");// $NON-NLS-1$
}
catch (Exception ex) {
log.debug("", ex);
res.setResponseCode("500");// $NON-NLS-1$
res.setSuccessful(false);
res.setResponseMessage(ex.toString());
}
finally {
res.sampleEnd();
m.close();
}
return res;
}
private String getTitle() {
return this.getName();
}
public String getScript() {
return getPropertyAsString(SCRIPT);
}
public void setScript(String script) {
setProperty(SCRIPT, script);
}
/*
* 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);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment