/* * 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.threads; import java.util.List; import org.apache.jmeter.assertions.Assertion; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.control.Controller; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.timers.Timer; /** * Packages methods related to sample handling.<br> * A SamplePackage contains all elements associated to a Sampler: * <ul> * <li>SampleListener(s)</li> * <li>Timer(s)</li> * <li>Assertion(s)</li> * <li>PreProcessor(s)</li> * <li>PostProcessor(s)</li> * <li>ConfigTestElement(s)</li> * <li>Controller(s)</li> * </ul> */ public class SamplePackage { private final List<SampleListener> sampleListeners; private final List<Timer> timers; private final List<Assertion> assertions; private final List<PostProcessor> postProcessors; private final List<PreProcessor> preProcessors; private final List<ConfigTestElement> configs; private final List<Controller> controllers; private Sampler sampler; public SamplePackage( List<ConfigTestElement> configs, List<SampleListener> listeners, List<Timer> timers, List<Assertion> assertions, List<PostProcessor> postProcessors, List<PreProcessor> preProcessors, List<Controller> controllers) { this.configs = configs; this.sampleListeners = listeners; this.timers = timers; this.assertions = assertions; this.postProcessors = postProcessors; this.preProcessors = preProcessors; this.controllers = controllers; } /** * Make the SamplePackage the running version, or make it no longer the * running version. This tells to each element of the SamplePackage that it's current state must * be retrievable by a call to recoverRunningVersion(). * @param running boolean * @see TestElement#setRunningVersion(boolean) */ public void setRunningVersion(boolean running) { setRunningVersion(configs, running); setRunningVersion(sampleListeners, running); setRunningVersion(assertions, running); setRunningVersion(timers, running); setRunningVersion(postProcessors, running); setRunningVersion(preProcessors, running); setRunningVersion(controllers, running); sampler.setRunningVersion(running); } private void setRunningVersion(List<?> list, boolean running) { @SuppressWarnings("unchecked") // all implementations extend TestElement List<TestElement> telist = (List<TestElement>)list; for (TestElement te : telist) { te.setRunningVersion(running); } } private void recoverRunningVersion(List<?> list) { @SuppressWarnings("unchecked") // All implementations extend TestElement List<TestElement> telist = (List<TestElement>)list; for (TestElement te : telist) { te.recoverRunningVersion(); } } /** * Recover each member of SamplePackage to the state before the call of setRunningVersion(true) * @see TestElement#recoverRunningVersion() */ public void recoverRunningVersion() { recoverRunningVersion(configs); recoverRunningVersion(sampleListeners); recoverRunningVersion(assertions); recoverRunningVersion(timers); recoverRunningVersion(postProcessors); recoverRunningVersion(preProcessors); recoverRunningVersion(controllers); sampler.recoverRunningVersion(); } /** * @return List of {@link SampleListener}s */ public List<SampleListener> getSampleListeners() { return sampleListeners; } /** * Add Sample Listener * @param listener {@link SampleListener} */ public void addSampleListener(SampleListener listener) { sampleListeners.add(listener); } /** * @return List of {@link Timer}s */ public List<Timer> getTimers() { return timers; } /** * Add Post processor * @param ex {@link PostProcessor} */ public void addPostProcessor(PostProcessor ex) { postProcessors.add(ex); } /** * Add Pre processor * @param pre {@link PreProcessor} */ public void addPreProcessor(PreProcessor pre) { preProcessors.add(pre); } /** * Add Timer * @param timer {@link Timer} */ public void addTimer(Timer timer) { timers.add(timer); } /** * Add Assertion * @param asser {@link Assertion} */ public void addAssertion(Assertion asser) { assertions.add(asser); } /** * @return List of {@link Assertion} */ public List<Assertion> getAssertions() { return assertions; } /** * @return List of {@link PostProcessor}s */ public List<PostProcessor> getPostProcessors() { return postProcessors; } /** * @return {@link Sampler} */ public Sampler getSampler() { return sampler; } /** * @param s {@link Sampler} */ public void setSampler(Sampler s) { sampler = s; } /** * Returns the preProcessors. * @return List of {@link PreProcessor} */ public List<PreProcessor> getPreProcessors() { return preProcessors; } /** * Returns the configs. * * @return List of {@link ConfigTestElement} */ public List<ConfigTestElement> getConfigs() { return configs; } }