blob: a0b75cf0d9b17524daedafb62e30745d6822d75c [file] [log] [blame]
Setting Up Development Environment
- Install golang (sudo apt-get install golang or
- Set up go path (For example, export GOPATH=$HOME/gopath)
In order to be able to build Cherry on Windows, the following are required.
- Go distribution:
* (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:
* 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 build of sqlite driver requires MinGW toolchain that supports x64. Such toolchain
is maintained by mingw-w64 project (
- Download threads-win32 / SEH / x64 variant from mingw-builds source:
- 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/ <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
Running Selenium Tests
- install Python setuptools
- install Python bindings for Selenium
* easiest option is "pip install selenium", if you have pip installed
* or install manually from:
- install unittest-xml-reporting
* download package
* extract contents and run ' install'
- build Cherry server by running: "go build" in cherry/
- run "" in cherry/test/
* you can specify browser with " --browser=chrome" (also supports: firefox and ie)
* you can pass arguments to python's unittest with --unittest, e.g.: " --unittest --help"
Architecture Overview
Comsists of browser-based GUI client and HTTP server (written in Go).
- 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