diff --git a/.travis.yml b/.travis.yml
index 3cda4951..de1bc6eb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,7 +7,7 @@ addons:
- expect-dev # for unbuffer
env:
global:
- - ETCDVERSION=3.3.13 ZKVERSION=3.4.14 CONSULVERSION=0.7.4
+ - ETCDVERSION=3.3.13 ZKVERSION=3.6.2 CONSULVERSION=0.7.4
- PYVERSIONS="2.7 3.6"
- BOTO_CONFIG=/doesnotexist
matrix:
@@ -93,14 +93,15 @@ install:
}
function get_exhibitor() {
- ZC=~/mycache/zookeeper-${ZKVERSION}
- if [[ ! -d $ZC ]]; then
- curl -L http://www.apache.org/dist/zookeeper/zookeeper-${ZKVERSION}/zookeeper-${ZKVERSION}.tar.gz | tar xz
+ ZK_PACKAGE=apache-zookeeper-${ZKVERSION}-bin
+ ZK=~/mycache/$ZK_PACKAGE
+ if [[ ! -d $ZK ]]; then
+ curl -L https://downloads.apache.org/zookeeper/zookeeper-${ZKVERSION}/${ZK_PACKAGE}.tar.gz | tar xz
[[ ${PIPESTATUS[0]} == 0 ]] || return 1
- mv zookeeper-${ZKVERSION}/conf/zoo_sample.cfg zookeeper-${ZKVERSION}/conf/zoo.cfg
- mv zookeeper-${ZKVERSION} $ZC
+ mv $ZK_PACKAGE/conf/zoo_sample.cfg $ZK_PACKAGE/conf/zoo.cfg
+ mv $ZK_PACKAGE $ZK
fi
- $ZC/bin/zkServer.sh start
+ $ZK/bin/zkServer.sh start
# following lines are 'emulating' exhibitor REST API
while true; do
echo -e 'HTTP/1.0 200 OK\nContent-Type: application/json\n\n{"servers":["127.0.0.1"],"port":2181}' \
@@ -128,7 +129,7 @@ install:
fi
source ~/virtualenv/python${pv}/bin/activate
# explicitly install all needed python modules to cache them
- for p in '-r requirements.txt' 'psycopg2-binary behave codacy-coverage coverage coveralls flake8 mock pytest-cov pytest setuptools'; do
+ for p in '-r requirements.txt' '-r requirements.dev.txt' 'codacy-coverage coveralls'; do
pip install $p --upgrade
done
done
diff --git a/docs/CONTRIBUTING.rst b/docs/CONTRIBUTING.rst
index f7167b00..fd46fabf 100644
--- a/docs/CONTRIBUTING.rst
+++ b/docs/CONTRIBUTING.rst
@@ -10,6 +10,39 @@ Chatting
Just want to chat with other Patroni users? Looking for interactive troubleshooting help? Join us on channel #patroni in the `PostgreSQL Slack `__.
+Running tests
+-------------
+
+Requirements for running behave tests:
+
+1. PostgreSQL packages need to be installed.
+2. PostgreSQL binaries must be available in your `PATH`. You may need to add them to the path with something like `PATH=/usr/lib/postgresql/11/bin:$PATH python -m behave`.
+3. If you'd like to test with external DCSs (e.g., Etcd, Consul, and Zookeeper) you'll need the packages installed and respective services running and accepting unencrypted/unprotected connections on localhost and default port. In the case of Etcd or Consul, the behave test suite could start them up if binaries are available in the `PATH`. See the `get_` functions in the scripting in [the Travis configuration](.travis.yml) for more details.
+
+ Install dependencies:
+
+.. code-block:: bash
+
+ # You may want to use Virtualenv or specify pip3.
+ pip install -r requirements.txt
+ pip install -r requirements.dev.txt
+
+After you have all dependencies installed, you can run the various test suites:
+
+.. code-block:: bash
+
+ # You may want to use Virtualenv or specify python3.
+
+ # Run flake8 to check syntax and formatting:
+ python setup.py flake8
+
+ # Run the pytest suite in tests/:
+ python setup.py test
+
+ # Run the behave (https://behave.readthedocs.io/en/latest/) test suite in features/;
+ # modify DCS as desired (raft has no dependencies so is the easiest to start with):
+ DCS=raft python -m behave
+
Reporting issues
----------------
diff --git a/requirements.dev.txt b/requirements.dev.txt
new file mode 100644
index 00000000..35726b50
--- /dev/null
+++ b/requirements.dev.txt
@@ -0,0 +1,8 @@
+psycopg2-binary
+behave
+coverage
+flake8
+mock
+pytest-cov
+pytest
+setuptools