Run test framework in a Docker container (#351)

diff --git a/.travis.yml b/.travis.yml
index 42a8d25..8569fcc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -35,24 +35,15 @@
 
 env:
   global:
-    - LUA="lua=5.1"
     - secure: "c8XNwdOryMVJUGLzWv+AzUQaS0Yt7uUmGqw+5/K7o7zmpux7Q5H7OU3jni2kOr+ZoIldsmTnnG7m1N9D8qUjD64KaAfEC0ybo04kDraezVMghUEV8LWMpSRRlAFpzQeVC8IcSiUEXM0H8E6Y09jGMnLKqyFUWAlDB60n0x2rfK/IPU+x4/h+6Y5XpYqaNtujoUf/2XVkrOeRcEhVZQJAwsRtA8HjRUy7PRB/9kepTSln9QzRZYd6v4F1qUKgZhlWNRUXWRbhrNK/z6T7jSlHjY44yvse4fBbie+EsuImtOHnDuTA4XXQlbc0gGVvD3sYYf2CBMxeeE+UTbRPLxgml+uUIviWKt/PKB5qUwQyLKP/Rzr1qv5RryrX0xWoqCrVsaCe0fkh0vUks0AYlzhm1CNK/g1If+qZ6R0GMjawVUbCunhDi1vJlP5PmniIoLpVwLa6XoMYJKtfngGm2763y00ktVGGL1gDtnm0lDuhkinIxOzieh8aRpYDBX6zZZ/n20LzDO/5l0CGErKPgzzt9vRPiQNoGxqC90jtsin+XkOxF9erk0QYt/St7/Qa1R0E+0dA2bHqxz2SWz3cjcc4Cw8/DW3SLFjaONvs6aQyHkrL2LJabARMMgGmf68P5nJrPy56c3gV8jXe7CVaV+5nClT1HYgWSEIna6oyzo8kzFk="
     - secure: "dM0paMW2d4U4U7OwbnrTjdOqDnvo+nce9r7h+qTbYfbuJe0fpRkHCrxcB//8ESkMrPTr0EDExCxvaywY8pqeVVJbykNswdyze1SWYk6lbUvXTpSrKqp0J0a/FtVjfamc1aMv4c6KIDKh4vIcgK4xrjXj68COCS6uIcFhETNUy5bxH8T2BOJzyf/iWOF7oduXUV/VGNcWnhkPdoPh8xtpmBJ6ZTWQ01MriZ/28hvzgyh1OjJFWCJZ+OZoIDQVPb/jnfPXU4Wk/G/LEPJcBgvN4qSMr2lm3Iq29V0Ltrsx8rrYADO7trCm6qyEQK9TLKfywaYIcm/D9FJ8F4WBHtIeJ3PLY3518L3iZ+Ngd6QTnd0FI6hrG7rpoD/0dz4e//9d3tSsjbh/1BiQwXXTnPyaUjN3C92k4GyITYJTVL5f6evzsTneT6Plj1vWC0E52d1oqVOZDgrWMYZEHdYvpUJTQqclMNhu5SMIYAPqVvibqupcmAh5B+UDr6UvYT/hUAC/d3hyjfHgouRoluJ1mutND88QjDw6UWmXXjHqRSCI6OI5NDZczl/aqz7nPFyTaIe9EibTdZa5LC8fN+Am9MTRxJAv8HXt0zKe5FqHijSvFcVxYlhwlIZg7ShbPh+X2Hnh/JMjx0z/7ujkBRYfmAQW53SBy8Tv/Zv69nCz8eOFOUk="
 
 before_install:
   - ./tools/travis/scan.sh
   - ./tools/travis/setup.sh
-  - pip install hererocks --user
-  - hererocks lua_install -r^ --$LUA
-  - export PATH=$PATH:$PWD/lua_install/bin # Add directory with all installed binaries to PATH
-
-install:
-  - cd tests
-  - ./install-deps.sh
 
 script:
-  - busted --output=TAP --helper=set_paths --pattern=.lua scripts
-  - cd ..
+  - make test
   - ./tools/travis/build.sh
 
 deploy:
diff --git a/Dockerfile b/Dockerfile
index f123be4..af7f8ee 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -22,7 +22,7 @@
 # From https://hub.docker.com/_/alpine/
 #
 
-FROM alpine:3.9
+FROM alpine:3.9 as base
 
 # Busybox's ash shell supports pipefail, which is useful for tarballs
 SHELL [ "/bin/ash", "-o", "pipefail", "-c"]
@@ -82,7 +82,6 @@
      && mkdir -p /tmp/api-gateway \
      && readonly NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) \
      && echo "using up to $NPROC threads" \
