syncbase: Echo and syncbase tests run, pass, and exit reliably.

The biggest issue was that when --enable-multiprocess is set (as it must
be for Go/Mojo apps), closing the main application causes mojo_shell to
crash.  Not closing an application, however, causes mojo_shell to hang.

The solution is to wait for the test reporter to finish, then close the
application.  mojo_shell still crashes, but the test harness is able to
find the test reporter output and exit with the correct status code.

Calling a "Quit" method in Syncbase made no difference.  I got rid of
the "Quit" method in the echo_server, since we weren't using it anyways.

This brought a tear to my eye:

    Running dart/test/echo_test.dart.... Succeeded
    Running dart/test/syncbase_test.dart.... Succeeded

Change-Id: Idd25d5369cd5dc19c572d2e7150b0e26253ab75d
9 files changed
tree: d8093665471eb9cae0f93f84c867bbaba158d5dc
  1. dart/
  2. go/
  3. mojom/
  4. .gitignore
  5. Makefile
  6. README.md
  7. tests
README.md

Ether

This project exposes Syncbase as a Mojo service.

Read the architecture proposal.

Initial Mojo setup

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 Mojo prereqs

  1. Install depot tools.

  2. Install Goma.

  3. 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
    

Download Mojo repo

$ 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

Update Mojo and compile resources

This updates the Mojo repo to HEAD, and builds the Mojo resources needed to compile Ether.

Run this while you grab your morning coffee.

  1. Start by updating the repo.

    $ cd $MOJO_DIR/src
    $ git checkout master
    $ git pull
    $ gclient sync
    
  2. 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.
    
  3. 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.
    

Install Dart SDK

To run Dart apps, you must install the Dart SDK.

Googlers: http://go/install-dart External: https://www.dartlang.org/downloads/

Testing

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 dart/test/<filename>