|
JMeter example source code file (InterleaveControl.java)
The JMeter InterleaveControl.java source code/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.IntegerProperty; public class InterleaveControl extends GenericController implements Serializable { private static final long serialVersionUID = 233L; private static final String STYLE = "InterleaveControl.style";// $NON-NLS-1$ public static final int IGNORE_SUB_CONTROLLERS = 0; public static final int USE_SUB_CONTROLLERS = 1; private boolean skipNext; private transient TestElement searchStart = null; private boolean currentReturnedAtLeastOne; private boolean stillSame = true; /*************************************************************************** * Constructor for the InterleaveControl object **************************************************************************/ public InterleaveControl() { } /** * {@inheritDoc} */ @Override public void reInitialize() { setFirst(true); currentReturnedAtLeastOne = false; searchStart = null; stillSame = true; skipNext = false; incrementIterCount(); recoverRunningVersion(); } public void setStyle(int style) { setProperty(new IntegerProperty(STYLE, style)); } public int getStyle() { return getPropertyAsInt(STYLE); } /** * {@inheritDoc} */ @Override public Sampler next() { if (isSkipNext()) { reInitialize(); return null; } return super.next(); } /** * {@inheritDoc} */ @Override protected Sampler nextIsAController(Controller controller) throws NextIsNullException { Sampler sampler = controller.next(); if (sampler == null) { currentReturnedNull(controller); return next(); } currentReturnedAtLeastOne = true; if (getStyle() == IGNORE_SUB_CONTROLLERS) { incrementCurrent(); skipNext = true; } else { searchStart = null; } return sampler; } /** * {@inheritDoc} */ @Override protected Sampler nextIsASampler(Sampler element) throws NextIsNullException { skipNext = true; incrementCurrent(); return element; } /** * If the current is null, reset and continue searching. The searchStart * attribute will break us off when we start a repeat. * <p> * {@inheritDoc} */ @Override protected Sampler nextIsNull() { resetCurrent(); return next(); } /** * {@inheritDoc} */ @Override protected void setCurrentElement(TestElement currentElement) throws NextIsNullException { // Set the position when next is first called, and don't overwrite // until reInitialize is called. if (searchStart == null) { searchStart = currentElement; } else if (searchStart == currentElement && !stillSame) { // We've gone through the whole list and are now back at the start // point of our search. reInitialize(); throw new NextIsNullException(); } } /** * {@inheritDoc} */ @Override protected void currentReturnedNull(Controller c) { if (c.isDone()) { removeCurrentElement(); } else if (getStyle() == USE_SUB_CONTROLLERS) { incrementCurrent(); } } protected boolean isSkipNext() { return skipNext; } protected void setSkipNext(boolean skipNext) { this.skipNext = skipNext; } /** * {@inheritDoc} */ @Override protected void incrementCurrent() { if (currentReturnedAtLeastOne) { skipNext = true; } stillSame = false; super.incrementCurrent(); } } Other JMeter examples (source code examples)Here is a short list of links related to this JMeter InterleaveControl.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.