tests using docker to containerize rethinkdb fixture

This commit is contained in:
Noah Levitt 2015-09-21 22:19:09 +00:00
parent 3b52b05329
commit aa080ce2e9
3 changed files with 63 additions and 0 deletions

21
tests/Dockerfile Normal file
View File

@ -0,0 +1,21 @@
FROM phusion/baseimage
MAINTAINER Noah Levitt <nlevitt@archive.org>
# 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 <packaging@rethinkdb.com>" 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

15
tests/run-tests.sh Executable file
View File

@ -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

27
tests/test_rethinker.py Normal file
View File

@ -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)