skia2/experimental/webtry
commit-bot@chromium.org 0a7e5b7554 Add the ability to select a source image to use in the code.
A much farther ranging change than I suspected.

Basically add a 'source' integer to every Try, store that in the database with every Try, add the source to the computation of the hash, and load and use the 'source' value when navigating history.

BUG=skia:
R=mtklein@google.com

Author: jcgregorio@google.com

Review URL: https://codereview.chromium.org/294903017

git-svn-id: http://skia.googlecode.com/svn/trunk@14960 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-05-29 15:58:00 +00:00
..
poly Move zooming into its own component, imported via HTML Imports. 2014-05-19 16:40:08 +00:00
res Add the ability to select a source image to use in the code. 2014-05-29 15:58:00 +00:00
setup Add gzip encoding responses. 2014-05-19 17:38:52 +00:00
sys Run Squid as a reverse caching proxy on port 80 and proxy the requests 2014-05-01 20:10:03 +00:00
templates Add the ability to select a source image to use in the code. 2014-05-29 15:58:00 +00:00
DESIGN.md Add the ability to select a source image to use in the code. 2014-05-29 15:58:00 +00:00
main.cpp Add the ability to select a source image to use in the code. 2014-05-29 15:58:00 +00:00
README.md Move zooming into its own component, imported via HTML Imports. 2014-05-19 16:40:08 +00:00
result.cpp Add the ability to select a source image to use in the code. 2014-05-29 15:58:00 +00:00
safec++ Set ulimits for the compile stage. 2014-04-30 19:38:51 +00:00
seccomp_bpf.h Sanitizing source files in Housekeeper-Nightly 2014-04-10 03:05:44 +00:00
TODO.md Factor out common template code. Send stdout back to web page. 2014-04-22 21:13:45 +00:00
webtry.go Add the ability to select a source image to use in the code. 2014-05-29 15:58:00 +00:00

WebTry

Allows trying out Skia code in the browser. Run a local webserver and from the pages it serves try out Skia code and see the results immediately. To make sandboxing easier this must be built w/GPU off.

Running Locally

$ GYP_GENERATORS=ninja  ./gyp_skia  gyp/webtry.gyp gyp/most.gyp -Dskia_gpu=0
$ ninja -C out/Debug webtry
$ cd experimental/webtry
$ go build webtry.go
$ ./webtry

Then visit http://localhost:8000 in your browser.

Only tested under linux, doubtful it will work on other platforms.

Full Server Setup

Create a GCE instance:

gcutil --project=google.com:skia-buildbots addinstance skia-webtry-b \
  --zone=us-central2-b --external_ip_address=108.170.220.126 \
  --service_account=default \
  --service_account_scopes="https://www.googleapis.com/auth/devstorage.full_control" \
  --network=default --machine_type=n1-standard-1 --image=backports-debian-7-wheezy-v20140331 \
  --persistent_boot_disk

Make sure port 80 is accessible externally for the above instance.

SSH into the instance:

gcutil --project=google.com:skia-buildbots ssh --ssh_user=default skia-webtry-b

Do once

The following things only need to be done once

  1. sudo apt-get install git schroot debootstrap

  2. git clone https://skia.googlesource.com/skia

  3. Add the following to /etc/fstab and reboot:

    none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0

The above will allow ninja to run. See http://stackoverflow.com/questions/2009278/python-multiprocessing-permission-denied

  1. Add the following to the /etc/schroot/minimal/fstab:

    /home/webtry/inout /inout none rw,bind 0 0

  2. Change /etc/monit/monitrc to:

    set daemon 2

then run the following so it applies:

sudo /etc/init.d/monit restart

This means that monit will poll every two seconds that our application is up and running.

  1. Set the TCP keepalive. For more info see: https://developers.google.com/cloud-sql/docs/gce-access

    sudo bash -c 'echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time'

Do the first time

Do the following the first time you setup a machine, and each time you want to update the code running on the server

cd ~/skia/experimental/webtry/setup
./webtry_setup.sh

Once, after setup

Do this step only once, but only after running webtry_setup.sh the first time

sudo debootstrap --variant=minbase wheezy /srv/chroot/webtry

Third Party Code

  • res/js/polyfill.js - Various JS polyfill libraries. To rebuild or update see polyfill/README.md.