Validation library
Go Shell
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Project Aver

Build Status

Aver lets you quickly test claims made about the performance of a system. Aver can be thought as a system that checks high-level assertions (in the TDD sense) against a dataset corresponding to system performance metrics.


Consider the following gathered metrics:

Size Workload Method Replication Throughput
1 read a 1 141
1 read b 1 145
1 write a 1 142
1 write b 1 149
. ... . . .
. ... . . .
32 write a 5 210
32 write b 5 136

The above (truncated) table contains performance measurements of a distributed storage system (throughput column in MB/s). The throughput is in function of the size of the cluster, replication factor (how many copies of the data), type of request (read/write) and the method used to replicate data.

Now, suppose we make the claim that method a beats method b by 2x. At this point, you have two options: (1) you believe in our expertise and trust our word, or (2) you re-run the test and check the results to confirm our claims. Aver shortens the time it takes to validate results by providing a simple language that can be used to express this type of assertions, as well as a small program that test the validations over the captured data. The following statement expresses our claim:

  size > 4 and replication = *
  throughput(method='a') > throughput(method='b') * 2

In prose, the above states that, regardless of the replication factor, method a is twice as fast as method b when the size of the cluster goes above a certain threshold (4 in this case). Given this statement and a pointer to where the dataset resides, aver checks whether this validation holds.


There are two ways of using Aver. Programatically or through the CLI.