Package org.apache.jmeter.protocol.http.control

Source Code of org.apache.jmeter.protocol.http.control.HttpTestSample

/*
* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation.  All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache JMeter" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache JMeter", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation.  For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.jmeter.protocol.http.control;

import java.util.*;

import org.apache.jmeter.config.ConfigElement;
import org.apache.jmeter.protocol.http.config.UrlConfig;
import org.apache.jmeter.control.GenericController;
import org.apache.jmeter.control.NoEntryException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
import org.apache.jmeter.control.SamplerController;
import org.apache.jmeter.samplers.*;
import org.apache.jmeter.gui.JMeterComponentModel;

/**
*  Title: Apache JMeter Description: Copyright: Copyright (c) 2000 Company:
*  Apache Foundation
*
*@author     Michael Stover
*@created    $Date: 2001/06/07 23:38:46 $
*@version    1.0
*/

public class HttpTestSample extends GenericController implements JMeterComponentModel {
  private List urls;
  private UrlConfig defaultUrl;
  private Iterator urlIterator;

  private static List addableList = new LinkedList();


  /**
   *  Constructor for the HttpTestSample object
   */
  public HttpTestSample() {
    super();
    urls = new LinkedList();
    defaultUrl = new UrlConfig();
    defaultUrl.setPort(80);
    defaultUrl.setProtocol("http");
    defaultUrl.setMethod(UrlConfig.GET);

  }

  public void uncompile()
  {
    super.uncompile();
    urls.clear();
    urlIterator = null;
  }


  /**
   *  !ToDo (Method description)
   *
   *@param  config  !ToDo (Parameter description)
   */
  public void setDefaultUrl(UrlConfig config) {
    defaultUrl = config;
  }

  public List getUrlList()
  {
    return this.urls;
  }


  /**
   *  Gets the DefaultUrl attribute of the HttpTestSample object
   *
   *@return    The DefaultUrl value
   */
  public UrlConfig getDefaultUrl() {
    return defaultUrl;
  }


  /**
   *  Gets the ClassLabel attribute of the HttpTestSample object
   *
   *@return    The ClassLabel value
   */
  public String getClassLabel() {
    return "Web Testing";
  }


  /**
   *  Gets the GuiClass attribute of the HttpTestSample object
   *
   *@return    The GuiClass value
   */
  public Class getGuiClass() {
    return org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui.class;
  }


  /**
   *  Gets the AddList attribute of the HttpTestSample object
   *
   *@return    The AddList value
   */
  public Collection getAddList() {
    return addableList;
  }


  /**
   *  !ToDo (Method description)
   *
   *@return    !ToDo (Return description)
   */
  public Object clone() {
    HttpTestSample control = new HttpTestSample();
    control.setDefaultUrl(defaultUrl);
    Iterator iter = urls.iterator();
    while (iter.hasNext()) {
      control.addConfigElement((ConfigElement) iter.next());
    }
    this.standardCloneProc(control);
    return control;
  }

  public Class getTagHandlerClass()
  {
    return org.apache.jmeter.save.handlers.HttpTestSampleHandler.class;
  }


  /**
   *  !ToDo
   *
   *@param  config  !ToDo
   */
  public void addConfigElement(ConfigElement config) {
    if (config instanceof UrlConfig) {
      urls.add(config);
    }
    else {
      this.getConfigElements().add(config);
    }
  }


  public Entry nextEntry()
  {
    Entry entry = null;
    if(!init())
    {
      entry = null;
    }
    else if(urlIterator.hasNext())
    {
      entry = createEntry((ConfigElement)urlIterator.next());
    }
    else
    {
      urlIterator = null;
      entry = new CycleEntry();
    }
    return entry;
  }

  protected boolean init()
  {
    if(defaultUrl.isComplete() && urls.size() == 0)
    {
      urls.add(defaultUrl);
    }
    if(urls.size() == 0)
    {
      return false;
    }
    if(urlIterator == null)
    {
      urlIterator = urls.iterator();
    }
    return true;
  }



  static {
    addableList.add(new UrlConfig().getClassLabel());
    addableList.add(new CookieManager().getClassLabel());
    addableList.add(new AuthManager().getClassLabel());
  }


  /**
   *  Description of the Method
   *
   *@param  next  Description of Parameter
   *@return       Description of the Returned Value
   */
  private Entry createEntry(ConfigElement element) {
    Entry entry = new Entry();
    entry.setSamplerClass(HTTPSampler.class);
    entry.addConfigElement(element);
    entry.addConfigElement(defaultUrl);
    for (Iterator iterB = this.getConfigElements().iterator(); iterB.hasNext(); ) {
      entry.addConfigElement((ConfigElement) iterB.next());
    }
    return entry;
  }
}
TOP

Related Classes of org.apache.jmeter.protocol.http.control.HttpTestSample

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.