From aa080ce2e98104a6b78cab99e72a6a5ba4ac69fb Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Mon, 21 Sep 2015 22:19:09 +0000 Subject: [PATCH] tests using docker to containerize rethinkdb fixture --- tests/Dockerfile | 21 +++++++++++++++++++++ tests/run-tests.sh | 15 +++++++++++++++ tests/test_rethinker.py | 27 +++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 tests/Dockerfile create mode 100755 tests/run-tests.sh create mode 100644 tests/test_rethinker.py diff --git a/tests/Dockerfile b/tests/Dockerfile new file mode 100644 index 0000000..a3a8909 --- /dev/null +++ b/tests/Dockerfile @@ -0,0 +1,21 @@ +FROM phusion/baseimage +MAINTAINER Noah Levitt + +# see https://github.com/stuartpb/rethinkdb-dockerfiles/blob/master/trusty/2.1.3/Dockerfile + +ENV LANG=C.UTF-8 + +RUN apt-get update && apt-get --auto-remove -y dist-upgrade + +# Add the RethinkDB repository and public key +# "RethinkDB Packaging " http://download.rethinkdb.com/apt/pubkey.gpg +RUN apt-key adv --keyserver pgp.mit.edu --recv-keys 1614552E5765227AEC39EFCFA7E00EF33A8F2399 \ + && echo "deb http://download.rethinkdb.com/apt trusty main" > /etc/apt/sources.list.d/rethinkdb.list \ + && apt-get update && apt-get -y install rethinkdb + +RUN mkdir -vp /etc/service/rethinkdb \ + && echo "#!/bin/sh\nrethinkdb --bind 0.0.0.0 --runuser rethinkdb --rungroup rethinkdb\n" > /etc/service/rethinkdb/run \ + && chmod a+x /etc/service/rethinkdb/run + +RUN apt-get -y install python-virtualenv + diff --git a/tests/run-tests.sh b/tests/run-tests.sh new file mode 100755 index 0000000..5af4022 --- /dev/null +++ b/tests/run-tests.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +docker build -t internetarchive/rethinkdb $script_dir || exit 1 + +for python in python2.7 python3.4 +do + docker run --rm -i -t --volume="$script_dir/..:/rethinkstuff" internetarchive/rethinkdb /sbin/my_init -- \ + bash -c "cd /rethinkstuff && virtualenv -p $python /tmp/venv \ + && source /tmp/venv/bin/activate \ + && pip install pytest . \ + && py.test -v -s tests" +done + diff --git a/tests/test_rethinker.py b/tests/test_rethinker.py new file mode 100644 index 0000000..34d8c02 --- /dev/null +++ b/tests/test_rethinker.py @@ -0,0 +1,27 @@ +import rethinkstuff +import logging +import sys +import types + +logging.basicConfig(stream=sys.stderr, level=logging.INFO, + format="%(asctime)s %(process)d %(levelname)s %(threadName)s %(name)s.%(funcName)s(%(filename)s:%(lineno)d) %(message)s") + +def test_rethinker(): + r = rethinkstuff.Rethinker() + result = r.db_create("my_db").run() + assert result["dbs_created"] == 1 + + r = rethinkstuff.Rethinker(db="my_db") + assert r.table_list().run() == [] + result = r.table_create("my_table").run() + assert result["tables_created"] == 1 + + assert r.table("my_table").index_create("foo").run() == {"created": 1} + + result = r.table("my_table").insert(({"foo":i,"bar":"repeat"*i} for i in range(2000))).run() + assert len(result["generated_keys"]) == 2000 + assert result["inserted"] == 2000 + + result = r.table("my_table").run() + assert isinstance(result, types.GeneratorType) +