running tests in a container
This provides a dockerfile for building a container to run the containerd tests Signed-off-by: Christopher Jones <tophj@linux.vnet.ibm.com>
This commit is contained in:
parent
0c07626faf
commit
051ac5dd63
31
contrib/Dockerfile.test
Normal file
31
contrib/Dockerfile.test
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# This dockerfile is used to test containerd within a container
|
||||||
|
#
|
||||||
|
# usage:
|
||||||
|
# 1.) docker build -t containerd-test -f Dockerfile.test ../
|
||||||
|
# 2.) docker run -it --privileged -v /tmp:/tmp --tmpfs /var/lib/containerd-test containerd-test bash
|
||||||
|
# 3.) $ make binaries install test
|
||||||
|
#
|
||||||
|
|
||||||
|
# Install proto3
|
||||||
|
FROM golang:1.9.3 AS proto3
|
||||||
|
RUN apt-get update && apt-get install -y autoconf automake g++ libtool unzip
|
||||||
|
COPY script/setup/install-protobuf install-protobuf
|
||||||
|
RUN ./install-protobuf
|
||||||
|
|
||||||
|
# Install runc
|
||||||
|
FROM golang:1.9.3 AS runc
|
||||||
|
RUN apt-get update && apt-get install -y curl libapparmor-dev libseccomp-dev
|
||||||
|
COPY vendor.conf /go/src/github.com/containerd/containerd/vendor.conf
|
||||||
|
COPY script/setup/install-runc install-runc
|
||||||
|
RUN ./install-runc
|
||||||
|
|
||||||
|
FROM golang:1.9.3
|
||||||
|
RUN apt-get update && apt-get install -y btrfs-tools gcc git libapparmor-dev libseccomp-dev make xfsprogs
|
||||||
|
|
||||||
|
COPY --from=proto3 /usr/local/bin/protoc /usr/local/bin/protoc
|
||||||
|
COPY --from=proto3 /usr/local/include/google /usr/local/include/google
|
||||||
|
|
||||||
|
COPY --from=runc /usr/local/sbin/runc /usr/local/go/bin/runc
|
||||||
|
COPY . /go/src/github.com/containerd/containerd
|
||||||
|
|
||||||
|
WORKDIR /go/src/github.com/containerd/containerd
|
@ -20,7 +20,7 @@ func testSupportsDType(t *testing.T, expected bool, mkfs ...string) {
|
|||||||
}
|
}
|
||||||
defer os.RemoveAll(mnt)
|
defer os.RemoveAll(mnt)
|
||||||
|
|
||||||
deviceName, cleanupDevice, err := testutil.NewLoopback(100 << 20) // 100 MB
|
deviceName, cleanupDevice, err := testutil.NewLoopback(150 << 20) // 150 MB
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ func testLookup(t *testing.T, fsType string) {
|
|||||||
}
|
}
|
||||||
defer os.RemoveAll(mnt)
|
defer os.RemoveAll(mnt)
|
||||||
|
|
||||||
deviceName, cleanupDevice, err := testutil.NewLoopback(100 << 20) // 100 MB
|
deviceName, cleanupDevice, err := testutil.NewLoopback(150 << 20) // 150 MB
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
40
script/setup/install-protobuf
Executable file
40
script/setup/install-protobuf
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Downloads and installs protobuf
|
||||||
|
#
|
||||||
|
set -eux -o pipefail
|
||||||
|
|
||||||
|
PROTOBUF_VERSION=3.5.1
|
||||||
|
GOARCH=$(go env GOARCH)
|
||||||
|
GOOS=$(go env GOOS)
|
||||||
|
PROTOBUF_DIR=$(mktemp -d)
|
||||||
|
|
||||||
|
case $GOARCH in
|
||||||
|
|
||||||
|
arm64)
|
||||||
|
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-aarch64.zip"
|
||||||
|
unzip $PROTOBUF_DIR/protobuf -d /usr/local
|
||||||
|
;;
|
||||||
|
|
||||||
|
amd64|386)
|
||||||
|
if [ $GOOS == "windows" ]; then
|
||||||
|
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-win32.zip"
|
||||||
|
elif [ $GOOS == "linux" ]; then
|
||||||
|
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-x86_64.zip"
|
||||||
|
fi
|
||||||
|
unzip $PROTOBUF_DIR/protobuf -d /usr/local
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-cpp-$PROTOBUF_VERSION.zip"
|
||||||
|
unzip $PROTOBUF_DIR/protobuf -d /usr/src/protobuf
|
||||||
|
cd /usr/src/protobuf/protobuf-$PROTOBUF_VERSION
|
||||||
|
./autogen.sh
|
||||||
|
./configure --disable-shared
|
||||||
|
make
|
||||||
|
make check
|
||||||
|
make install
|
||||||
|
ldconfig
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
rm -rf $PROTOBUF_DIR
|
13
script/setup/install-runc
Executable file
13
script/setup/install-runc
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Builds and installs runc to /usr/local/go/bin based off
|
||||||
|
# the commit defined in vendor.conf
|
||||||
|
#
|
||||||
|
set -eux -o pipefail
|
||||||
|
|
||||||
|
RUNC_COMMIT=$(grep opencontainers/runc ${GOPATH}/src/github.com/containerd/containerd/vendor.conf | cut -d " " -f 2)
|
||||||
|
|
||||||
|
go get -u github.com/opencontainers/runc
|
||||||
|
cd $GOPATH/src/github.com/opencontainers/runc
|
||||||
|
git checkout $RUNC_COMMIT
|
||||||
|
make BUILDTAGS="apparmor seccomp" runc install
|
@ -29,7 +29,7 @@ func boltSnapshotter(t *testing.T) func(context.Context, string) (snapshots.Snap
|
|||||||
|
|
||||||
return func(ctx context.Context, root string) (snapshots.Snapshotter, func() error, error) {
|
return func(ctx context.Context, root string) (snapshots.Snapshotter, func() error, error) {
|
||||||
|
|
||||||
deviceName, cleanupDevice, err := testutil.NewLoopback(100 << 20) // 100 MB
|
deviceName, cleanupDevice, err := testutil.NewLoopback(150 << 20) // 150 MB
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user