Parsoid/Round-trip testing

The Parsoid code includes a round-trip testing system that tests code changes, composed of a server that gives out tasks and presents results and clients that do the testing and report back to the server. The code is in Parsoid/tests/server and Parsoid/tests/client.

There's a publicly accessible instance of the server at http://parsoid.wmflabs.org:8001/. It currently tests a representative (~160000) set of pages from different wikipedia languages.

Private setup
The instructions to set up a private instance of the round-trip test server are in Parsoid/tests/README. A MySQL database is needed to keep the set of pages and the testing results.

wmflabs setup
Coordinator on parsoid.wmflabs.org (ports 8001 for web and 8002 for internal API), about 50 clients on various parsoid-* VMS (36 cores as of early Dec 2012). Clients run code from the shared /data/project/parsoid/ repository, and commit suicide when the revision of that checkout changes.

Both the coordinator and the clients are managed/restarted by supervisord. Config in /etc/supervisor/conf.d/{rtserver,rtclient}.conf. The client config is based on the sample config in js/tests/client.

To {stop,restart,start} all clients on a VM (not normally needed): supervisorctl stop all supervisorctl restart all supervisorctl start all

Updating the code
on parsoid.wmflabs.org, as root:

cd /data/project/parsoid/js/api ./runserver.sh

Clients commit suicide when they notice that the code has changed, and supervisord restarts them based on the new code.

Updating the round-trip server code
cd /data/project/parsoid-roundtrip-server/js npm install supervisorctl restart rtserver

Todo / Roadmap
Please look at the general Parsoid roadmap.

Improve the server UI
Right now the results are presented in a very simple way, and the code for generating the HTML is just string concatenation. We should change it to use a templating system to separate the code from the presentation.

Other improvements could be done on the presentation itself, as right now it's all simple text tables.