aver

package module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 14, 2015 License: BSD-3-Clause Imports: 11 Imported by: 0

README

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.

Overview

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:

for
  size > 4 and replication = *
expect
  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.

Usage

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Holds

func Holds(validation string, db *sql.DB, tbl string) (b bool, err error)

checks values against a validation string

func MakeDb

func MakeDb(inFile string, fileType string) (db *sql.DB, tblName string, err error)

Types

type AverError

type AverError struct {
	Msg string
}

func (AverError) Error

func (e AverError) Error() string

type Validation

type Validation struct {
	// contains filtered or unexported fields
}

func ParseValidation

func ParseValidation(input string) (v Validation, e error)

type Value

type Value struct {
	// contains filtered or unexported fields
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL