commit | 198a0f63ef1d8f97ce369525df9c96b53300ce97 | [log] [tgz] |
---|---|---|
author | Alex Fandrianto <alexfandrianto@google.com> | Wed Feb 17 17:09:16 2016 -0800 |
committer | Alex Fandrianto <alexfandrianto@google.com> | Wed Feb 17 17:09:16 2016 -0800 |
tree | f1e732dd594fa85ca55ff7493aaa9decad440bf6 | |
parent | 7f3633a59284115e033020492b70ba8ae372b465 [diff] |
mojo/syncbase: Add Ping Pong Benchmark for Mojo Shell This benchmark can do normal Ping Pong between syncbases in separate Mojo shells. The shells may run on Linux or Android. (Combos should work.) - The syncbase instances mount on the global mount table in "tmp". To use, see the instructions in the Makefile. (There is a TODO about improving the usage with a script.) In summary, you can select: - the number of participating peers - the sync pattern (Ping Pong, Round Robin, Cycle, PingRandom, etc.) - the number of iterations to perform for the benchmark - a benchmark name to avoid test collisions Here are some example results: (numbers in ms from a full round of PingPong) - 199.93 for 2-pingpong on Linux (~73 from creator to joiner, and ~128 back) Note: Surprisngly, this matches the results from the Go benchmark. 3 devices on Linux - 257.46 for 3-pingpong on Linux (80, 130, or 180 from creator to joiner, and 120 or 170 back) - 252.44 for 3-pingall on Linux Other 3 device patterns (1.5x roundtrips compared to previous patterns) - 356.56 for 3-cycle on Linux - 364.94 for 3-reversecycle on Linux - 383.8 for 3-pingrandom on Linux And on Android - ~690 for 2-pingpong on separate Android devices connected to syncslides-alpha Change-Id: I1dc3d0ac62a3f7453c8974dd1ab078e67af74cc6
This project exposes Syncbase as a Mojo service.
Read the architecture proposal.
You must have the Mojo repo in $MOJO_DIR
.
This section only needs to be run once.
See the Mojo readme for more comprehensive instructions.
Install depot tools.
Install Goma.
Put the following in your .bashrc
:
# NOTE: Actual locations depend on where you installed depot_tools and # goma. export PATH=${PATH}:${HOME}/dev/depot_tools export GOMA_DIR=${HOME}/goma export MOJO_DIR=${HOME}/mojo
$ mkdir $MOJO_DIR && cd $MOJO_DIR # NOTE: This step takes about 10 min. $ fetch mojo --target_os=android,linux # NOTE: This step also takes about 10 min. Furthermore, the script uses # 'sudo', so you will need to enter your password. $ cd src && ./build/install-build-deps.sh # Or, to include Android deps as well: $ cd src && ./build/install-build-deps-android.sh
This updates the Mojo repo to HEAD, and builds the Mojo resources needed to compile Syncbase.
Run this while you grab your morning coffee.
Start by updating the repo.
$ cd $MOJO_DIR/src $ git checkout master $ git pull $ gclient sync
Compile for Linux. Built resources will be in $MOJO_DIR/src/out/Debug
$ ./mojo/tools/mojob.py gn $ ./mojo/tools/mojob.py build # NOTE: This can take up to 10 minutes.
Compile for Android. Built resources will be in $MOJO_DIR/src/out/android_Debug
$ ./mojo/tools/mojob.py gn --android $ ./mojo/tools/mojob.py build --android # NOTE: This can take up to 10 minutes.
To run Dart apps, you must install the Dart SDK.
Googlers: http://go/install-dart External: https://www.dartlang.org/downloads/
Run the tests:
make test
This will run all tests listed in the tests
file in the root directory of this repo.
The following command will run a single test file. This is useful when the full test suite hangs with no output.
$(MOJO_DIR)/src/mojo/devtools/common/mojo_run -v --enable-multiprocess --shell-path $(MOJO_DIR)/src/out/Debug/mojo_shell test/integration/<filename>