@Override public void addNode(Object object, HashTree subTree) { JMeterTreeNode treeNode = (JMeterTreeNode) object; Object userObject = treeNode.getUserObject(); if (userObject instanceof TransactionController || (userObject instanceof Sampler && !(userObject instanceof TestAction) && !(userObject instanceof DebugSampler))) { Matcher matcher = TRANSACTIONS_REGEX.matcher(((TestElement)userObject).getName()); if(!matcher.matches()) { listOfTransactions.add(((TestElement)userObject).getName()); } } }
private String whoAmI(String id, TestElement o) { return id + " @" + System.identityHashCode(o)+ " '"+ o.getName() + "' " + (log.isDebugEnabled() ? Thread.currentThread().getName() : ""); }
/** {@inheritDoc} */ @Override public void configure(TestElement testElement) { setName(testElement.getName()); }
/** {@inheritDoc} */ @Override public String getName() { return ((TestElement) getUserObject()).getName(); }
@Override public void addNode(Object o, HashTree hashTree) { if (o instanceof TestElement) { TestElement el = (TestElement) o; log.info(StringUtils.repeat(" ", indent) + "[" + el.getClass().getSimpleName() + "] " + el.getName()); } else { log.info(StringUtils.repeat(" ", indent) + o); } indent++; }
@Override public void addNode(Object o, HashTree hashTree) { if (o instanceof TestElement) { TestElement el = (TestElement) o; log.info(StringUtils.repeat(" ", indent) + "[" + el.getClass().getSimpleName() + "] " + el.getName()); } else { log.info(StringUtils.repeat(" ", indent) + o); } indent++; }
/** * @param sel controller name * @return index of controller named sel if present, otherwise index of default if found, otherwise {@link Integer#MAX_VALUE} */ private int scanControllerNames(String sel) { int i = 0; int defaultPos = Integer.MAX_VALUE; for (TestElement el : getSubControllers()) { String name = el.getName(); if (name.equals(sel)) { return i; } if (name.equalsIgnoreCase("default")) { //$NON-NLS-1$ defaultPos = i; } i++; } return defaultPos; }
private HashTree getSubTree(TestElement te) { try { Field field = JMeterThread.class.getDeclaredField("testTree"); field.setAccessible(true); JMeterThread parentThread = JMeterContextService.getContext().getThread(); if (parentThread == null) { log.error("Current thread is null."); throw new NullPointerException(); } HashTree testTree = (HashTree) field.get(parentThread); SearchByClass<?> searcher = new SearchByClass<>(te.getClass()); testTree.traverse(searcher); return searcher.getSubTree(te); } catch (ReflectiveOperationException ex) { log.warn("Can not get sub tree for Test element " + te.getName(), ex); return null; } }
/** * Create a JMeterProperty from an object. * The object can be one of: * <ul> * <li>JMeterProperty - returned unchanged</li> * <li>TestElement => TestElementProperty with the same name</li> * <li>Map|Collection => Map|CollectionProperty with the name = item.hashCode</li> * </ul> * @param item object to be turned into a property * @return the JMeterProperty */ protected static JMeterProperty makeProperty(Object item) { if (item instanceof JMeterProperty) { return (JMeterProperty) item; } if (item instanceof TestElement) { return new TestElementProperty(((TestElement) item).getName(), (TestElement) item); } if (item instanceof Collection<?>) { return new CollectionProperty(Integer.toString(item.hashCode()), (Collection<?>) item); } if (item instanceof Map<?, ?>) { return new MapProperty(Integer.toString(item.hashCode()), (Map<?, ?>) item); } return null; }
private void delay(List<Timer> timers) { long totalDelay = 0; for (Timer timer : timers) { TestBeanHelper.prepare((TestElement) timer); long delay = timer.delay(); if (APPLY_TIMER_FACTOR && timer.isModifiable()) { if (log.isDebugEnabled()) { log.debug("Applying TIMER_FACTOR:{} on timer:{} for thread:{}", TIMER_FACTOR, ((TestElement) timer).getName(), getThreadName()); } delay = Math.round(delay * TIMER_FACTOR); } totalDelay += delay; } if (totalDelay > 0) { try { if (scheduler) { // We reduce pause to ensure end of test is not delayed by a sleep ending after test scheduled end // See Bug 60049 totalDelay = TIMER_SERVICE.adjustDelay(totalDelay, endTime); } TimeUnit.MILLISECONDS.sleep(totalDelay); } catch (InterruptedException e) { log.warn("The delay timer was interrupted - probably did not wait as long as intended."); Thread.currentThread().interrupt(); } } }
/** * Replace in jMeterTreeNode regex by replaceBy * @param jMeterTreeNode Current {@link JMeterTreeNode} * @param regex Text to search (can be regex) * @param replaceBy Replacement text * @param caseSensitiveReplacement boolean if search is case sensitive * @return null if no replacement occurred or Pair of (number of replacement, current tree node) */ private Pair<Integer, JMeterTreeNode> doReplacementInCurrentNode(JMeterTreeNode jMeterTreeNode, String regex, String replaceBy, boolean caseSensitiveReplacement) { try { if (jMeterTreeNode.getUserObject() instanceof Replaceable) { Replaceable replaceable = (Replaceable) jMeterTreeNode.getUserObject(); int numberOfReplacements = replaceable.replace(regex, replaceBy, caseSensitiveReplacement); if (numberOfReplacements > 0) { if (logger.isInfoEnabled()) { logger.info("Replaced {} in element:{}", numberOfReplacements, ((TestElement) jMeterTreeNode.getUserObject()).getName()); } return Pair.of(numberOfReplacements, jMeterTreeNode); } } } catch (Exception ex) { logger.error("Error occurred replacing data in node:{}", jMeterTreeNode.getName(), ex); } return null; }
private void fillGridFromTree(WeightedSwitchController wsc, CollectionProperty oldData) { JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel(); JMeterTreeNode root = (JMeterTreeNode) treeModel.getRoot(); Map<JMeterTreeNode, Boolean> childItems = getChildItems(root, wsc); for (JMeterTreeNode node : childItems.keySet()) { String w = "100"; JMeterProperty row = getRowByName(node.getTestElement().getName(), oldData); if (row != null) { w = ((CollectionProperty) row).get(1).getStringValue(); } grid.getModel().addRow(new String[]{node.getTestElement().getName(), w, childItems.get(node).toString()}); } }
if (log.isDebugEnabled()) { log.debug("obj.getStringValue() returned null for test element:" + el.getName() + " at property:" + obj.getName());
/** * A newly created gui component can be initialized with the contents of a * Test Element object by calling this method. The component is responsible * for querying the Test Element object for the relevant information to * display in its GUI. * <p> * AbstractJMeterGuiComponent provides a partial implementation of this * method, setting the name of the component and its enabled status. * Subclasses should override this method, performing their own * configuration as needed, but also calling this super-implementation. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { setName(element.getName()); enabled = element.isEnabled(); getCommentPanel().setText(element.getComment()); }
replacer.replaceValues((TestElement) node); } catch (InvalidVariableException e) { log.error("invalid variables in node {}", ((TestElement)node).getName(), e); replacer.replaceValues((TestElement) node); } catch (InvalidVariableException e) { log.error("invalid variables in node {}", ((TestElement)node).getName(), e);
StringBuilder reqText = new StringBuilder("Parallel items:\n"); for (TestElement ctl : controllers) { reqText.append(ctl.getName()).append("\n"); JMeterThread jmThread = new JMeterThreadParallel(getTestTree(ctl), this, notifier, getGenerateParent()); jmThread.setThreadName("parallel " + this.getName());
private void fillGridFromTree(WeightedSwitchController wsc, CollectionProperty oldData) { JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel(); JMeterTreeNode root = (JMeterTreeNode) treeModel.getRoot(); LinkedList<JMeterTreeNode> childItems = getChildItems(root, wsc); for (int n = 0; n < childItems.size(); n++) { JMeterTreeNode node = childItems.get(n); String w = "100"; if (oldData.size() > n && oldData.get(n) != null) { JMeterProperty row = oldData.get(n); if (row instanceof CollectionProperty) { w = ((CollectionProperty) row).get(1).getStringValue(); } } grid.getModel().addRow(new String[]{node.getTestElement().getName(), w}); // FIXME: what about disabled items? will they screw up it all? } }
setName(el.getName()); Arguments arguments = (Arguments) el.getProperty(HTTPSamplerBase.ARGUMENTS).getObjectValue();
private HashTree getTestTree(TestElement te) { // can't use GenericController because of infinite looping CustomLoopController wrapper = new CustomLoopController(JMeterContextService.getContext()); wrapper.setLoops(1); wrapper.setContinueForever(false); wrapper.addTestElement(te); wrapper.setName("wrapped " + te.getName()); wrapper.setRunningVersion(isRunningVersion()); HashTree tree = new HashTree(); HashTree subTree = getSubTree(te); if (subTree != null) { tree.add(wrapper, subTree); } else { tree.add(wrapper); } return tree; }
final TestPlan userObject = (TestPlan) current.getUserObject(); userObject.addTestElement(item); userObject.setName(item.getName()); userObject.setFunctionalMode(tp.isFunctionalMode()); userObject.setSerialized(tp.isSerialized());