Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Ferret out service availability

branch: reorg

This branch is 0 commits ahead and 26 commits behind master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 app
Octocat-spinner-32 lib
Octocat-spinner-32 tests
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .profile
Octocat-spinner-32 .slugignore
Octocat-spinner-32 Procfile
Octocat-spinner-32 Rakefile
Octocat-spinner-32 Readme.md
Octocat-spinner-32 deploy.sh
Octocat-spinner-32 env.sample
Octocat-spinner-32 setup_client.sh
Readme.md

Ferret

To deploy a test to the platform run

deploy.sh filename

To run a test locally run

foreman run filename

Ferret is a framework to set up canary apps and test processes:

Heroku Org          ferret
  Control App         ferretapp
    Test Process        test/git_clone
    Test Process        test/convergence
  Target App          ferret-git-clone
  Target App          ferret-convergence

The Control App test process logs are drained to l2met, where service availability and service time can be calculated and visualized via Librato Metrics.

Development Control App Setup

Get a HEROKU_API_KEY for an unpriveledged $GMAIL_USER, and an L2Met drain for a personal Librato account.

Copy env.sample to .env, and fill in APP, HEROKU_API_KEY and L2MET_URL, then run the setup script via Foreman.

cp env.sample .env
foreman run bin/setup.sh

Local Run

2012-12-05T01:08:52+00:00 app[http_recurl.1]: app=ferret-dev-fode xid=49eab42b source=http_recurl fn=consider_restart i=0 at=enter
2012-12-05T01:08:53+00:00 app[http_recurl.1]: app=ferret-dev-fode xid=49eab42b source=http_recurl fn=consider_restart i=0 status=0 measure=success
2012-12-05T01:08:53+00:00 app[http_recurl.1]: app=ferret-dev-fode xid=49eab42b source=http_recurl fn=consider_restart i=0 val=100 measure=uptime
2012-12-05T01:08:53+00:00 app[http_recurl.1]: app=ferret-dev-fode xid=49eab42b source=http_recurl fn=consider_restart i=0 at=return val=0.629225798 measure=time

Platform Run

$ heroku run tests/git_clone

# OR

$ heroku scale git_clone=1

Philosophy

Ferret is a simple framework for applying the canary pattern for Heroku kernel services. Much thought is given on how to measure properties of services in isolation.

Ferret does not implement complex platform integration tests, though these would be easy to build with the framework.

Platform Features

Ferret uses many of the latest features of Heroku to make the tools secure, discoverable, configuration free, and maintenance free:

Todo

  • HTTP canaries
  • Build canaries
  • OAuth canary
  • Tooling around Heroku setup/teardown
  • Tooling around Librato configuration
  • Warning / Alerting
  • Measure l2met / librato delay
Something went wrong with that request. Please try again.