diff options
-rw-r--r-- | jenkins/README.md | 6 | ||||
-rwxr-xr-x | jenkins/build_and_run_docker.sh | 57 | ||||
-rw-r--r-- | jenkins/buildcmds/README.md | 6 | ||||
-rwxr-xr-x | jenkins/buildcmds/pull_request.sh | 16 | ||||
-rwxr-xr-x | jenkins/buildcmds/pull_request_32.sh | 16 | ||||
-rw-r--r-- | jenkins/docker/Dockerfile | 244 | ||||
-rw-r--r-- | jenkins/docker32/Dockerfile | 143 | ||||
-rw-r--r-- | jenkins/make_test_output.py | 94 | ||||
-rwxr-xr-x | jenkins/pull_request_in_docker.sh | 69 | ||||
-rwxr-xr-x | more_tests/Makefile | 41 |
10 files changed, 0 insertions, 692 deletions
diff --git a/jenkins/README.md b/jenkins/README.md deleted file mode 100644 index 29f664f2..00000000 --- a/jenkins/README.md +++ /dev/null @@ -1,6 +0,0 @@ - -Jenkins Infrastructure ----------------------- - -The scripts in this directory serve as plumbing for running the protobuf -tests under Jenkins. diff --git a/jenkins/build_and_run_docker.sh b/jenkins/build_and_run_docker.sh deleted file mode 100755 index 50e1e8c6..00000000 --- a/jenkins/build_and_run_docker.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# -# Builds docker image and runs a command under it. -# This is a generic script that is configured with the following variables: -# -# DOCKERFILE_DIR - Directory in which Dockerfile file is located. -# DOCKER_RUN_SCRIPT - Script to run under docker (relative to protobuf repo root) -# OUTPUT_DIR - Directory that will be copied from inside docker after finishing. -# $@ - Extra args to pass to docker run - - -set -ex - -cd $(dirname $0)/.. -git_root=$(pwd) -cd - - -# Use image name based on Dockerfile location checksum -DOCKER_IMAGE_NAME=$(basename $DOCKERFILE_DIR)_$(sha1sum $DOCKERFILE_DIR/Dockerfile | cut -f1 -d\ ) - -# Make sure docker image has been built. Should be instantaneous if so. -docker build -t $DOCKER_IMAGE_NAME $DOCKERFILE_DIR - -# Ensure existence of ccache directory -CCACHE_DIR=/tmp/protobuf-ccache -mkdir -p $CCACHE_DIR - -# Choose random name for docker container -CONTAINER_NAME="build_and_run_docker_$(uuidgen)" - -# Run command inside docker -docker run \ - "$@" \ - -e CCACHE_DIR=$CCACHE_DIR \ - -e EXTERNAL_GIT_ROOT="/var/local/jenkins/protobuf" \ - -e TEST_SET="$TEST_SET" \ - -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \ - -v "$git_root:/var/local/jenkins/protobuf:ro" \ - -v $CCACHE_DIR:$CCACHE_DIR \ - -w /var/local/git/protobuf \ - --name=$CONTAINER_NAME \ - $DOCKER_IMAGE_NAME \ - bash -l "/var/local/jenkins/protobuf/$DOCKER_RUN_SCRIPT" || FAILED="true" - -# Copy output artifacts -if [ "$OUTPUT_DIR" != "" ] -then - docker cp "$CONTAINER_NAME:/var/local/git/protobuf/$OUTPUT_DIR" "$git_root" || FAILED="true" -fi - -# remove the container, possibly killing it first -docker rm -f $CONTAINER_NAME || true - -if [ "$FAILED" != "" ] -then - exit 1 -fi diff --git a/jenkins/buildcmds/README.md b/jenkins/buildcmds/README.md deleted file mode 100644 index 7a48f2d5..00000000 --- a/jenkins/buildcmds/README.md +++ /dev/null @@ -1,6 +0,0 @@ - -Jenkins Build Commands ----------------------- - -The scripts in this directory are designed to be top-level entry points for -Jenkins projects. diff --git a/jenkins/buildcmds/pull_request.sh b/jenkins/buildcmds/pull_request.sh deleted file mode 100755 index 51e4bfa4..00000000 --- a/jenkins/buildcmds/pull_request.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# -# This is the top-level script we give to Jenkins as the entry point for -# running the "pull request" project: -# -# https://grpc-testing.appspot.com/view/Protocol%20Buffers/job/protobuf_pull_request/ -# -# This script selects a specific Dockerfile (for building a Docker image) and -# a script to run inside that image. Then we delegate to the general -# build_and_run_docker.sh script. - -export DOCKERFILE_DIR=jenkins/docker -export DOCKER_RUN_SCRIPT=jenkins/pull_request_in_docker.sh -export OUTPUT_DIR=testoutput -export TEST_SET="csharp java_jdk7 javanano_jdk7 java_oracle7 javanano_oracle7 python python_cpp ruby_all javascript golang php_all" -./jenkins/build_and_run_docker.sh diff --git a/jenkins/buildcmds/pull_request_32.sh b/jenkins/buildcmds/pull_request_32.sh deleted file mode 100755 index bf0fb7ff..00000000 --- a/jenkins/buildcmds/pull_request_32.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# -# This is the top-level script we give to Jenkins as the entry point for -# running the "pull request 32" project: -# -# https://grpc-testing.appspot.com/view/Protocol%20Buffers/job/Protocol%20Buffers%20Pull%20Request%2032/ -# -# This script selects a specific Dockerfile (for building a Docker image) and -# a script to run inside that image. Then we delegate to the general -# build_and_run_docker.sh script. - -export DOCKERFILE_DIR=jenkins/docker32 -export DOCKER_RUN_SCRIPT=jenkins/pull_request_in_docker.sh -export OUTPUT_DIR=testoutput -export TEST_SET="php_all_32" -./jenkins/build_and_run_docker.sh diff --git a/jenkins/docker/Dockerfile b/jenkins/docker/Dockerfile deleted file mode 100644 index 3a279e66..00000000 --- a/jenkins/docker/Dockerfile +++ /dev/null @@ -1,244 +0,0 @@ -# This Dockerfile specifies the recipe for creating an image for the tests -# to run in. -# -# We install as many test dependencies here as we can, because these setup -# steps can be cached. They do *not* run every time we run the build. -# The Docker image is only rebuilt when the Dockerfile (ie. this file) -# changes. - -# Base Dockerfile for gRPC dev images -FROM debian:latest - -# Apt source for old Python versions. -RUN echo 'deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu trusty main' > /etc/apt/sources.list.d/deadsnakes.list && \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DB82666C - -# Apt source for Oracle Java. -RUN echo 'deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main' > /etc/apt/sources.list.d/webupd8team-java-trusty.list && \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886 && \ - echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections - -# Apt source for Mono -RUN echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list && \ - echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list && \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF - -# Apt source for php -RUN echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu trusty main" | tee /etc/apt/sources.list.d/various-php.list && \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F4FCBB07 - -# Install dotnet SDK based on https://www.microsoft.com/net/core#debian -# (Ubuntu instructions need apt to support https) -RUN apt-get update && apt-get install -y --force-yes curl libunwind8 gettext && \ - curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=847105 && \ - mkdir -p /opt/dotnet && tar zxf dotnet.tar.gz -C /opt/dotnet && \ - ln -s /opt/dotnet/dotnet /usr/local/bin - -# Install dependencies. We start with the basic ones require to build protoc -# and the C++ build -RUN apt-get clean && apt-get update && apt-get install -y --force-yes \ - autoconf \ - autotools-dev \ - build-essential \ - bzip2 \ - ccache \ - curl \ - gcc \ - git \ - libc6 \ - libc6-dbg \ - libc6-dev \ - libgtest-dev \ - libtool \ - make \ - parallel \ - time \ - wget \ - # -- For csharp -- - mono-devel \ - referenceassemblies-pcl \ - nunit \ - # -- For all Java builds -- \ - maven \ - # -- For java_jdk6 -- \ - # oops! not in jessie. too old? openjdk-6-jdk \ - # -- For java_jdk7 -- \ - openjdk-7-jdk \ - # -- For java_oracle7 -- \ - oracle-java7-installer \ - # -- For python / python_cpp -- \ - python-setuptools \ - python-pip \ - python-dev \ - python2.6-dev \ - python3.3-dev \ - python3.4-dev \ - # -- For Ruby -- - ruby \ - # -- For C++ benchmarks -- - cmake \ - # -- For PHP -- - php5.6 \ - php5.6-dev \ - php5.6-xml \ - php7.0 \ - php7.0-dev \ - php7.0-xml \ - phpunit \ - valgrind \ - libxml2-dev \ - && apt-get clean - -################## -# C# dependencies - -RUN wget www.nuget.org/NuGet.exe -O /usr/local/bin/nuget.exe - -################## -# Python dependencies - -# These packages exist in apt-get, but their versions are too old, so we have -# to get updates from pip. - -RUN pip install pip --upgrade -RUN pip install virtualenv tox yattag - -################## -# Ruby dependencies - -# Install rvm -RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 -RUN \curl -sSL https://get.rvm.io | bash -s stable - -# Install Ruby 2.1, Ruby 2.2 and JRuby 1.7 -RUN /bin/bash -l -c "rvm install ruby-2.1" -RUN /bin/bash -l -c "rvm install ruby-2.2" -RUN /bin/bash -l -c "rvm install jruby-1.7" -RUN /bin/bash -l -c "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc" -RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc" -RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc" - -################## -# Java dependencies - -# This step requires compiling protoc. :( - -ENV MAVEN_REPO /var/maven_local_repository -ENV MVN mvn --batch-mode - -RUN cd /tmp && \ - git clone https://github.com/google/protobuf.git && \ - cd protobuf && \ - git reset --hard 129a6e2aca95dcfb6c3e717d7b9cca1f104fde39 && \ - ./autogen.sh && \ - ./configure && \ - make -j4 && \ - cd java && \ - $MVN install dependency:go-offline -Dmaven.repo.local=$MAVEN_REPO && \ - cd ../javanano && \ - $MVN install dependency:go-offline -Dmaven.repo.local=$MAVEN_REPO - -################## -# PHP dependencies. -RUN wget http://am1.php.net/get/php-5.5.38.tar.bz2/from/this/mirror -RUN mv mirror php-5.5.38.tar.bz2 -RUN tar -xvf php-5.5.38.tar.bz2 -RUN cd php-5.5.38 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-5.5-zts && \ - make && make install && cd .. -RUN cd php-5.5.38 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-5.5 && \ - make && make install && cd .. - -RUN wget http://am1.php.net/get/php-5.6.30.tar.bz2/from/this/mirror -RUN mv mirror php-5.6.30.tar.bz2 -RUN tar -xvf php-5.6.30.tar.bz2 -RUN cd php-5.6.30 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-5.6-zts && \ - make && make install && cd .. -RUN cd php-5.6.30 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-5.6 && \ - make && make install && cd .. - -RUN wget http://am1.php.net/get/php-7.0.18.tar.bz2/from/this/mirror -RUN mv mirror php-7.0.18.tar.bz2 -RUN tar -xvf php-7.0.18.tar.bz2 -RUN cd php-7.0.18 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-7.0-zts && \ - make && make install && cd .. -RUN cd php-7.0.18 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-7.0 && \ - make && make install && cd .. - -RUN wget http://am1.php.net/get/php-7.1.4.tar.bz2/from/this/mirror -RUN mv mirror php-7.1.4.tar.bz2 -RUN tar -xvf php-7.1.4.tar.bz2 -RUN cd php-7.1.4 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-7.1-zts && \ - make && make install && cd .. -RUN cd php-7.1.4 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-7.1 && \ - make && make install && cd .. - -RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -RUN php composer-setup.php -RUN mv composer.phar /usr/bin/composer -RUN php -r "unlink('composer-setup.php');" -RUN composer config -g -- disable-tls true -RUN composer config -g -- secure-http false -RUN cd /tmp && \ - rm -rf protobuf && \ - git clone https://github.com/google/protobuf.git && \ - cd protobuf && \ - git reset --hard 49b44bff2b6257a119f9c6a342d6151c736586b8 && \ - cd php && \ - ln -sfn /usr/local/php-5.5/bin/php /usr/bin/php && \ - ln -sfn /usr/local/php-5.5/bin/php-config /usr/bin/php-config && \ - ln -sfn /usr/local/php-5.5/bin/phpize /usr/bin/phpize && \ - composer install && \ - mv vendor /usr/local/vendor-5.5 && \ - ln -sfn /usr/local/php-5.6/bin/php /usr/bin/php && \ - ln -sfn /usr/local/php-5.6/bin/php-config /usr/bin/php-config && \ - ln -sfn /usr/local/php-5.6/bin/phpize /usr/bin/phpize && \ - composer install && \ - mv vendor /usr/local/vendor-5.6 && \ - ln -sfn /usr/local/php-7.0/bin/php /usr/bin/php && \ - ln -sfn /usr/local/php-7.0/bin/php-config /usr/bin/php-config && \ - ln -sfn /usr/local/php-7.0/bin/phpize /usr/bin/phpize && \ - composer install && \ - mv vendor /usr/local/vendor-7.0 && \ - ln -sfn /usr/local/php-7.1/bin/php /usr/bin/php && \ - ln -sfn /usr/local/php-7.1/bin/php-config /usr/bin/php-config && \ - ln -sfn /usr/local/php-7.1/bin/phpize /usr/bin/phpize && \ - composer install && \ - mv vendor /usr/local/vendor-7.1 - -################## -# Go dependencies. -RUN apt-get install -y \ - # -- For go -- \ - golang - -################## -# Javascript dependencies. -RUN apt-get install -y \ - # -- For javascript -- \ - npm - -################## -# Python 3.5 3.6 dependencies. -RUN apt-get clean && apt-get update && apt-get install -y --force-yes \ - python3.5-dev \ - python3.6-dev \ - && apt-get clean - -# On Debian/Ubuntu, nodejs binary is named 'nodejs' because the name 'node' -# is taken by another legacy binary. We don't have that legacy binary and -# npm expects the binary to be named 'node', so we just create a symbol -# link here. -RUN ln -s `which nodejs` /usr/bin/node - -################## -# Prepare ccache - -RUN ln -s /usr/bin/ccache /usr/local/bin/gcc -RUN ln -s /usr/bin/ccache /usr/local/bin/g++ -RUN ln -s /usr/bin/ccache /usr/local/bin/cc -RUN ln -s /usr/bin/ccache /usr/local/bin/c++ -RUN ln -s /usr/bin/ccache /usr/local/bin/clang -RUN ln -s /usr/bin/ccache /usr/local/bin/clang++ - -# Define the default command. -CMD ["bash"] diff --git a/jenkins/docker32/Dockerfile b/jenkins/docker32/Dockerfile deleted file mode 100644 index 1278889f..00000000 --- a/jenkins/docker32/Dockerfile +++ /dev/null @@ -1,143 +0,0 @@ -# This Dockerfile specifies the recipe for creating an image for the tests -# to run in. -# -# We install as many test dependencies here as we can, because these setup -# steps can be cached. They do *not* run every time we run the build. -# The Docker image is only rebuilt when the Dockerfile (ie. this file) -# changes. - -# Base Dockerfile for gRPC dev images -FROM 32bit/debian:latest - -# Apt source for php -RUN echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu trusty main" | tee /etc/apt/sources.list.d/various-php.list && \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F4FCBB07 - -# Install dependencies. We start with the basic ones require to build protoc -# and the C++ build -RUN apt-get clean && apt-get update && apt-get install -y --force-yes \ - autoconf \ - autotools-dev \ - build-essential \ - bzip2 \ - ccache \ - curl \ - gcc \ - git \ - libc6 \ - libc6-dbg \ - libc6-dev \ - libgtest-dev \ - libtool \ - make \ - parallel \ - time \ - wget \ - unzip \ - # -- For python -- - python-setuptools \ - python-pip \ - python-dev \ - # -- For C++ benchmarks -- - cmake \ - # -- For PHP -- - php5.5 \ - php5.5-dev \ - php5.5-xml \ - php5.6 \ - php5.6-dev \ - php5.6-xml \ - php7.0 \ - php7.0-dev \ - php7.0-xml \ - phpunit \ - valgrind \ - libxml2-dev \ - && apt-get clean - -################## -# PHP dependencies. -RUN wget http://am1.php.net/get/php-5.5.38.tar.bz2/from/this/mirror -RUN mv mirror php-5.5.38.tar.bz2 -RUN tar -xvf php-5.5.38.tar.bz2 -RUN cd php-5.5.38 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-5.5-zts && \ - make && make install && make clean && cd .. -RUN cd php-5.5.38 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-5.5 && \ - make && make install && make clean && cd .. - -RUN wget http://am1.php.net/get/php-5.6.30.tar.bz2/from/this/mirror -RUN mv mirror php-5.6.30.tar.bz2 -RUN tar -xvf php-5.6.30.tar.bz2 -RUN cd php-5.6.30 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-5.6-zts && \ - make && make install && cd .. -RUN cd php-5.6.30 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-5.6 && \ - make && make install && cd .. - -RUN wget http://am1.php.net/get/php-7.0.18.tar.bz2/from/this/mirror -RUN mv mirror php-7.0.18.tar.bz2 -RUN tar -xvf php-7.0.18.tar.bz2 -RUN cd php-7.0.18 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-7.0-zts && \ - make && make install && cd .. -RUN cd php-7.0.18 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-7.0 && \ - make && make install && cd .. - -RUN wget http://am1.php.net/get/php-7.1.4.tar.bz2/from/this/mirror -RUN mv mirror php-7.1.4.tar.bz2 -RUN tar -xvf php-7.1.4.tar.bz2 -RUN cd php-7.1.4 && ./configure --enable-maintainer-zts --prefix=/usr/local/php-7.1-zts && \ - make && make install && cd .. -RUN cd php-7.1.4 && make clean && ./configure --enable-bcmath --prefix=/usr/local/php-7.1 && \ - make && make install && cd .. - -RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -RUN php composer-setup.php -RUN mv composer.phar /usr/bin/composer -RUN php -r "unlink('composer-setup.php');" -RUN composer config -g -- disable-tls true -RUN composer config -g -- secure-http false -RUN cd /tmp && \ - git clone https://github.com/google/protobuf.git && \ - cd protobuf/php && \ - git reset --hard 49b44bff2b6257a119f9c6a342d6151c736586b8 && \ - ln -sfn /usr/local/php-5.5/bin/php /usr/bin/php && \ - ln -sfn /usr/local/php-5.5/bin/php-config /usr/bin/php-config && \ - ln -sfn /usr/local/php-5.5/bin/phpize /usr/bin/phpize && \ - composer install && \ - mv vendor /usr/local/vendor-5.5 && \ - ln -sfn /usr/local/php-5.6/bin/php /usr/bin/php && \ - ln -sfn /usr/local/php-5.6/bin/php-config /usr/bin/php-config && \ - ln -sfn /usr/local/php-5.6/bin/phpize /usr/bin/phpize && \ - composer install && \ - mv vendor /usr/local/vendor-5.6 && \ - ln -sfn /usr/local/php-7.0/bin/php /usr/bin/php && \ - ln -sfn /usr/local/php-7.0/bin/php-config /usr/bin/php-config && \ - ln -sfn /usr/local/php-7.0/bin/phpize /usr/bin/phpize && \ - composer install && \ - mv vendor /usr/local/vendor-7.0 && \ - ln -sfn /usr/local/php-7.1/bin/php /usr/bin/php && \ - ln -sfn /usr/local/php-7.1/bin/php-config /usr/bin/php-config && \ - ln -sfn /usr/local/php-7.1/bin/phpize /usr/bin/phpize && \ - composer install && \ - mv vendor /usr/local/vendor-7.1 - -################## -# Python dependencies - -# These packages exist in apt-get, but their versions are too old, so we have -# to get updates from pip. - -RUN pip install pip --upgrade -RUN pip install virtualenv tox yattag - -################## -# Prepare ccache - -RUN ln -s /usr/bin/ccache /usr/local/bin/gcc -RUN ln -s /usr/bin/ccache /usr/local/bin/g++ -RUN ln -s /usr/bin/ccache /usr/local/bin/cc -RUN ln -s /usr/bin/ccache /usr/local/bin/c++ -RUN ln -s /usr/bin/ccache /usr/local/bin/clang -RUN ln -s /usr/bin/ccache /usr/local/bin/clang++ - -# Define the default command. -CMD ["bash"] diff --git a/jenkins/make_test_output.py b/jenkins/make_test_output.py deleted file mode 100644 index 98536853..00000000 --- a/jenkins/make_test_output.py +++ /dev/null @@ -1,94 +0,0 @@ -"""Gathers output from test runs and create an XML file in JUnit format. - -The output files from the individual tests have been written in a directory -structure like: - - $DIR/joblog (output from "parallel --joblog joblog") - $DIR/logs/1/cpp/stdout - $DIR/logs/1/cpp/stderr - $DIR/logs/1/csharp/stdout - $DIR/logs/1/csharp/stderr - $DIR/logs/1/java_jdk7/stdout - $DIR/logs/1/java_jdk7/stderr - etc. - -This script bundles them into a single output XML file so Jenkins can show -detailed test results. It runs as the last step before the Jenkins build -finishes. -""" - -import os -import sys -from yattag import Doc -from collections import defaultdict - - -def readtests(basedir): - tests = defaultdict(dict) - - # Sample input (note: separators are tabs). - # - # Seq Host Starttime Runtime Send Receive Exitval Signal Command - # 1 : 1456263838.313 0.005 0 0 0 0 echo A - with open(basedir + "/joblog") as jobs: - firstline = next(jobs) - for line in jobs: - values = line.split("\t") - - name = values[8].split()[-1] - test = tests[name] - test["name"] = name - test["time"] = values[3] - - exitval = values[6] - if int(exitval): - # We don't have a more specific message. User should look at stderr. - test["failure"] = "TEST FAILURE" - else: - test["failure"] = False - - for testname in os.listdir(basedir + "/logs/1"): - test = tests[testname] - - with open(basedir + "/logs/1/" + testname + "/stdout") as f: - test["stdout"] = f.read() - - with open(basedir + "/logs/1/" + testname + "/stderr") as f: - test["stderr"] = f.read() - - # The cpp test is special since it doesn't run under parallel so doesn't show - # up in the job log. - tests["cpp"]["name"] = "cpp" - - with open(basedir + '/logs/1/cpp/build_time', 'r') as f: - tests["cpp"]["time"] = f.read().strip() - tests["cpp"]["failure"] = False - - ret = tests.values() - ret.sort(key=lambda x: x["name"]) - - return ret - - -def genxml(tests): - doc, tag, text = Doc().tagtext() - - with tag("testsuites"): - with tag("testsuite", name="Protobuf Tests"): - for test in tests: - with tag("testcase", name=test["name"], classname=test["name"], - time=test["time"]): - with tag("system-out"): - text(test["stdout"]) - with tag("system-err"): - text(test["stderr"]) - if test["failure"]: - with tag("failure"): - text(test["failure"]) - - return doc.getvalue() - - -sys.stderr.write("make_test_output.py: writing XML from directory: " + - sys.argv[1] + "\n") -print(genxml(readtests(sys.argv[1]))) diff --git a/jenkins/pull_request_in_docker.sh b/jenkins/pull_request_in_docker.sh deleted file mode 100755 index 19753c39..00000000 --- a/jenkins/pull_request_in_docker.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -# -# This is the script that runs inside Docker, once the image has been built, -# to execute all tests for the "pull request" project. - -WORKSPACE_BASE=`pwd` -MY_DIR="$(dirname "$0")" -TEST_SCRIPT=$MY_DIR/../tests.sh -BUILD_DIR=/tmp/protobuf - -set -e # exit immediately on error -set -x # display all commands - -# The protobuf repository is mounted into our Docker image, but read-only. -# We clone into a directory inside Docker (this is faster than cp). -rm -rf $BUILD_DIR -mkdir -p $BUILD_DIR -cd $BUILD_DIR -git clone /var/local/jenkins/protobuf -cd protobuf - -# Initialize any submodules: -git submodule update --init --recursive - -# Set up the directory where our test output is going to go. -OUTPUT_DIR=`mktemp -d` -LOG_OUTPUT_DIR=$OUTPUT_DIR/logs -mkdir -p $LOG_OUTPUT_DIR/1/cpp - -################################################################################ -# cpp build needs to run first, non-parallelized, so that protoc is available -# for other builds. - -# Output filenames to follow the overall scheme used by parallel, ie: -# $DIR/logs/1/cpp/stdout -# $DIR/logs/1/cpp/stderr -# $DIR/logs/1/csharp/stdout -# $DIR/logs/1/csharp/stderr -# $DIR/logs/1/java_jdk7/stdout -# $DIR/logs/1/java_jdk7/stderr -CPP_STDOUT=$LOG_OUTPUT_DIR/1/cpp/stdout -CPP_STDERR=$LOG_OUTPUT_DIR/1/cpp/stderr - -# Time the C++ build, so we can put this info in the test output. -# It's important that we get /usr/bin/time (which supports -f and -o) and not -# the bash builtin "time" which doesn't. -TIME_CMD="/usr/bin/time -f %e -o $LOG_OUTPUT_DIR/1/cpp/build_time" - -$TIME_CMD $TEST_SCRIPT cpp > >(tee $CPP_STDOUT) 2> >(tee $CPP_STDERR >&2) - -# Other tests are run in parallel. TEST_SET is defined in -# buildcmds/pull_request{_32}.sh - -parallel --results $LOG_OUTPUT_DIR --joblog $OUTPUT_DIR/joblog $TEST_SCRIPT ::: \ - $TEST_SET \ - || true # Process test results even if tests fail. - -cat $OUTPUT_DIR/joblog - -# The directory that is copied from Docker back into the Jenkins workspace. -COPY_FROM_DOCKER=/var/local/git/protobuf/testoutput -mkdir -p $COPY_FROM_DOCKER -TESTOUTPUT_XML_FILE=$COPY_FROM_DOCKER/testresults.xml - -# Process all the output files from "parallel" and package them into a single -# .xml file with detailed, broken-down test output. -python $MY_DIR/make_test_output.py $OUTPUT_DIR > $TESTOUTPUT_XML_FILE - -ls -l $TESTOUTPUT_XML_FILE diff --git a/more_tests/Makefile b/more_tests/Makefile deleted file mode 100755 index 286cf0f1..00000000 --- a/more_tests/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# Additional tests to run before releasing a package. -# -# Run like: -# make PACKAGE=/path/to/protobuf-VERSION.tar.gz -# -# Some of these tests require tools or make assumptions that may not be -# available on end-user machines, so these cannot be part of "make check". For -# example, we test that the headers compile with strict warning settings, but -# since different compilers produce wildly different warnings we cannot assume -# that this test will pass everywhere. If we ran it as part of "make check", -# it could unnecessarily block users from running the real tests just because -# their compiler produces some extra warnings that probably aren't a big deal. -# So we run it separately. - -all: header_warning_test - -clean: - rm -rf src target header_warning_test.cc header_warning_test.o header_warning_test - -# Unpack the package into src, then install it into target. -PACKAGE=protobuf.tar.gz - -src: $(PACKAGE) - tar zxvf $(PACKAGE) - mv `basename $(PACKAGE) .tar.gz` src - -target: src - (cd src && ./configure --prefix=$$PWD/../target --disable-shared) - (cd src && make -j4 check) - (cd src && make install) - -# Verify that headers produce no warnings even under strict settings. -header_warning_test.cc: target - ( (cd target/include && find google/protobuf -name '*.h') | \ - awk '{print "#include \""$$1"\""} ' > header_warning_test.cc ) - -header_warning_test: header_warning_test.cc - # TODO(kenton): Consider adding -pedantic and -Weffc++. Currently these - # produce tons of extra warnings so we'll need to do some work first. - g++ -Itarget/include -Wall -Werror -Wsign-compare -O2 -c header_warning_test.cc - touch header_warning_test |