diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..75851afeb12a8feb0c8f27540957fd9d1449b069 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,70 @@ +# which image to test. +ARG BASE_TAG + +# specify that we'll inherit from the image to test. +FROM ${BASE_TAG} + +# which python binary to test +ARG INSTALL_BIN + + + +# specify we are running as root, in case the base image doesn't default to that. +USER root + +# specify that apt should be non-interactive. +ENV DEBIAN_FRONTEND=noninteractive + +# install basic software +RUN apt update && apt install -y build-essential protobuf-compiler \ + python python3 libprotobuf-dev libcurl4-openssl-dev \ + libncurses5-dev libjemalloc-dev wget m4 g++ libssl-dev libc6 libcurl4 \ + git build-essential protobuf-compiler \ + libprotobuf-dev libcurl4-openssl-dev \ + libncurses5-dev m4 g++ libssl-dev \ + debhelper curl rsync pip + +RUN apt install -y tzdata \ + && ln -fs /usr/share/zoneinfo/UTC /etc/localtime \ + && dpkg-reconfigure --frontend noninteractive tzdata + +# checkout and build the redis suite. +# note: the sed command for memefficiency.tcl extends a timeout so that the test is deterministic +# on our older test runners. +RUN set -x ; mkdir /work && \ + cd /work && \ + git clone https://github.com/rethinkdb/rethinkdb.git && \ + version=$(rethinkdb --version 2>&1 | sed -e "s/rethinkdb //" -e "s/~.*//") && \ + cd /work/rethinkdb && \ + git checkout v${version} && \ + PYTHON=$(which python3) ./configure --fetch boost --fetch gtest --fetch re2 --fetch jemalloc --fetch quickjs && \ + make support -j $(python -c 'import multiprocessing; print(multiprocessing.cpu_count())') && \ + make DEBUG=1 -j $(python -c 'import multiprocessing; print(multiprocessing.cpu_count())') && \ + git clone https://github.com/rethinkdb/rethinkdb-python /tmp/python-driver && \ + cd /tmp/python-driver && \ + git checkout v${version} && \ + pip install -r requirements.txt && \ + make prepare + + + + +# run the original tests +RUN cd /work/rethinkdb ; \ + md5sum ./build/debug/rethinkdb ; \ + export PYTHON_DRIVER=/tmp/python-driver/rethinkdb ; \ + export MAX_JOBS=$(python -c 'import multiprocessing; print(multiprocessing.cpu_count())') ; \ + test/run --timeout 300 --jobs "${MAX_JOBS}" -H all '!unit' '!cpplint' '!long' '!disabled' | \ + tee /orig_runtest_results.txt || true + +# run python tests on the version to test +RUN cd /work/rethinkdb ; \ + cp ${INSTALL_BIN} ./build/debug/rethinkdb ; \ + md5sum ./build/debug/rethinkdb ; \ + export PYTHON_DRIVER=/tmp/python-driver/rethinkdb ; \ + export MAX_JOBS=$(python -c 'import multiprocessing; print(multiprocessing.cpu_count())') ; \ + test/run --timeout 300 --jobs "${MAX_JOBS}" -H all '!unit' '!cpplint' '!long' '!disabled' | \ + tee /modi_runtest_results.txt || true + +## finally, test the diffs +#RUN bash -c 'diff /orig_runtest_results.txt /modi_runtest_results.txt'