private void saveOneMatch(JMeterVariables vars, String refName, List<String> matches) { if (matches.size() == 1) { // if not then invalid matchNum was likely supplied String match = matches.get(0); if (match != null) { vars.put(refName, match); } } }
@Override public Object getObject(String key) { return variables.getObject(key); }
buf.append("_g"); // $NON-NLS-1$ int pfxlen=buf.length(); String prevString=vars.get(buf.toString()); int previous=0; if (prevString!=null){ for (int x = 0; x < groups; x++) { buf.append(x); vars.put(buf.toString(), match.group(x)); buf.setLength(pfxlen); vars.put(buf.toString(), Integer.toString(groups-1)); for (int i = groups; i <= previous; i++){ buf.append(i); vars.remove(buf.toString());// remove the remaining _gn vars buf.setLength(pfxlen);
private void putIntoVar(final JMeterVariables jmvars, final String name, final ResultSet resultSet) throws SQLException { if (RS_STORE_AS_OBJECT.equals(resultSetHandler)) { jmvars.putObject(name, resultSet); } else if (RS_COUNT_RECORDS.equals(resultSetHandler)) { jmvars.put(name, resultSet.toString() + " " + countRows(resultSet) + " rows"); } else { jmvars.put(name, resultSet.toString()); } }
/** * Create variables for testPlan * @param testPlan {@link JMeterVariables} * @return {@link JMeterVariables} */ private JMeterVariables createVars(TestPlan testPlan) { testPlan.prepareForPreCompile(); //A hack to make user-defined variables in the testplan element more dynamic Map<String, String> args = testPlan.getUserDefinedVariables(); replacer.setUserDefinedVariables(args); JMeterVariables vars = new JMeterVariables(); vars.putAll(args); return vars; }
if(!currentResultVariable.isEmpty()) { results = new ArrayList<>(); jmvars.putObject(currentResultVariable, results); String name = varNames[i - 1].trim(); if (name.length()>0){ // Save the value in the variable if present jmvars.put(name+UNDERSCORE+j, o == null ? null : o.toString()); final String varCount = name + "_#"; // $NON-NLS-1$ String prevCount = jmvars.get(varCount); if (prevCount != null) { int prev = Integer.parseInt(prevCount); for (int n = j + 1; n <= prev; n++) { jmvars.remove(name + UNDERSCORE + n); jmvars.put(varCount, Integer.toString(j)); // save the current count
private void saveVars(JMeterVariables vars){ for(int i = 0; i < variableNames.length; i++){ values[i] = vars.get(variableNames[i]); } }
/** {@inheritDoc} */ @Override public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { JMeterVariables vars = getVariables(); String stringToSplit = ((CompoundVariable) values[0]).execute(); String varNamePrefix = ((CompoundVariable) values[1]).execute().trim(); String splitString = ","; if (values.length > 2) { // Split string provided String newSplitString = ((CompoundVariable) values[2]).execute(); splitString = newSplitString.length() > 0 ? newSplitString : splitString; } if (log.isDebugEnabled()){ log.debug("Split "+stringToSplit+ " using "+ splitString+ " into "+varNamePrefix); } String[] parts = JOrphanUtils.split(stringToSplit, splitString, "?");// $NON-NLS-1$ vars.put(varNamePrefix, stringToSplit); vars.put(varNamePrefix + "_n", Integer.toString(parts.length));// $NON-NLS-1$ for (int i = 1; i <= parts.length; i++) { if (log.isDebugEnabled()){ log.debug(parts[i-1]); } vars.put(varNamePrefix + "_" + i, parts[i - 1]);// $NON-NLS-1$ } vars.remove(varNamePrefix + "_" + (parts.length+1)); return stringToSplit; }
/** * {@inheritDoc} */ @Override public boolean isDone() { if (loopCount >= getEndIndex()) { return true; } JMeterContext context = getThreadContext(); StringBuilder builder = new StringBuilder( getInputVal().length()+getSeparator().length()+3); String inputVariable = builder.append(getInputVal()) .append(getSeparator()) .append(Integer.toString(loopCount+1)).toString(); final JMeterVariables variables = context.getVariables(); final Object currentVariable = variables.getObject(inputVariable); if (currentVariable != null) { variables.putObject(getReturnVal(), currentVariable); if (log.isDebugEnabled()) { log.debug("{} : Found in vars:{}, isDone:{}", getName(), inputVariable, Boolean.FALSE); } return false; } return super.isDone(); }
globalCounter = start; variables.put(getVarName(), formatNumber(globalCounter)); globalCounter += increment; long current = perTheadNumber.get().longValue(); if(isResetOnThreadGroupIteration()) { int iteration = variables.getIteration(); Long lastIterationNumber = perTheadLastIterationNumber.get(); if(iteration != lastIterationNumber.longValue()) { variables.put(getVarName(), formatNumber(current)); current += increment; if (current > end) {
threadContext.setVariables(jMeterVariables); threadContext.setThreadNum(1); threadContext.getVariables().put(JMeterThread.LAST_SAMPLE_OK, "true"); ThreadGroup threadGroup = new ThreadGroup(); threadGroup.setName("FunctionHelper-Dialog-ThreadGroup"); jMeterVariables = new JMeterVariables(); variablesTextArea.setText(variablesToString(jMeterVariables));
/** * Store in JMeter Variables the UserToken so that the SSL context is reused * See <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=57804">Bug 57804</a> * @param jMeterVariables {@link JMeterVariables} * @param localContext {@link HttpContext} */ private void extractClientContextAfterSample(JMeterVariables jMeterVariables, HttpContext localContext) { Object userToken = localContext.getAttribute(HttpClientContext.USER_TOKEN); if(userToken != null) { log.debug("Extracted from HttpContext user token:{} storing it as JMeter variable:{}", userToken, JMETER_VARIABLE_USER_TOKEN); // During recording JMeterContextService.getContext().getVariables() is null if (jMeterVariables != null) { jMeterVariables.putObject(JMETER_VARIABLE_USER_TOKEN, userToken); } } }
); JMeterVariables variables = new JMeterVariables(); JMeterContextService.getContext().setVariables(variables); while (true) { config.iterationStart(null); filePaths.add(variables.get(variableName));
/** * Helper for testing outside of JMeter */ public static void main(String[] args) { LoadGenerator generator = new LoadGenerator(); // Mock out JMeter environment JMeterVariables variables = new JMeterVariables(); JMeterContextService.getContext().setVariables(variables); generator.setFileName("config1.json"); generator.setVariableName("kafka_message"); generator.iterationStart(null); for (Map.Entry<String, Object> entry : variables.entrySet()) { System.out.println(entry.getKey() + " : " + entry.getValue()); } } }
@Override public int getIteration() { return variables.getIteration(); }
void notifyTestListeners() { threadVars.incIteration(); for (TestIterationListener listener : testIterationStartListeners) { listener.testIterationStart(new LoopIterationEvent(threadGroupLoopController, threadVars.getIteration())); if (listener instanceof TestElement) { ((TestElement) listener).recoverRunningVersion(); } } }
public JMeterThread(HashTree test, JMeterThreadMonitor monitor, ListenerNotifier note) { this.monitor = monitor; threadVars = new JMeterVariables(); testTree = test; compiler = new TestCompiler(testTree); threadGroupLoopController = (Controller) testTree.getArray()[0]; SearchByClass<TestIterationListener> threadListenerSearcher = new SearchByClass<>(TestIterationListener.class); // TL - IS test.traverse(threadListenerSearcher); testIterationStartListeners = threadListenerSearcher.getSearchResults(); SearchByClass<SampleMonitor> sampleMonitorSearcher = new SearchByClass<>(SampleMonitor.class); test.traverse(sampleMonitorSearcher); sampleMonitors = sampleMonitorSearcher.getSearchResults(); notifier = note; running = true; }
private void putIntoVar(final JMeterVariables jmvars, final String name, final Blob blob) throws SQLException { if (RS_STORE_AS_OBJECT.equals(resultSetHandler)) { try { long length = Math.max(blob.length(), MAX_RETAIN_SIZE); jmvars.putObject(name, IOUtils.toByteArray(blob.getBinaryStream(0, length))); } catch (IOException e) { log.warn("Could not read BLOB into {} as object.", name, e); } } else if (RS_COUNT_RECORDS.equals(resultSetHandler)) { jmvars.put(name, blob.length() + " bytes"); } else { try { long length = Math.max(blob.length(), MAX_RETAIN_SIZE); try (InputStream is = blob.getBinaryStream(0, length)) { jmvars.put(name, IOUtils.toString(is, ENCODING)); } } catch (IOException e) { log.warn("Can't convert BLOB to String using {}", ENCODING, e); } } }