[Webtest] New step: "sleep"

Scot Hale webtest@lists.canoo.com
Fri, 02 May 2003 14:13:00 -0700


If your task shall contain other tasks as nested elements (like parallel), 
your class must implement the interface org.apache.tools.ant.TaskContainer.

I guess all we would have to do is have the TestSpecificationTask implement 
TaskContainer

org.apache.tools.ant
Interface TaskContainer

All Known Implementing Classes:
    Parallel, Sequential, Target

public interface TaskContainer

Interface for objects which can contain tasks.

It is recommended that implementations call perform rather than execute for 
the tasks they contain, as this method ensures that the appropriate 
BuildEvents will be generated.

Scot Hale




----Original Message Follows----
From: "Scot Hale" <halesm@hotmail.com>
Reply-To: webtest@lists.canoo.com
To: webtest@lists.canoo.com
Subject: Re: [Webtest] New step: "sleep"
Date: Fri, 02 May 2003 13:52:03 -0700

John,

This is very nice, and I think it is a very nice example of how to extend 
canoo webtest.

Alternatively, I think there might be a way to have the TestSpec inherit the 
Ant "sleep" task.  This would be nice.

Unfortunately I am not sure exactly how to inherit the core tasks.  I will 
start looking, but if anyone else knows I would appreciate the help.

Scot Hale




----Original Message Follows----
From: John Willemin <jjw@templarcorp.com>
Reply-To: webtest@lists.canoo.com
To: webtest@lists.canoo.com
Subject: [Webtest] New step: "sleep"
Date: Fri, 02 May 2003 16:41:16 -0400

Hey - Been using Canoo for about a week now and there was something I had to 
add in order to test our webapp. So in the spirit of open source, I'm 
throwing it out for criticism and in the hopes someone else will find it 
useful.

In our web application, a person runs a query, and these queries always take 
2 minutes to complete. So rather than aimlessly refresh for 2 minutes, I 
just wanted to write a sleep task to have the tests wait until the query 
would be complete. So, here it is. It gets called like this:

                 <sleep stepid="wait for completion"
                     sleepTime="20000" />

Where sleepTime is the amount of time to sleep, in milliseconds. It probably 
makes more sense to have that in seconds, and sleepTime could be renamed 
"seconds" to make things more intuitive. That's easy to change, so if that's 
better, I can send out "version 2" :)

Tell me what you think. It might be that I'm the only person who finds this 
useful.

Thanks,
John

 >>>>>>>>>
Changes to TestStepSequence.java - I just had to add this:
 >>>>>>>>>

     public void addSleep(Sleep step) {
         step.setStepType("sleep");
         addStep(step);
     }


 >>>>>>>>>>>
com.canoo.webtest.steps.Sleep.java
 >>>>>>>>>>>


package com.canoo.webtest.steps;

import com.canoo.webtest.engine.Context;
import com.canoo.webtest.engine.StepExecutionException;

import java.util.HashMap;

/**
  *  The sleep task is pretty simple. All it does is call Thread.sleep() for 
a specified time so that your webapp
  *   can finish what it's doing.
  *
  * @author John Willemin
  */
public class Sleep
     extends Step
     {

     /**
      * This is how long we're sleeping for. Has to be an object, can't be a 
primitive, since it's getting put
      *  into a HashMap later.
      */
     private Integer fSleepTime = null;

     public void setSleepTime(String sleepTime)
     {
         fSleepTime = new Integer( Integer.parseInt( sleepTime ) );
     }

     public void doExecute(Context context)
         throws StepExecutionException
     {
         logText(context, " sleeping for " + fSleepTime.intValue() );

         verifyParameters();
         try
         {
             Thread.sleep( fSleepTime.longValue() );
         }
         catch( InterruptedException ie )
         {
             // can't do much here
         }
     }

     public void expandProperties()
     {
         super.expandProperties();
     }

     protected void verifyParameters()
     {
         if(fSleepTime == null)
         {
             throw new StepExecutionException("Attribute sleepTime must be 
set");
         }
     }

     /**
      * Collect parameters for reporting. Our our parameters to the ones 
obtained
      * from super.
      *
      * @return a HashMap containing paramter names (key) and their 
associated
      * values
      */
     public HashMap getParameterDictionary()
      {
          HashMap map = super.getParameterDictionary();
          if(fSleepTime != null)
          {
              map.put("sleepTime", fSleepTime);
          }
          return map;
      }
}

_______________________________________________
WebTest mailing list
WebTest@lists.canoo.com
http://lists.canoo.com/mailman/listinfo/webtest


_________________________________________________________________
Protect your PC - get McAfee.com VirusScan Online  
http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963

_______________________________________________
WebTest mailing list
WebTest@lists.canoo.com
http://lists.canoo.com/mailman/listinfo/webtest


_________________________________________________________________
The new MSN 8: advanced junk mail protection and 2 months FREE*  
http://join.msn.com/?page=features/junkmail