Publish Dockerfiles and test-runner binaries for running language tests.

By following the directions in the README file, these Dockerfiles can be
built and used to run native language tests for their respective runtimes.

PiperOrigin-RevId: 260174430
This commit is contained in:
Samantha Sample
2019-07-26 10:57:53 -07:00
committed by gVisor bot
parent 7052d21dc4
commit 444a9d9e54
17 changed files with 253 additions and 26 deletions
+1 -26
View File
@@ -1,6 +1,6 @@
# These packages are used to run language runtime tests inside gVisor sandboxes.
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("//runsc/test:build_defs.bzl", "runtime_test")
package(licenses = ["notice"])
@@ -23,28 +23,3 @@ runtime_test(
],
deps = ["//runsc/test/testutil"],
)
go_binary(
name = "proctor-go",
srcs = ["proctor-go.go"],
)
go_binary(
name = "proctor-java",
srcs = ["proctor-java.go"],
)
go_binary(
name = "proctor-nodejs",
srcs = ["proctor-nodejs.go"],
)
go_binary(
name = "proctor-php",
srcs = ["proctor-php.go"],
)
go_binary(
name = "proctor-python",
srcs = ["proctor-python.go"],
)
+40
View File
@@ -0,0 +1,40 @@
# Runtimes Tests Dockerfiles
The Dockerfiles defined under this path are configured to host the execution of
the runtimes language tests. Each Dockerfile can support the language indicated
by its directory.
The following runtimes are currently supported:
- Go 1.12
- Java 11
- Node.js 12
- PHP 7.3
- Python 3.7
#### Prerequisites:
1) [Install and configure Docker](https://docs.docker.com/install/)
2) Build each Docker container:
```bash
$ docker build -f $LANG/Dockerfile [-t $NAME] .
```
### Testing:
If the prerequisites have been fulfilled, you can run the tests with the
following command:
```bash
$ docker run --rm -it $NAME [FLAG]
```
Running the command with no flags will cause all the available tests to execute.
Flags can be added for additional functionality:
- --list: Print a list of all available tests
- --test <name>: Run a single test from the list of available tests
- --v: Print the language version
+8
View File
@@ -0,0 +1,8 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary")
package(licenses = ["notice"])
go_binary(
name = "proctor-go",
srcs = ["proctor-go.go"],
)
+31
View File
@@ -0,0 +1,31 @@
FROM ubuntu:bionic
ENV LANG_VER=1.12.5
ENV LANG_NAME=Go
RUN apt-get update && apt-get install -y \
curl \
gcc \
git
WORKDIR /root
# Download Go 1.4 to use as a bootstrap for building Go from the source.
RUN curl -o go1.4.linux-amd64.tar.gz https://dl.google.com/go/go1.4.linux-amd64.tar.gz
RUN curl -LJO https://github.com/golang/go/archive/go${LANG_VER}.tar.gz
RUN mkdir bootstr
RUN tar -C bootstr -xzf go1.4.linux-amd64.tar.gz
RUN tar -xzf go-go${LANG_VER}.tar.gz
RUN mv go-go${LANG_VER} go
ENV GOROOT=/root/go
ENV GOROOT_BOOTSTRAP=/root/bootstr/go
ENV LANG_DIR=${GOROOT}
WORKDIR ${LANG_DIR}/src
RUN ./make.bash
WORKDIR ${LANG_DIR}
COPY proctor-go.go ${LANG_DIR}
ENTRYPOINT ["/root/go/bin/go", "run", "proctor-go.go"]
+8
View File
@@ -0,0 +1,8 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary")
package(licenses = ["notice"])
go_binary(
name = "proctor-java",
srcs = ["proctor-java.go"],
)
+52
View File
@@ -0,0 +1,52 @@
FROM ubuntu:bionic
# This hash is associated with a specific JDK release and needed for ensuring
# the same version is downloaded every time.
ENV LANG_HASH=af47e0398606
ENV LANG_VER=11u-dev
ENV LANG_NAME=Java
RUN apt-get update && apt-get install -y \
autoconf \
build-essential \
curl\
file \
libasound2-dev \
libcups2-dev \
libfontconfig1-dev \
libx11-dev \
libxext-dev \
libxrandr-dev \
libxrender-dev \
libxt-dev \
libxtst-dev \
make \
unzip \
zip
WORKDIR /root
RUN curl -o go.tar.gz https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz
RUN tar -zxf go.tar.gz
# Use curl instead of ADD to prevent redownload every time.
RUN curl -o jdk.tar.gz http://hg.openjdk.java.net/jdk-updates/jdk${LANG_VER}/archive/${LANG_HASH}.tar.gz
# Download Java version N-1 to be used as the Boot JDK to build Java version N.
RUN curl -o bootjdk.tar.gz https://download.java.net/openjdk/jdk10/ri/openjdk-10+44_linux-x64_bin_ri.tar.gz
RUN tar -zxf jdk.tar.gz
RUN tar -zxf bootjdk.tar.gz
# Specify the JDK to be used by jtreg.
ENV JT_JAVA=/root/jdk${LANG_VER}-${LANG_HASH}/build/linux-x86_64-normal-server-release/jdk
ENV LANG_DIR=/root/jdk${LANG_VER}-${LANG_HASH}
WORKDIR ${LANG_DIR}
RUN curl -o jtreg.tar.gz https://ci.adoptopenjdk.net/view/Dependencies/job/jtreg/lastSuccessfulBuild/artifact/jtreg-4.2.0-tip.tar.gz
RUN tar -xzf jtreg.tar.gz
RUN bash configure --with-boot-jdk=/root/jdk-10 --with-jtreg=${LANG_DIR}/jtreg
RUN make clean
RUN make images
COPY proctor-java.go ${LANG_DIR}
ENTRYPOINT ["/root/go/bin/go", "run", "proctor-java.go"]
+8
View File
@@ -0,0 +1,8 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary")
package(licenses = ["notice"])
go_binary(
name = "proctor-nodejs",
srcs = ["proctor-nodejs.go"],
)
+29
View File
@@ -0,0 +1,29 @@
FROM ubuntu:bionic
ENV LANG_VER=12.4.0
ENV LANG_NAME=Node
RUN apt-get update && apt-get install -y \
curl \
dumb-init \
g++ \
make \
python
WORKDIR /root
RUN curl -o go.tar.gz https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz
RUN tar -zxf go.tar.gz
RUN curl -o node-v${LANG_VER}.tar.gz https://nodejs.org/dist/v${LANG_VER}/node-v${LANG_VER}.tar.gz
RUN tar -zxf node-v${LANG_VER}.tar.gz
ENV LANG_DIR=/root/node-v${LANG_VER}
WORKDIR ${LANG_DIR}
RUN ./configure
RUN make
RUN make test-build
COPY proctor-nodejs.go ${LANG_DIR}
# Including dumb-init emulates the Linux "init" process, preventing the failure
# of tests involving worker processes.
ENTRYPOINT ["/usr/bin/dumb-init", "/root/go/bin/go", "run", "proctor-nodejs.go"]
+8
View File
@@ -0,0 +1,8 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary")
package(licenses = ["notice"])
go_binary(
name = "proctor-php",
srcs = ["proctor-php.go"],
)
+29
View File
@@ -0,0 +1,29 @@
FROM ubuntu:bionic
ENV LANG_VER=7.3.6
ENV LANG_NAME=PHP
RUN apt-get update && apt-get install -y \
autoconf \
automake \
bison \
build-essential \
curl \
libtool \
libxml2-dev \
re2c
WORKDIR /root
RUN curl -o go.tar.gz https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz
RUN tar -zxf go.tar.gz
RUN curl -o php-${LANG_VER}.tar.gz https://www.php.net/distributions/php-${LANG_VER}.tar.gz
RUN tar -zxf php-${LANG_VER}.tar.gz
ENV LANG_DIR=/root/php-${LANG_VER}
WORKDIR ${LANG_DIR}
RUN ./configure
RUN make
COPY proctor-php.go ${LANG_DIR}
ENTRYPOINT ["/root/go/bin/go", "run", "proctor-php.go"]
+8
View File
@@ -0,0 +1,8 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary")
package(licenses = ["notice"])
go_binary(
name = "proctor-python",
srcs = ["proctor-python.go"],
)
+31
View File
@@ -0,0 +1,31 @@
FROM ubuntu:bionic
ENV LANG_VER=3.7.3
ENV LANG_NAME=Python
RUN apt-get update && apt-get install -y \
curl \
gcc \
libbz2-dev \
libffi-dev \
liblzma-dev \
libreadline-dev \
libssl-dev \
make \
zlib1g-dev
WORKDIR /root
RUN curl -o go.tar.gz https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz
RUN tar -zxf go.tar.gz
# Use flags -LJO to follow the html redirect and download .tar.gz.
RUN curl -LJO https://github.com/python/cpython/archive/v${LANG_VER}.tar.gz
RUN tar -zxf cpython-${LANG_VER}.tar.gz
ENV LANG_DIR=/root/cpython-${LANG_VER}
WORKDIR ${LANG_DIR}
RUN ./configure --with-pydebug
RUN make -s -j2
COPY proctor-python.go ${LANG_DIR}
ENTRYPOINT ["/root/go/bin/go", "run", "proctor-python.go"]