mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
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:
committed by
gVisor bot
parent
7052d21dc4
commit
444a9d9e54
@@ -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"],
|
||||
)
|
||||
|
||||
@@ -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
|
||||
@@ -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"],
|
||||
)
|
||||
@@ -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"]
|
||||
@@ -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"],
|
||||
)
|
||||
@@ -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"]
|
||||
@@ -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"],
|
||||
)
|
||||
@@ -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"]
|
||||
@@ -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"],
|
||||
)
|
||||
@@ -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"]
|
||||
@@ -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"],
|
||||
)
|
||||
@@ -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"]
|
||||
Reference in New Issue
Block a user