Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
Commits on Dec 19, 2012
@jlouis Bump safetyvalve to version 1.0.0.
This is the first version of safetyvalve.
@jlouis Bump README. 85a1691
Commits on Dec 20, 2012
@jlouis Use a stable lager tag for now. 48d9338
@jlouis Update MANIFESTO a0ab36d
@jlouis Bump version. 9287185
Commits on Dec 23, 2012
@jlouis Merge branch 'correct-call'
Commits on Dec 25, 2012
@jlouis Extract dropped packets from FQ-codel. f1a275b
@jlouis Introduce code to run the CoDel queue base.
This eqc test will just run the queue aggressively in order to test that
it really works like it was intended for it to work. This makes sure there
are no ways by which we can force the queue to crash.

In other words, we just proved a termination property.
@jlouis Introduce a TODO list. dc3d70b
@jlouis New Property: empty_q_no_drop. cf96286
@jlouis New rule.
If a queue is empty, then first_above_time is set to 0.
@jlouis Generalize test model more and enable correct dequeueing.
Begin adding more properties in there for the CoDel code.
@jlouis Documentation. cf95321
@jlouis Bump time advancement. 6d7fbcf
@jlouis Generalize over target and interval. e262967
@jlouis Classify observations. 0956e0d
@jlouis Reset frequencies to something a bit more standard. e0e1add
@jlouis Start a bit higher up in time. 0 is a kind of special case. f99960e
@jlouis Add a USING document. 647a73b
@jlouis Fix a documentation bug found by @nox (Anthony Ramine) 40056b9
@jlouis More documentation notes. c441bab
@jlouis Simplify dodequeue by splitting into two functions. d49aa85
@jlouis New CoDel implementation. The old one had trouble. 35ac54e
@jlouis Reflect API changes in the code base. 6ba0b0c
@jlouis Add a new class for when dropping starts. 977942b
@jlouis Document the CoDel classifier. 1b11c71
@jlouis Bump TODO. 10fc9ef
@jlouis Fix EQC test so it runs. f1cb8fd
@jlouis Improve packet code. 25505ea
@jlouis Improve model generation.
Define a better way to SHRINK the model upon encountering an error.
@jlouis Integrate CoDel support. 288f32b
@jlouis Bump version yet again. 1ccdac5
@jlouis Update TODO list. f40cc99
@jlouis Interesting paper to read from Fred Hebert. 378a72a
@jlouis Modularize the queue type. 675d1bb
@jlouis Bump version. dc198a9
@jlouis Document `sv_codel`. b7b26c8
@jlouis Add tracing routines. 282bcba
@jlouis Enable Trace measurements in tests. bf74541
@jlouis Carry out a benchmark. b398de6
Commits on Dec 26, 2012
@jlouis Fix EQC model so it works again. 61704eb
@jlouis Clean up after having run CoDel test cases.
Otherwise, we run out of ETS tables pretty quickly!
Commits on Dec 28, 2012
@jlouis Benchmarks and analysis through web servers. 21df1bb
@jlouis Add optional parameters to CoDel. 70e15bc
@jlouis Bump to version 2.2.0. 2ca5f14
@jlouis Bump TODO. 7d3466e
Commits on Dec 29, 2012
@jlouis Update the document. d8703a6
@jlouis Fix HTTP return value in test case.
It is 200 OK, not 202 OK :)
Commits on Feb 03, 2013
@jlouis Get rid of the cowboy dependency. 401bf8f
Commits on Sep 23, 2013
@jlouis Make CT tests run correctly and update the manifesto. 41a7d48
@jlouis Use lager 2.x.x over 1.x.x 8049dfc
@jlouis Use in this project. 2d1f98c
@jlouis Add missing modules section to .app.src 7ae1c21
@jlouis Add some compilation options to build. 8077315
Commits on Sep 24, 2013
@jlouis Implement `ask/2` and `done/3`. Also - document. 67ebe4e
Commits on Mar 26, 2014
@jlouis Bump lager to a version which works with Release 17. 7a6df4f
@jlouis Bump 46f5bf9
Commits on Mar 27, 2014
@bosky101 bosky101 corrected the example config. was missing `[` and `]` 71271dc
@jlouis Merge pull request #3 from bosky101/docs
fixed small typo in
Commits on Apr 10, 2014
@jlouis Update the rebar configuration for Release 17.0 339c25a
Commits on Dec 25, 2014
@jlouis Welcome safetyvalve to release 17.x 495b681
Commits on Feb 24, 2015
@jlouis Introduce a new version of the queue test code. debe9a5
Commits on Feb 27, 2015
@jlouis Fix an initialization error. e1f4bce
Commits on Feb 28, 2015
@jlouis Introduce the 'svq' test. 992802d
@jlouis Allow the code to run more advanced configurations. 260e8a4
@jlouis Introduce a common postcondition for the system. e66f8ca
@jlouis Update the description. bf5c2d0
Commits on Mar 01, 2015
@jlouis Introduce the replenish command.
Add a rate to the model. Replenish is simple, because we just compute how
many processes are woken up and then proceed to unblock them one-by-one in
the system. This moves the state forward as expected and we obtain the ability
to carry out token replenishment.
@jlouis Factor out the await of getting to run a task. 1086932
Commits on Mar 06, 2015
@jlouis Handle killing work randomly.
Use exit/2 to kill the Pid which is doing work and then update the task runner to handle this correctly.
@jlouis Formatting run. d0525ce
@jlouis Hoist a common prefix out of a case.
I think this is easier to read for the next reader and it is also easier to manipulate
later on, so lets do it this way instead.
@jlouis Documentation run. 2431194
@jlouis QuickCheck-CI driver. 4ea904d
@jlouis Path correction for EQC-CI. 0466205
@jlouis Improve the Chaos Monkey™ kill jobs in the asking state.
This branch is an attempt at identifying Issue #1. We arrange it such that we
can kill jobs which are currently 'asking' for the ability to run. This leads to
severe inconsistency between the model and the underlying implementation.

The right solution is really a question of semantics, and we don't a priori know
what the right course of action happens to be.
Commits on Mar 08, 2015
@jlouis Change the internal working representation from a gb_set into ETS.
A couple of reasons why we want an ETS table for tracking information about
who are currently working:

* It is much faster
* It acts well, even if we end up loading the system with many workers
* It allows us to store a process for its whole total lifetime of interaction with our system. This is necessary in the long run for this project.
@jlouis Track currently working tasks separately from the ETS table.
This change refactors the code such that the number of currently working
tasks are handled by a separate counter. In the future, this allows us to store
references of other kinds in the task table, which is sorely needed.
@jlouis Add support for removing elements from the queue. 726a9c1
@jlouis Change reference tracking to work over the lifetime of an interaction.
We now set a monitor for any process we work with. This should allow
us to make the case for the case where we lose a process while it is
queued in the system.
@jlouis Merge branch 'kill-asking-fix' into etsing-worker-table 07e50f2
@jlouis Two simple typos fixed: found by quickcheck.
queued → queueing
QT:delete/3 → QT:remove/3
@jlouis Fix Issue #1
Uses the new ETS tracking table to track and monitor all processes, also while queuing. Correctly remove processes that are killed during queueing. Also update the QuickCheck model with a new kind of process kill.
@jlouis Simplify the ChangeLog
There is no reason to write X → Y when it is always a linear transition.