stress

command
v0.0.0-...-2d5dc59 Latest Latest
Warning

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

Go to latest
Published: Sep 21, 2017 License: Apache-2.0 Imports: 18 Imported by: 0

README

Transicator Stress Tests

These tests are designed to allow us to load up Transicator, break various components, and see what breaks.

The tests will use a database schema designed as follows:

create table stress_table (
  id integer primary key,
  group integer not null,
  sequence integer not null,
  content varchar,
  end bool,
  _change_selector varchar not null
);

In order to ensure that the server receives what it expects, in order, the client will be constructed to send groups of messages.

Test Jobs

Each "job" is a goroutine...

Sender

The sender job sends groups of records as described above by inserting, updating, and deleting records in the table described above. All the records in each batch will have the same group id. The client will perform a mix of inserts, deletes, and updates containing random "content" for the specified set of selectors.

Periodically, the sender will increment the "group" id and send an "end" record. It will notify the main of this fact for flow control.

Receiver

The receiver will retrieve a snapshot for a particular selector, and then apply all changes that come to the replication scheme to the database. The receiver will also periodically throw away its database, fetch a new snapshot, and fetch a new set of changes.

When a receiver sees an "end" record it will notify the main for flow control.

Verifier

Once the senders and receivers have stopped, the verifier will inspect the contents of the Postgres database and also inspect the contents of the SQLite databases to see if they match.

Main

The main will start the sender and receivers. It will also direct the senders to send special messages at the end so that we know that everything has finished.

Eventually, the main wil use the Docker SDK to stop the database so that we can see what affect the Transicator database has on the SDK.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

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