Thank you for the details. I guess my fuzziness is around making sure
QTP is loaded only once.
I'm thinking before executing QTP, I can check if QTP is up and running
by cycling through all the windows...
Thanks again.
Eladio
________________________________
From: Sharon Lucas [mailto:luc...@us.ibm.com]
Sent: Wednesday, June 17, 2009 6:23 PM
To: Martin, Eladio (GMI Debt Markets)
Cc: staf-users@lists.sourceforge.net
Subject: Re: [staf-users] Staf & QTP
STAF does not provide a specific interface to run a QTP test. But
STAF's PROCESS service has a START request that lets you run most any
command on a local or remote machine (that's also running STAF). So, if
you know how to run your QTP script from the command line, then you can
use the STAF PROCESS service's START request to submit the command that
runs your QTP script. For example:
STAF <local or remote machine> PROCESS START SHELL COMMAND <QTP
command> RETURNSTDOUT STDERRTOSTDOUT WAIT
If you don't know why to run a QTP script from the command line google
for this info. For example, I googled and found that you can run a QTP
script from the command line as follows using the QTP-Plus pack for
"QuickTest Command Line Utility" as talked about at
http://www.sqaforums.com/showflat.php?Number=377374:
QuickTestLauncher /t <testname> /r <resultdirectory> /log /close
Or, you can create a .vbs file which launches QTP and runs a test so you
can run a .vbs file as your command instead . For example: cscript
<.vbs file name>
Once you've figured out how to run your QTP script via the command line,
you should be able to run your QTP test command via STAF and return the
results:
STAF <machine> PROCESS START SHELL COMMAND "<QTP command>"
RETURNSTDOUT STDERRTOSTDOUT WAIT
Depending on where your QTP scripts logs data, you could also use the
RETURNFILE <FileName> option, specifying the name of your QTP log file
as an option in the PROCESS START request. See section "8.12 Process
Service" in the STAF User's Guide at
http://staf.sourceforge.net/current/STAFUG.htm#HDRPROCSRV for more
information on running a command on a remote machine using STAF's
PROCESS service.
Once you've figured out the PROCESS START request that you want to use,
then you can submit the PROCESS START request via a Java program. The
STAF Java User's Guide at
http://staf.sourceforge.net/current/STAFJava.htm provides examples on
how to submit any STAF service request, such as a PROCESS START request
and get its result. See the 4th example in section "3.1.1 Class
STAFHandle", sub-section "Examples":
This is an example of creating a new STAFHandle and using the submit2()
method to submit requests to STAF. Note that since auto-unmarshalling is
enabled by default when creating a new STAFHandle, the STAFResult object
returned by the submit2() method will contain the result's marshalling
context and root object so that you don't have to call the unmarshall()
method to unmarshall results that contain multiple values.
import com.ibm.staf.*;
import java.util.*;
public class STAFTest
{
public static void main(String argv[])
{
try
{
// Create a STAFHandle
STAFHandle handle = new STAFHandle("MyApplication");
System.out.println("My handle is: " + handle.getHandle());
try
{
// Submit a request to the PROCESS service to run a
command on
// a machine and wait for it to complete and returns its
stdout
// and stderr. Note that the result from this request
returns
// a marshalled map so we'll use STAFResult's resultObj
variable
// to access the map root object
String machine = "local";
// Specify your QTP command information here
String qtpDir = "C:\\Program Files\\Mercury
Interactive\\QuickTest Professional";
String qtpTest = qtpDir + "\\Tests\\YourTestName";
String qtpResultDir = "C:\\Tests\\results";
String command = "QuickTestLauncher.exe /t \"" + qtpTest
+
" /r \"" + qtpResultDir + "\" /close";
String service = "PROCESS";
String request = "START SHELL COMMAND " +
STAFUtil.wrapData(command) +
" WORKDIR " + STAFUtil.wrapData(qtpDir) +
" WAIT RETURNSTDOUT STDERRTOSTDOUT";
STAFResult result = handle.submit2(machine, service,
request);
if (result.rc != 0)
{
System.out.println(
"ERROR: STAF " + machine + " " + service + " " +
request +
" RC: " + result.rc + ", Result: " +
result.result);
System.exit(1);
}
// The command was started successfully. Check the
process
// return code and if non-zero, also print an error
message
Map resultMap = (Map)result.resultObj;
String processRC = (String)resultMap.get("rc");
if (!processRC.equals("0"))
{
System.out.println(
"ERROR: Process RC is not 0.\n" +
result.resultContext);
System.exit(1);
}
// Print the stdout/stderr data for the command
List returnedFileList = (List)resultMap.get("fileList");
Map stdoutMap = (Map)returnedFileList.get(0);
String stdoutData = (String)stdoutMap.get("data");
System.out.println("Process Stdout:\n" + stdoutData);
}
finally
{
handle.unRegister();
}
}
catch (STAFException e)
{
System.out.println(
"Error (un)registering with STAF, RC:" + e.rc);
System.exit(1);
}
} // End of main()
} // End of STAFTest
--------------------------------------------------------------
Sharon Lucas
IBM Austin, luc...@us.ibm.com
(512) 286-7313 or Tieline 363-7313
"Martin, Eladio \(GMI Debt Markets\)" <eladio_mar...@ml.com>
06/17/2009 04:20 PM
To
<staf-users@lists.sourceforge.net>
cc
Subject
[staf-users] Staf & QTP
Hello folks...
Any sample java code to call out/remote to QTP and return results?
I would like to able to have Staf remote QTP, QTP does its automation
and return the results...
Thoughts?
Thanks,
Eladio
________________________________
This message w/attachments (message) may be privileged, confidential or
proprietary, and if you are not an intended recipient, please notify the
sender, do not use or share it and delete it. Unless specifically
indicated, this message is not an offer to sell or a solicitation of any
investment products or other financial product or service, an official
confirmation of any transaction, or an official statement of Merrill
Lynch. Subject to applicable law, Merrill Lynch may monitor, review and
retain e-communications (EC) traveling through its networks/systems. The
laws of the country of each sender/recipient may impact the handling of
EC, and EC may be archived, supervised and produced in countries other
than the country in which you are located. This message cannot be
guaranteed to be secure or error-free. References to "Merrill Lynch"
are references to any company in the Merrill Lynch & Co., Inc. group of
companies, which are wholly-owned by Bank of America Corporation.
Securities and Insurance Products: * Are Not FDIC Insured * Are Not
Bank Guaranteed * May Lose Value * Are Not a Bank Deposit * Are Not
a Condition to Any Banking Service or Activity * Are Not Insured by Any
Federal Government Agency. Attachments that are part of this
E-communication may have additional important disclosures and
disclaimers, which you should read. This message is subject to terms
available at the following link:
http://www.ml.com/e-communications_terms/
<http://www.ml.com/e-communications_terms/> . By messaging with Merrill
Lynch you consent to the foregoing.
________________________________
------------------------------------------------------------------------
------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects_____________________________________
__________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users