-
      && cd /tmp/api-gateway/ \
      && curl -k -L https://ftp.pcre.org/pub/pcre/pcre-${PCRE_VERSION}.tar.gz -o /tmp/api-gateway/pcre-${PCRE_VERSION}.tar.gz \
      && curl -k -L https://openresty.org/download/openresty-${OPENRESTY_VERSION}.tar.gz -o /tmp/api-gateway/openresty-${OPENRESTY_VERSION}.tar.gz \
@@ -152,7 +151,9 @@
             -j${NPROC} \
     && make -j${NPROC} \
     && make install \
-
+    #
+    # Build regular version of the API Gateway #
+    #
     && echo "        - building regular version of the api-gateway ... " \
     && ./configure \
             --prefix=${_exec_prefix}/api-gateway \
@@ -188,14 +189,18 @@
             -j${NPROC} \
     && make -j${NPROC} \
     && make install \
-
+    #
+    # Add nginx test support #
+    #
     && echo "        - adding Nginx Test support" \
     && curl -k -L https://github.com/openresty/test-nginx/archive/v${TEST_NGINX_VERSION}.tar.gz -o ${_prefix}/test-nginx-${TEST_NGINX_VERSION}.tar.gz \
     && cd ${_prefix} \
     && tar -xf ${_prefix}/test-nginx-${TEST_NGINX_VERSION}.tar.gz \
     && rm ${_prefix}/test-nginx-${TEST_NGINX_VERSION}.tar.gz \
     && cp -r ${_prefix}/test-nginx-0.24/inc/* /usr/local/share/perl5/site_perl/ \
-
+    #
+    # CLEANUP #
+    #
     && ln -s ${_sbindir}/api-gateway-debug ${_sbindir}/nginx \
     && cp /tmp/api-gateway/openresty-${OPENRESTY_VERSION}/build/install ${_prefix}/api-gateway/bin/resty-install \
     && apk del g++ gcc make \
@@ -216,7 +221,6 @@
     && ln -s ${_prefix}/api-gateway/bin/resty /usr/bin/resty \
     && rm -rf /tmp/api-gateway
 
-
 RUN echo " ... installing opm packages ... " \
     && opm get pintsized/lua-resty-http=${LUA_RESTY_HTTP_VERSION} \
                hamishforbes/lua-resty-iputils=${LUA_RESTY_IPUTILS_VERSION} \
@@ -248,6 +252,9 @@
 COPY build_config_supervisor.sh /tmp/build_config_supervisor.sh
 RUN sh +x /tmp/build_config_supervisor.sh
 
+# Add standard gateway configuration
+FROM base as apigateway
+
 COPY init.sh /etc/init-container.sh
 # add the default configuration for the Gateway
 COPY . /etc/api-gateway
diff --git a/Dockerfile.test.unit b/Dockerfile.test.unit
new file mode 100644
index 0000000..598a038
--- /dev/null
+++ b/Dockerfile.test.unit
@@ -0,0 +1,46 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# apigateway
+#
+# VERSION               1.13.6.1
+#
+# From https://hub.docker.com/_/alpine/
+#
+
+FROM alpine:3.9
+
+RUN apk update && \
+    apk add \
+    gcc tar zlib wget make musl-dev g++ curl \
+    libtool readline luajit luajit-dev unzip \
+    openssl openssl-dev
+
+WORKDIR /tmp
+RUN wget https://luarocks.org/releases/luarocks-3.1.3.tar.gz && \
+    tar zxpf luarocks-3.1.3.tar.gz && \
+    cd luarocks-3.1.3 && \
+    ./configure && \
+    make build && \
+    make install
+
+COPY . /etc/api-gateway
+
+WORKDIR /etc/api-gateway/tests
+RUN ./install-deps.sh
+
+CMD sh run-tests.sh
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 7da0c67..55e5e01 100644
--- a/Makefile
+++ b/Makefile
@@ -58,9 +58,10 @@
 		-e OPTIMIZE=1 \
 		-d ${PROFILING}
 
-.PHONY: test-run
-test-run:
-	cd tests; ./run-tests.sh
+.PHONY: test
+test:
+	docker build -f Dockerfile.test.unit -t gw-tests .
+	docker run gw-tests:latest
 
 .PHONY: docker-run
 docker-run: