public SampleResult runTest(JavaSamplerContext context) { SampleResult result = new SampleResult(); try { result.sampleStart(); // start stopwatch produce(context); result.sampleEnd(); // stop stopwatch result.setSuccessful(true); result.setResponseMessage("Sent " + total.get() + " messages total"); result.setResponseCode("OK"); } catch (Exception e) { result.sampleEnd(); // stop stopwatch result.setSuccessful(false); result.setResponseMessage("Exception: " + e); // get stack trace as a String to return as document data java.io.StringWriter stringWriter = new java.io.StringWriter(); e.printStackTrace(new java.io.PrintWriter(stringWriter)); result.setResponseData(stringWriter.toString(), null); result.setDataType(org.apache.jmeter.samplers.SampleResult.TEXT); result.setResponseCode("FAILED"); } return result; }
@Override public SampleResult sample(Entry entry) { SampleResult result = new SampleResult(); result.setSampleLabel(getName()); result.setSuccessful(true); result.setResponseCodeOK(); result.setResponseMessageOK(); result.setSamplerData("File: "+filename); } else { result.setSamplerData(getScript()); result.setDataType(SampleResult.TEXT); result.sampleStart(); try { ScriptEngine scriptEngine = getScriptEngine(); bindings.put("SampleResult",result); Object ret = processFileOrScript(scriptEngine, bindings); if (ret != null && (result.getResponseData() == null || result.getResponseData().length==0)){ result.setResponseData(ret.toString(), null); result.setSuccessful(false); result.setResponseCode("500"); // $NON-NLS-1$ result.setResponseMessage(e.toString()); result.sampleEnd(); return result;
/** * Strip response but fill in bytes field. * @param result {@link SampleResult} */ private void stripResponse(SampleResult result) { result.setBytes(result.getBytesAsLong()); result.setResponseData(EMPTY_BA); }
/** * Start the sample request and set the {@code samplerData} to {@code data}. * * @param result * the sample result to update * @param data * the request to set as {@code samplerData} */ private void sampleResultStart(SampleResult result, String data) { result.setSamplerData(data); result.sampleStart(); }
/** * Mark the sample result as @{code end}ed and not {@code successful}, and set the * {@code responseCode} to {@code reason}. * * @param result the sample result to change * @param reason the failure reason */ private void sampleResultFailed(SampleResult result, String reason) { result.sampleEnd(); result.setSuccessful(false); result.setResponseCode(reason); }
@Override public SampleResult sample(Entry e) { SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.setSamplerData(toString()); res.setDataType(SampleResult.TEXT); res.setContentType("text/plain"); // $NON-NLS-1$ res.setDataEncoding(ENCODING); res.setSuccessful(true); res.setResponseMessageOK(); res.setResponseCodeOK(); res.sampleStart(); Connection conn = null; conn = DataSourceElement.getConnection(getDataSource()); } finally { res.connectEnd(); res.setResponseHeaders(DataSourceElement.getConnectionInfo(getDataSource())); res.setResponseData(execute(conn, res)); } catch (SQLException ex) { final String errCode = Integer.toString(ex.getErrorCode()); res.setResponseMessage(ex.toString()); res.setResponseCode(ex.getSQLState()+ " " +errCode); res.setResponseData(ex.getMessage().getBytes()); res.setSuccessful(false); } catch (Exception ex) { res.setResponseMessage(ex.toString());
private DataRequest getPlayList(SampleResult playListResult, Parser parser) throws IOException { String lastPath = ""; playListResult.sampleStart(); DataRequest subRespond = parser.getBaseUrl(new URL(playlist), playListResult, true); playListResult.sampleEnd(); String[] urlArray = playlist.split("/"); lastPath = urlArray[urlArray.length - 1]; playListResult.setRequestHeaders(subRespond.getRequestHeaders() + "\n\n" + getCookieHeader(playlist) + "\n\n" + getRequestHeader(this.getHeaderManager())); playListResult.setSuccessful(subRespond.isSuccess()); playListResult.setResponseMessage(subRespond.getResponseMessage()); playListResult.setSampleLabel(lastPath); playListResult.setResponseHeaders(subRespond.getHeadersAsString()); playListResult.setResponseData(subRespond.getResponse().getBytes()); playListResult.setResponseCode(subRespond.getResponseCode()); playListResult.setContentType(subRespond.getContentType()); playListResult.setBytes(playListResult.getBytesAsLong() + (long) playListResult.getRequestHeaders().length()); int headerBytes = playListResult.getResponseHeaders().length() // condensed // length // (without // \r) + subRespond.getHeaders().size() // Add \r for each header + 1 // Add \r for initial header + 2; // final \r\n before data playListResult.setHeadersSize((int) headerBytes); playListResult.setSentBytes(subRespond.getSentBytes()); playListResult.setDataEncoding(subRespond.getContentEncoding()); return subRespond; }
@Override public SampleResult sample(Entry e) { SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.sampleStart(); StringBuilder sb = new StringBuilder(100); StringBuilder rd = new StringBuilder(20); // for request Data res.setResponseData(sb.toString(), null); res.setDataType(SampleResult.TEXT); res.setSamplerData(rd.toString()); res.setResponseOK(); res.sampleEnd(); return res;
sendMailCmd = createSendMailCommandFromProperties(); message = sendMailCmd.prepareMessage(); result.setBytes(calculateMessageSize(message)); } catch (Exception ex) { log.warn("Error while preparing message", ex); result.setResponseCode("500"); result.setResponseMessage(ex.toString()); return result; result.setDataType(SampleResult.TEXT); try { result.setRequestHeaders(getRequestHeaders(message)); result.setSamplerData(getSamplerData(message)); } catch (MessagingException | IOException ex) { result.setSamplerData("Error occurred trying to save request info: " + ex); log.warn("Error occurred trying to save request info", ex); result.sampleStart(); boolean isSuccessful = executeMessage(result, sendMailCmd, message); result.sampleEnd(); result.setResponseData(processSampler(message)); } catch (IOException | MessagingException ex) { log.warn("Failed to set result response data", ex); result.setSuccessful(isSuccessful);
@SuppressWarnings("deprecation") @Override public SampleResult sample(Entry entry) { SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.sampleStart(); //构造请求数据 res.setSamplerData(getSampleData()); //调用dubbo res.setResponseData(JsonUtils.toJson(callDubbo(res))); //构造响应数据 res.setDataType(SampleResult.TEXT); res.setResponseCodeOK(); res.setResponseMessageOK(); res.sampleEnd(); return res; }
protected void saveLogRecord(String marker, String threadName, String arrivalID) { SampleResult res = new SampleResult(); res.sampleStart(); res.setSampleLabel(arrivalID); res.setResponseMessage(marker); res.setThreadName(threadName); res.sampleEnd(); SampleEvent evt = new SampleEvent(res, getName()); logFile.sampleOccurred(evt); }
private static SampleResult generateErrorResult(SampleResult result, HttpRequestHdr request, Exception e, String msg) { if (result == null) { result = new SampleResult(); ByteArrayOutputStream text = new ByteArrayOutputStream(200); e.printStackTrace(new PrintStream(text)); // NOSONAR we store the Stacktrace in the result result.setResponseData(text.toByteArray()); result.setSamplerData(request.getFirstLine()); result.setSampleLabel(request.getUrl()); } result.setSuccessful(false); result.setResponseMessage(e.getMessage()+msg); return result; }
@Override public SampleResult perform(JMeterXMPPSampler sampler, SampleResult res) throws Exception { long counter = 0; for (Packet packet : incomingPackets) { incomingPackets.remove(packet); SampleResult subRes = new SampleResult(); subRes.setSuccessful(true); subRes.setResponseCode("200"); subRes.setResponseMessage("OK"); subRes.setSampleLabel(packet.getClass().getSimpleName().isEmpty() ? packet.getClass().getName() : packet.getClass().getSimpleName()); subRes.setResponseData(packet.toXML().toString().getBytes()); if ((packet instanceof Presence) && (((Presence) packet).getType() == Presence.Type.error)) { subRes.setSuccessful(false); subRes.setResponseCode("500"); subRes.setResponseMessage(packet.getError().toString()); } else if ((packet instanceof Message) && (((Message) packet).getType() == Message.Type.error)) { subRes.setSuccessful(false); subRes.setResponseCode("500"); subRes.setResponseMessage(packet.getError().toString()); } else if ((packet instanceof IQ) && (((IQ) packet).getType() == IQ.Type.error)) { subRes.setSuccessful(false); subRes.setResponseCode("500"); subRes.setResponseMessage(packet.getError().toString()); } res.addSubResult(subRes); counter++; } res.setResponseData(("Received packets: " + counter).getBytes()); return counter > 0 ? res : null; }
public TransactionSampler(TransactionController controller, String name) { transactionController = controller; setName(name); // ensure name is available for debugging transactionSampleResult = new SampleResult(); transactionSampleResult.setSampleLabel(name); // Assume success transactionSampleResult.setSuccessful(true); transactionSampleResult.sampleStart(); }
/** * @param reader stream to read objects from * @param context context for xstream to allow nested objects * @param res sample result on which the attributes should be set */ protected void retrieveAttributes(HierarchicalStreamReader reader, UnmarshallingContext context, SampleResult res) { res.setSampleLabel(ConversionHelp.decode(reader.getAttribute(ATT_LABEL))); res.setDataEncoding(ConversionHelp.decode(reader.getAttribute(ATT_DATA_ENCODING))); res.setDataType(ConversionHelp.decode(reader.getAttribute(ATT_DATA_TYPE))); String oldrc=reader.getAttribute(ATT_RESPONSE_CODE_OLD); if (oldrc!=null) { res.setResponseCode(ConversionHelp.decode(oldrc)); } else { res.setResponseCode(ConversionHelp.decode(reader.getAttribute(ATT_RESPONSE_CODE))); } res.setResponseMessage(ConversionHelp.decode(reader.getAttribute(ATT_RESPONSE_MESSAGE))); res.setSuccessful(Converter.getBoolean(reader.getAttribute(ATT_SUCCESS), true)); res.setThreadName(ConversionHelp.decode(reader.getAttribute(ATT_THREADNAME))); res.setStampAndTime(Converter.getLong(reader.getAttribute(ATT_TIME_STAMP)), Converter.getLong(reader.getAttribute(ATT_TIME))); res.setIdleTime(Converter.getLong(reader.getAttribute(ATT_IDLETIME))); res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY))); res.setConnectTime(Converter.getLong(reader.getAttribute(ATT_CONNECT_TIME))); res.setBytes(Converter.getLong(reader.getAttribute(ATT_BYTES))); res.setSentBytes(Converter.getLong(reader.getAttribute(ATT_SENT_BYTES))); res.setSampleCount(Converter.getInt(reader.getAttribute(ATT_SAMPLE_COUNT),1)); // default is 1 res.setErrorCount(Converter.getInt(reader.getAttribute(ATT_ERROR_COUNT),0)); // default is 0 res.setGroupThreads(Converter.getInt(reader.getAttribute(ATT_GRP_THRDS))); res.setAllThreads(Converter.getInt(reader.getAttribute(ATT_ALL_THRDS))); }
/*************************************************************************** * This will do the delete test for the User defined TestCase * **************************************************************************/ private void deleteTest(DirContext dirContext, SampleResult res) throws NamingException { try { res.sampleStart(); LdapExtClient.deleteTest(dirContext, getPropertyAsString(DELETE)); } finally { res.sampleEnd(); } }
/** * Fills in result and decide wether to reconnect or not depending on * checkForReconnect and underlying {@link JMSException#getErrorCode()} * * @param result * {@link SampleResult} * @param e * {@link Exception} * @param checkForReconnect * if true and exception is a {@link JMSException} */ private void handleError(SampleResult result, Exception e, boolean checkForReconnect) { result.setSuccessful(false); result.setResponseMessage(e.toString()); if (e instanceof JMSException) { JMSException jms = (JMSException) e; String errorCode = Optional.ofNullable(jms.getErrorCode()).orElse(""); if (checkForReconnect && publisher != null && getIsReconnectErrorCode().test(errorCode)) { ClientPool.removeClient(publisher); IOUtils.closeQuietly(publisher); publisher = null; } result.setResponseCode(errorCode); } StringWriter writer = new StringWriter(); e.printStackTrace(new PrintWriter(writer)); // NOSONAR We're getting it // to put it in ResponseData result.setResponseData(writer.toString(), "UTF-8"); }
/** * Return SampleResult with data on error. * * @see JavaSamplerClient#runTest(JavaSamplerContext) */ @Override public SampleResult runTest(JavaSamplerContext p_context) { log.debug(whoAmI() + "\trunTest"); Thread.yield(); SampleResult results = new SampleResult(); results.setSuccessful(false); results.setResponseData("Class not found: " + getClassname(), null); results.setSampleLabel("ERROR: " + getClassname()); return results; } }
/** * Jmeter调用,用于实际的测试 */ @Override public SampleResult runTest(JavaSamplerContext context) { SampleResult sample = getSample(); sample.sampleStart(); try { MessageLite response = doTest(); String msg = response == null ? "" : response.toString(); sample.setResponseMessage(msg); sample.setSuccessful(true); } catch (Exception e) { sample.setSuccessful(false); e.printStackTrace(); } finally { sample.sampleEnd(); } return sample; }
/** * Mark the sample result as {@code end}ed and {@code successful} with an "OK" {@code responseCode}, * and if the response is not {@code null} then set the {@code responseData} to {@code response}, * otherwise it is marked as not requiring a response. * * @param result sample result to change * @param response the successful result message, may be null. */ private void sampleResultSuccess(SampleResult result, /* @Nullable */ String response) { result.sampleEnd(); result.setSuccessful(true); result.setResponseCodeOK(); if (response != null) { result.setResponseData(response, ENCODING); } else { result.setResponseData("No response required", ENCODING); } }