4 messages in com.canoo.lists.webtestRe: [Webtest] New step: "sleep"
FromSent OnAttachments
John Willemin02 May 2003 13:40 
Scot Hale02 May 2003 13:51 
John Willemin02 May 2003 14:11 
Scot Hale02 May 2003 14:12 
Subject:Re: [Webtest] New step: "sleep"
From:Scot Hale (hal@hotmail.com)
Date:05/02/2003 01:51:41 PM
List:com.canoo.lists.webtest

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 <jj@templarcorp.com> Reply-To: webt@lists.canoo.com To: webt@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 WebT@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