Files
weave/test
Matthias Radestock 7e0ae6112c detect when IPAM has been seeded by different peers
This is an early detector for a multitude of other symptoms, some of
which cause panics.

When creating the ring we record the paxos-supplied normalised list of
peers used for seeding. This subsequently gets gossipped around as
part of the Ring data structure, and checked in ring.Merge that it is
the same for the recipient.

There are some subtleties due to the desire to maintain backward
compatibility and deal with empty rings

- The gossip gob decoder will ignore the Ring.Seeds field when an old
  weave receives a Ring from a new weave. So everything on the old
  weave will just continue to work as before.

- The gossip gob decoder will set the Ring.Seeds field to nil when a
  new weave receives a Ring from an old weave. We therefore omit the
  seed equivalence check when the received Seeds slice is empty.

- Our ring may not have any seeds - either because it is empty or was
  created from a ring received from an old weave. We therefore a) omit
  the seed equivalence check in that situation, and b) set our seeds
  to those received. Note that this allows us to learn about the seeds
  well after ring creation - a situation which may arise when
  receiving gossip from a mixture of old and new weaves.

Fixes #1463.
2015-10-02 16:33:28 +01:00
..
2015-09-29 07:46:00 +00:00
2015-07-28 14:16:38 +00:00
2015-09-24 03:25:30 +00:00
2015-09-03 09:59:37 +01:00
2015-09-30 22:57:10 +01:00
2015-08-25 16:53:21 +00:00
2015-08-07 14:40:34 +01:00
2015-07-30 11:07:17 +00:00
2015-07-30 11:07:17 +00:00
2015-07-30 11:07:17 +00:00
2015-07-30 11:07:17 +00:00
2015-08-13 19:46:23 +01:00
2015-06-26 11:10:08 +01:00
2015-08-12 07:40:20 +01:00
…
2015-09-24 03:42:44 +00:00
2015-09-24 03:42:44 +00:00

This directory contains integration tests for weave.

Requirements

You need two VMs with docker >=1.3.1 installed and listening on TCP port 2375 (see below). You also need to be able to ssh to these VMs, preferably without having to input anything.

The Vagrantfile in this directory constructs two such VMs.

To create the VMs, open a shell and in this directory and type

vagrant up

To meet the aforementioned ssh requirement you may want to

cp ~/.vagrant.d/insecure_private_key .

Running tests

If you are building weave using Vagrant, it is recommended to run the tests from the build VM and not the host.

./setup.sh

uploads the weave images from where the Makefile puts them (/var/tmp) to the two docker hosts, and copies the weave script over.

Then you can use, e.g.,

./200_dns_test.sh

to run an individual test, or

./run_all.sh

to run everything named *_test.sh.

Using other VMs

By default the tests assume the Vagrant VMs are used.

To use other VMs, set the environment variable HOSTS to the space-separated list of IP addresses of the docker hosts, and set the environment variable SSH to a command that will log into either (which may just be ssh).

Making docker available over TCP

To make docker listen to a TCP socket, you will usually need to either run it manually with an option like -H tcp://0.0.0.0:2375; or, for apt-get installed docker (Ubuntu and Debian), add the line

DOCKER_OPTS="--host unix:///var/run/docker.sock --host tcp://0.0.0.0:2375"

to the file /etc/default/docker, then restart docker.

Updating the GCE test image

When a new version of Docker is released, you'll need to update the GCE test image.

To do this, pick a fresh TEMPLATE_NAME and update any commands in function make_template in gce.sh, then run:

./gce.sh make_template

For this you'll need the GCE credentials, which can be found in bin/setup-circleci-secrets, which you'll need to decrypt and run (its echos the secrets into know locations):

./bin/setup-circleci-secrets "$SECRET_PASSWORD"

If you don't know the password, ask tom@weave.works.