You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2021/02/12 15:40:39 UTC

[trafficserver] branch 9.0.x updated: Updating to Proxy Verifier v2.0.0 (#7454)

This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new 7eb4e48  Updating to Proxy Verifier v2.0.0 (#7454)
7eb4e48 is described below

commit 7eb4e48eaff518e71aeeb2c1357a41d645350535
Author: Brian Neradt <br...@gmail.com>
AuthorDate: Mon Feb 1 15:59:00 2021 -0600

    Updating to Proxy Verifier v2.0.0 (#7454)
    
    We will want to use Proxy Verifier v2.0.0 for it's delayed transaction
    and HTTP/2 to server capabilities. This updates the AuTest extensions to
    properly handle the new version.
    
    (cherry picked from commit 8dc2cbeff127283e830dfc676d10d6e9570dcff5)
    
     Conflicts:
    	ci/jenkins/bin/autest.sh
    
    NOTE: I had to copy over all of ci/jenkins/bin from master into this PR,
    because it got maddening with all the merge conflicts. The CI jenkins
    scripts were never meant to be backported, and somehow we started
    including the Jenkins scripts changes into regular PRs.
---
 ci/jenkins/bin/autest.sh                           | 34 +++++++++++++--
 ci/jenkins/bin/build.sh                            | 15 +++++--
 ci/jenkins/bin/cache-tests.sh                      | 15 ++++---
 ci/jenkins/bin/clang-analyzer.sh                   |  8 +---
 ci/jenkins/bin/clang-format.sh                     | 37 +++++++++++++---
 ci/jenkins/bin/cleanup.sh                          |  7 ++-
 ci/jenkins/bin/docs.sh                             | 13 +++++-
 ci/jenkins/bin/environment.sh                      | 51 ++++++++++++++--------
 ci/jenkins/bin/extract.sh                          | 10 ++---
 ci/jenkins/bin/gh-mirror.sh                        |  6 ++-
 ci/jenkins/bin/github.sh                           | 26 ++++++++---
 ci/jenkins/bin/regression.sh                       | 16 +++++--
 tests/gold_tests/autest-site/conditions.test.ext   |  4 ++
 tests/gold_tests/autest-site/setup.cli.ext         | 21 ++++++++-
 .../autest-site/verifier_client.test.ext           | 13 ++++--
 .../autest-site/verifier_server.test.ext           | 17 +++++---
 tests/prepare_proxy_verifier.sh                    |  8 ++--
 tests/proxy-verifier-version.txt                   |  1 +
 18 files changed, 222 insertions(+), 80 deletions(-)

diff --git a/ci/jenkins/bin/autest.sh b/ci/jenkins/bin/autest.sh
index 7df0372..7ec18ee 100755
--- a/ci/jenkins/bin/autest.sh
+++ b/ci/jenkins/bin/autest.sh
@@ -19,8 +19,10 @@
 set +x
 
 cd src
+sleep 30
 
-if [ ! -z "$ghprbActualCommit" ]; then
+git branch --contains ${ghprbActualCommit} > /dev/null
+if [ $? = 0 -a ! -z "$ghprbActualCommit" ]; then
     git diff ${ghprbActualCommit}^...${ghprbActualCommit} --name-only | egrep -E '^(build|iocore|proxy|tests|include|mgmt|plugins|proxy|src)/' > /dev/null
     if [ $? = 1 ]; then
         echo "No relevant files changed, skipping run"
@@ -44,6 +46,9 @@ URL="https://ci.trafficserver.apache.org/autest"
 JOB_ID=${ghprbPullId:-${ATS_BRANCH:-master}}
 AUSB="ausb-${JOB_ID}.${BUILD_NUMBER}"
 SANDBOX="/var/tmp/${AUSB}"
+PROXY_VERIFIER_VERSIONS="/home/jenkins/proxy-verifier"
+PROXY_VERIFIER_VERSION_FILE="tests/proxy-verifier-version.txt"
+PROXY_VERIFIER_PREPARE="tests/prepare_proxy_verifier.sh"
 
 # Optional settings
 CCACHE=""
@@ -55,6 +60,7 @@ QUIC=""
 CURL=""
 AUTEST_DEBUG=""
 AUTEST_VERBOSE=""
+PROXY_VERIFIER_ARGUMENT=""
 
 [ "1" == "$enable_ccache" ] && CCACHE="--enable-ccache"
 [ "1" == "$enable_werror" ] && WERROR="--enable-werror"
@@ -84,7 +90,8 @@ set -x
 
 # Configure
 autoreconf -if
-./configure --prefix="${INSTALL}" \
+./configure \
+    --prefix="${INSTALL}" \
     --with-user=jenkins \
     --enable-experimental-plugins \
     --enable-example-plugins \
@@ -105,7 +112,28 @@ set +x
 echo -n "=======>>>>  Started on "
 date
 
-./tests/autest.sh --sandbox "$SANDBOX" --ats-bin "${INSTALL}/bin" $AUTEST_DEBUG $AUTEST_VERBOSE
+AUTEST="/usr/bin/autest"
+[ ! -x ${AUTEST} ] && AUTEST="/usr/local/bin/autest"
+set -x
+
+pv_version=""
+if [ -f "${PROXY_VERIFIER_VERSION_FILE}" ]; then
+  pv_version=`cat "${PROXY_VERIFIER_VERSION_FILE}"`
+elif [ -f "${PROXY_VERIFIER_PREPARE}" ]; then
+  pv_version=`awk -F'"' '/^pv_version/ {print $2}' "${PROXY_VERIFIER_PREPARE}"`
+fi
+if [ "x${pv_version}" != "x" ]; then
+  PROXY_VERIFIER_BIN="${PROXY_VERIFIER_VERSIONS}/${pv_version}/bin"
+  PROXY_VERIFIER_ARGUMENT="--proxy-verifier-bin ${PROXY_VERIFIER_BIN}"
+fi
+
+${AUTEST} \
+    -D ./tests/gold_tests \
+    --sandbox "$SANDBOX" \
+    --ats-bin "${INSTALL}/bin" \
+    $PROXY_VERIFIER_ARGUMENT \
+    $AUTEST_DEBUG \
+    $AUTEST_VERBOSE
 status=$?
 
 set +x
diff --git a/ci/jenkins/bin/build.sh b/ci/jenkins/bin/build.sh
index 9a9fd35..93d2328 100755
--- a/ci/jenkins/bin/build.sh
+++ b/ci/jenkins/bin/build.sh
@@ -28,24 +28,33 @@ CCACHE="--enable-ccache"
 # When to enable -Werror
 WERROR="--enable-werror"
 
+# Optional settings
+ASAN=""
+[ "1" == "$enable_asan" ] && ASAN="--enable-asan"
+
 echo "DEBUG: $DEBUG"
 echo "CCACHE: $CCACHE"
 echo "WERROR: $WERROR"
+echo "ASAN: $ASAN"
 
 # Change to the build area (this is previously setup in extract.sh)
-cd "${WORKSPACE}/${BUILD_NUMBER}/build"
+cd "${ATS_BUILD_BASEDIR}/build"
 mkdir -p BUILDS && cd BUILDS
 
 # Restore verbose shell output
 set -x
 
 ../configure \
-    --prefix="${WORKSPACE}/${BUILD_NUMBER}/install" \
+    --prefix="${ATS_BUILD_BASEDIR}/install" \
     --enable-experimental-plugins \
     --enable-example-plugins \
     --with-user=jenkins \
     ${CCACHE} \
     ${WERROR} \
-    ${DEBUG}
+    ${DEBUG} \
+    ${ASAN}
 
+echo
+echo -n "Main build started at " && date
 ${ATS_MAKE} ${ATS_MAKE_FLAGS} V=1 Q= || exit 1
+echo -n "Main build finished at " && date
diff --git a/ci/jenkins/bin/cache-tests.sh b/ci/jenkins/bin/cache-tests.sh
index 5ca9b55..21771f9 100755
--- a/ci/jenkins/bin/cache-tests.sh
+++ b/ci/jenkins/bin/cache-tests.sh
@@ -16,7 +16,7 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-PREFIX="${WORKSPACE}/${BUILD_NUMBER}/install"
+PREFIX="${ATS_BUILD_BASEDIR}/install"
 REMAP="${PREFIX}/etc/trafficserver/remap.config"
 RECORDS="${PREFIX}/etc/trafficserver/records.config"
 
@@ -25,7 +25,7 @@ TWEAK=""
 
 # Change to the build area (this is previously setup in extract.sh)
 set +x
-cd "${WORKSPACE}/${BUILD_NUMBER}/build"
+cd "${ATS_BUILD_BASEDIR}/build"
 
 ./configure \
     --prefix=${PREFIX} \
@@ -37,19 +37,20 @@ ${ATS_MAKE} -i ${ATS_MAKE_FLAGS} V=1 Q=
 ${ATS_MAKE} -i install
 
 [ -x ${PREFIX}/bin/traffic_server ] || exit 1
+ldd  ${PREFIX}/bin/traffic_server
 
-# Get NPM v10
-source /opt/rh/rh-nodejs10/enable
+# Get NPM v12
+source /opt/rh/rh-nodejs12/enable
 
 # Setup and start ATS with the required remap rule
-echo "map http://127.0.0.1:8080 http://192.168.3.13:8000" >> $REMAP
+echo "map http://127.0.0.1:8080 http://192.168.3.1:8000" >> $REMAP
 
 ${PREFIX}/bin/trafficserver start
 
 set -x
 
 cd /home/jenkins/cache-tests
-npm run --silent cli --base=http://127.0.0.1:8080/ > /CA/cache-tests/${ATS_BRANCH}.json
+npm run --silent cli --base=http://127.0.0.1:8080 > /CA/cache-tests/${ATS_BRANCH}.json
 cat /CA/cache-tests/${ATS_BRANCH}.json
 
 ${PREFIX}/bin/trafficserver stop
@@ -61,7 +62,7 @@ if [ "" != "$TWEAK" ]; then
     echo "CONFIG proxy.config.http.negative_caching_enabled INT 1" >> $RECORDS
     ${PREFIX}/bin/trafficserver start
     cd /home/jenkins/cache-tests
-    npm run --silent cli --base=http://127.0.0.1:8080/ > /CA/cache-tests/${ATS_BRANCH}${TWEAK}.json
+    npm run --silent cli --base=http://127.0.0.1:8080 > /CA/cache-tests/${ATS_BRANCH}${TWEAK}.json
     echo "TWEAKED RESULTS"
     cat /CA/cache-tests/${ATS_BRANCH}${TWEAK}.json
 
diff --git a/ci/jenkins/bin/clang-analyzer.sh b/ci/jenkins/bin/clang-analyzer.sh
index c2ebb42..5334b98 100755
--- a/ci/jenkins/bin/clang-analyzer.sh
+++ b/ci/jenkins/bin/clang-analyzer.sh
@@ -38,9 +38,6 @@ checkers="-enable-checker alpha.unix.cstring.BufferOverlap \
 test -z "${ATS_MAKE}" && ATS_MAKE="make"
 test ! -z "${WORKSPACE}" && cd "${WORKSPACE}/src"
 
-# Check to see if this is a Github PR build (so not a github branch per-se)
-test "${JOB_NAME#*-github}" != "${JOB_NAME}" && ATS_BRANCH="github"
-
 # Where to store the results, special case for the CI
 output="/tmp"
 
@@ -50,7 +47,7 @@ if [ "${JOB_NAME#*-github}" != "${JOB_NAME}" ]; then
     ATS_BRANCH="github"
     if [ -w "${OUTPUT_BASE}/${ATS_BRANCH}" ]; then
         output="${OUTPUT_BASE}/${ATS_BRANCH}/${ghprbPullId}"
-        [ ! -d "${output}"] && mkdir "${output}"
+        [ ! -d "${output}" ] && mkdir "${output}"
     fi
     github_pr=" PR #${ghprbPullId}"
     results_url="https://ci.trafficserver.apache.org/clang-analyzer/${ATS_BRANCH}/${ghprbPullId}/"
@@ -103,6 +100,3 @@ fi
 if [ -x "/admin/bin/clean-clang.sh" ]; then
     /admin/bin/clean-clang.sh
 fi
-
-# Exit with the scan-build exit code (thanks to --status-bugs)
-exit $status
diff --git a/ci/jenkins/bin/clang-format.sh b/ci/jenkins/bin/clang-format.sh
index 44e7c97..dd37eca 100755
--- a/ci/jenkins/bin/clang-format.sh
+++ b/ci/jenkins/bin/clang-format.sh
@@ -16,18 +16,43 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
+set +x
 cd "${WORKSPACE}/src"
-autoreconf -if && ./configure
-[ "0" != "$?" ] && exit -1
 
-${ATS_MAKE} -j clang-format
-[ "0" != "$?" ] && exit -1
+# First, make sure there are no trailing WS!!!
+git grep -IE ' +$' | fgrep -v '.gold:'
+if [ "1" != "$?" ]; then
+    echo "Error: Trailing whitespaces are not allowed!"
+    echo "Error: Please run: git grep -IE ' +$'"
+    exit 1
+fi
+echo "Success! No trailing whitespace"
+
+# Make sure there are no DOS shit here.
+git grep -IE $'\r$' | fgrep -v 'lib/yamlcpp'
+if [ "1" != "$?" ]; then
+    echo "Error: Please make sure to run dos2unix on the above file(s)"
+    exit 1
+fi
+echo "Success! No DOS carriage return"
+
+set -x
+
+autoreconf -if && ./configure
+[ "0" != "$?" ] && exit 1
 
-${ATS_MAKE} autopep8
+${ATS_MAKE} clang-format
 [ "0" != "$?" ] && exit 1
 
+# Only enforce autopep8 on branches where the pre-commit hook was updated to
+# check it. Otherwise, none of the PRs for older branches will pass this check.
+if grep -q autopep8 tools/git/pre-commit; then
+    ${ATS_MAKE} autopep8
+    [ "0" != "$?" ] && exit 1
+fi
+
 git diff --exit-code
-[ "0" != "$?" ] && exit -1
+[ "0" != "$?" ] && exit 1
 
 # Normal exit
 exit 0
diff --git a/ci/jenkins/bin/cleanup.sh b/ci/jenkins/bin/cleanup.sh
index 9fa5a07..39c3de0 100755
--- a/ci/jenkins/bin/cleanup.sh
+++ b/ci/jenkins/bin/cleanup.sh
@@ -17,11 +17,10 @@
 #  limitations under the License.
 
 # Do a distclean, to verify that we can actually satisfy this (common) build target
-cd "${WORKSPACE}/${BUILD_NUMBER}/build"
+cd "${ATS_BUILD_BASEDIR}/build"
 [ -d BUILDS ] && cd BUILDS
 
 ${ATS_MAKE} distclean
 
-# Final cleanup, this removes the build and install areas
-cd "${WORKSPACE}"
-rm -rf ${BUILD_NUMBER}
+# Final cleanup, this removes the build and install areas, not really needed nor right for docker builds
+cd "${WORKSPACE}" && rm -rf ${BUILD_NUMBER}
diff --git a/ci/jenkins/bin/docs.sh b/ci/jenkins/bin/docs.sh
index 6aa2d92..5af6ae5 100755
--- a/ci/jenkins/bin/docs.sh
+++ b/ci/jenkins/bin/docs.sh
@@ -20,6 +20,17 @@
 test -z "${ATS_MAKE}" && ATS_MAKE="make"
 test ! -z "${WORKSPACE}" && cd "${WORKSPACE}/src"
 
+# Skip if nothing in doc has changed
+INCLUDE_FILES=$(for i in $(git grep literalinclude doc/ | awk '{print $3}'); do basename $i; done | sort -u | paste -sd\|)
+echo $INCLUDE_FILES
+if [ ! -z "$ghprbActualCommit" ]; then
+    git diff ${ghprbActualCommit}^...${ghprbActualCommit} --name-only | egrep -E "(^doc/|$INCLUDE_FILES)" > /dev/null
+    if [ $? = 1 ]; then
+        echo "No relevant files changed, skipping run"
+        exit 0
+    fi
+fi
+
 # Run configure on the docs builds each time in case there have been updates
 autoreconf -fi && ./configure --enable-docs || exit 1
 
@@ -30,7 +41,7 @@ rm -rf docbuild/html
 ${ATS_MAKE} -e SPHINXOPTS="-D language='en'" html
 [ $? != 0 ] && exit 1
 
-# Only continue with the rsync and JA build if we're on the official docs updates.
+# Only continue with the rsync and JA build if we're on the official docs updates
 [ -w /home/docs ] || exit 0
 
 /usr/bin/rsync --delete -av docbuild/html/ /home/docs/en/${ATS_BRANCH}
diff --git a/ci/jenkins/bin/environment.sh b/ci/jenkins/bin/environment.sh
index e76cf55..b3559eb 100755
--- a/ci/jenkins/bin/environment.sh
+++ b/ci/jenkins/bin/environment.sh
@@ -18,11 +18,17 @@
 
 # Show which platform we're actually building on
 set +x
-echo -n "Build platform: "
 
+# Deduct if this build is on a docker instance
+IS_DOCKER="no"
+df / | fgrep -q overlay && IS_DOCKER="yes"
+export IS_DOCKER
+
+echo -n "Build platform: "
 [ -f /etc/lsb-release ] && grep DISTRIB_RELEASE /etc/lsb-release
 [ -f /etc/debian_version ] && cat /etc/debian_version
 [ -f /etc/redhat-release ] && cat /etc/redhat-release
+echo "Build on Docker: " $IS_DOCKER
 
 # Shouldn't have to tweak this
 export ATS_SRC_HOME="/home/jenkins/src"
@@ -40,15 +46,15 @@ export TODAY=$(/bin/date +'%m%d%Y')
 
 # Extract the current branch (default to master). ToDo: Can we do this better ?
 ATS_BRANCH=master
-ATS_IS_7="yes"
 
-test "${JOB_NAME#*-5.3.x}" != "${JOB_NAME}" && ATS_BRANCH=5.3.x && ATS_IS_7="no"
-test "${JOB_NAME#*-6.2.x}" != "${JOB_NAME}" && ATS_BRANCH=6.2.x && ATS_IS_7="no"
+# Make sure to leave these, for the HTTP cache tests
+test "${JOB_NAME#*-5.3.x}" != "${JOB_NAME}" && ATS_BRANCH=5.3.x
+test "${JOB_NAME#*-6.2.x}" != "${JOB_NAME}" && ATS_BRANCH=6.2.x
+
+# These should be maintained and cleaned up as needed.
 test "${JOB_NAME#*-7.1.x}" != "${JOB_NAME}" && ATS_BRANCH=7.1.x
 test "${JOB_NAME#*-8.0.x}" != "${JOB_NAME}" && ATS_BRANCH=8.0.x
 test "${JOB_NAME#*-8.1.x}" != "${JOB_NAME}" && ATS_BRANCH=8.1.x
-test "${JOB_NAME#*-8.2.x}" != "${JOB_NAME}" && ATS_BRANCH=8.2.x
-test "${JOB_NAME#*-8.3.x}" != "${JOB_NAME}" && ATS_BRANCH=8.3.x
 test "${JOB_NAME#*-9.0.x}" != "${JOB_NAME}" && ATS_BRANCH=9.0.x
 test "${JOB_NAME#*-9.1.x}" != "${JOB_NAME}" && ATS_BRANCH=9.1.x
 test "${JOB_NAME#*-9.2.x}" != "${JOB_NAME}" && ATS_BRANCH=9.2.x
@@ -58,6 +64,9 @@ test "${JOB_NAME#*-10.1.x}" != "${JOB_NAME}" && ATS_BRANCH=10.1.x
 test "${JOB_NAME#*-10.2.x}" != "${JOB_NAME}" && ATS_BRANCH=10.2.x
 test "${JOB_NAME#*-10.3.x}" != "${JOB_NAME}" && ATS_BRANCH=10.3.x
 
+# Special case for the full build of clang analyzer
+test "${JOB_NAME}" == "clang-analyzer-full" && ATS_BRANCH=FULL
+
 export ATS_BRANCH
 echo "Branch is $ATS_BRANCH"
 
@@ -89,17 +98,14 @@ else
     # Default is gcc / g++
     export CC=gcc
     export CXX=g++
-    # Only test for non standard compilers on ATS v7.x and later. ToDo: Remove this when 6.x is EOLifed.
-    if test "$ATS_IS_7" == "yes"; then
-        if test -f "/opt/rh/devtoolset-7/enable"; then
-            # This changes the path such that gcc / g++ is the right version. This is for CentOS 6 / 7.
-            source /opt/rh/devtoolset-7/enable
-            echo "Enabling devtoolset-7"
-        elif test -x "/usr/bin/g++-7"; then
-            # This is for Debian platforms
-            export CC=/usr/bin/gcc-7
-            export CXX=/usr/bin/g++-7
-        fi
+    if test -f "/opt/rh/devtoolset-7/enable"; then
+        # This changes the path such that gcc / g++ is the right version. This is for CentOS 6 / 7.
+        source /opt/rh/devtoolset-7/enable
+        echo "Enabling devtoolset-7"
+    elif test -x "/usr/bin/g++-7"; then
+        # This is for Debian platforms
+        export CC=/usr/bin/gcc-7
+        export CXX=/usr/bin/g++-7
     fi
 fi
 
@@ -111,7 +117,16 @@ echo "CXX: $CXX"
 $CXX -v
 
 # Figure out parallelism for regular builds / bots
-ATS_MAKE_FLAGS="-j4"
+export ATS_MAKE_FLAGS="-j6"
+if [ "yes" == "$IS_DOCKER" ]; then
+    export ATS_BUILD_BASEDIR="${WORKSPACE}"
+else
+    export ATS_BUILD_BASEDIR="${WORKSPACE}/${BUILD_NUMBER}"
+fi
+
+# ccache settings
+export CCACHE_BASEDIR=${ATS_BUILD_BASEDIR}
+#export CCACHE_COMPRESS=true
 
 # Restore verbose shell output
 set -x
diff --git a/ci/jenkins/bin/extract.sh b/ci/jenkins/bin/extract.sh
index 5ee733d..9587825 100755
--- a/ci/jenkins/bin/extract.sh
+++ b/ci/jenkins/bin/extract.sh
@@ -18,16 +18,16 @@
 
 set +x
 # Setup the build and install area for this build
-mkdir -p "${WORKSPACE}/${BUILD_NUMBER}/build"
-mkdir -p "${WORKSPACE}/${BUILD_NUMBER}/install"
+mkdir -p "${ATS_BUILD_BASEDIR}/build"
+mkdir -p "${ATS_BUILD_BASEDIR}/install"
 
-cd "${WORKSPACE}/${BUILD_NUMBER}/build"
+cd "${ATS_BUILD_BASEDIR}/build"
 echo "Artifact: ${ATS_SRC_HOME}/trafficserver-${ATS_BRANCH}.tar.bz2"
 tar xf ${ATS_SRC_HOME}/trafficserver-${ATS_BRANCH}.tar.bz2
 mv trafficserver-*/* .
 
-echo "build: ${WORKSPACE}/${BUILD_NUMBER}/build"
-echo "install: ${WORKSPACE}/${BUILD_NUMBER}/install"
+echo "build: ${ATS_BUILD_BASEDIR}/build"
+echo "install: ${ATS_BUILD_BASEDIR}/install"
 
 # Restore verbose shell output
 set -x
diff --git a/ci/jenkins/bin/gh-mirror.sh b/ci/jenkins/bin/gh-mirror.sh
index 3f03fc6..9bf2e3e 100755
--- a/ci/jenkins/bin/gh-mirror.sh
+++ b/ci/jenkins/bin/gh-mirror.sh
@@ -69,7 +69,8 @@ function checkBuild() {
 REF_6_2=$(getRef "6.2.x")
 REF_7_1=$(getRef "7.1.x")
 REF_8_0=$(getRef "8.0.x")
-#REF_8_1=$(getRef "8.1.x")
+REF_8_1=$(getRef "8.1.x")
+REF_9_0=$(getRef "9.0.x")
 REF_master=$(getRef "master")
 
 # Do the updates
@@ -80,5 +81,6 @@ ${GIT} update-server-info
 checkBuild "$REF_6_2" "6.2.x"
 checkBuild "$REF_7_1" "7.1.x"
 checkBuild "$REF_8_0" "8.0.x"
-#checkBuild "$REF_8_1" "8.1.x"
+checkBuild "$REF_8_1" "8.1.x"
+checkBuild "$REF_9_0" "9.0.x"
 checkBuild "$REF_master" "master"
diff --git a/ci/jenkins/bin/github.sh b/ci/jenkins/bin/github.sh
index 82271fe..054d98e 100755
--- a/ci/jenkins/bin/github.sh
+++ b/ci/jenkins/bin/github.sh
@@ -18,7 +18,7 @@
 
 set +x
 
-INSTALL="${WORKSPACE}/${BUILD_NUMBER}/install"
+INSTALL="${ATS_BUILD_BASEDIR}/install"
 
 # Optional settings
 CCACHE=""
@@ -26,11 +26,13 @@ WERROR=""
 DEBUG=""
 WCCP=""
 LUAJIT=""
+QUIC=""
 [ "1" == "$enable_ccache" ] && CCACHE="--enable-ccache"
 [ "1" == "$enable_werror" ] && WERROR="--enable-werror"
 [ "1" == "$enable_debug" ] && DEBUG="--enable-debug"
 [ "1" == "$enable_wccp" ] && WCCP="--enable-wccp"
 [ "1" == "$enable_luajit" ] && LUAJIT="--enable-luajit"
+[ "1" == "$enable_quic" ] && QUIC="--with-openssl=/opt/openssl-quic"
 
 mkdir -p ${INSTALL}
 cd src
@@ -40,6 +42,7 @@ echo "WERROR: $WERROR"
 echo "DEBUG: $DEBUG"
 echo "WCCP: $WCCP"
 echo "LUAJIT: $LUAJIT"
+echo "QUIC: $QUIC"
 
 # Restore verbose shell output
 set -x
@@ -54,14 +57,25 @@ autoreconf -if
     ${CCACHE} \
     ${WCCP} \
     ${LUAJIT} \
+    ${QUIC} \
     ${WERROR} \
     ${DEBUG}
 
 # Build and run regressions
-${ATS_MAKE} ${ATS_MAKE_FLAGS} V=1 Q=
-${ATS_MAKE} check VERBOSE=Y V=1 && ${ATS_MAKE} install
+echo
+echo -n "Main build started at " && date
+${ATS_MAKE} ${ATS_MAKE_FLAGS} V=1 Q= || exit 1
+echo -n "Main build finished at " && date
+echo
+echo -n "Unit tests started at " && date
+${ATS_MAKE} -j 2 check VERBOSE=Y V=1 && ${ATS_MAKE} install
+echo -n "Unit tests finished at " && date
 
-${INSTALL}/bin/traffic_server -K -k -R 1
-[ "0" != "$?" ] && exit -1
+[ -x ${INSTALL}/bin/traffic_server ] || exit 1
 
-exit 0
+echo
+echo -n "Regression tests started at " && date
+${INSTALL}/bin/traffic_server -K -k -R 1
+rval=$?
+echo -n "Regression tests finished at " && date
+exit $rval
diff --git a/ci/jenkins/bin/regression.sh b/ci/jenkins/bin/regression.sh
index 62c1f32..d0bf711 100755
--- a/ci/jenkins/bin/regression.sh
+++ b/ci/jenkins/bin/regression.sh
@@ -16,10 +16,18 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-cd "${WORKSPACE}/${BUILD_NUMBER}/build"
+cd "${ATS_BUILD_BASEDIR}/build"
 [ -d BUILDS ] && cd BUILDS
 
-${ATS_MAKE} check VERBOSE=Y V=1 || exit 1
+echo
+echo -n "Unit tests started at " && date
+${ATS_MAKE} -j 2 check VERBOSE=Y V=1 || exit 1
+echo -n "Unit tests finished at " && date
+${ATS_MAKE} install || exit 1
 
-${ATS_MAKE} install || exit
-"${WORKSPACE}/${BUILD_NUMBER}/install/bin/traffic_server" -k -K -R 1
+echo
+echo -n "Regression tests started at " && date
+"${ATS_BUILD_BASEDIR}/install/bin/traffic_server" -k -K -R 1
+rval=$?
+echo -n "Regression tests finished at " && date
+exit $rval
diff --git a/tests/gold_tests/autest-site/conditions.test.ext b/tests/gold_tests/autest-site/conditions.test.ext
index c9d3a0d..52af993 100644
--- a/tests/gold_tests/autest-site/conditions.test.ext
+++ b/tests/gold_tests/autest-site/conditions.test.ext
@@ -40,6 +40,10 @@ def HasCurlVersion(self, version):
     return self.EnsureVersion(["curl", "--version"], min_version=version)
 
 
+def HasProxyVerifierVersion(self, version):
+    return self.EnsureVersion(["verifier-client", "--version"], min_version=version)
+
+
 def HasCurlFeature(self, feature):
 
     def default(output):
diff --git a/tests/gold_tests/autest-site/setup.cli.ext b/tests/gold_tests/autest-site/setup.cli.ext
index 14b14fd..e752fa0 100644
--- a/tests/gold_tests/autest-site/setup.cli.ext
+++ b/tests/gold_tests/autest-site/setup.cli.ext
@@ -23,6 +23,8 @@ import pprint
 import subprocess
 import shutil
 
+PROXY_VERIFIER_VERSION_FILENAME = 'proxy-verifier-version.txt'
+
 test_root = dirname(dirname(AutestSitePath))
 repo_root = dirname(test_root)
 
@@ -38,6 +40,9 @@ else:
 
 host.WriteVerbose(['ats'], "Test build root: {}:".format(ENV['BUILD_ROOT']))
 
+proxy_verifer_version_file = os.path.join(test_root, PROXY_VERIFIER_VERSION_FILENAME)
+proxy_verifer_version = open(proxy_verifer_version_file, "rt").read().strip()
+
 if Arguments.proxy_verifier_bin is not None:
     ENV['VERIFIER_BIN'] = Arguments.proxy_verifier_bin
     host.WriteVerbose(
@@ -47,7 +52,7 @@ if Arguments.proxy_verifier_bin is not None:
 else:
     # No Verifier bin path was specified. First see if a Proxy Verifier was
     # unpacked as a part of preparing for this test.
-    unpack_bin = os.path.join(test_root, 'proxy-verifier', 'unpack', 'bin')
+    unpack_bin = os.path.join(test_root, 'proxy-verifier', 'unpack', proxy_verifer_version, 'bin')
     if os.path.exists(os.path.join(unpack_bin, 'verifier-client')):
         ENV['VERIFIER_BIN'] = unpack_bin
         host.WriteVerbose(
@@ -68,6 +73,20 @@ else:
             host.WriteError("Could not find Proxy Verifier binaries. "
                             "Try running: ", prepare_proxy_verifier_path)
 
+required_pv_version = Version(proxy_verifer_version[1:])
+verifier_client = os.path.join(ENV['VERIFIER_BIN'], 'verifier-client')
+pv_version_out = subprocess.check_output([verifier_client, "--version"])
+pv_version = Version(pv_version_out.decode("utf-8").split()[1])
+if pv_version < required_pv_version:
+    host.WriteError(
+        f"Proxy Verifier at {verifier_client} is too old. "
+        f"Version required: {required_pv_version}, version found: {pv_version}")
+else:
+    host.WriteVerbose(
+        ['ats'],
+        f"Proxy Verifier at {verifier_client} has version: {pv_version}")
+
+
 if ENV['ATS_BIN'] is not None:
     # Add variables for Tests
     traffic_layout = os.path.join(ENV['ATS_BIN'], "traffic_layout")
diff --git a/tests/gold_tests/autest-site/verifier_client.test.ext b/tests/gold_tests/autest-site/verifier_client.test.ext
index 41ef41a..9ff5c03 100755
--- a/tests/gold_tests/autest-site/verifier_client.test.ext
+++ b/tests/gold_tests/autest-site/verifier_client.test.ext
@@ -24,7 +24,7 @@ from verifier_common import create_address_argument
 
 def _configure_client(obj, process, name, replay_path, http_ports=None,
                       https_ports=None, keys=None, ssl_cert='', ca_cert='',
-                      other_args='--verbose diag'):
+                      verbose=True, other_args=''):
     """
     Configure the process for running the verifier-client.
 
@@ -61,12 +61,14 @@ def _configure_client(obj, process, name, replay_path, http_ports=None,
     if not http_ports:
         http_ports = [8080]
     if http_ports:
+        command += "--connect-http "
         command += create_address_argument(http_ports)
         command += " "
 
     if not https_ports:
         https_ports = [4443]
     if https_ports:
+        command += "--connect-https "
         command += create_address_argument(https_ports)
         command += " "
 
@@ -94,6 +96,9 @@ def _configure_client(obj, process, name, replay_path, http_ports=None,
             process.Setup.Copy(ca_cert, run_ca_cert, CopyLogic.SoftFiles)
             command += ' --ca-certs "{}" '.format(run_ca_cert)
 
+    if verbose:
+        command += ' --verbose diag '
+
     if other_args:
         command += " {}".format(other_args)
 
@@ -110,7 +115,7 @@ def _configure_client(obj, process, name, replay_path, http_ports=None,
 
 def AddVerifierClientProcess(run, name, replay_path, http_ports=None,
                              https_ports=None, keys=None, ssl_cert='', ca_cert='',
-                             other_args='--verbose diag'):
+                             verbose=True, other_args=''):
     """
     Set the Default process of the test run to a verifier-client Process.
 
@@ -134,6 +139,8 @@ def AddVerifierClientProcess(run, name, replay_path, http_ports=None,
         ca_cert: (path) The location of the CA for HTTPS encryption. If this
             is not provided a stock CA will be used.
 
+        verbose: (bool) Whether to enable debug level logging.
+
         other_args: (str) Any other arbitrary options to pass to verifier-client.
 
     Returns:
@@ -143,7 +150,7 @@ def AddVerifierClientProcess(run, name, replay_path, http_ports=None,
 
     p = run.Processes.Default
     _configure_client(run, p, name, replay_path, http_ports, https_ports,
-                      keys, ssl_cert, ca_cert, other_args)
+                      keys, ssl_cert, ca_cert, verbose, other_args)
     return p
 
 
diff --git a/tests/gold_tests/autest-site/verifier_server.test.ext b/tests/gold_tests/autest-site/verifier_server.test.ext
index 3fd7f44..eab23ab 100755
--- a/tests/gold_tests/autest-site/verifier_server.test.ext
+++ b/tests/gold_tests/autest-site/verifier_server.test.ext
@@ -23,7 +23,7 @@ from verifier_common import create_address_argument
 
 
 def _configure_server(obj, process, name, replay_path, http_ports=None, https_ports=None,
-                      ssl_cert='', ca_cert='', other_args='--verbose diag'):
+                      ssl_cert='', ca_cert='', verbose=True, other_args=''):
     """
     Configure the provided process to run a verifier-server command.
 
@@ -55,7 +55,7 @@ def _configure_server(obj, process, name, replay_path, http_ports=None, https_po
         process.Variables['http_port'] = http_ports[0]
 
     if len(http_ports) > 0:
-        command += "--listen "
+        command += "--listen-http "
         command += create_address_argument(http_ports)
         command += " "
 
@@ -100,6 +100,9 @@ def _configure_server(obj, process, name, replay_path, http_ports=None, https_po
         process.Setup.Copy(replay_path, run_replay_path, CopyLogic.SoftFiles)
         command += "{} ".format(run_replay_path)
 
+    if verbose:
+        command += ' --verbose diag '
+
     if other_args:
         command += "{} ".format(other_args)
     process.Command = command
@@ -114,7 +117,7 @@ def _configure_server(obj, process, name, replay_path, http_ports=None, https_po
 
 def MakeVerifierServerProcess(test, name, replay_path, http_ports=None,
                               https_ports=None, ssl_cert='', ca_cert='',
-                              other_args='--verbose diag'):
+                              verbose=True, other_args=''):
     """
     Create a verifier-server process for the Test.
 
@@ -140,6 +143,8 @@ def MakeVerifierServerProcess(test, name, replay_path, http_ports=None,
         ca_cert: (path) The location of the CA for HTTPS encryption. If this
             is not provided a stock CA will be used.
 
+        verbose: (bool) Whether to enable debug level logging.
+
         other_args: (str) Any other arbitrary options to pass to verifier-server.
 
     Raises:
@@ -148,13 +153,13 @@ def MakeVerifierServerProcess(test, name, replay_path, http_ports=None,
     """
     server = test.Processes.Process(name)
     _configure_server(test, server, name, replay_path, http_ports, https_ports,
-                      ssl_cert, ca_cert, other_args)
+                      ssl_cert, ca_cert, verbose, other_args)
     return server
 
 
 def AddVerifierServerProcess(run, name, replay_path, http_ports=None,
                              https_ports=None, ssl_cert='', ca_cert='',
-                             other_args='--verbose diag'):
+                             verbose=True, other_args=''):
     """
     Create a verifier-server process and configure it for the given TestRun.
 
@@ -169,7 +174,7 @@ def AddVerifierServerProcess(run, name, replay_path, http_ports=None,
 
     server = run.Processes.Process(name)
     _configure_server(run, server, name, replay_path, http_ports, https_ports,
-                      ssl_cert, ca_cert, other_args)
+                      ssl_cert, ca_cert, verbose, other_args)
 
     client = run.Processes.Default
     client.StartBefore(server)
diff --git a/tests/prepare_proxy_verifier.sh b/tests/prepare_proxy_verifier.sh
index 6690b84..06a2faa 100755
--- a/tests/prepare_proxy_verifier.sh
+++ b/tests/prepare_proxy_verifier.sh
@@ -18,16 +18,16 @@
 #  limitations under the License.
 
 ROOT=${ROOT:-$(cd $(dirname $0) && git rev-parse --show-toplevel)}
+pv_name="proxy-verifier"
+pv_version=`cat ${ROOT}/tests/proxy-verifier-version.txt`
 pv_top_dir="${ROOT}/tests/proxy-verifier"
-pv_unpack_dir="${pv_top_dir}/unpack"
+pv_unpack_dir="${pv_top_dir}/unpack/${pv_version}"
 bin_dir="${pv_unpack_dir}/bin"
-pv_name="proxy-verifier"
-pv_version="v1.10.0"
 pv_dir="${pv_name}-${pv_version}"
 pv_tar_filename="${pv_dir}.tar.gz"
 pv_tar="${pv_top_dir}/${pv_tar_filename}"
 pv_tar_url="https://ci.trafficserver.apache.org/bintray/${pv_tar_filename}"
-expected_sha1="f9ad11942f9098733e0286112a3c17975ebed363"
+expected_sha1="f644ac9838ba74e674b9efe7e7b3d244037faf21"
 pv_client="${bin_dir}/verifier-client"
 pv_server="${bin_dir}/verifier-server"
 TAR=${TAR:-tar}
diff --git a/tests/proxy-verifier-version.txt b/tests/proxy-verifier-version.txt
new file mode 100644
index 0000000..46b105a
--- /dev/null
+++ b/tests/proxy-verifier-version.txt
@@ -0,0 +1 @@
+v2.0.0