Francois Gouget : testbot/TestAgent: Provide command-line access to the wait RPC.

Alexandre Julliard julliard at winehq.org
Wed Mar 27 13:09:01 CDT 2013


Module: tools
Branch: master
Commit: ea0744c7908dd06db7bf6c5b4518ae832cd5d993
URL:    http://source.winehq.org/git/tools.git/?a=commit;h=ea0744c7908dd06db7bf6c5b4518ae832cd5d993

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Wed Mar 27 16:37:06 2013 +0100

testbot/TestAgent: Provide command-line access to the wait RPC.

---

 testbot/scripts/TestAgent |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/testbot/scripts/TestAgent b/testbot/scripts/TestAgent
index 897ca81..bb7dd14 100755
--- a/testbot/scripts/TestAgent
+++ b/testbot/scripts/TestAgent
@@ -53,7 +53,7 @@ sub error(@)
 }
 
 my ($Cmd, $Hostname, $LocalFilename, $ServerFilename, @Rm);
-my (@Run, $RunIn, $RunOut, $RunErr);
+my (@Run, $RunIn, $RunOut, $RunErr, $WaitPid);
 my $SendFlags = 0;
 my $RunFlags = 0;
 my ($Port, $ConnectTimeout, $Timeout, $TunnelOpt);
@@ -172,6 +172,11 @@ while (@ARGV)
         $Cmd = $arg;
         last;
     }
+    elsif ($arg eq "wait")
+    {
+        $Cmd = $arg;
+        $WaitPid = check_opt_val($arg, $WaitPid);
+    }
     elsif ($arg eq "rm")
     {
         $Cmd = $arg;
@@ -216,6 +221,25 @@ if (!defined $Usage)
         error("the --run-xxx options can only be used with the run command\n");
         $Usage = 2;
     }
+    elsif ($Cmd eq "wait")
+    {
+        my $oldwarn = $SIG{__WARN__};
+        $SIG{__WARN__} = sub { die $_[0] };
+        my $bad = eval { $WaitPid < 0 };
+        if (defined $oldwarn)
+        {
+            $SIG{__WARN__} = $oldwarn;
+        }
+        else
+        {
+            delete $SIG{__WARN__};
+        }
+        if ($bad or $@)
+        {
+            error("the pid '$WaitPid' is invalid\n");
+            $Usage = 2;
+        }
+    }
     elsif ($Cmd eq "rm" and !@Rm)
     {
         error("you must specify the server files to delete\n");
@@ -243,6 +267,7 @@ if (defined $Usage)
     print "Usage: $name0 [options] <hostname> sendfile <localpath> <serverpath>\n";
     print "or     $name0 [options] <hostname> getfile <serverpath> <localpath>\n";
     print "or     $name0 [options] <hostname> run <command> <arguments>\n";
+    print "or     $name0 [options] <hostname> wait <pid>\n";
     print "or     $name0 [options] <hostname> rm <serverfiles>\n";
     print "or     $name0 [options] <hostname> [ping|version]\n";
     print "\n";
@@ -264,6 +289,7 @@ if (defined $Usage)
     print "    --run-err <serverpath> Redirect the stderr or the command being run to the\n";
     print "                  specified server file.\n";
     print "    --run-dntrunc-err Do not truncate the file stderr is redirected to.\n";
+    print "  wait          Waits for the specified child process on the server.\n";
     print "  rm            Deletes the specified files on the server.\n";
     print "  getversion    Returns the version of the server.\n";
     print "  ping          Makes sure the server is still alive.\n";
@@ -318,6 +344,11 @@ elsif ($Cmd eq "run")
         }
     }
 }
+elsif ($Cmd eq "wait")
+{
+    $Result = $TA->Wait($WaitPid, $Timeout);
+    print "Child exit status: $Result\n" if (defined $Result);
+}
 elsif ($Cmd eq "rm")
 {
     $Result = $TA->Rm(@Rm);




More information about the wine-cvs mailing list