Expecco RPC Interface
Inhaltsverzeichnis
Introduction[Bearbeiten]
Many of the operations of expecco can be remote-controlled via RPC interfaces. These interfaces allow for external programs to invoke functions of an expecco running in "slave-mode", thereby allowing for expecco to be integrated into an existing QM infrastructure.
Currently, interfaces are available for:
XML-RPC[Bearbeiten]
XML-RPC is a lightweight xml-based RPC mechanism, as documented in http://www.xmlrpc.com/spec. XML-RPC uses HTTP as a transport mechanism. Implementations for XML-RPC are very lightweight and available for many programming languages and systems. The protocol is simple enough, to be even used by humans; for example, to invoke the system.versionInfo call as described below, send the following HTTP-POST-request to the service:
<?xml version="1.0"?>
<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>
and get the response:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>system.getCapabilities</value>
<value>system.listMethods</value>
<value>system.methodHelp</value>
...
</data>
</array>
</value>
</param>
</params>
</methodResponse>
Introspection[Bearbeiten]
The XML-RPC implementation supports the introspection interface:
- struct system.getCapabilities( )
returns a structure containing info about supported RPC-interfaces and protocols
- struct system.versionInfo( )
returns a structure containing version info about the RPC-service itself
- array system.listMethods()
returns a vector of strings, comprising the names of supported RPC-entries.
- array system.methodSignature( string )
returns a vector of strings, comprising the return-type and argument types names of the given RPC-entry.
- string system.methodHelp( string )
returns an informative string, describing the functionality of the given RPC-entry.
use system.getCapabilities to get up-to-date information on the supported interfaces.
JSON-RPC[Bearbeiten]
JSON-RPC a lightweight JSON-based RPC mechanism, documented in http://json-rpc.org/wiki/specification and http://groups.google.com/group/json-rpc/web/json-rpc-2-0. JSON is a very simple encoding, which is common among JavaScript based browser applications. JSON can therefore be used to control a running expecco from an interactive web-page.
SOAP[Bearbeiten]
SOAP is a not so lightweight xml-based RPC mechanism, which is well-documented and well-supported, especially in java enterprise and SOA environments. Specs are found in http://www.w3.org/TR/soap. Operations are described by a standard notation (WSDL), which can be parsed and used for automatic generation of service call interfaces. See http://www.w3.org/TR/wsdl for details.
The SOAP interface is also used by expeccoNET to control the execution of its remote testHosts.
Telnet[Bearbeiten]
The Telnet protocol is a very simple, line-oriented ascii-command interface, which can even be entered by a human operator. Its simplicity enables even simple batch-files or shell scripts to communicate with expecco slaves. The telnet protocol is specified in RFC854 (http://www.ietf.org/rfc/rfc854.txt).
HTTP[Bearbeiten]
It is also possible to talk to expecco directly via HTTP. Thus, any webBrowser can be used to control an expecco slave.
Back to Online Documentation