| === RTCBot === | 
 | RTCBot is a framework to write tests that need to spawn multiple webrtc | 
 | endpoints. | 
 |  | 
 | == Description == | 
 | RTCBot is a framework that allows to write tests where logic runs on a single | 
 | host that controls multiple endpoints ("bots"). It allows creating complex | 
 | scenarios that would otherwise require non-trival signalling between multiple | 
 | parties. | 
 |  | 
 | The host runs in node.js, but the test code is run in an isolated context with | 
 | no access to node.js specifics other than the exposed api via a test variable. | 
 |  | 
 | Part of the exposed api (test.spawnBot) allows a test to spawn a bot and | 
 | access its exposed API. Details are in botmanager.js. | 
 |  | 
 | == How to run the test == | 
 |  $ cd trunk/webrtc/tool/rtcbot | 
 |  $ npm install express browserify ws websocket-stream dnode | 
 |  $ mkdir configurations | 
 |  $ cd configurations | 
 |  $ openssl genrsa -out priv.pem 1024 | 
 |  $ openssl req -x509 -new -key priv.pem -days 3650 -out cert.crt | 
 |  $ cd trunk/webrtc/tool/rtcbot | 
 |  $ node main.js "<test_name>" | 
 |  | 
 | * Note: | 
 |     In first time you will use rtcBot you will receive a warning telling | 
 |   you that your connection is not private. Just avoid this warning and | 
 |   click Proceed to localhost (unsafe). | 
 |  | 
 | == How can I see the list of available tests? == | 
 |  $ node main.js | 
 |  | 
 | == Example on how to install nodejs == | 
 |  $ cd /work/tools/ | 
 |  $ git clone https://github.com/creationix/nvm.git | 
 |  $ export NVM_DIR=/work/tools/nvm; source $NVM_DIR/nvm.sh | 
 |  $ nvm install 0.10 | 
 |  $ nvm use 0.10 | 
 |  | 
 | == Why generating the private key and self signed certificate? == | 
 |   - Private key and certificate are used for creating HTTPs server in | 
 |     rtcBot for loading the required files on the different types of the bots. | 
 |  | 
 | == Supported Bot Types == | 
 |   - "chrome": chrome on host machine. | 
 |   - "android-chrome": chrome on android device. Details in "Android" Section. | 
 |  | 
 |  * Bot type is specified directly by the test. | 
 |  | 
 | == Android == | 
 | Before running test with Android one MUST forward the device port 8080 to the | 
 | host machine. That is easy to achieve with chrome port forwarding tools. | 
 |  - Visit chrome://inspect/devices on the host machine. | 
 |  - Configure and enable port forwarding 8080 -> localhost:8080 | 
 |  - Open chrome on you Android device before running test, and leave it | 
 |    running until the end of test. | 
 |  - Run your test. |