BROWSER-BASED (ANDROID) NATIVE TEST EXECUTION TOOL (FOR GRAPHICS)
-----------------------------------------------------------------

Setting Up Development Environment
----------------------------------

LINUX

- Install golang (sudo apt-get install golang or https://golang.org/doc/install)

- Set up go path (For example, export GOPATH=$HOME/gopath)

WINDOWS

In order to be able to build Cherry on Windows, the following are required.

- Go distribution: https://golang.org/doc/install
  * (use 32-bit installation on Windows, 64-bit doesn't compile sqlite out-of-the-box)
  * set GOPATH=C:\go or GOPATH=<path to cherry>
    + All dependiencies (go get) will be installed here

- MinGW: http://www.mingw.org/
  * add "c:\MinGW\bin" to PATH
  * run "mingw-get install gcc"
  * required for building sqlite Go package
  * note: using Cygwin GCC doesn't work


64-BIT WINDOWS

64-bit build of sqlite driver requires MinGW toolchain that supports x64. Such toolchain
is maintained by mingw-w64 project (http://mingw-w64.sourceforge.net/).

- Download threads-win32 / SEH / x64 variant from mingw-builds source:
  * http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.8.2/threads-win32/seh/x86_64-4.8.2-release-win32-seh-rt_v3-rev3.7z/download

- Extract onto C:\ and add C:\mingw64 to PATH.

- Install 64-bit Go distribution.


Deqp integration
----------------

Cherry has been built for running deqp GPU tests. To get the deqp test lists for cherry:

1. mkdir <path-to-cherry>/data

2. Go to deqp dir

3. python scripts/build_caselists.py <path-to-cherry>/data

This will build deqp locally and dump the caselist from current binaries to the data dir.

The process should be repeated every time new tests have been added.


Running Cherry
--------------

1. Make sure adb executable is in the path

2. Run "go run server.go" in your cherry/ directory.

3. Point your favorite browser to http://127.0.0.1:8080.


Running Selenium Tests
----------------------

Prerequisites:

- install Python setuptools
  * https://pypi.python.org/pypi/setuptools

- install Python bindings for Selenium
  * easiest option is "pip install selenium", if you have pip installed
  * or install manually from: http://selenium-python.readthedocs.org/installation.html#downloading-python-bindings-for-selenium

- install unittest-xml-reporting
  * download package https://pypi.python.org/pypi/unittest-xml-reporting
  * extract contents and run 'setup.py install'

Steps:

- build Cherry server by running: "go build" in cherry/

- run "test.py" in cherry/test/
  * you can specify browser with "test.py --browser=chrome" (also supports: firefox and ie)
  * you can pass arguments to python's unittest with --unittest, e.g.: "test.py --unittest --help"



Architecture Overview
---------------------

Comsists of browser-based GUI client and HTTP server (written in Go).

Server:
- written in Go language
- real-time database
  * notification support (clients can listen to objects)
  * versioned views: temporarily retain snapshot of current state of database
  * optimistic transactions (retry-on-conflict)
  * backing storage in SQLite (other backends possible)
- RPC interface for client
- support multiple simultaneous clients

GUI Client:
- built on AngularJS (modern html5 web framework from Google)
- uses Twitter Bootstrap for responsive layouts and design
- invokes server via its RPC interface
- database objects visualized by binding to Angular controllers
