Return-Path: Delivered-To: apmail-jakarta-ant-dev-archive@jakarta.apache.org Received: (qmail 6148 invoked by uid 500); 21 Jun 2001 10:19:20 -0000 Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk Reply-To: ant-dev@jakarta.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 6130 invoked by uid 500); 21 Jun 2001 10:19:16 -0000 Delivered-To: apmail-jakarta-ant-cvs@apache.org Date: 21 Jun 2001 10:19:14 -0000 Message-ID: <20010621101914.6099.qmail@apache.org> From: bodewig@apache.org To: jakarta-ant-cvs@apache.org Subject: cvs commit: jakarta-ant/src/testcases/org/apache/tools/ant/taskdefs SleepTest.java bodewig 01/06/21 03:19:13 Added: docs/manual/CoreTasks sleep.html src/etc/testcases/taskdefs sleep.xml src/main/org/apache/tools/ant/taskdefs Sleep.java src/testcases/org/apache/tools/ant/taskdefs SleepTest.java Log: new files for new task. Submitted by: Steve Loughran Revision Changes Path 1.1 jakarta-ant/docs/manual/CoreTasks/sleep.html Index: sleep.html =================================================================== Sleep

Sleep

Description

A task for sleeping a short period of time, useful when a build or deployment process requires an interval between tasks.

Parameters

Attribute Description Required
hours hours to to add to the sleep time No
minutes minutes to add to the sleep time No
seconds seconds to add to the sleep time No
milliseconds milliseconds to add to the sleep time No
failonerror flag controlling whether to break the build on an error. No

The sleep time is the sum of specified values, hours, minutes seconds and milliseconds. A negative value can be supplied to any of them provided the total sleep time is positive

Note that sleep times are always hints to be interpred by the OS how it feels - small times may either be ignored or rounded up to a minimum timeslice. Note also that the system clocks often have a fairly low granularity too, which complicates measuring how long a sleep actually took.

Examples

   <sleep milliseconds="10"/>
Sleep for about 10 mS.
   <sleep seconds="2"/>
Sleep for about 2 seconds.
   <sleep minutes="-59" seconds="-58"/>

Sleep for -one hour less 59:58, or two seconds again

   <sleep />
Sleep for no time at all. This may yield the CPU time to another thread or process.

Copyright © 2000,2001 Apache Software Foundation. All rights Reserved.

1.1 jakarta-ant/src/etc/testcases/taskdefs/sleep.xml Index: sleep.xml =================================================================== 1.1 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Sleep.java Index: Sleep.java =================================================================== /* * 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 acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" 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" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * 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 * . */ package org.apache.tools.ant.taskdefs; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.BuildException; /** * A task to sleep for a period of time * * @author steve_l@iseran.com steve loughran * @created 01 May 2001 */ public class Sleep extends Task { /** * failure flag */ private boolean failOnError = true; /** * Description of the Field */ private int seconds = 0; /** * Description of the Field */ private int hours = 0; /** * Description of the Field */ private int minutes = 0; /** * Description of the Field */ private int milliseconds = 0; /** * Creates new instance */ public Sleep() { } /** * Sets the Seconds attribute of the Sleep object * * @param seconds The new Seconds value */ public void setSeconds(int seconds) { this.seconds = seconds; } /** * Sets the Hours attribute of the Sleep object * * @param hours The new Hours value */ public void setHours(int hours) { this.hours = hours; } /** * Sets the Minutes attribute of the Sleep object * * @param minutes The new Minutes value */ public void setMinutes(int minutes) { this.minutes = minutes; } /** * Sets the Milliseconds attribute of the Sleep object * * @param milliseconds The new Milliseconds value */ public void setMilliseconds(int milliseconds) { this.milliseconds = milliseconds; } /** * sleep for a period of time * * @param millis time to sleep */ public void doSleep(long millis) { try { Thread.currentThread().sleep(millis); } catch (InterruptedException ie) { } } /** * Sets the FailOnError attribute of the MimeMail object * * @param failOnError The new FailOnError value */ public void setFailOnError(boolean failOnError) { this.failOnError = failOnError; } /** * return time to sleep * * @return sleep time. if below 0 then there is an error */ private long getSleepTime() { return ((((long) hours * 60) + minutes) * 60 + seconds) * 1000 + milliseconds; } /** * verify parameters * * @throws BuildException if something is invalid */ public void validate() { long sleepTime = getSleepTime(); if (getSleepTime() < 0) { throw new BuildException("Negative sleep periods are not supported"); } } /** * Executes this build task. throws org.apache.tools.ant.BuildException * if there is an error during task execution. * * @exception BuildException Description of Exception */ public void execute() throws BuildException { try { validate(); long sleepTime=getSleepTime(); log("sleeping for "+sleepTime+" milliseconds", Project.MSG_VERBOSE); doSleep(sleepTime); } catch (Exception e) { if (failOnError) { throw new BuildException(e); } else { String text = e.toString(); log(text, Project.MSG_ERR); } } } } 1.1 jakarta-ant/src/testcases/org/apache/tools/ant/taskdefs/SleepTest.java Index: SleepTest.java =================================================================== /* * 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 acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" 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" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * 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 * . */ package org.apache.tools.ant.taskdefs; /** * @author steve_l@iseran.com steve loughran * @created 01 May 2001 */ public class SleepTest extends TaskdefsTest { private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/"; private final static boolean TRACE=false; public SleepTest(String name) { super(name); } public void setUp() { configureProject(TASKDEFS_DIR + "sleep.xml"); } public void test1() { Timer timer=new Timer(); executeTarget("test1"); timer.stop(); if(TRACE) System.out.println(" test1 elapsed time="+timer.time()); assert(timer.time()>=0); } public void test2() { Timer timer=new Timer(); executeTarget("test2"); timer.stop(); if(TRACE) System.out.println(" test2 elapsed time="+timer.time()); assert(timer.time()>=0); } public void test3() { Timer timer=new Timer(); executeTarget("test3"); timer.stop(); if(TRACE) System.out.println(" test3 elapsed time="+timer.time()); assert(timer.time()>=2000); } public void test4() { Timer timer=new Timer(); executeTarget("test3"); timer.stop(); if(TRACE) System.out.println(" test4 elapsed time="+timer.time()); assert(timer.time()>=2000 && timer.time()<60000); } public void test5() { expectBuildException("test5", "Negative sleep periods are not supported"); } public void test6() { Timer timer=new Timer(); executeTarget("test6"); timer.stop(); if(TRACE) System.out.println(" test6 elapsed time="+timer.time()); assert(timer.time()<2000); } /** * inner timer class */ private static class Timer { long start=0; long stop=0; public Timer() { start(); } public void start() { start=System.currentTimeMillis(); } public void stop() { stop=System.currentTimeMillis(); } public long time() { return stop-start; } } }