├── README.rst └── remote.png /README.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | Remote library interface 3 | ======================== 4 | 5 | This project exists to give a high level introduction to `Robot Framework 6 | `_ remote library interface and to list the 7 | `available remote servers`_. 8 | 9 | .. contents:: Table of contents: 10 | :local: 11 | :depth: 2 12 | 13 | Introduction 14 | ============ 15 | 16 | The remote library interface allows `Robot Framework`_ test libraries to 17 | be run as external processes. An important use case for this support is 18 | running test libraries on different machines than where Robot Framework itself 19 | is executed. This allows interesting possibilities for distributed testing. 20 | 21 | Another big use case is implementing test libraries using other languages that 22 | Robot Framework supports natively. In practice test libraries can be 23 | implemented using any language that supports the `XML-RPC protocol 24 | `_ that the remote interface uses for communication. 25 | Many `languages and platforms`__ are supported already, and implementing 26 | support for new languages or for new usages is pretty straightforward. 27 | 28 | __ `Available remote servers`_ 29 | 30 | Architecture 31 | ============ 32 | 33 | The remote interface consists of the Remote library, remote servers and 34 | actual test libraries running behind these servers. The high level architecture 35 | is illustrated in the picture below. 36 | 37 | .. image:: remote.png 38 | 39 | The Remote library is one of Robot Framework's standard libraries and thus 40 | automatically installed with the framework. It does not have any keywords of 41 | its own, but instead works as a proxy between Robot Framework and remote 42 | servers. 43 | 44 | Remote servers expose the keywords provided by the actual test libraries 45 | to the Remote library. The Remote library and remote servers communicate 46 | using a simple remote protocol on top of an `XML-RPC `_ 47 | channel. The remote protocol and the whole remote library interface are 48 | described in detail in the `Robot Framework User Guide 49 | `_ in section `Remote 50 | Library Interface 51 | `_. 52 | The default port used by the remote protocol is 8270 and it has been 53 | `registered by IANA`__ for this purpose. 54 | 55 | How remote servers interact with the actual test libraries depends on the 56 | language and the remote server design. See the implementation of the 57 | `available remote servers`_ below for concrete examples. 58 | 59 | It is also possible to create solutions that combine a remote server and 60 | one or more libraries together into a single distribution. For example, 61 | `RemoteSwingLibrary `_ 62 | bundles `SwingLibrary `_, 63 | jrobotremoteserver_ and also the Remote library itself, and its users do 64 | not even need to know that they use the remote interface. 65 | 66 | __ http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=8270 67 | 68 | Available remote servers 69 | ======================== 70 | 71 | Following generic remote servers are available as separate projects. See 72 | the project pages for installation and usage instructions. 73 | 74 | =================== ============================= 75 | Language / Platform Remote Server 76 | =================== ============================= 77 | Python `PythonRemoteServer `_ 78 | Java `jrobotremoteserver `_ 79 | Ruby `robot-remote-server-rb `_ 80 | .NET `nrobot-server `_ 81 | Clojure `robot-remote-server-clj `_ 82 | Perl `plrobotremoteserver `_ 83 | node.js `node-robotremoteserver `_ 84 | PHP `phrrs `_ 85 | =================== ============================= 86 | 87 | Please submit an issue and/or pull request to this project if you have 88 | created a new remote server or existing information needs to be updated. 89 | -------------------------------------------------------------------------------- /remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robotframework/RemoteInterface/3a6fc05c66d0a40672eabb7a4778d1ff1e2b0451/remote.png --------------------------------------------------------------------------------