Package org.apache.jmeter.testelement

Source Code of org.apache.jmeter.testelement.TestPlan

// $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestPlan.java,v 1.11 2004/02/14 03:34:30 sebb Exp $
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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.testelement;

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.ConfigElement;
import org.apache.jmeter.testelement.property.BooleanProperty;
import org.apache.jmeter.testelement.property.CollectionProperty;
import org.apache.jmeter.testelement.property.StringProperty;
import org.apache.jmeter.testelement.property.TestElementProperty;
import org.apache.jmeter.threads.ThreadGroup;
import org.apache.jmeter.util.JMeterUtils;

/**
* @author    Michael Stover
* Created   March 13, 2001
* @version   $Revision: 1.11 $ Last updated: $Date: 2004/02/14 03:34:30 $
*/
public class TestPlan extends AbstractTestElement implements Serializable
{
    public final static String THREAD_GROUPS = "TestPlan.thread_groups";
    public final static String FUNCTIONAL_MODE = "TestPlan.functional_mode";
    public final static String USER_DEFINED_VARIABLES =
        "TestPlan.user_defined_variables";
    public final static String SERIALIZE_THREADGROUPS =
        "TestPlan.serialize_threadgroups";
    public final static String COMMENTS = "TestPlan.comments";

    private List threadGroups = new LinkedList();
    private List configs = new LinkedList();
    private static List itemsCanAdd = new LinkedList();
    private static TestPlan plan;
   
    static {
        // WARNING! This String value must be identical to the String value
        // returned in org.apache.jmeter.threads.ThreadGroup.getClassLabel()
        // method. If it's not you will not be able to add a Thread Group
        // element to a Test Plan.
        itemsCanAdd.add(JMeterUtils.getResString("threadgroup"));
    }

    public TestPlan()
    {
//        this("Test Plan");
//        setFunctionalMode(false);
//        setSerialized(false);
    }

    public TestPlan(String name)
    {
        setName(name);
//    setFunctionalMode(false);
//    setSerialized(false);
        setProperty(new CollectionProperty(THREAD_GROUPS, threadGroups));
    }

    public boolean isFunctionalMode()
    {
        return getPropertyAsBoolean(FUNCTIONAL_MODE);
    }

    public void setUserDefinedVariables(Arguments vars)
    {
        setProperty(new TestElementProperty(USER_DEFINED_VARIABLES, vars));
    }

    public Map getUserDefinedVariables()
    {
        Arguments args = getVariables();
        return args.getArgumentsAsMap();
    }

    private Arguments getVariables()
    {
        Arguments args =
            (Arguments) getProperty(USER_DEFINED_VARIABLES).getObjectValue();
        if (args == null)
        {
            args = new Arguments();
            setUserDefinedVariables(args);
        }
        return args;
    }

    public void setFunctionalMode(boolean funcMode)
    {
        setProperty(new BooleanProperty(FUNCTIONAL_MODE, funcMode));
    }
   
    public void setSerialized(boolean serializeTGs)
    {
        setProperty(new BooleanProperty(SERIALIZE_THREADGROUPS, serializeTGs));
    }
   
    public boolean isSerialized()
    {
        return getPropertyAsBoolean(SERIALIZE_THREADGROUPS);
    }

    public void addParameter(String name, String value)
    {
        getVariables().addArgument(name, value);
    }

    public static TestPlan createTestPlan(String name)
    {
        if (plan == null)
        {
            if (name == null)
            {
                plan = new TestPlan();
            }
            else
            {
                plan = new TestPlan(name);
            }
            plan.setProperty(
                new StringProperty(
                    TestElement.GUI_CLASS,
                    "org.apache.jmeter.control.gui.TestPlanGui"));
        }
        return plan;
    }

    public void addTestElement(TestElement tg)
    {
        super.addTestElement(tg);
        if (tg instanceof ThreadGroup && !isRunningVersion())
        {
            addThreadGroup((ThreadGroup) tg);
        }
    }

    public void addJMeterComponent(TestElement child)
    {
        if (child instanceof ThreadGroup)
        {
            addThreadGroup((ThreadGroup) child);
        }
    }

    /**
     * Gets the ThreadGroups attribute of the TestPlan object.
     *
     * @return   the ThreadGroups value
     */
    public Collection getThreadGroups()
    {
        return threadGroups;
    }

    /**
     * Adds a feature to the ConfigElement attribute of the TestPlan object.
     *
     * @param c  the feature to be added to the ConfigElement attribute
     */
    public void addConfigElement(ConfigElement c)
    {
        configs.add(c);
    }

    /**
     * Adds a feature to the ThreadGroup attribute of the TestPlan object.
     *
     * @param group  the feature to be added to the ThreadGroup attribute
     */
    public void addThreadGroup(ThreadGroup group)
    {
        threadGroups.add(group);
    }
}
TOP

Related Classes of org.apache.jmeter.testelement.TestPlan

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.