You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2020/04/30 08:43:51 UTC

[cassandra-builds] branch master updated (0bdc460 -> ff12f29)

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

mck pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cassandra-builds.git.


    from 0bdc460  Source and build artifacts are published with sha512 checksums
     new 41c7b94  Jenkins improvements for CASSANDRA-15729  - aggregate test reports from the pipeline into one TESTS-TestSuites.xml  - remove jenkins owned tmp files older than two days  - remove cassandra-dtest.sh, only cassandra-dtest-pytest.sh is used  - dtest-large is to use the new `--only-resource-intensive-tests` flag (as it does not need to re-run non-large dtests)
     new ff12f29  In jenkins builds add the 'Add timestamps to the Console Output' option to each job, for INFRA-20107

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 build-scripts/cassandra-dtest-pytest.sh   |   8 +-
 build-scripts/cassandra-dtest.sh          |  79 --------
 build-scripts/cassandra-test-report.sh    |  26 +++
 build-scripts/cassandra-test-report.xml   |   9 +
 build-scripts/cassandra-test-report.xsl   | 325 ++++++++++++++++++++++++++++++
 jenkins-dsl/cassandra_job_dsl_seed.groovy |  22 +-
 jenkins-dsl/cassandra_pipeline.groovy     |   4 +-
 7 files changed, 382 insertions(+), 91 deletions(-)
 delete mode 100755 build-scripts/cassandra-dtest.sh
 create mode 100644 build-scripts/cassandra-test-report.sh
 create mode 100644 build-scripts/cassandra-test-report.xml
 create mode 100644 build-scripts/cassandra-test-report.xsl


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[cassandra-builds] 02/02: In jenkins builds add the 'Add timestamps to the Console Output' option to each job, for INFRA-20107

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mck pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cassandra-builds.git

commit ff12f29971213d5d6d602e72db80e94fe181a2df
Author: mck <mc...@apache.org>
AuthorDate: Thu Apr 30 09:38:42 2020 +0200

    In jenkins builds add the 'Add timestamps to the Console Output' option to each job, for INFRA-20107
---
 jenkins-dsl/cassandra_job_dsl_seed.groovy | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/jenkins-dsl/cassandra_job_dsl_seed.groovy b/jenkins-dsl/cassandra_job_dsl_seed.groovy
