/** {@inheritDoc} */ // TODO save hostname; save sample type (plain or http) @Override public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { SampleEvent evt = (SampleEvent) source; Object res = evt.getResult(); context.convertAnother(res); }
/** * Convert a result into a string, where the fields of the result are * separated by a specified String. * * @param event * the sample event to be converted * @param delimiter * the separation string * @return the separated value representation of the result */ public static String resultToDelimitedString(SampleEvent event, final String delimiter) { return resultToDelimitedString(event, event.getResult(), event.getResult().getSaveConfig(), delimiter); }
public void addSample(SampleEvent res) { Long time = res.getResult().getEndTime() / 1000; if (!buffer.containsKey(time)) { // we need to create new sec list if (time <= lastAggregatedTime) { // a problem with times sequence - taking last available log.debug("Got time " + time + " <= " + lastAggregatedTime); for (Long aLong : buffer.keySet()) { time = aLong; } } buffer.put(time, new LinkedList<SampleEvent>()); } buffer.get(time).add(res); }
/** * Generates the key to be used for aggregating samples as follows:<br> * <code>sampleLabel</code> "-" <code>[threadName|threadGroup]</code> * <p> * N.B. the key should agree with the fixed items that are saved in the sample. * * @param event sample event whose key is to be calculated * @param keyOnThreadName true if key should use thread name, otherwise use thread group * @return the key to use for aggregating samples */ public static String getKey(SampleEvent event, boolean keyOnThreadName) { StringBuilder sb = new StringBuilder(80); sb.append(event.getResult().getSampleLabel()); if (keyOnThreadName){ sb.append('-').append(event.getResult().getThreadName()); } else { sb.append('-').append(event.getThreadGroup()); } return sb.toString(); } }
public class MyResultCollector extends ResultCollector { public MyResultCollector(Summariser summer) { super(summer); } @Override public void sampleOccurred(SampleEvent e) { super.sampleOccurred(e); SampleResult r = e.getResult(); if (r.isSuccessful()) { System.out.println("Response time in milliseconds: " + r.getTime()); } } }
@Override public void notifyListeners(SampleEvent res, List<SampleListener> listeners) { log.debug("Adding subresult " + res.getResult()); SampleResult result = res.getResult(); String label = result.getSampleLabel(); synchronized (this) { container.addSubResult(result); if (!res.getResult().isSuccessful()) { container.setSuccessful(false); } } // because https://bz.apache.org/bugzilla/show_bug.cgi?id=62550 in JMeter 5.0 result.setSampleLabel(label); super.notifyListeners(res, listeners); log.debug("Added subresult " + res.getResult()); }
/** * Saves the sample result (and any sub results) in files * * @see org.apache.jmeter.samplers.SampleListener#sampleOccurred(org.apache.jmeter.samplers.SampleEvent) */ @Override public void sampleOccurred(SampleEvent e) { processSample(e.getResult(), new Counter()); }
@Override public void sampleOccurred(SampleEvent event) { try { ScriptEngine scriptEngine = getScriptEngine(); Bindings bindings = scriptEngine.createBindings(); bindings.put("sampleEvent", event); bindings.put("sampleResult", event.getResult()); processFileOrScript(scriptEngine, bindings); } catch (ScriptException | IOException e) { log.error("Problem in JSR223 script, {}", getName(), e); } }
/** * @param event {@link SampleEvent} * @param out {@link PrintWriter} to which samples will be written */ public static void saveSampleResult(SampleEvent event, PrintWriter out) { SampleSaveConfiguration saveConfiguration = event.getResult().getSaveConfig(); String delimiter = saveConfiguration.getDelimiter(); String savee = resultToDelimitedString(event, event.getResult(), saveConfiguration, delimiter); out.println(savee); if(saveConfiguration.saveSubresults()) { SampleResult result = event.getResult(); for (SampleResult subResult : result.getSubResults()) { savee = resultToDelimitedString(event, subResult, saveConfiguration, delimiter); out.println(savee); } } } }
/** * Save a sampleResult to an XML output file using XStream. * * @param evt sampleResult wrapped in a sampleEvent * @param writer output stream which must be created using {@link #getFileEncoding(String)} * @throws IOException when writing data to output fails */ // Used by ResultCollector.sampleOccurred(SampleEvent event) public synchronized static void saveSampleResult(SampleEvent evt, Writer writer) throws IOException { DataHolder dh = JTLSAVER.newDataHolder(); dh.put(SAMPLE_EVENT_OBJECT, evt); // This is effectively the same as saver.toXML(Object, Writer) except we get to provide the DataHolder // Don't know why there is no method for this in the XStream class try { JTLSAVER.marshal(evt.getResult(), new XppDriver().createWriter(writer), dh); } catch(RuntimeException e) { throw new IllegalArgumentException("Failed marshalling:"+(evt.getResult() != null ? showDebuggingInfo(evt.getResult()) : "null"), e); } writer.write('\n'); }
@Override public void sampleOccurred(SampleEvent event) { Arguments args = getArguments(); BackendListenerContext context = new BackendListenerContext(args); SampleResult sr = listenerClientData.client.createSampleResult(context, event.getResult()); if(sr == null) { if (log.isDebugEnabled()) { log.debug("{} => Dropping SampleResult: {}", getName(), event.getResult()); } return; } try { if (!listenerClientData.queue.offer(sr)){ // we failed to add the element first time listenerClientData.queueWaits.add(1L); long t1 = System.nanoTime(); listenerClientData.queue.put(sr); long t2 = System.nanoTime(); listenerClientData.queueWaitTime.add(t2-t1); } } catch (Exception err) { log.error("sampleOccurred, failed to queue the sample", err); } }
/** {@inheritDoc} */ @Override public void sampleOccurred(SampleEvent e) { super.sampleOccurred(e); // sends the result to the visualiser getMailerModel().add(e.getResult(), true); // updates the model used for sending e-mails }
/** * Convert a result into a string, where the fields of the result are * separated by the default delimiter. * * @param event * the sample event to be converted * @return the separated value representation of the result */ public static String resultToDelimitedString(SampleEvent event) { return resultToDelimitedString(event, event.getResult().getSaveConfig() .getDelimiter()); }
@Override public void sampleOccurred(SampleEvent se) { final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter(); if (bshInterpreter == null) { log.error("BeanShell not found"); return; } SampleResult samp=se.getResult(); try { bshInterpreter.set("sampleEvent", se);//$NON-NLS-1$ bshInterpreter.set("sampleResult", samp);//$NON-NLS-1$ processFileOrScript(bshInterpreter); } catch (JMeterException e) { if (log.isWarnEnabled()) { log.warn("Problem in BeanShell script. {}", e.toString()); } } }
@Override public void sampleOccurred(SampleEvent event) { BSFManager mgr =null; try { mgr = getManager(); if (mgr == null) { log.error("Problem creating BSF manager"); return; } mgr.declareBean("sampleEvent", event, SampleEvent.class); SampleResult result = event.getResult(); mgr.declareBean("sampleResult", result, SampleResult.class); processFileOrScript(mgr); } catch (BSFException e) { if (log.isWarnEnabled()) { log.warn("Problem in BSF script. {}", e.toString()); } } finally { if (mgr != null) { mgr.terminate(); } } }
@Override public synchronized void sampleOccurred(SampleEvent se) { // TODO: make the interval configurable long sec = System.currentTimeMillis() / 1000; if (sec != cur && count > 0) { if (cur == 0) { begin = sec; } log.debug(cur + " " + begin); flush(sec - begin); cur = sec; } SampleResult res = se.getResult(); count++; sumRTime += res.getTime(); sumLatency += res.getLatency(); errors += res.isSuccessful() ? 0 : 1; threads = res.getAllThreads(); }
@Override public synchronized void sampleOccurred(SampleEvent se) { // TODO: make the interval configurable long sec = System.currentTimeMillis() / 1000; if (sec != cur && count > 0) { if (cur == 0) { begin = sec; } log.debug(cur + " " + begin); flush(sec - begin); cur = sec; } SampleResult res = se.getResult(); count++; sumRTime += res.getTime(); sumLatency += res.getLatency(); errors += res.isSuccessful() ? 0 : 1; threads = res.getAllThreads(); }
@Override public void sampleOccurred(SampleEvent event) { isChanging = true; try { if (currentSamplesCount >= maxSamplesCount) { testEnded(); nullifyPrintWriter(); // HACK for previous versions filename = getRotatedFilename(filename, originalFilename); LOGGER.info("Creating new log chunk: " + filename); currentSamplesCount = 0; testStarted(); } super.sampleOccurred(event); if (this.isSampleWanted(event.getResult().isSuccessful())) { currentSamplesCount++; } } finally { isChanging = false; } }
/** * Examine the sample(s) and take appropriate action * * @see org.apache.jmeter.samplers.SampleListener#sampleOccurred(org.apache.jmeter.samplers.SampleEvent) */ @Override public void sampleOccurred(SampleEvent e) { SampleResult s = e.getResult(); if (log.isDebugEnabled()) { log.debug("ResultStatusHandler {} for {} OK? {}", getName(), s.getSampleLabel(), s.isSuccessful()); } if (!s.isSuccessful()) { if (isStopTestNow()) { s.setStopTestNow(true); } else if (isStopTest()) { s.setStopTest(true); } else if (isStopThread()) { s.setStopThread(true); } else if (isStartNextThreadLoop()) { s.setTestLogicalAction(TestLogicalAction.START_NEXT_ITERATION_OF_THREAD); } else if(isStartNextIterationOfCurrentLoop()) { s.setTestLogicalAction(TestLogicalAction.START_NEXT_ITERATION_OF_CURRENT_LOOP); } else if(isBreakCurrentLoop()) { s.setTestLogicalAction(TestLogicalAction.BREAK_CURRENT_LOOP); } } }
@Override public void sampleOccurred(SampleEvent se) { if (!isGenerateParentSample()) { // Check if we are still sampling our children if(res != null && !se.isTransactionSampleEvent()) { SampleResult sampleResult = se.getResult(); res.setThreadName(sampleResult.getThreadName()); res.setBytes(res.getBytesAsLong() + sampleResult.getBytesAsLong()); res.setSentBytes(res.getSentBytes() + sampleResult.getSentBytes()); if (!isIncludeTimers()) {// Accumulate waiting time for later pauseTime += sampleResult.getEndTime() - sampleResult.getTime() - prevEndTime; prevEndTime = sampleResult.getEndTime(); } if(!sampleResult.isSuccessful()) { res.setSuccessful(false); noFailingSamples++; } res.setAllThreads(sampleResult.getAllThreads()); res.setGroupThreads(sampleResult.getGroupThreads()); res.setLatency(res.getLatency() + sampleResult.getLatency()); res.setConnectTime(res.getConnectTime() + sampleResult.getConnectTime()); } } }