Created
April 26, 2012 09:59
-
-
Save JanPaulEttles/2498420 to your computer and use it in GitHub Desktop.
Sampler
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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