Hi list,

On Friday, 13. feb 2009, myself wrote:
> would it be possible to use 'pan' to monitoring a test? The timeout option
> (-t) would be a nice feature to force a kill after a specified amount of
> time to a test that might run amok (at least in my automated test
> environment without a human operator in front of the system under test).
> But when I'm using the -t option it runs the given command n times until
> the time is over. Is there a trick to let 'pan' run the given command only
> one times?

Please find attached a small patch to add this simple feature to pan without
changing its previous behaviour. Running a test only once by pan for a
specific time is currently also possible without this patch. Just give the
'-t <time>' option *and* than the '-s 1' option. But it is racy yet, to do so.
Adding this patch removes this race.

With

 $ pan <....> -t 60s -s 1 -- my_test

the my_test will now run for one time only. If everyhing went ok, it returns
happy within the 60 seconds period. If my_test runs amok, it will never return
and pan will kill it after 60 seconds.

--8<--------8<-------8<-------8<--------8<-------8<-----8<--------8<------

Subject: limit starts when running for certain time, too
From: Marc Kleine-Budde <[email protected]>

This patches add a feature to limit the number of times a test is
started when running for a certain time instead of infinite runs.

This could be used to give a timeout for a certain test.

Signed-off-by: Marc Kleine-Budde <[email protected]>
Acked-by: Juergen Beisert <[email protected]>
---
 pan/pan.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Index: ltp-full-20090131/pan/pan.c
===================================================================
--- ltp-full-20090131.orig/pan/pan.c
+++ ltp-full-20090131/pan/pan.c
@@ -164,6 +164,7 @@ main(int argc, char **argv)
        int failcnt = 0;           /* count of total testcases that failed. */
     int err, i;
     int starts = -1;
+    int timed = 0;
     int run_time = -1; char modifier = 'm'; int ret = 0;
     int stop;
     int go_idle;
@@ -254,7 +255,7 @@ main(int argc, char **argv)
                }
                printf("PAN will run for %d seconds\n", run_time);
             }
-            starts = 0; //-t implies run as many starts as possible
+            timed = 1; //-t implies run as many starts as possible, by default
            break;
        case 'x':       /* number of tags to keep running */
            keep_active = atoi(optarg);
@@ -347,7 +348,9 @@ main(int argc, char **argv)
     /* Supply a default for starts.  If we are in sequential mode, use
      * the number of commands available; otherwise 1.
      */
-    if (starts == -1) {
+    if (timed == 1 && starts == -1) {  /* timed, infinite by default */
+       starts = -1;
+    } else if (starts == -1) {
        if (sequential) {
            starts = coll->cnt;
        } else {


Regards,
Juergen

-- 
Pengutronix e.K.                              | Juergen Beisert             |
Linux Solutions for Science and Industry      | Phone: +49-8766-939 228     |
Vertretung Sued/Muenchen, Germany             | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686              | http://www.pengutronix.de/  |

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to