index 5c618e1..f862136 100644
--- a/jenkins-dsl/cassandra_job_dsl_seed.groovy
+++ b/jenkins-dsl/cassandra_job_dsl_seed.groovy
@@ -85,6 +85,7 @@ job('Cassandra-template-artifacts') {
         timeout {
             noActivity(300)
         }
+        timestamps()
     }
     scm {
         git {
@@ -158,6 +159,7 @@ job('Cassandra-template-test') {
         timeout {
             noActivity(1200)
         }
+        timestamps()
     }
     throttleConcurrentBuilds {
         categories(['Cassandra'])
@@ -219,6 +221,7 @@ job('Cassandra-template-dtest') {
         timeout {
             noActivity(1200)
         }
+        timestamps()
     }
     throttleConcurrentBuilds {
         categories(['Cassandra'])
@@ -278,6 +281,7 @@ matrixJob('Cassandra-template-cqlsh-tests') {
         timeout {
             noActivity(1200)
         }
+        timestamps()
     }
     throttleConcurrentBuilds {
         categories(['Cassandra'])
@@ -483,6 +487,7 @@ job('Cassandra-devbranch-artifacts') {
         timeout {
             noActivity(300)
         }
+        timestamps()
     }
     throttleConcurrentBuilds {
         categories(['Cassandra'])
@@ -541,6 +546,7 @@ testTargets.each {
             timeout {
                 noActivity(1200)
             }
+            timestamps()
         }
         throttleConcurrentBuilds {
             categories(['Cassandra'])
@@ -608,6 +614,7 @@ job('Cassandra-devbranch-dtest') {
         timeout {
             noActivity(2400)
         }
+        timestamps()
     }
     throttleConcurrentBuilds {
         categories(['Cassandra'])
@@ -676,6 +683,7 @@ matrixJob('Cassandra-devbranch-cqlsh-tests') {
         timeout {
             noActivity(1200)
         }
+        timestamps()
     }
     throttleConcurrentBuilds {
         categories(['Cassandra'])


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[cassandra-builds] 01/02: Jenkins improvements for CASSANDRA-15729 - aggregate test reports from the pipeline into one TESTS-TestSuites.xml - remove jenkins owned tmp files older than two days - remove cassandra-dtest.sh, only cassandra-dtest-pytest.sh is used - dtest-large is to use the new `--only-resource-intensive-tests` flag (as it does not need to re-run non-large dtests)

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mck pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cassandra-builds.git

commit 41c7b9402669f733a5b80118689a981396f47c11
Author: mck <mc...@apache.org>
AuthorDate: Mon Apr 13 23:14:14 2020 +0200

    Jenkins improvements for CASSANDRA-15729
     - aggregate test reports from the pipeline into one TESTS-TestSuites.xml
     - remove jenkins owned tmp files older than two days
     - remove cassandra-dtest.sh, only cassandra-dtest-pytest.sh is used
     - dtest-large is to use the new `--only-resource-intensive-tests` flag (as it does not need to re-run non-large dtests)
---
 build-scripts/cassandra-dtest-pytest.sh   |   8 +-
 build-scripts/cassandra-dtest.sh          |  79 --------
 build-scripts/cassandra-test-report.sh    |  26 +++
 build-scripts/cassandra-test-report.xml   |   9 +
 build-scripts/cassandra-test-report.xsl   | 325 ++++++++++++++++++++++++++++++
 jenkins-dsl/cassandra_job_dsl_seed.groovy |  14 +-
 jenkins-dsl/cassandra_pipeline.groovy     |   4 +-
 7 files changed, 374 insertions(+), 91 deletions(-)

diff --git a/build-scripts/cassandra-dtest-pytest.sh b/build-scripts/cassandra-dtest-pytest.sh
index 271c8f6..c70ed5a 100755
--- a/build-scripts/cassandra-dtest-pytest.sh
+++ b/build-scripts/cassandra-dtest-pytest.sh
@@ -66,13 +66,13 @@ rm -r upgrade_tests/ # TEMP: remove upgrade_tests - we have no dual JDK installa
 mkdir -p ${TMPDIR}
 set +e # disable immediate exit from this point
 if [ "${DTEST_TARGET}" = "dtest" ]; then
-    pytest -vv --log-level="INFO" --use-vnodes --num-tokens=32 --junit-xml=nosetests.xml -s --cassandra-dir=$CASSANDRA_DIR --skip-resource-intensive-tests 2>&1 | tee -a ${WORKSPACE}/test_stdout.txt
+    pytest -vv --log-level="INFO" --use-vnodes --num-tokens=32 --junit-xml=nosetests.xml --junit-prefix=${DTEST_TARGET} -s --cassandra-dir=$CASSANDRA_DIR --skip-resource-intensive-tests 2>&1 | tee -a ${WORKSPACE}/test_stdout.txt
 elif [ "${DTEST_TARGET}" = "dtest-novnode" ]; then
-    pytest -vv --log-level="INFO" --junit-xml=nosetests.xml -s --cassandra-dir=$CASSANDRA_DIR --skip-resource-intensive-tests 2>&1 | tee -a ${WORKSPACE}/test_stdout.txt
+    pytest -vv --log-level="INFO" --junit-xml=nosetests.xml --junit-prefix=${DTEST_TARGET} -s --cassandra-dir=$CASSANDRA_DIR --skip-resource-intensive-tests 2>&1 | tee -a ${WORKSPACE}/test_stdout.txt
 elif [ "${DTEST_TARGET}" = "dtest-offheap" ]; then
-    pytest -vv --log-level="INFO" --use-vnodes --num-tokens=32 --use-off-heap-memtables --junit-xml=nosetests.xml -s --cassandra-dir=$CASSANDRA_DIR --skip-resource-intensive-tests 2>&1 | tee -a ${WORKSPACE}/test_stdout.txt
+    pytest -vv --log-level="INFO" --use-vnodes --num-tokens=32 --use-off-heap-memtables --junit-xml=nosetests.xml --junit-prefix=${DTEST_TARGET} -s --cassandra-dir=$CASSANDRA_DIR --skip-resource-intensive-tests 2>&1 | tee -a ${WORKSPACE}/test_stdout.txt
 elif [ "${DTEST_TARGET}" = "dtest-large" ]; then
-    pytest -vv --log-level="INFO" --use-vnodes --num-tokens=32 --junit-xml=nosetests.xml -s --cassandra-dir=$CASSANDRA_DIR --force-resource-intensive-tests 2>&1 | tee -a ${WORKSPACE}/test_stdout.txt
+    pytest -vv --log-level="INFO" --use-vnodes --num-tokens=32 --junit-xml=nosetests.xml --junit-prefix=${DTEST_TARGET} -s --cassandra-dir=$CASSANDRA_DIR --only-resource-intensive-tests 2>&1 | tee -a ${WORKSPACE}/test_stdout.txt
 else
     echo "Unknown dtest target: ${DTEST_TARGET}"
     exit 1
diff --git a/build-scripts/cassandra-dtest.sh b/build-scripts/cassandra-dtest.sh
deleted file mode 100755
index a7a33a0..0000000
--- a/build-scripts/cassandra-dtest.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/bash -x
-
-################################
-#
-# Prep
-#
-################################
-
-# Pass in target to run, default to base dtest
-DTEST_TARGET="${1:-dtest}"
-
-export PYTHONIOENCODING="utf-8"
-export PYTHONUNBUFFERED=true
-export CASS_DRIVER_NO_EXTENSIONS=true
-export CASS_DRIVER_NO_CYTHON=true
-export CCM_MAX_HEAP_SIZE="2048M"
-export CCM_HEAP_NEWSIZE="200M"
-export CCM_CONFIG_DIR=${WORKSPACE}/.ccm
-export NUM_TOKENS="32"
-export CASSANDRA_DIR=${WORKSPACE}
-export TMPDIR="./tmp"
-
-# Loop to prevent failure due to maven-ant-tasks not downloading a jar..
-for x in $(seq 1 3); do
-    ant clean jar
-    RETURN="$?"
-    if [ "${RETURN}" -eq "0" ]; then
-        break
-    fi
-done
-# Exit, if we didn't build successfully
-if [ "${RETURN}" -ne "0" ]; then
-    echo "Build failed with exit code: ${RETURN}"
-    exit ${RETURN}
-fi
-
-# Set up venv with dtest dependencies
-set -e # enable immediate exit if venv setup fails
-virtualenv --python=python2 venv
-source venv/bin/activate
-pip install -r cassandra-dtest/requirements.txt
-pip freeze
-
-################################
-#
-# Main
-#
-################################
-
-cd cassandra-dtest/
-rm -r upgrade_tests/ # TEMP: remove upgrade_tests - we have no dual JDK installation
-mkdir -p ${TMPDIR}
-set +e # disable immediate exit from this point
-if [ "${DTEST_TARGET}" = "dtest" ]; then
-    ./run_dtests.py --vnodes true --nose-options="--verbosity=3 --with-xunit --nocapture --attr=!resource-intensive" | tee -a ${WORKSPACE}/test_stdout.txt
-elif [ "${DTEST_TARGET}" = "dtest-novnode" ]; then
-    export DISABLE_VNODES="true"
-    ./run_dtests.py --vnodes false --nose-options="--verbosity=3 --with-xunit --nocapture --attr=!resource-intensive" | tee -a ${WORKSPACE}/test_stdout.txt
-elif [ "${DTEST_TARGET}" = "dtest-offheap" ]; then
-    export OFFHEAP_MEMTABLES="true"
-    ./run_dtests.py --vnodes true --nose-options="--verbosity=3 --with-xunit --nocapture --attr=!resource-intensive" | tee -a ${WORKSPACE}/test_stdout.txt
-elif [ "${DTEST_TARGET}" = "dtest-large" ]; then
-    ./run_dtests.py --vnodes true --nose-options="--verbosity=3 --with-xunit --nocapture --attr=resource-intensive" | tee -a ${WORKSPACE}/test_stdout.txt
-else
-    echo "Unknown dtest target: ${DTEST_TARGET}"
-    exit 1
-fi
-
-################################
-#
-# Clean
-#
-################################
-
-# /virtualenv
-deactivate
-
-# Exit cleanly for usable "Unstable" status
-exit 0
diff --git a/build-scripts/cassandra-test-report.sh b/build-scripts/cassandra-test-report.sh
new file mode 100644
index 0000000..b592a7c
--- /dev/null
+++ b/build-scripts/cassandra-test-report.sh
@@ -0,0 +1,26 @@
+#!/bin/bash -x
+
+################################
+#
+# Prep
+#
+################################
+
+# TODO move this script into a docker image so these tools are available
+#sudo apt install -y html2text libsaxonb-java
+
+################################
+#
+# Main
+#
+################################
+
+set +e # disable immediate exit from this point
+
+# merge all the unit test xml files into one TESTS-TestSuites.xml file
+ant -f ./cassandra-builds/build-scripts/cassandra-test-report.xml
+
+# xslt transform, convert to plaintext, and truncate (ASF ML limit is 1MB), to the cassandra-test-report.txt file
+
+# uncomment once these tools are available inside a docker container
+#saxonb-xslt -s:TESTS-TestSuites.xml -xsl:./cassandra-builds/build-scripts/cassandra-test-report.xsl | html2text -nobs -style pretty | head -c 900KB > cassandra-test-report.txt
diff --git a/build-scripts/cassandra-test-report.xml b/build-scripts/cassandra-test-report.xml
new file mode 100644
index 0000000..a22f7db
--- /dev/null
+++ b/build-scripts/cassandra-test-report.xml
@@ -0,0 +1,9 @@
+ <project name="generate_test_report" default="generate_test_report" basedir=".">
+    <target name="generate_test_report">
+        <junitreport todir="${basedir}">
+            <fileset dir="${basedir}">
+                <include name="**/TEST*.xml,**/cqlshlib.xml,**/nosetests.xml"/>
+            </fileset>
+        </junitreport>
+    </target>
+</project>
diff --git a/build-scripts/cassandra-test-report.xsl b/build-scripts/cassandra-test-report.xsl
new file mode 100644
index 0000000..9b37706
--- /dev/null
+++ b/build-scripts/cassandra-test-report.xsl
@@ -0,0 +1,325 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+        xmlns:lxslt="http://xml.apache.org/xslt"
+        xmlns:string="xalan://java.lang.String">
+<xsl:output method="html" indent="yes" encoding="UTF-8"
+  doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
+<xsl:decimal-format decimal-separator="." grouping-separator="," />
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       https://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+ -->
+
+<!-- Sample stylesheet copied and modified from ant's junit-noframes.xsl -->
+
+<!-- the result is intended to be piped through html2text so any html formatting is minimal -->
+<xsl:template match="testsuites">
+    <html>
+        <body>
+            <xsl:call-template name="summary"/>
+            <hr size="1" width="95%" align="left"/>
+            <xsl:call-template name="packagelist"/>
+            <hr size="1" width="95%" align="left"/>
+            <hr size="1" width="95%" align="left"/>
+            <xsl:call-template name="packages"/>
+            <hr size="1" width="95%" align="left"/>
+            <xsl:call-template name="classes"/>
+            <hr size="1" width="95%" align="left"/>
+            END<!-- marker incase the file is truncated -->
+        </body>
+    </html>
+</xsl:template>
+
+
+    <xsl:template name="packagelist">
+        <!-- Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers. -->
+        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+            <xsl:call-template name="testsuite.test.header"/>
+            <!-- list all packages recursively -->
+            <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+                <xsl:sort select="@package"/>
+                <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
+                <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
+                <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
+                <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
+                <xsl:variable name="skippedCount" select="sum($testsuites-in-package/@skipped)" />
+                <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
+                <!-- write a summary for the package -->
+                <tr valign="top">
+                    <!-- set a nice color depending if there is an error/failure -->
+                    <xsl:attribute name="class">
+                        <xsl:choose>
+                            <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+                            <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+                        </xsl:choose>
+                    </xsl:attribute>
+                    <td><xsl:value-of select="@package"/></td>
+                    <td><xsl:value-of select="$testCount"/></td>
+                    <td><xsl:value-of select="$errorCount"/></td>
+                    <td><xsl:value-of select="$failureCount"/></td>
+                    <td><xsl:value-of select="$skippedCount" /></td>
+                    <td>
+                    <xsl:call-template name="display-time">
+                        <xsl:with-param name="value" select="$timeCount"/>
+                    </xsl:call-template>
+                    </td>
+                </tr>
+            </xsl:for-each>
+        </table>
+    </xsl:template>
+
+    <xsl:template name="packages">
+        Packages
+        <hr size="1" width="95%" align="left"/>
+        <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
+            <xsl:sort select="@package"/>
+                <xsl:value-of select="@package"/>
+                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+                    <xsl:call-template name="testsuite.test.header"/>
+                    <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
+                </table>
+                <hr size="1" width="95%" align="left"/>
+        </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template name="classes">
+        Failures
+        <hr size="1" width="95%" align="left"/>
+        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+            <xsl:for-each select="testsuite">
+                <xsl:sort select="@name"/>
+                <xsl:if test="./error"><!-- test can even not be started at all (failure to load the class) so report the error directly -->
+                    <tr><td colspan="4"><xsl:value-of select="@name"/></td></tr>
+                    <tr class="Error">
+                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
+                    </tr>
+                </xsl:if>
+                <xsl:apply-templates select="./testcase" mode="print.failures"/>
+            </xsl:for-each>
+        </table>
+        <hr size="1" width="95%" align="left"/>
+        Skipped
+        <hr size="1" width="95%" align="left"/>
+        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+            <xsl:for-each select="testsuite">
+                <xsl:sort select="@name"/>
+                <xsl:apply-templates select="./testcase" mode="print.skipped"/>
+            </xsl:for-each>
+        </table>
+    </xsl:template>
+
+    <xsl:template name="summary">
+        Cassandra CI Results
+        <hr size="1" width="95%" align="left"/>
+        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
+        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
+        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
+        <xsl:variable name="skippedCount" select="sum(testsuite/@skipped)" />
+        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
+        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
+        <table class="details" border="0" cellpadding="5" cellspacing="10">
+        <tr>
+            <th>Tests</th>
+            <th>Failures</th>
+            <th>Errors</th>
+            <th>Skipped</th>
+            <th>Success rate</th>
+            <th>Time</th>
+        </tr>
+        <tr>
+            <xsl:attribute name="class">
+                <xsl:choose>
+                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+                </xsl:choose>
+            </xsl:attribute>
+            <td><xsl:value-of select="$testCount"/></td>
+            <td><xsl:value-of select="$failureCount"/></td>
+            <td><xsl:value-of select="$errorCount"/></td>
+            <td><xsl:value-of select="$skippedCount" /></td>
+            <td>
+                <xsl:call-template name="display-percent">
+                    <xsl:with-param name="value" select="$successRate"/>
+                </xsl:call-template>
+            </td>
+            <td>
+                <xsl:call-template name="display-time">
+                    <xsl:with-param name="value" select="$timeCount"/>
+                </xsl:call-template>
+            </td>
+        </tr>
+        </table>
+    </xsl:template>
+
+<xsl:template match="testsuite" mode="header">
+    <tr valign="top">
+        <th width="90%">Name</th>
+        <th>Tests</th>
+        <th>Errors</th>
+        <th>Failures</th>
+        <th>Skipped</th>
+        <th nowrap="nowrap">Time(s)</th>
+    </tr>
+</xsl:template>
+
+<!-- class header -->
+<xsl:template name="testsuite.test.header">
+    <tr valign="top">
+        <th width="90%">Name</th>
+        <th>Tests</th>
+        <th>Errors</th>
+        <th>Failures</th>
+        <th>Skipped</th>
+        <th nowrap="nowrap">Time(s)</th>
+    </tr>
+</xsl:template>
+
+<!-- class information -->
+<xsl:template match="testsuite" mode="print.test">
+    <tr valign="top">
+        <!-- set a nice color depending if there is an error/failure -->
+        <xsl:attribute name="class">
+            <xsl:choose>
+                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
+                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
+            </xsl:choose>
+        </xsl:attribute>
+
+        <!-- print testsuite information -->
+        <td><xsl:value-of select="@name"/></td>
+        <td><xsl:value-of select="@tests"/></td>
+        <td><xsl:value-of select="@errors"/></td>
+        <td><xsl:value-of select="@failures"/></td>
+        <td><xsl:value-of select="@skipped" /></td>
+        <td>
+            <xsl:call-template name="display-time">
+                <xsl:with-param name="value" select="@time"/>
+            </xsl:call-template>
+        </td>
+    </tr>
+</xsl:template>
+
+<xsl:template match="testcase" mode="print.failures">
+    <xsl:choose>
+        <xsl:when test="failure">
+            <tr><td colspan="4"><xsl:value-of select="../@name"/> // <xsl:value-of select="@name"/> // Failure</td></tr>
+            <tr><td colspan="4"><xsl:apply-templates select="failure"/></td></tr>
+            <tr><td colspan="4"><hr size="1" width="95%" align="left"/></td></tr>
+        </xsl:when>
+        <xsl:when test="error">
+            <tr><td colspan="4"><xsl:value-of select="../@name"/> // <xsl:value-of select="@name"/> // Error</td></tr>
+            <tr><td colspan="4"><xsl:apply-templates select="error"/></td></tr>
+            <tr><td colspan="4"><hr size="1" width="95%" align="left"/></td></tr>
+        </xsl:when>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template match="testcase" mode="print.skipped">
+    <xsl:if test="skipped">
+        <tr><td colspan="4"><xsl:value-of select="../@name"/><br/><xsl:value-of select="@name"/></td></tr>
+        <tr><td colspan="4"><xsl:apply-templates select="skipped"/></td></tr>
+        <tr><td colspan="4"><hr size="1" width="95%" align="left"/></td></tr>
+    </xsl:if>
+</xsl:template>
+
+<xsl:template match="failure">
+    <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<xsl:template match="error">
+    <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<xsl:template match="skipped">
+    <xsl:call-template name="display-failures"/>
+</xsl:template>
+
+<!-- Style for the error, failure and skipped in the testcase template -->
+<xsl:template name="display-failures">
+    <xsl:choose>
+        <xsl:when test="not(@message)"></xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="@message"/>
+        </xsl:otherwise>
+    </xsl:choose>
+    <!-- display the stacktrace -->
+    <code>
+        <br/><br/>
+        <xsl:call-template name="br-replace">
+            <xsl:with-param name="word" select="."/>
+        </xsl:call-template>
+    </code>
+    <!-- the later is better but might be problematic for non-21" monitors... -->
+    <!--pre><xsl:value-of select="."/></pre-->
+</xsl:template>
+
+<xsl:template name="JS-escape">
+    <xsl:param name="string"/>
+    <xsl:param name="tmp1" select="string:replaceAll(string:new(string($string)),'\\','\\\\')"/>
+    <xsl:param name="tmp2" select="string:replaceAll(string:new(string($tmp1)),&quot;'&quot;,&quot;\\&apos;&quot;)"/>
+    <xsl:param name="tmp3" select="string:replaceAll(string:new(string($tmp2)),&quot;&#10;&quot;,'\\n')"/>
+    <xsl:param name="tmp4" select="string:replaceAll(string:new(string($tmp3)),&quot;&#13;&quot;,'\\r')"/>
+    <xsl:value-of select="$tmp4"/>
+</xsl:template>
+
+
+<!--
+    template that will convert a carriage return into a br tag
+    @param word the text from which to convert CR to BR tag
+-->
+<xsl:template name="br-replace">
+    <xsl:param name="word"/>
+    <xsl:param name="splitlimit">32</xsl:param>
+    <xsl:variable name="secondhalfstartindex" select="(string-length($word)+(string-length($word) mod 2)) div 2"/>
+    <xsl:variable name="secondhalfword" select="substring($word, $secondhalfstartindex)"/>
+    <!-- When word is very big, a recursive replace is very heap/stack expensive, so subdivide on line break after middle of string -->
+    <xsl:choose>
+      <xsl:when test="(string-length($word) > $splitlimit) and (contains($secondhalfword, '&#xa;'))">
+        <xsl:variable name="secondhalfend" select="substring-after($secondhalfword, '&#xa;')"/>
+        <xsl:variable name="firsthalflen" select="string-length($word) - string-length($secondhalfword)"/>
+        <xsl:variable name="firsthalfword" select="substring($word, 1, $firsthalflen)"/>
+        <xsl:variable name="firsthalfend" select="substring-before($secondhalfword, '&#xa;')"/>
+        <xsl:call-template name="br-replace">
+          <xsl:with-param name="word" select="concat($firsthalfword,$firsthalfend)"/>
+        </xsl:call-template>
+        <br/>
+        <xsl:call-template name="br-replace">
+          <xsl:with-param name="word" select="$secondhalfend"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:when test="contains($word, '&#xa;')">
+        <xsl:value-of select="substring-before($word, '&#xa;')"/>
+        <br/>
+        <xsl:call-template name="br-replace">
+          <xsl:with-param name="word" select="substring-after($word, '&#xa;')"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$word"/>
+      </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template name="display-time">
+    <xsl:param name="value"/>
+    <xsl:value-of select="format-number($value,'0.000')"/>
+</xsl:template>
+
+<xsl:template name="display-percent">
+    <xsl:param name="value"/>
+    <xsl:value-of select="format-number($value,'0.00%')"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/jenkins-dsl/cassandra_job_dsl_seed.groovy b/jenkins-dsl/cassandra_job_dsl_seed.groovy
index 845ba4f..5c618e1 100644
--- a/jenkins-dsl/cassandra_job_dsl_seed.groovy
+++ b/jenkins-dsl/cassandra_job_dsl_seed.groovy
@@ -135,7 +135,7 @@ job('Cassandra-template-artifacts') {
                 echo "Reporting disk usage…"; df -h ; find . -maxdepth 2 -type d -exec du -hs {} ';' ; du -hs ../* ;
                 echo "Cleaning tmp…";
                 find . -type d -name tmp -delete 2>/dev/null ;
-                find /tmp -type f -atime +3 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
+                find /tmp -type f -atime +2 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
                 ''')
         }
     }
@@ -196,7 +196,7 @@ job('Cassandra-template-test') {
                 echo "Reporting disk usage…"; df -h ; find . -maxdepth 2 -type d -exec du -hs {} ';' ; du -hs ../* ;
                 echo "Cleaning tmp…";
                 find . -type d -name tmp -delete 2>/dev/null ;
-                find /tmp -type f -atime +3 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
+                find /tmp -type f -atime +2 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
             ''')
         }
     }
@@ -257,7 +257,7 @@ job('Cassandra-template-dtest') {
                 echo "Reporting disk usage…"; df -h ; find . -maxdepth 2 -type d -exec du -hs {} ';' ; du -hs ../* ;
                 echo "Cleaning tmp…";
                 find . -type d -name tmp -delete 2>/dev/null ;
-                find /tmp -type f -atime +3 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
+                find /tmp -type f -atime +2 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
             ''')
         }
     }
@@ -323,7 +323,7 @@ matrixJob('Cassandra-template-cqlsh-tests') {
                 echo "Reporting disk usage…"; df -h ; find . -maxdepth 2 -type d -exec du -hs {} ';' ; du -hs ../* ;
                 echo "Cleaning tmp…";
                 find . -type d -name tmp -delete 2>/dev/null ;
-                find /tmp -type f -atime +3 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
+                find /tmp -type f -atime +2 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
             ''')
         }
     }
@@ -584,7 +584,7 @@ testTargets.each {
                     echo "Reporting disk usage…"; df -h ; find . -maxdepth 2 -type d -exec du -hs {} ';' ; du -hs ../* ;
                     echo "Cleaning tmp…";
                     find . -type d -name tmp -delete 2>/dev/null ;
-                    find /tmp -type f -atime +3 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
+                    find /tmp -type f -atime +2 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
                 ''')
             }
         }
@@ -654,7 +654,7 @@ job('Cassandra-devbranch-dtest') {
                 echo "Reporting disk usage…"; df -h ; find . -maxdepth 2 -type d -exec du -hs {} ';' ; du -hs ../* ;
                 echo "Cleaning tmp…";
                 find . -type d -name tmp -delete 2>/dev/null ;
-                find /tmp -type f -atime +3 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
+                find /tmp -type f -atime +2 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
             ''')
         }
     }
@@ -728,7 +728,7 @@ matrixJob('Cassandra-devbranch-cqlsh-tests') {
                 echo "Reporting disk usage…"; df -h ; find . -maxdepth 2 -type d -exec du -hs {} ';' ; du -hs ../* ;
                 echo "Cleaning tmp…";
                 find . -type d -name tmp -delete 2>/dev/null ;
-                find /tmp -type f -atime +3 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
+                find /tmp -type f -atime +2 -user jenkins -and -not -exec fuser -s {} ';' -and -delete 2>/dev/null
             ''')
         }
     }
diff --git a/jenkins-dsl/cassandra_pipeline.groovy b/jenkins-dsl/cassandra_pipeline.groovy
index ed11a75..96ac50d 100644
--- a/jenkins-dsl/cassandra_pipeline.groovy
+++ b/jenkins-dsl/cassandra_pipeline.groovy
@@ -229,7 +229,9 @@ pipeline {
       }
       stage('Summary') {
         steps {
-            junit '**/TEST*.xml,**/cqlshlib.xml,**/nosetests.xml'
+            shell("git clean -xdff ; git clone -b ${buildsBranch} ${buildsRepo}")
+            shell("./cassandra-builds/build-scripts/cassandra-test-report.sh")
+            junit 'TESTS-TestSuites.xml'
         }
       }
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org