Testopia:Documentation:XMLRPC: Difference between revisions
Ghendricks (talk | contribs) No edit summary |
Ghendricks (talk | contribs) No edit summary |
||
Line 4: | Line 4: | ||
==What's New!== | ==What's New!== | ||
{| border=1 cellpadding=4 | {| border=1 cellpadding=4 | ||
| 2006-11-27 || | |||
* Added [[Bugzilla_XML-RPC_API_Apache |instructions]] for using Basic Authorization with an Apache server | |||
* New [[Bugzilla_XML-RPC_API_Query_Examples |query examples]] that do not use binary charts | |||
* New API [[Bugzilla_XML-RPC_API#Objects |objects]]: '''Build''', '''Product''', and '''User''' | |||
* New methods for [[Bugzilla_XML-RPC_API_TestPlan |TestPlan]] object | |||
* New parameters added for managing query result sizes. <b>pagesize</b> is used to set the number of records returned. The default is 24. <b>page</b> is used to return a page of results based on pagesize. The default value for page is zero. For example, setting page equal to zero will return the first 24 records. Setting page equal to 1 will return the second set of 24 records. | |||
The new parameters are added to any "list" method: | |||
$proxy->call('TestPlan.list', {pagesize=>10, page=>0}); | |||
|- | |||
| 2006-10-18 || | |||
* Added [[Bugzilla_XML-RPC_API_PerlSSL |Instructions]] for using SSL and Perl (SOAP::Lite) on SLED10 | |||
|- | |||
| 2006-10-05 || | |||
* <b>Production</b> environment is https://apibugzilla.novell.com/tr_xmlrpc.cgi | |||
* <b>Staging</b> environment is https://apibugzillastage.provo.novell.com/tr_xmlrpc.cgi | |||
* <b>Test</b> environment is https://bugzilla.innerwebtest.novell.com/tr_xmlrpc.cgi | |||
|- | |||
| 2006-10-04 || | |||
* Added an example of an error response | |||
|- | |||
| 2006-09-21 || | | 2006-09-21 || | ||
* Added code for <b>SSL (https)</b> access to the Java client (not necessary for Perl client) | * Added code for <b>SSL (https)</b> access to the Java client (not necessary for Perl client) | ||
Line 11: | Line 33: | ||
|- | |- | ||
|} | |} | ||
==Project Description== | ==Project Description== | ||
Line 34: | Line 53: | ||
</methodCall> | </methodCall> | ||
An | An example of an XML response: | ||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
Line 101: | Line 120: | ||
</params> | </params> | ||
</methodResponse> | </methodResponse> | ||
An example of an error response: | An example of an error response: | ||
<?xml version="1.0"?> | <?xml version="1.0" encoding="UTF-8"?> | ||
<methodResponse> | <methodResponse> | ||
<fault> | <fault> | ||
Line 132: | Line 152: | ||
{| border=1 cellpadding=4 | {| border=1 cellpadding=4 | ||
| '''Programming Language''' || '''Software''' | | '''Programming Language''' || '''Software''' || '''Special Notes''' | ||
|- | |- | ||
| Perl || [http://www.soaplite.com SOAP::Lite] | | Perl || [http://www.soaplite.com SOAP::Lite] || [[Bugzilla_XML-RPC_API_PerlSSL |Instructions]] for using SSL and Perl on SLED10 | ||
|- | |- | ||
| Java || [http://ws.apache.org/xmlrpc Apache XML-RPC] | | Java || [http://ws.apache.org/xmlrpc Apache XML-RPC] || | ||
|- | |- | ||
|} | |} | ||
Line 150: | Line 170: | ||
use XMLRPC::Lite; # From the SOAP::Lite Module | use XMLRPC::Lite; # From the SOAP::Lite Module | ||
my $proxy = XMLRPC::Lite->proxy(" | my $proxy = XMLRPC::Lite->proxy("YOUR_URL_TO_BUGZILLA_GOES_HERE"); | ||
# Result is a hash map | # Result is a hash map | ||
Line 255: | Line 275: | ||
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); | XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); | ||
config.setServerURL(new URL(" | config.setServerURL(new URL("/* YOUR_URL_TO_BUGZILLA_GOES_HERE */")); | ||
config.setBasicUserName("userid"); | config.setBasicUserName("userid"); | ||
config.setBasicPassword("password"); | config.setBasicPassword("password"); | ||
Line 278: | Line 298: | ||
==API Documentation== | ==API Documentation== | ||
All XML-RPC requests are sent to a single Bugzilla CGI called <i>tr_xmlprc.cgi</i>. Its | All XML-RPC requests are sent to a single Bugzilla CGI called <i>tr_xmlprc.cgi</i>. Its location will be based on your specific Bugzilla installation. Normally the CGI will be found at the root URL of Bugzilla, for example, http://bugzilla.company.com/tr_xmlrpc.cgi | ||
===Objects=== | ===Objects=== | ||
* [[ | * [[Bugzilla_XML-RPC_API_Build |Build]] | ||
* [[ | * [[Bugzilla_XML-RPC_API_Product |Product]] | ||
* [[ | * [[Bugzilla_XML-RPC_API_User |User]] | ||
* [[ | * [[Bugzilla_XML-RPC_API_TestPlan |TestPlan]] | ||
* [[Bugzilla_XML-RPC_API_TestCase |TestCase]] | |||
* [[Bugzilla_XML-RPC_API_TestRun |TestRun]] | |||
* [[Bugzilla_XML-RPC_API_TestCaseRun |TestCaseRun]] | |||
Line 291: | Line 314: | ||
# Where can I find more coding examples? | # Where can I find more coding examples? | ||
#* [[ | #* [[Bugzilla_XML-RPC_API_Code_Examples |Here]]. | ||
# Where can I find the query examples again? | # Where can I find the query examples again? | ||
#* [[ | #* [[Bugzilla_XML-RPC_API_Query_Examples |Here]]. | ||
# Where can I find how to setup Apache for use with the API and Basic Authentication? | |||
#* [[Bugzilla_XML-RPC_API_Apache |Here]]. | |||
<br>Back to the [[Testopia |Testopia Main Page]] | <br>Back to the [[Testopia |Testopia Main Page]] |
Revision as of 22:05, 1 December 2006
Back to the Testopia Main Page
What's New!
2006-11-27 |
The new parameters are added to any "list" method: $proxy->call('TestPlan.list', {pagesize=>10, page=>0}); |
2006-10-18 |
|
2006-10-05 |
|
2006-10-04 |
|
2006-09-21 |
|
2006-09-20 |
|
Project Description
Provide a means for the programmatic creation, modification, and reporting of inherent Bugzilla Testopia objects, such as test plans, test cases, and test runs. Scope will later expand to cover actual bugs and products.
The API is accessed through XML Remote Procedure Calls (XML-RPC). Bascially, a client creates an XML document and sends it to the Bugzilla server via an HTTP post.
An example of an XML request:
<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>TestPlan.get</methodName> <params> <param> <value> <int>1</int> </value> </param> </params> </methodCall>
An example of an XML response:
<?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <struct> <member> <name>author</name> <value> <string>user@company.com</string> </value> </member> <member> <name>editor</name> <value> <string>user@company.com</string> </value> </member> <member> <name>name</name> <value> <string>A Test Plan</string> </value> </member> <member> <name>default_product_version</name> <value> <string>other</string> </value> </member> <member> <name>plan_id</name> <value> <int>1</int> </value> </member> <member> <name>product</name> <value> <string>TestProduct</string> </value> </member> <member> <name>creation_date</name> <value> <string>2006-08-03 13:20:53</string> </value> </member> <member> <name>type</name> <value> <string>Unit</string> </value> </member> <member> <name>isactive</name> <value> <int>1</int> </value> </member> </struct> </value> </param> </params> </methodResponse>
An example of an error response:
<?xml version="1.0" encoding="UTF-8"?> <methodResponse> <fault> <value> <struct> <member> <name>faultString</name> <value> <string>Too many parameters.</string> </value> </member> <member> <name>faultCode</name> <value> <int>4</int> </value> </member> </struct> </value> </fault> </methodResponse>
Getting Started
Requirements
The examples for this project use the following libraries:
Programming Language | Software | Special Notes |
Perl | SOAP::Lite | Instructions for using SSL and Perl on SLED10 |
Java | Apache XML-RPC |
You can, of course, code the XML document via strings or the Document Object Model (DOM) and then maually do a HTTP post, but why?
Sample Clients
Perl
use SOAP::Transport::HTTP; # Need for Basic Authorization subroutine
use XMLRPC::Lite; # From the SOAP::Lite Module my $proxy = XMLRPC::Lite->proxy("YOUR_URL_TO_BUGZILLA_GOES_HERE"); # Result is a hash map my $soapresult = $proxy->call('TestPlan.get', 1); # Error checking die_on_fault($soapresult); # Print each key/value pair foreach (keys(%$soapresult)) { print "$_: $$soapresult{$_}\n"; } # Add the following subroutine to submit a userid/password for basic authorization sub SOAP::Transport::HTTP::Client::get_basic_credentials { return 'userid' => 'password'; } sub die_on_fault { my $soapresult = shift; if ($soapresult->fault) { die $soapresult->faultcode . ' ' . $soapresult->faultstring; } }
Java
import org.apache.xmlrpc.XmlRpcException; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; import java.net.URL; import java.util.HashMap; import java.util.ArrayList; // Needed for SSL import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class RPCClient { // // Trust All Certificates - Needed for SSL Client // private static void TrustAllCerts() throws java.security.NoSuchAlgorithmException, java.security.KeyManagementException { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { // Trust always } public void checkServerTrusted(X509Certificate[] certs, String authType) { // Trust always } } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("SSL"); // Create empty HostnameVerifier HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String arg0, SSLSession arg1) { return true; } }; sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(hv); } public static void main(String[] args) { try { TrustAllCerts(); XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(new URL("/* YOUR_URL_TO_BUGZILLA_GOES_HERE */")); config.setBasicUserName("userid"); config.setBasicPassword("password"); XmlRpcClient client = new XmlRpcClient(); client.setConfig(config); ArrayList<Object> params = new ArrayList<Object>(); params.add(1); HashMap result = (HashMap) client.execute("TestPlan.get", params); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } } }
API Documentation
All XML-RPC requests are sent to a single Bugzilla CGI called tr_xmlprc.cgi. Its location will be based on your specific Bugzilla installation. Normally the CGI will be found at the root URL of Bugzilla, for example, http://bugzilla.company.com/tr_xmlrpc.cgi
Objects
FAQ
- Where can I find more coding examples?
- Here.
- Where can I find the query examples again?
- Here.
- Where can I find how to setup Apache for use with the API and Basic Authentication?
- Here.
Back to the Testopia Main Page