mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-29 09:13:08 +00:00
Removing jenkins files
This commit is contained in:
parent
77a1971d99
commit
14f45f9ba7
@ -1,398 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Author: GONG Jie <gongjie@linux.vnet.ibm.com>
|
||||
# Create: 2016-05-27
|
||||
# Update: 2016-06-07
|
||||
# Version: 0.99
|
||||
#
|
||||
# EXAMPLE
|
||||
# #!/bin/bash
|
||||
#
|
||||
# source /path/to/email.sh
|
||||
#
|
||||
# Email report
|
||||
#
|
||||
# $report_setTo bob@example.org
|
||||
# $report_setTo charlie@example.org
|
||||
# $report_setTo Dave dave@example.org
|
||||
# $report_setCc trent@example.org
|
||||
# $report_setBcc eve@example.org
|
||||
# $report_setFrom Alice alice@example.org
|
||||
# $report_setSubject "A Sample Email Report"
|
||||
#
|
||||
# $report_setText <<-EOF
|
||||
# Blah blah blah...
|
||||
# EOF
|
||||
#
|
||||
# $report_addAttachmentFile /path/to/doc/document-a4.pdf
|
||||
# $report_addAttachmentFile /path/to/doc/onepage-a4.pdf
|
||||
#
|
||||
# $report_send
|
||||
#
|
||||
# SEE ALSO
|
||||
# RFC 2045, RFC 2046, RFC 2047, RFC 2822, RFC 5322, RFC 5321
|
||||
#
|
||||
|
||||
function Email()
|
||||
{
|
||||
local base="${FUNCNAME}"
|
||||
local this="$1"
|
||||
|
||||
! type base64 >/dev/null 2>&1 &&
|
||||
echo "${c}: command not found" >&2 &&
|
||||
return 1
|
||||
|
||||
declare -g base64_encode=base64
|
||||
|
||||
[[ "$(base64 --help)" =~ GNU ]] &&
|
||||
declare -g base64_encode="base64 -w 0"
|
||||
|
||||
declare -g ${this}_mailTo=""
|
||||
declare -g ${this}_mailCc=""
|
||||
declare -g ${this}_mailBcc=""
|
||||
declare -g ${this}_mailFrom=""
|
||||
declare -g ${this}_mailReplyTo=""
|
||||
declare -g ${this}_mailSubject=""
|
||||
declare -g -a ${this}_mailAttachmentContentTypes
|
||||
declare -g -a ${this}_mailAttachmentMessages
|
||||
declare -g -a ${this}_mailAttachmentNames
|
||||
|
||||
eval "${this}_mailAttachmentContentTypes=()"
|
||||
eval "${this}_mailAttachmentMessages=()"
|
||||
eval "${this}_mailAttachmentNames=()"
|
||||
|
||||
local method
|
||||
|
||||
for method in $(compgen -A function "${base}_")
|
||||
do
|
||||
declare -g ${method/#$base\_/$this\_}="${method} ${this}"
|
||||
done
|
||||
}
|
||||
|
||||
function Email_setTo()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
local inName=""
|
||||
[ -n "$3" ] && inName="$2" && shift
|
||||
local inAddress="$2"
|
||||
|
||||
local mailTo="${this}_mailTo"
|
||||
|
||||
# The format of Email address,
|
||||
# see RFC 5322, sections 3.2.3 and 3.4.1, and RFC 5321
|
||||
|
||||
[[ "${inAddress}" =~ ^[0-9A-Za-z._%+-]+@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,3}$ ]] ||
|
||||
return 1
|
||||
[ -n "${!mailTo}" ] && declare -g ${mailTo}+=","$'\n'" "
|
||||
[ -n "${inName}" ] &&
|
||||
declare -g ${mailTo}+="=?UTF-8?B?$(echo -n "${inName}" |
|
||||
${base64_encode})?="$'\n'" <${inAddress}>" ||
|
||||
declare -g ${mailTo}+="${inAddress}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function Email_setCc()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
local inName=""
|
||||
[ -n "$3" ] && inName="$2" && shift
|
||||
local inAddress="$2"
|
||||
|
||||
local mailCc="${this}_mailCc"
|
||||
|
||||
[[ "${inAddress}" =~ ^[0-9A-Za-z._%+-]+@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,3}$ ]] ||
|
||||
return 1
|
||||
[ -n "${!mailCc}" ] && declare -g ${mailCc}+=","$'\n'" "
|
||||
[ -n "${inName}" ] &&
|
||||
declare -g ${mailCc}+="=?UTF-8?B?$(echo -n "${inName}" |
|
||||
${base64_encode})?="$'\n'" <${inAddress}>" ||
|
||||
declare -g ${mailCc}+="${inAddress}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function Email_setBcc()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
local inName=""
|
||||
[ -n "$3" ] && inName="$2" && shift
|
||||
local inAddress="$2"
|
||||
|
||||
local mailBcc="${this}_mailBcc"
|
||||
|
||||
[[ "${inAddress}" =~ ^[0-9A-Za-z._%+-]+@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,3}$ ]] ||
|
||||
return 1
|
||||
[ -n "${!mailBcc}" ] && declare -g ${mailBcc}+=","$'\n'" "
|
||||
[ -n "${inName}" ] &&
|
||||
declare -g ${mailBcc}+="=?UTF-8?B?$(echo -n "${inName}" |
|
||||
${base64_encode})?="$'\n'" <${inAddress}>" ||
|
||||
declare -g ${mailBcc}+="${inAddress}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function Email_setFrom()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
local inName=""
|
||||
[ -n "$3" ] && inName="$2" && shift
|
||||
local inAddress="$2"
|
||||
|
||||
local mailFrom="${this}_mailFrom"
|
||||
|
||||
[[ "${inAddress}" =~ ^[0-9A-Za-z._%+-]+@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,3}$ ]] ||
|
||||
return 1
|
||||
[ -n "${inName}" ] &&
|
||||
declare -g ${mailFrom}="=?UTF-8?B?$(echo -n "${inName}" |
|
||||
${base64_encode})?="$'\n'" <${inAddress}>" ||
|
||||
declare -g ${mailFrom}="${inAddress}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function Email_setReplyTo()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
local inName=""
|
||||
[ -n "$3" ] && inName="$2" && shift
|
||||
local inAddress="$2"
|
||||
|
||||
local mailReplyTo="${this}_mailReplyTo"
|
||||
|
||||
[[ "${inAddress}" =~ ^[0-9A-Za-z._%+-]+@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,3}$ ]] ||
|
||||
return 1
|
||||
[ -n "${inName}" ] &&
|
||||
declare -g ${mailReplyTo}="=?UTF-8?B?$(echo -n "${inName}" |
|
||||
${base64_encode})?="$'\n'" <${inAddress}>" ||
|
||||
declare -g ${mailReplyTo}="${inAddress}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function Email_setSubject()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
local inSubject="$2"
|
||||
|
||||
local mailSubject="${this}_mailSubject"
|
||||
|
||||
local oLANG="${LANG}"
|
||||
LANG=C
|
||||
|
||||
[[ "${#inSubject}" -le 66 && "${inSubject}" =~ ^[0-9A-Za-z\ ._/=+-]+$ ]] &&
|
||||
declare -g ${mailSubject}="${inSubject}" &&
|
||||
return 0
|
||||
|
||||
# See RFC 5355
|
||||
|
||||
declare -g ${mailSubject}="=?UTF-8?B?"
|
||||
|
||||
local c=""
|
||||
local w=""
|
||||
local -i limit=39
|
||||
|
||||
while :
|
||||
do
|
||||
read -r -n 1
|
||||
[[ -z "${REPLY}" || "${REPLY}" =~ [\x00-\x7f\xc0-\xff] ]] &&
|
||||
(( ${#w} + ${#c} > limit )) &&
|
||||
declare -g ${mailSubject}+="$(echo -n "${w}" |
|
||||
${base64_encode})?="$'\n'" =?UTF-8?B?" &&
|
||||
w="" && limit=45
|
||||
w+="${c}" && c=""
|
||||
[ -n "${REPLY}" ] && c+="${REPLY}" || break
|
||||
done < <(echo -n "${inSubject}")
|
||||
declare -g ${mailSubject}+="$(echo -n "${w}" | ${base64_encode})?="
|
||||
|
||||
LANG="${oLANG}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function Email_setText()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
|
||||
Email_addAttachment "${this}" "" "text/plain; charset=UTF-8"
|
||||
}
|
||||
|
||||
function Email_setHTML()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
|
||||
Email_addAttachment "${this}" "" "text/html; charset=UTF-8"
|
||||
}
|
||||
|
||||
function Email_addAttachment()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
local inName="$2"
|
||||
local inContentType="$3"
|
||||
local inMessage=""
|
||||
|
||||
# 76 is a magic number, see RFC 2045
|
||||
|
||||
while read -r -n 76
|
||||
do
|
||||
inMessage+="${REPLY}"
|
||||
inMessage+=$'\n'
|
||||
done < <(${base64_encode} && echo)
|
||||
|
||||
local mailAttachmentContentTypes="${this}_mailAttachmentContentTypes"
|
||||
local mailAttachmentMessages="${this}_mailAttachmentMessages"
|
||||
local mailAttachmentNames="${this}_mailAttachmentNames"
|
||||
|
||||
eval "${mailAttachmentContentTypes}+=(\"${inContentType}\")"
|
||||
eval "${mailAttachmentMessages}+=(\"${inMessage}\")"
|
||||
eval "${mailAttachmentNames}+=(\"${inName}\")"
|
||||
}
|
||||
|
||||
function Email_addAttachmentFile()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
local inFileName="$2"
|
||||
|
||||
[ -f "${inFileName}" ] || return 1
|
||||
[ -r "${inFileName}" ] || return 1
|
||||
|
||||
local inContentType=""
|
||||
|
||||
# These are magic strings, see RFC 2046
|
||||
|
||||
case "${inFileName##*.}" in
|
||||
"7z") inContentType="application/x-7z-compressed" ;;
|
||||
"bz"|"bz2")
|
||||
inContentType="application/x-bzip2" ;;
|
||||
"bpg") inContentType="image/bpg" ;;
|
||||
"cpio") inContentType="application/x-cpio" ;;
|
||||
"gif") inContentType="image/gif" ;;
|
||||
"gz") inContentType="application/x-gzip" ;;
|
||||
"htm"|"html")
|
||||
inContentType="text/html" ;;
|
||||
"jpe"|"jpeg"|"jpg")
|
||||
inContentType="image/jpeg" ;;
|
||||
"png") inContentType="image/png" ;;
|
||||
"rar") inContentType="application/x-rar-compressed" ;;
|
||||
"tar") inContentType="application/x-tar" ;;
|
||||
"txt") inContentType="text/plain" ;;
|
||||
"xz") inContentType="application/x-xz" ;;
|
||||
"zip") inContentType="application/x-zip-compressed" ;;
|
||||
*) inContentType="application/octet-stream" ;;
|
||||
esac
|
||||
|
||||
Email_addAttachment "${this}" "${inFileName##*/}" "${inContentType}" <"${inFileName}"
|
||||
}
|
||||
|
||||
function Email_send()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
|
||||
local mailTo="${this}_mailTo"
|
||||
local mailCc="${this}_mailCc"
|
||||
local mailBcc="${this}_mailBcc"
|
||||
local mailFrom="${this}_mailFrom"
|
||||
local mailReplyTo="${this}_mailReplyTo"
|
||||
local mailSubject="${this}_mailSubject"
|
||||
|
||||
# Sendmail is here, see Linux Standard Base Core Specification
|
||||
# - Generic 5.0 Edition, section 17.2
|
||||
|
||||
local SENDMAIL="/usr/sbin/sendmail"
|
||||
|
||||
! type "${SENDMAIL}" >/dev/null 2>&1 &&
|
||||
echo "${SENDMAIL}: command not found" >&2 &&
|
||||
return 1
|
||||
|
||||
# Email headers, see RFC 2076
|
||||
|
||||
"${SENDMAIL}" -t -i <<-EOF
|
||||
To: ${!mailTo}
|
||||
Cc: ${!mailCc}
|
||||
Bcc: ${!mailBcc}
|
||||
From: ${!mailFrom}
|
||||
Reply-To: ${!mailReplyTo}
|
||||
Subject: ${!mailSubject}
|
||||
X-Mailer: Flying Nimbus 0.0.1
|
||||
MIME-Version: 1.0
|
||||
$(Email_buildMultipart "${this}")
|
||||
EOF
|
||||
}
|
||||
|
||||
function Email_buildMultipart()
|
||||
{
|
||||
local base="${FUNCNAME%%_*}"
|
||||
local this="$1"
|
||||
|
||||
local mailAttachmentContentTypes="${this}_mailAttachmentContentTypes"
|
||||
local mailAttachmentMessages="${this}_mailAttachmentMessages"
|
||||
local mailAttachmentNames="${this}_mailAttachmentNames"
|
||||
|
||||
local boundary="-=0xdeadbeef${RANDOM}${RANDOM}=-"
|
||||
|
||||
# See RFC 2046, section 5.1.3
|
||||
|
||||
echo "Content-Type: multipart/mixed; boundary=0__${boundary}"
|
||||
echo
|
||||
echo "This is a message with multiple parts in MIME format."
|
||||
echo "--0__${boundary}"
|
||||
|
||||
local -i i
|
||||
|
||||
# See RFC 2046, section 5.1.4
|
||||
|
||||
echo "Content-Type: multipart/alternative; boundary=1__${boundary}"
|
||||
echo
|
||||
echo -n "--1__${boundary}"
|
||||
for (( i = 0; i < $(eval "echo \"\${#${mailAttachmentNames}[@]}\""); ++i ))
|
||||
do
|
||||
local mailAttachmentContentType="${mailAttachmentContentTypes}[${i}]"
|
||||
local mailAttachmentMessage="${mailAttachmentMessages}[${i}]"
|
||||
local mailAttachmentName="${mailAttachmentNames}[${i}]"
|
||||
|
||||
[ -n "${!mailAttachmentName}" ] && continue
|
||||
|
||||
echo
|
||||
echo "Content-Type: ${!mailAttachmentContentType}"
|
||||
echo "Content-Disposition: inline"
|
||||
echo "Content-Transfer-Encoding: base64"
|
||||
echo
|
||||
echo "${!mailAttachmentMessage}"
|
||||
echo
|
||||
echo -n "--1__${boundary}"
|
||||
done
|
||||
echo "--"
|
||||
echo -n "--0__${boundary}"
|
||||
|
||||
for (( i = 0; i < $(eval "echo \"\${#${mailAttachmentNames}[@]}\""); ++i ))
|
||||
do
|
||||
local mailAttachmentContentType="${mailAttachmentContentTypes}[${i}]"
|
||||
local mailAttachmentMessage="${mailAttachmentMessages}[${i}]"
|
||||
local mailAttachmentName="${mailAttachmentNames}[${i}]"
|
||||
|
||||
[ -z "${!mailAttachmentName}" ] && continue
|
||||
|
||||
echo
|
||||
echo "Content-Type: ${!mailAttachmentContentType}; name=\"${!mailAttachmentName}\""
|
||||
echo "Content-Disposition: attachment; filename=${!mailAttachmentName}"
|
||||
echo "Content-Transfer-Encoding: base64"
|
||||
echo
|
||||
echo "${!mailAttachmentMessage}"
|
||||
echo
|
||||
echo -n "--0__${boundary}"
|
||||
done
|
||||
echo "--"
|
||||
}
|
||||
# End of file
|
@ -1,43 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT="$0"
|
||||
! type readlink >/dev/null 2>&1 &&
|
||||
echo "Command \"readlink\" not found" >&2 && exit 1
|
||||
while [ -L "${SCRIPT}" ]
|
||||
do
|
||||
LINK="$(readlink "${SCRIPT}")"
|
||||
if [ "/" = "${LINK:0:1}" ]
|
||||
then
|
||||
SCRIPT="${LINK}"
|
||||
else
|
||||
SCRIPT="${SCRIPT%/*}/${LINK}"
|
||||
fi
|
||||
done
|
||||
BASE_DIR="${SCRIPT%/*}"
|
||||
|
||||
! source "${BASE_DIR}/email.sh" >/dev/null 2>&1 &&
|
||||
echo "File \"${BASE_DIR}/email.sh\" not found" >&2 && exit 1
|
||||
! type mysql >/dev/null 2>&1 &&
|
||||
echo "Command \"mysql\" not found" >&2 && exit 1
|
||||
|
||||
# The configuration part
|
||||
|
||||
MYSQL_HOST="localhost"
|
||||
MYSQL_USER="root"
|
||||
MYSQL_PASS="password"
|
||||
MYSQL_DB="xCATjkLogAnalyzer"
|
||||
|
||||
MYSQL_COMMAND=("mysql" -B -N -r -s "-h" "${MYSQL_HOST}" -u "${MYSQL_USER}" -p"${MYSQL_PASS}" "${MYSQL_DB}")
|
||||
|
||||
# The main part
|
||||
|
||||
Email report
|
||||
|
||||
$report_setTo "Alice" alice@example.org
|
||||
|
||||
$report_setFrom "xCAT Jenkins Mail Bot" root@localhost.localdomain
|
||||
|
||||
$report_setSubject "$("${MYSQL_COMMAND[@]}" <<<"SELECT * FROM LatestDailyMailReportSubject;")"
|
||||
$report_setHTML < <("${MYSQL_COMMAND[@]}" <<<"CALL CreateLatestDailyMailReport;")
|
||||
|
||||
$report_send
|
@ -1,958 +0,0 @@
|
||||
-- MySQL dump 10.14 Distrib 5.5.47-MariaDB, for Linux (ppc64)
|
||||
--
|
||||
-- Host: localhost Database: xCATjkLogAnalyzer
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 5.5.47-MariaDB
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `ArchDict`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `ArchDict`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `ArchDict` (
|
||||
`ArchId` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ArchName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`ArchId`),
|
||||
UNIQUE KEY `ArchName` (`ArchName`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `FailedTestCasesTopList`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `FailedTestCasesTopList`;
|
||||
/*!50001 DROP VIEW IF EXISTS `FailedTestCasesTopList`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `FailedTestCasesTopList` (
|
||||
`Test case` tinyint NOT NULL,
|
||||
`Arch` tinyint NOT NULL,
|
||||
`OS` tinyint NOT NULL,
|
||||
`Last seven days` tinyint NOT NULL,
|
||||
`Last thirty days` tinyint NOT NULL,
|
||||
`Last ninety days` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `LatestDailyMailReportSubject`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `LatestDailyMailReportSubject`;
|
||||
/*!50001 DROP VIEW IF EXISTS `LatestDailyMailReportSubject`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `LatestDailyMailReportSubject` (
|
||||
`Subject` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `LatestDailyReport`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `LatestDailyReport`;
|
||||
/*!50001 DROP VIEW IF EXISTS `LatestDailyReport`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `LatestDailyReport` (
|
||||
`Title` tinyint NOT NULL,
|
||||
`Arch` tinyint NOT NULL,
|
||||
`OS` tinyint NOT NULL,
|
||||
`Duration` tinyint NOT NULL,
|
||||
`Passed` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL,
|
||||
`No run` tinyint NOT NULL,
|
||||
`Subtotal` tinyint NOT NULL,
|
||||
`Pass rate` tinyint NOT NULL,
|
||||
`Failed test cases` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `NinetyDayFailed`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `NinetyDayFailed`;
|
||||
/*!50001 DROP VIEW IF EXISTS `NinetyDayFailed`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `NinetyDayFailed` (
|
||||
`TestCaseId` tinyint NOT NULL,
|
||||
`ArchId` tinyint NOT NULL,
|
||||
`OSId` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `NinetyDayLookBack`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `NinetyDayLookBack`;
|
||||
/*!50001 DROP VIEW IF EXISTS `NinetyDayLookBack`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `NinetyDayLookBack` (
|
||||
`Arch` tinyint NOT NULL,
|
||||
`OS` tinyint NOT NULL,
|
||||
`Test runs` tinyint NOT NULL,
|
||||
`Passed` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL,
|
||||
`No run` tinyint NOT NULL,
|
||||
`Subtotal` tinyint NOT NULL,
|
||||
`Pass rate` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `NinetyDayReport`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `NinetyDayReport`;
|
||||
/*!50001 DROP VIEW IF EXISTS `NinetyDayReport`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `NinetyDayReport` (
|
||||
`ArchId` tinyint NOT NULL,
|
||||
`OSId` tinyint NOT NULL,
|
||||
`Passed` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL,
|
||||
`No run` tinyint NOT NULL,
|
||||
`Subtotal` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Table structure for table `OSDict`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `OSDict`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `OSDict` (
|
||||
`OSId` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`OSName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`OSId`),
|
||||
UNIQUE KEY `OSName` (`OSName`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `ResultDict`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `ResultDict`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `ResultDict` (
|
||||
`ResultId` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ResultName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`ResultId`),
|
||||
UNIQUE KEY `ResultName` (`ResultName`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `SevenDayFailed`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `SevenDayFailed`;
|
||||
/*!50001 DROP VIEW IF EXISTS `SevenDayFailed`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `SevenDayFailed` (
|
||||
`TestCaseId` tinyint NOT NULL,
|
||||
`ArchId` tinyint NOT NULL,
|
||||
`OSId` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `SevenDayLookBack`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `SevenDayLookBack`;
|
||||
/*!50001 DROP VIEW IF EXISTS `SevenDayLookBack`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `SevenDayLookBack` (
|
||||
`Arch` tinyint NOT NULL,
|
||||
`OS` tinyint NOT NULL,
|
||||
`Test runs` tinyint NOT NULL,
|
||||
`Passed` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL,
|
||||
`No run` tinyint NOT NULL,
|
||||
`Subtotal` tinyint NOT NULL,
|
||||
`Pass rate` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `SevenDayReport`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `SevenDayReport`;
|
||||
/*!50001 DROP VIEW IF EXISTS `SevenDayReport`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `SevenDayReport` (
|
||||
`ArchId` tinyint NOT NULL,
|
||||
`OSId` tinyint NOT NULL,
|
||||
`Passed` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL,
|
||||
`No run` tinyint NOT NULL,
|
||||
`Subtotal` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Table structure for table `TestCase`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `TestCase`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `TestCase` (
|
||||
`TestCaseId` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`TestCaseName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
`Memo` text NOT NULL,
|
||||
PRIMARY KEY (`TestCaseId`),
|
||||
UNIQUE KEY `TestCaseName` (`TestCaseName`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `TestResult`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `TestResult`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `TestResult` (
|
||||
`TestRunId` int(11) NOT NULL,
|
||||
`TestCaseId` int(11) NOT NULL,
|
||||
`ResultId` int(11) NOT NULL,
|
||||
`DurationTime` int(11) NOT NULL,
|
||||
PRIMARY KEY (`TestRunId`,`TestCaseId`),
|
||||
KEY `Result` (`ResultId`),
|
||||
KEY `TestCaseId` (`TestCaseId`),
|
||||
CONSTRAINT `ResutId` FOREIGN KEY (`ResultId`) REFERENCES `ResultDict` (`ResultId`),
|
||||
CONSTRAINT `TestCaseId` FOREIGN KEY (`TestCaseId`) REFERENCES `TestCase` (`TestCaseId`),
|
||||
CONSTRAINT `TestRunId` FOREIGN KEY (`TestRunId`) REFERENCES `TestRun` (`TestRunId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `TestRun`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `TestRun`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `TestRun` (
|
||||
`TestRunId` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`TestRunName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
`StartTime` datetime NOT NULL,
|
||||
`EndTime` datetime NOT NULL,
|
||||
`ArchId` int(11) NOT NULL,
|
||||
`OSId` int(11) NOT NULL,
|
||||
`xCATgitCommit` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
`Memo` text NOT NULL,
|
||||
PRIMARY KEY (`TestRunId`),
|
||||
UNIQUE KEY `TestRunName` (`TestRunName`),
|
||||
KEY `ArchId` (`ArchId`),
|
||||
KEY `OSId` (`OSId`),
|
||||
CONSTRAINT `ArchId` FOREIGN KEY (`ArchId`) REFERENCES `ArchDict` (`ArchId`),
|
||||
CONSTRAINT `OSId` FOREIGN KEY (`OSId`) REFERENCES `OSDict` (`OSId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `ThirtyDayFailed`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `ThirtyDayFailed`;
|
||||
/*!50001 DROP VIEW IF EXISTS `ThirtyDayFailed`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `ThirtyDayFailed` (
|
||||
`TestCaseId` tinyint NOT NULL,
|
||||
`ArchId` tinyint NOT NULL,
|
||||
`OSId` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `ThirtyDayLookBack`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `ThirtyDayLookBack`;
|
||||
/*!50001 DROP VIEW IF EXISTS `ThirtyDayLookBack`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `ThirtyDayLookBack` (
|
||||
`Arch` tinyint NOT NULL,
|
||||
`OS` tinyint NOT NULL,
|
||||
`Test runs` tinyint NOT NULL,
|
||||
`Passed` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL,
|
||||
`No run` tinyint NOT NULL,
|
||||
`Subtotal` tinyint NOT NULL,
|
||||
`Pass rate` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Temporary table structure for view `ThirtyDayReport`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `ThirtyDayReport`;
|
||||
/*!50001 DROP VIEW IF EXISTS `ThirtyDayReport`*/;
|
||||
SET @saved_cs_client = @@character_set_client;
|
||||
SET character_set_client = utf8;
|
||||
/*!50001 CREATE TABLE `ThirtyDayReport` (
|
||||
`ArchId` tinyint NOT NULL,
|
||||
`OSId` tinyint NOT NULL,
|
||||
`Passed` tinyint NOT NULL,
|
||||
`Failed` tinyint NOT NULL,
|
||||
`No run` tinyint NOT NULL,
|
||||
`Subtotal` tinyint NOT NULL
|
||||
) ENGINE=MyISAM */;
|
||||
SET character_set_client = @saved_cs_client;
|
||||
|
||||
--
|
||||
-- Dumping routines for database 'xCATjkLogAnalyzer'
|
||||
--
|
||||
/*!50003 DROP PROCEDURE IF EXISTS `CreateLatestDailyMailReport` */;
|
||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||
/*!50003 SET character_set_client = utf8 */ ;
|
||||
/*!50003 SET character_set_results = utf8 */ ;
|
||||
/*!50003 SET collation_connection = utf8_general_ci */ ;
|
||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||
/*!50003 SET sql_mode = '' */ ;
|
||||
DELIMITER ;;
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `CreateLatestDailyMailReport`()
|
||||
BEGIN
|
||||
SET group_concat_max_len := @@max_allowed_packet;
|
||||
SELECT CONCAT(
|
||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', "\n",
|
||||
'<html xmlns="http://www.w3.org/1999/xhtml">', "\n",
|
||||
'<head>', "\n",
|
||||
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />', "\n",
|
||||
'<meta name="viewpoint" content="width=device-width, initial-scale=1.0" />', "\n",
|
||||
'<title>xCAT Jenkins Test Report</title>', "\n",
|
||||
'</head>', "\n",
|
||||
'<body style="font-weight: 500; font-size: 10.5pt; font-family: Helvetica, Arial, sans-serif; text-align: center;">', "\n",
|
||||
'<table style="border-collapse: collapse; border-style: none; border-width: 0; margin: auto; text-align: left; width: 680px;">', "\n",
|
||||
'<tr style="vertical-align: baseline;">', "\n",
|
||||
'<td style="padding: 2px 3px; vertical-align: top; width: 540px;"><p style="font-weight: 900; font-size: 16pt;">xCAT Jenkins Test Report</p></td>', "\n",
|
||||
'<td style="padding: 2px 3px; text-align: right"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAMAAABE3mLdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRFTmSZDCRj/v//n67HAAQ0hpe5Znup0djmITl4xs/frrvU3eLqOVCI6+/1vcPS////cVHDjgAAABB0Uk5T////////////////////AOAjXRkAAAqYSURBVHja7FrZYtu6DgQXcCf7/397ZkDJSxYnsdPel8umbWzLHAIEBgNK8ud/NOSfIXn78++B/R7/GBiIMw0X3bxAy7tl/RXcANAiycX+ETBQe5h/AdrnOJZ5Wts5vdziOowy/wJwz8cWT/8e2PsWnRsl/LrJB6YN7e+Be6k9uTF+39k+pHUCz3d77EOciD1X3C9F2GUa70sMB/D6wNWBwT5HceNXgK9p632UbrA+6Luo9l4cP2qulOWvW/M8rIvbAswc8zbYi7y1GBfGMCcWpki5/YVZxrPInC6WmDZwVMyMAYvdPTCuC1Hs0znDiNwJfjVGeQoaWwbc4qLNU9zG5eTuNFn2dTnGkefxYU+RTq721fgEMIgIRAVOiBUvNK4rcIsH8gbGdaufA3uR6OMcySdPIBsjFLIRXTdPR+/Jw/a/AcPPpd58iI+zFrjamCyWHyKDGA9cFytmSXczT3FXYDB0vx8+I/X2l0v8WXoRt+yvco+j69fJM8asV+Cq097bA5/jBysT535uM8P0sBcDcZINED/VJj/Z2oCzzvxm9FnLcO7HNm/c01dY+hXWMK1QXIOr9V7fIvcBErvM8E3kXWnws784XNi+3LAM27Du0qnOCuRaDb5y5J4uJm+b/XdIsrDCaQyJ/h5j0Fg6GbiLhsQYbtLJCuZadZ7FqwO8L9TIE7iQzR5Ae0Otg7QRR4jD1jyKcqba6wIuHRFBnv6OuRBtC4RqRlsqY6FSGF7lQI6lX9j7+tcfmEAVEJ3Rhrl6JAK3bp7cOkCT1rdCAMiYtkL4mNVYJ36rjguPh9FY7QLJH+j3Q43jsLyyVyqtgzgKPA1ze+1HsbitOtcikVcO+xP+03sL3OUoBSJNTn/TqJE0DeFIQutkRLPVsBkPWC8mcIjp1PNa/VIeP9TVxLpuIrFDU6RymwgRGQbsYrHpb4fboIV723ABrksNlAz4Uuas/ZPQkE+lLTMOkzEawkjDPD5kYzj7wT9ajKWOvAteBVW4eigo+NkFE3k/b2E8SziUsDbBPLBm+iNFR4I85y+J7rCNYFxFTTOnGHU4iInGnfbP9U6s5wraE9VUCkuLE8PdfwHFBYjgbSkWf0rlUZdUH+bDBJSvGV9KqigYYqICKcaAA2xJ2AjgqYKgZKSyAwAB1ZTRycr0QrcIOSBRQsL+TRg0FHwE41oORMZvo+bigCo781i/Kax8dt2/0qb6Kb4liEOQMCx1WimAE3iGTsBv2qoeUWdER6rhaxT0l/pjsG+wzmMygTG5Zh2prdYWQ0grfmtBW1OwYm9pbAYBJat/yeI/fjgKQcQP6Ck1DajrBOMIIdg/xhE9azK6NrNLXK9ZjPoxK1mCKYSqhvjB9Ia4sfGnQVn1YnQircSjnr1ssU+bCMGU04ibYoaAocHPXALsHVYfCuWwxovseRGYPAg7jJmNr1hTq2qofhowLznKUgPbfU8wfQ2c0BEgaEgH9SjOoCh4m6028A138yboFVR3QW4v5TFFrngQsICN1rmB0SJd2YXlQ70jDhpcfhF65bGzvwQGb9EG0AiUhddTkCDCkNmNhxdt7J0vCUVlu/wbGvFLyqSKAQ/qIE3ByFMONbY9bHWao7ZyPOQIKW/osQt47M8DW4yCDgM0k3Nwq5I38CtLLoJOeaLD0tusJuhAy4ceLW0aSc8CW9wgkWgy8mrorBoS8IYi6Kh/A+1E0WwLqqSlKBV7K+wQTZA8XRYneRfFp3ZEWAV9yOpLU9KOOMqzgLCh4ULIPEEDkFp0xbIMvsSnLQ7w5xD2fAE1gDJu7iSq01Q+4GtGSnfq4iBbI201FAcumc9ZbPOSiGsXGI5arAGYuakCAzblTIcoZALcgkCfCIAYgrSN7563OLL+U0dBbEJcwvQlWAGAHRQBfArdAymgLMYFTDa08cBSD71Z/LMWw2uUFthKQATrf2rAFlMKIWkYaDQYY3UpvABpoJRCVHvPp5PxJWbpItYMBOwzZHZATwDvKqugcBHKTyurReYqC0VKgu1PMxfWP4TII8+M+peSpQ7+R2QnVChscOJYEAEUAqC2Elg7B88C1vPAIGcNocMmhosc56ANTYS2DP2F8FpwvSiDfZJVqVJK4esRXuBq75yyb2dzBMHlRe04FLU/Xzunyr1flRGBgONmwPVI6/B8dSIHCo+4C/0pdHtiY+R3exVmQGXeryhEM4ALtx/80h7R1reKBPOVugfbWlIwzb6mLtBSotihYVDWStYoaknHNWpw+how6BfbFoLN11M8urZCtbMJOfhNVcx2WyEXCe58QfrQnyMF4eKnCkJayilCfNpSg6qOzdtu6XANAi+l3N0LKtOatlKndQYERpVNhgb2Ao1vCYa9REShIAs7GxpLVz+OrIfAhIWqgJ+BfRjCN4RsFZMerSktxm4oMjqwVYexWOI+h30GmEUdYpWMAbFBQUEvJsvSUVpIp6grsTZgowwHfA7oEGyRduT80zy29CgGywMH3jEodviA18hSN7IPlzMw1sq0hK0iDSZJm3eY9t/UXJczHR7PQXekfdBRBvugrLJfDrwj4ZRelNyExC4POb6gaR+QsDv/FFre3PuzIdawHEAO/WYpk+Vf9uQ6LJbcqSi5uCJyfgGkHY41unt/3764nPrMjvLCkpNb2Vmxv2tC1nfj6bbfBUPPiWap7ENLxNGSY1AtgGNnJs1xQXHMm5siNbw9bgKlj31IZe3ZZRZ33IakF2TLALwvoXZmGhiSJ3nQ8eP4hpgGnrUv22ounHL84smrNJCLuAIwZeOBCqmcWijpulreDJvQNuZCV9iPQmJxj0cox3fQsFsF8w1SZB+GYasBhxK6GgDSReTLteJzjL1s4qJj6fP+5KtF5is/xgLhah6EkDkD1sNvBN7h8eehmb157PU+EiPBQCLenmXy/E8u7jJ7a53vTr6gdvcBE6CRVdwaBmL3Cm+l7nO7OAiNegWVjXFug02N39HZ3QDnkMbdSOfi393Fkj0Xlr8a1ayEw0N9rjsP9UR3X8a+algQ3Fjsp9zh9vlhClLw7gu1Mmgau2PqnSGz3isOGu37YfTNkH1WcO7xmv36WeGtwI9T3+8wLCSvuBUACzIEfn5Xf9lKdn0LjOCgTZd0CuwVjk9GnZ9SDu1LNFrJ5XMJe0n0F/ODcy1udE5vbAb5TH9LILWPfQnK/nxwDxnsWbMl3tix6kBuWIX6j4WEHbdeYXlg5d8cG29gqJf58N41s1R4mpb2PQsIsiyfKSyqNlaWCy5oaN7ssV1hDGLb97iW2h1a2rzTqoBX5NP2zBRxKsfcwjMEf2/xiqaIodd9918e9xF52I2WEtBgxM819L53MDY/obOv3d9Xp3CcgY/zltQXbeSZnSm3yEryoB0Z5s7CY4Pa7ynzz/kRhup3bjHJDizsdrx9oOXj7j6ZjEK29HePY5ANNy7q3DceBeHG8fA8KRXKw5VyY6DFqVTyB/XYyyld5Xv3826Vw1feYXVVd3f7XW4OS0G96AB4K/+XHwPhkTP3Uj96usnzEQ0k8Oz5tx9AgX6AZMLsq31ksZ+tz17nX3jKiIc0Jp26/+S+00uPfjx+WsElFKJ//wSb1cg7k/7Vo3Nvntj7lw8L/vSg/P/AvzX+E2AAU/a5R25atrUAAAAASUVORK5CYII=" alt="xCAT Logo" title="xCAT Logo" style="border-style: none; border-width: 0;" width="120" height="90" /></td>', "\n",
|
||||
'</tr>', "\n",
|
||||
'</table>', "\n",
|
||||
'<p style="font-size: 12pt; font-weight: 700; text-align: center;"></p>', "\n",
|
||||
'<table style="border-collapse: collapse; border-style: none; border-width: 0; box-shadow: 1px 2px 3px #cccccc; text-align: left; margin: auto; width: 680px;">', "\n",
|
||||
'<tr style="background-color: #003366; color: #ffffff; font-weight: 700; text-align: center; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 60px">Arch</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 100px;">OS</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 80px">Duration</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Passed</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Failed</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">No run</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Subtotal</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Pass rate</th>', "\n",
|
||||
'</tr>', "\n",
|
||||
LatestDailyReportContents.HTML,
|
||||
LatestDailyReportSummary.HTML,
|
||||
'</table>', "\n",
|
||||
'<hr style="background-color: #cccccc; border-width: 0; box-shadow: 1px 2px 3px #cccccc; height: 1px; width: 680px;" />', "\n",
|
||||
'<p style="font-size: 12pt; font-weight: 700; text-align: center;">Failed Test Cases</p>', "\n",
|
||||
'<table style="border-collapse: collapse; border-style: none; border-width: 0; box-shadow: 1px 2px 3px #cccccc; text-align: left; margin: auto; width: 680px;">', "\n",
|
||||
'<tr style="background-color: #003366; color: #ffffff; font-weight: 700; text-align: center; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 60px;">Arch</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 100px;">OS</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Failed test cases</th>', "\n",
|
||||
'</tr>', "\n",
|
||||
FailedTestCasesReport.HTML,
|
||||
'</table>', "\n",
|
||||
'<p style="font-size: 12pt; font-weight: 700; text-align: center;">Seven-day Look Back</p>', "\n",
|
||||
'<table style="border-collapse: collapse; border-style: none; border-width: 0; box-shadow: 1px 2px 3px #cccccc; text-align: left; margin: auto; width: 680px;">', "\n",
|
||||
'<tr style="background-color: #003366; color: #ffffff; font-weight: 700; text-align: center; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 60px">Arch</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 100px;">OS</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 80px;">Test runs</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Passed</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Failed</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">No run</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Subtotal</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Pass rate</th>', "\n",
|
||||
'</tr>', "\n",
|
||||
SevenDayLookBackContents.HTML,
|
||||
SevenDayLookBackSummary.HTML,
|
||||
'</table>', "\n",
|
||||
'<p style="font-size: 12pt; font-weight: 700; text-align: center;">Thirty-day Look Back</p>', "\n",
|
||||
'<table style="border-collapse: collapse; border-style: none; border-width: 0; box-shadow: 1px 2px 3px #cccccc; text-align: left; margin: auto; width: 680px;">', "\n",
|
||||
'<tr style="background-color: #003366; color: #ffffff; font-weight: 700; text-align: center; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 60px">Arch</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 100px;">OS</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 80px;">Test runs</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Passed</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Failed</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">No run</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Subtotal</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Pass rate</th>', "\n",
|
||||
'</tr>', "\n",
|
||||
ThirtyDayLookBackContents.HTML,
|
||||
ThirtyDayLookBackSummary.HTML,
|
||||
'</table>', "\n",
|
||||
'<p style="font-size: 12pt; font-weight: 700; text-align: center;">Ninety-day Look Back</p>', "\n",
|
||||
'<table style="border-collapse: collapse; border-style: none; border-width: 0; box-shadow: 1px 2px 3px #cccccc; text-align: left; margin: auto; width: 680px;">', "\n",
|
||||
'<tr style="background-color: #003366; color: #ffffff; font-weight: 700; text-align: center; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 60px">Arch</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 100px;">OS</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 80px;">Test runs</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Passed</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Failed</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">No run</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 75px;">Subtotal</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Pass rate</th>', "\n",
|
||||
'</tr>', "\n",
|
||||
NinetyDayLookBackContents.HTML,
|
||||
NinetyDayLookBackSummary.HTML,
|
||||
'</table>', "\n",
|
||||
'<p style="font-size: 12pt; font-weight: 700; text-align: center;">Top 50 Failed Test Cases</p>', "\n",
|
||||
'<table style="border-collapse: collapse; border-style: none; border-width: 0; box-shadow: 1px 2px 3px #cccccc; text-align: left; margin: auto; width: 680px;">', "\n",
|
||||
'<tr style="background-color: #003366; color: #ffffff; font-weight: 700; text-align: center; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 40px;">Rank</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Test case</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 60px">Arch</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 100px;">OS</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 50px;">Last 7 days</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 50px;">Last 30 days</th>', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; width: 50px;">Last 90 days</th>', "\n",
|
||||
'</tr>', "\n",
|
||||
TopFiftyFailedTestCases.HTML,
|
||||
'</table>', "\n",
|
||||
'<hr style="background-color: #cccccc; border-width: 0; box-shadow: 1px 2px 3px #cccccc; height: 1px; width: 680px;" />', "\n",
|
||||
'<table style="border-collapse: collapse; border-color: #666666; border-style: solid; border-width: 1px; box-shadow: 1px 2px 3px #cccccc; text-align: left; margin: auto; width: 680px;">', "\n",
|
||||
'<tr style="background-color: #e0e0e0; vertical-align: baseline;">', "\n",
|
||||
'<td style="padding: 4px 5px; vertical-align: bottom;"><p style="font-size: 9pt;"><sup>✻</sup>This email has been sent to you by xCAT Jenkins Mail Bot.<br />', "\n",
|
||||
'<sup>†</sup>This email was sent from a notification-only address that cannot accept incoming email. Please do not reply to this message. If you have received this email in error, please delete it.<br />', "\n",
|
||||
'<sup>‡</sup>All the times shown in this test report are the local times of the testing environment.</p>', "\n",
|
||||
'<p style="font-size: 9pt;">',
|
||||
NOW(), ' ', REPLACE(CONCAT('+', TIME_FORMAT(TIMEDIFF(NOW(), UTC_TIMESTAMP), '%H%i')), '+-', '-'),
|
||||
'</p></td>', "\n",
|
||||
'</tr>', "\n",
|
||||
'</table>', "\n",
|
||||
'</body>', "\n",
|
||||
'</html>'
|
||||
) AS HTML
|
||||
FROM (
|
||||
SELECT IFNULL(GROUP_CONCAT(HTML SEPARATOR ''), '') AS HTML
|
||||
FROM (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: ',
|
||||
IF (@color = '#e0e0e0', @color := '#a0d0ff', @color := '#e0e0e0'),
|
||||
'; vertical-align: baseline;" title="', Title, '">', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
Arch, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
OS, '</td>', "\n"
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Duration, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Passed, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Failed, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`No run`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Subtotal, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Pass rate`, '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML
|
||||
FROM LatestDailyReport,
|
||||
( SELECT @color := '' ) AS tmp00
|
||||
) AS tmp10
|
||||
) AS LatestDailyReportContents, (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: #cccccc; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Total</th>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">-</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SEC_TO_TIME(SUM(TIME_TO_SEC(Duration))), 'N/A'), '</td>', "\n"
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Passed), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Failed), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(`No run`), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Subtotal), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(CONCAT(ROUND(SUM(Passed) / (SUM(Passed) + SUM(Failed)) * 100, 2), '%'), 'N/A'), '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML
|
||||
FROM LatestDailyReport
|
||||
) AS LatestDailyReportSummary, (
|
||||
SELECT IFNULL(GROUP_CONCAT(HTML SEPARATOR ''), '') AS HTML
|
||||
FROM (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: ',
|
||||
IF (@color = '#e0e0e0', @color := '#a0d0ff', @color := '#e0e0e0'),
|
||||
'; vertical-align: baseline;" title="', Title, '">', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
Arch, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
OS, '</td>', "\n",
|
||||
'<td style="background-color: ',
|
||||
IF (@color = '#e0e0e0', '#f0f0f0', '#d0e8ff'),
|
||||
'; border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
`Failed test cases`, '</td>', "\n",
|
||||
'</tr>' , "\n"
|
||||
) AS HTML
|
||||
FROM LatestDailyReport,
|
||||
( SELECT @color := '' ) AS tmp00
|
||||
) AS tmp10
|
||||
) AS FailedTestCasesReport, (
|
||||
SELECT IFNULL(GROUP_CONCAT(HTML SEPARATOR ''), '') AS HTML
|
||||
FROM (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: ',
|
||||
IF (@color = '#e0e0e0', @color := '#a0d0ff', @color := '#e0e0e0'),
|
||||
'; vertical-align: baseline;">', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
Arch, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
OS, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Test runs`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Passed, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Failed, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`No run`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Subtotal, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Pass rate`, '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML
|
||||
FROM SevenDayLookBack,
|
||||
( SELECT @color := '' ) AS tmp00
|
||||
) AS tmp10
|
||||
) AS SevenDayLookBackContents, (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: #cccccc; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Total</th>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">-</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(`Test runs`), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Passed), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Failed), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(`No run`), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Subtotal), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(CONCAT(ROUND(SUM(Passed) / (SUM(Passed) + SUM(Failed)) * 100, 2), '%'), 'N/A'), '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML
|
||||
FROM SevenDayLookBack
|
||||
) AS SevenDayLookBackSummary, (
|
||||
SELECT IFNULL(GROUP_CONCAT(HTML SEPARATOR ''), '') AS HTML
|
||||
FROM (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: ',
|
||||
IF (@color = '#e0e0e0', @color := '#a0d0ff', @color := '#e0e0e0'),
|
||||
'; vertical-align: baseline;">', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
Arch, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
OS, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Test runs`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Passed, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Failed, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`No run`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Subtotal, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Pass rate`, '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML
|
||||
FROM ThirtyDayLookBack,
|
||||
( SELECT @color := '' ) AS tmp00
|
||||
) AS tmp10
|
||||
) AS ThirtyDayLookBackContents, (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: #cccccc; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Total</th>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">-</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(`Test runs`), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Passed), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Failed), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(`No run`), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Subtotal), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(CONCAT(ROUND(SUM(Passed) / (SUM(Passed) + SUM(Failed)) * 100, 2), '%'), 'N/A'), '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML
|
||||
FROM ThirtyDayLookBack
|
||||
) AS ThirtyDayLookBackSummary, (
|
||||
SELECT IFNULL(GROUP_CONCAT(HTML SEPARATOR ''), '') AS HTML
|
||||
FROM (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: ',
|
||||
IF (@color = '#e0e0e0', @color := '#a0d0ff', @color := '#e0e0e0'),
|
||||
'; vertical-align: baseline;">', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
Arch, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
OS, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Test runs`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Passed, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Failed, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`No run`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
Subtotal, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Pass rate`, '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML
|
||||
FROM NinetyDayLookBack,
|
||||
( SELECT @color := '' ) AS tmp00
|
||||
) AS tmp10
|
||||
) AS NinetyDayLookBackContents, (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: #cccccc; vertical-align: baseline;">', "\n",
|
||||
'<th style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">Total</th>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">-</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(`Test runs`), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Passed), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Failed), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(`No run`), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(SUM(Subtotal), 'N/A'), '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
IFNULL(CONCAT(ROUND(SUM(Passed) / (SUM(Passed) + SUM(Failed)) * 100, 2), '%'), 'N/A'), '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML
|
||||
FROM NinetyDayLookBack
|
||||
) AS NinetyDayLookBackSummary, (
|
||||
SELECT IFNULL(GROUP_CONCAT(HTML SEPARATOR ''), '') AS HTML
|
||||
FROM (
|
||||
SELECT CONCAT(
|
||||
'<tr style="background-color: ',
|
||||
IF (@color = '#f0f0f0', @color := '#d0e8ff', @color := '#f0f0f0'),
|
||||
'; vertical-align: baseline;\">', "\n",
|
||||
'<td style="background-color: ',
|
||||
IF (@color = '#f0f0f0', '#e0e0e0', '#a0d0ff'),
|
||||
'; border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;\">',
|
||||
@rank := @rank + 1, '</td>', "\n",
|
||||
'<td style="background-color: ',
|
||||
IF (@color = '#f0f0f0', '#e0e0e0', '#a0d0ff'),
|
||||
'; border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
`Test case`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
Arch, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px;">',
|
||||
OS, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Last seven days`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Last thirty days`, '</td>', "\n",
|
||||
'<td style="border-color: #666666; border-style: solid; border-width: 1px; padding: 2px 3px; text-align: right;">',
|
||||
`Last ninety days`, '</td>', "\n",
|
||||
'</tr>', "\n"
|
||||
) AS HTML FROM (
|
||||
SELECT `Test case`, Arch, OS, `Last seven days`, `Last thirty days`, `Last ninety days`
|
||||
FROM FailedTestCasesTopList LIMIT 50
|
||||
) AS TopFifty,
|
||||
( SELECT @color := '' ) AS tmp00,
|
||||
( SELECT @rank := 0 ) AS tmp09
|
||||
) AS tmp10
|
||||
) AS TopFiftyFailedTestCases;
|
||||
END ;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||
|
||||
--
|
||||
-- Final view structure for view `FailedTestCasesTopList`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `FailedTestCasesTopList`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `FailedTestCasesTopList`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `FailedTestCasesTopList` AS select `TestCase`.`TestCaseName` AS `Test case`,`ArchDict`.`ArchName` AS `Arch`,`OSDict`.`OSName` AS `OS`,ifnull(`SevenDayFailed`.`Failed`,0) AS `Last seven days`,ifnull(`ThirtyDayFailed`.`Failed`,0) AS `Last thirty days`,`NinetyDayFailed`.`Failed` AS `Last ninety days` from (((((`NinetyDayFailed` left join `SevenDayFailed` on(((`NinetyDayFailed`.`TestCaseId` = `SevenDayFailed`.`TestCaseId`) and (`NinetyDayFailed`.`ArchId` = `SevenDayFailed`.`ArchId`) and (`NinetyDayFailed`.`OSId` = `SevenDayFailed`.`OSId`)))) left join `ThirtyDayFailed` on(((`NinetyDayFailed`.`TestCaseId` = `ThirtyDayFailed`.`TestCaseId`) and (`NinetyDayFailed`.`ArchId` = `ThirtyDayFailed`.`ArchId`) and (`NinetyDayFailed`.`OSId` = `ThirtyDayFailed`.`OSId`)))) left join `TestCase` on((`NinetyDayFailed`.`TestCaseId` = `TestCase`.`TestCaseId`))) left join `ArchDict` on((`NinetyDayFailed`.`ArchId` = `ArchDict`.`ArchId`))) left join `OSDict` on((`NinetyDayFailed`.`OSId` = `OSDict`.`OSId`))) order by ifnull(`SevenDayFailed`.`Failed`,0) desc,ifnull(`ThirtyDayFailed`.`Failed`,0) desc,`NinetyDayFailed`.`Failed` desc,`OSDict`.`OSName`,`ArchDict`.`ArchName`,`TestCase`.`TestCaseName` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `LatestDailyMailReportSubject`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `LatestDailyMailReportSubject`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `LatestDailyMailReportSubject`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `LatestDailyMailReportSubject` AS select concat('[xCAT Jenkins] ','Passed: ',ifnull(sum(`LatestDailyReport`.`Passed`),'N/A'),' Failed: ',ifnull(sum(`LatestDailyReport`.`Failed`),'N/A'),' No run: ',ifnull(sum(`LatestDailyReport`.`No run`),'N/A')) AS `Subject` from `LatestDailyReport` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `LatestDailyReport`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `LatestDailyReport`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `LatestDailyReport`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `LatestDailyReport` AS select `TestRun`.`TestRunName` AS `Title`,`ArchDict`.`ArchName` AS `Arch`,`OSDict`.`OSName` AS `OS`,timediff(`TestRun`.`EndTime`,`TestRun`.`StartTime`) AS `Duration`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Passed')))) AS `Passed`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed')))) AS `Failed`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'No run')))) AS `No run`,(select count(0) from `TestResult` where (`TestResult`.`TestRunId` = `TestRun`.`TestRunId`)) AS `Subtotal`,ifnull(concat(round((((select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Passed')))) / ((select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Passed')))) + (select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed')))))) * 100),2),'%'),'N/A') AS `Pass rate`,(select ifnull(group_concat(`TestCase`.`TestCaseName` separator ' '),'') from (`TestResult` left join `TestCase` on((`TestResult`.`TestCaseId` = `TestCase`.`TestCaseId`))) where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed')))) AS `Failed test cases` from ((`TestRun` left join `ArchDict` on((`TestRun`.`ArchId` = `ArchDict`.`ArchId`))) left join `OSDict` on((`TestRun`.`OSId` = `OSDict`.`OSId`))) where `TestRun`.`TestRunId` in (select max(`TestRun`.`TestRunId`) AS `TestRunId` from `TestRun` where (`TestRun`.`StartTime` > (now() - interval 2 day)) group by `TestRun`.`ArchId`,`TestRun`.`OSId`) order by `OSDict`.`OSName`,`ArchDict`.`ArchName` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `NinetyDayFailed`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `NinetyDayFailed`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `NinetyDayFailed`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `NinetyDayFailed` AS select `TestResult`.`TestCaseId` AS `TestCaseId`,`TestRun`.`ArchId` AS `ArchId`,`TestRun`.`OSId` AS `OSId`,count(0) AS `Failed` from (`TestResult` left join `TestRun` on((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`))) where (`TestResult`.`TestRunId` in (select `TestRun`.`TestRunId` from `TestRun` where (`TestRun`.`StartTime` > (now() - interval 90 day))) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed'))) group by `TestResult`.`TestCaseId`,`TestRun`.`ArchId`,`TestRun`.`OSId` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `NinetyDayLookBack`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `NinetyDayLookBack`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `NinetyDayLookBack`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `NinetyDayLookBack` AS select `ArchDict`.`ArchName` AS `Arch`,`OSDict`.`OSName` AS `OS`,count(0) AS `Test runs`,sum(`NinetyDayReport`.`Passed`) AS `Passed`,sum(`NinetyDayReport`.`Failed`) AS `Failed`,sum(`NinetyDayReport`.`No run`) AS `No run`,sum(`NinetyDayReport`.`Subtotal`) AS `Subtotal`,ifnull(concat(round(((sum(`NinetyDayReport`.`Passed`) / (sum(`NinetyDayReport`.`Passed`) + sum(`NinetyDayReport`.`Failed`))) * 100),2),'%'),'N/A') AS `Pass rate` from ((`NinetyDayReport` left join `ArchDict` on((`NinetyDayReport`.`ArchId` = `ArchDict`.`ArchId`))) left join `OSDict` on((`NinetyDayReport`.`OSId` = `OSDict`.`OSId`))) group by `NinetyDayReport`.`ArchId`,`NinetyDayReport`.`OSId` order by `OSDict`.`OSName`,`ArchDict`.`ArchName` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `NinetyDayReport`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `NinetyDayReport`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `NinetyDayReport`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `NinetyDayReport` AS select `TestRun`.`ArchId` AS `ArchId`,`TestRun`.`OSId` AS `OSId`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Passed')))) AS `Passed`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed')))) AS `Failed`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'No run')))) AS `No run`,(select count(0) from `TestResult` where (`TestResult`.`TestRunId` = `TestRun`.`TestRunId`)) AS `Subtotal` from `TestRun` where `TestRun`.`TestRunId` in (select `TestRun`.`TestRunId` from `TestRun` where (`TestRun`.`StartTime` > (now() - interval 90 day))) */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `SevenDayFailed`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `SevenDayFailed`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `SevenDayFailed`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `SevenDayFailed` AS select `TestResult`.`TestCaseId` AS `TestCaseId`,`TestRun`.`ArchId` AS `ArchId`,`TestRun`.`OSId` AS `OSId`,count(0) AS `Failed` from (`TestResult` left join `TestRun` on((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`))) where (`TestResult`.`TestRunId` in (select `TestRun`.`TestRunId` from `TestRun` where (`TestRun`.`StartTime` > (now() - interval 7 day))) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed'))) group by `TestResult`.`TestCaseId`,`TestRun`.`ArchId`,`TestRun`.`OSId` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `SevenDayLookBack`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `SevenDayLookBack`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `SevenDayLookBack`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `SevenDayLookBack` AS select `ArchDict`.`ArchName` AS `Arch`,`OSDict`.`OSName` AS `OS`,count(0) AS `Test runs`,sum(`SevenDayReport`.`Passed`) AS `Passed`,sum(`SevenDayReport`.`Failed`) AS `Failed`,sum(`SevenDayReport`.`No run`) AS `No run`,sum(`SevenDayReport`.`Subtotal`) AS `Subtotal`,ifnull(concat(round(((sum(`SevenDayReport`.`Passed`) / (sum(`SevenDayReport`.`Passed`) + sum(`SevenDayReport`.`Failed`))) * 100),2),'%'),'N/A') AS `Pass rate` from ((`SevenDayReport` left join `ArchDict` on((`SevenDayReport`.`ArchId` = `ArchDict`.`ArchId`))) left join `OSDict` on((`SevenDayReport`.`OSId` = `OSDict`.`OSId`))) group by `SevenDayReport`.`ArchId`,`SevenDayReport`.`OSId` order by `OSDict`.`OSName`,`ArchDict`.`ArchName` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `SevenDayReport`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `SevenDayReport`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `SevenDayReport`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `SevenDayReport` AS select `TestRun`.`ArchId` AS `ArchId`,`TestRun`.`OSId` AS `OSId`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Passed')))) AS `Passed`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed')))) AS `Failed`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'No run')))) AS `No run`,(select count(0) from `TestResult` where (`TestResult`.`TestRunId` = `TestRun`.`TestRunId`)) AS `Subtotal` from `TestRun` where `TestRun`.`TestRunId` in (select `TestRun`.`TestRunId` from `TestRun` where (`TestRun`.`StartTime` > (now() - interval 7 day))) */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `ThirtyDayFailed`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `ThirtyDayFailed`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `ThirtyDayFailed`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `ThirtyDayFailed` AS select `TestResult`.`TestCaseId` AS `TestCaseId`,`TestRun`.`ArchId` AS `ArchId`,`TestRun`.`OSId` AS `OSId`,count(0) AS `Failed` from (`TestResult` left join `TestRun` on((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`))) where (`TestResult`.`TestRunId` in (select `TestRun`.`TestRunId` from `TestRun` where (`TestRun`.`StartTime` > (now() - interval 30 day))) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed'))) group by `TestResult`.`TestCaseId`,`TestRun`.`ArchId`,`TestRun`.`OSId` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `ThirtyDayLookBack`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `ThirtyDayLookBack`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `ThirtyDayLookBack`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `ThirtyDayLookBack` AS select `ArchDict`.`ArchName` AS `Arch`,`OSDict`.`OSName` AS `OS`,count(0) AS `Test runs`,sum(`ThirtyDayReport`.`Passed`) AS `Passed`,sum(`ThirtyDayReport`.`Failed`) AS `Failed`,sum(`ThirtyDayReport`.`No run`) AS `No run`,sum(`ThirtyDayReport`.`Subtotal`) AS `Subtotal`,ifnull(concat(round(((sum(`ThirtyDayReport`.`Passed`) / (sum(`ThirtyDayReport`.`Passed`) + sum(`ThirtyDayReport`.`Failed`))) * 100),2),'%'),'N/A') AS `Pass rate` from ((`ThirtyDayReport` left join `ArchDict` on((`ThirtyDayReport`.`ArchId` = `ArchDict`.`ArchId`))) left join `OSDict` on((`ThirtyDayReport`.`OSId` = `OSDict`.`OSId`))) group by `ThirtyDayReport`.`ArchId`,`ThirtyDayReport`.`OSId` order by `OSDict`.`OSName`,`ArchDict`.`ArchName` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `ThirtyDayReport`
|
||||
--
|
||||
|
||||
/*!50001 DROP TABLE IF EXISTS `ThirtyDayReport`*/;
|
||||
/*!50001 DROP VIEW IF EXISTS `ThirtyDayReport`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8 */;
|
||||
/*!50001 SET character_set_results = utf8 */;
|
||||
/*!50001 SET collation_connection = utf8_general_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `ThirtyDayReport` AS select `TestRun`.`ArchId` AS `ArchId`,`TestRun`.`OSId` AS `OSId`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Passed')))) AS `Passed`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'Failed')))) AS `Failed`,(select count(0) from `TestResult` where ((`TestResult`.`TestRunId` = `TestRun`.`TestRunId`) and `TestResult`.`ResultId` in (select `ResultDict`.`ResultId` from `ResultDict` where (`ResultDict`.`ResultName` = 'No run')))) AS `No run`,(select count(0) from `TestResult` where (`TestResult`.`TestRunId` = `TestRun`.`TestRunId`)) AS `Subtotal` from `TestRun` where `TestRun`.`TestRunId` in (select `TestRun`.`TestRunId` from `TestRun` where (`TestRun`.`StartTime` > (now() - interval 30 day))) */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2016-08-22 4:06:36
|
@ -1,462 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
function usage()
|
||||
{
|
||||
local script="${0##*/}"
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
Usage: ${script} [OPTIONS] DIRECTORY
|
||||
|
||||
Options:
|
||||
--help display this help and exit
|
||||
|
||||
Examples:
|
||||
|
||||
${script} /xCATjk/log/ubuntu16.04-ppc64el/8
|
||||
EOF
|
||||
}
|
||||
|
||||
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
export PATH
|
||||
|
||||
#
|
||||
# warn_if_bad Put out warning message(s) if $1 has bad RC.
|
||||
#
|
||||
# $1 0 (pass) or non-zero (fail).
|
||||
# $2+ Remaining arguments printed only if the $1 is non-zero.
|
||||
#
|
||||
# Incoming $1 is returned unless it is 0
|
||||
#
|
||||
function warn_if_bad()
|
||||
{
|
||||
local -i rc="$1"
|
||||
local script="${0##*/}"
|
||||
|
||||
# Ignore if no problems
|
||||
[ "${rc}" -eq "0" ] && return 0
|
||||
|
||||
# Broken
|
||||
shift
|
||||
echo "${script}: $@" >&2
|
||||
return "${rc}"
|
||||
}
|
||||
|
||||
#
|
||||
# exit_if_bad Put out error message(s) if $1 has bad RC.
|
||||
#
|
||||
# $1 0 (pass) or non-zero (fail).
|
||||
# $2+ Remaining arguments printed only if the $1 is non-zero.
|
||||
#
|
||||
# Exits with 1 unless $1 is 0
|
||||
#
|
||||
function exit_if_bad()
|
||||
{
|
||||
warn_if_bad "$@" || exit 1
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# check_root_or_exit
|
||||
#
|
||||
# Breaks the script if not running as root.
|
||||
#
|
||||
# If this returns 1, the invoker MUST abort the script.
|
||||
#
|
||||
# Returns 0 if running as root
|
||||
# Returns 1 if not (and breaks the script)
|
||||
#
|
||||
function check_root_or_exit()
|
||||
{
|
||||
[ "${UID}" -eq "0" ]
|
||||
exit_if_bad "$?" "Must be run by UID=0. Actual UID=${UID}."
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# check_executes Check for executable(s)
|
||||
#
|
||||
# Returns 0 if true.
|
||||
# Returns 1 if not.
|
||||
#
|
||||
function check_executes()
|
||||
{
|
||||
local cmd
|
||||
local all_ok="yes"
|
||||
for cmd in "$@"
|
||||
do
|
||||
if ! type "${cmd}" &>/dev/null
|
||||
then
|
||||
echo "Command \"${cmd}\" not found." >&2
|
||||
all_ok="no"
|
||||
fi
|
||||
done
|
||||
[ "${all_ok}" = "yes" ]
|
||||
}
|
||||
|
||||
#
|
||||
# check_exec_or_exit Check for required executables.
|
||||
#
|
||||
# Exits (not returns) if commands listed on command line do not exist.
|
||||
#
|
||||
# Returns 0 if true.
|
||||
# Exits with 1 if not.
|
||||
#
|
||||
function check_exec_or_exit()
|
||||
{
|
||||
check_executes "$@"
|
||||
exit_if_bad "$?" "Above listed required command(s) not found."
|
||||
return 0
|
||||
}
|
||||
|
||||
TMP_DIR=""
|
||||
|
||||
#
|
||||
# internal_setup Script setup
|
||||
#
|
||||
# Returns 0 on success.
|
||||
# Exits (not returns) with 1 on failure.
|
||||
#
|
||||
function internal_setup()
|
||||
{
|
||||
shopt -s extglob
|
||||
|
||||
# Trap exit for internal_cleanup function.
|
||||
trap "internal_cleanup" EXIT
|
||||
|
||||
check_exec_or_exit awk mktemp printf
|
||||
|
||||
umask 0077
|
||||
|
||||
TMP_DIR="$(mktemp -d "/tmp/${0##*/}.XXXXXXXX" 2>/dev/null)"
|
||||
[ -d "${TMP_DIR}" ]
|
||||
exit_if_bad "$?" "Make temporary directory failed."
|
||||
|
||||
custom_setup
|
||||
}
|
||||
|
||||
#
|
||||
# internal_cleanup Script cleanup (reached via trap 0)
|
||||
#
|
||||
# Destory any temporarily facility created by internal_setup.
|
||||
#
|
||||
function internal_cleanup()
|
||||
{
|
||||
custom_cleanup
|
||||
|
||||
[ -d "${TMP_DIR}" ] && rm -rf "${TMP_DIR}"
|
||||
}
|
||||
|
||||
#
|
||||
# custom_setup
|
||||
#
|
||||
function custom_setup()
|
||||
{
|
||||
check_exec_or_exit awk sed tr date
|
||||
}
|
||||
|
||||
#
|
||||
# custom_cleanup
|
||||
#
|
||||
function custom_cleanup()
|
||||
{
|
||||
:
|
||||
}
|
||||
|
||||
#
|
||||
# cleanup_n_exec Do the cleanup, then execute the command
|
||||
#
|
||||
# $1+ The command to execute
|
||||
#
|
||||
function cleanup_n_exec()
|
||||
{
|
||||
internal_cleanup
|
||||
|
||||
exec "$@"
|
||||
}
|
||||
|
||||
internal_setup
|
||||
|
||||
#
|
||||
# xcattestlog2sql
|
||||
#
|
||||
# $1 The name of the test run
|
||||
# $2 Log file of xcattest
|
||||
#
|
||||
function xcattestlog2sql()
|
||||
{
|
||||
local test_run_name="$1"
|
||||
local logfile="$2"
|
||||
|
||||
local test_case_name=""
|
||||
local test_case_result=""
|
||||
local duration=""
|
||||
|
||||
[ -n "${test_run_name}" ]
|
||||
warn_if_bad "$?" "test run has no name" || return 1
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
--
|
||||
-- Test run has name '${test_run_name}'
|
||||
--
|
||||
|
||||
EOF
|
||||
|
||||
[ -f "${logfile}" ]
|
||||
warn_if_bad "$?" "${logfile}: No such log file" || return 1
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
--
|
||||
-- Analysis file '${logfile}'
|
||||
--
|
||||
|
||||
EOF
|
||||
|
||||
while read -r test_case_name test_case_result duration
|
||||
do
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
INSERT INTO TestCase (TestCaseId, TestCaseName)
|
||||
SELECT * FROM (SELECT NULL, '${test_case_name}') AS tmp
|
||||
WHERE NOT EXISTS (
|
||||
SELECT TestCaseId FROM TestCase WHERE TestCaseName = '${test_case_name}'
|
||||
) LIMIT 1;
|
||||
|
||||
INSERT INTO ResultDict (ResultId, ResultName)
|
||||
SELECT * FROM (SELECT NULL, '${test_case_result}') AS tmp
|
||||
WHERE NOT EXISTS (
|
||||
SELECT ResultId FROM ResultDict WHERE ResultName = '${test_case_result}'
|
||||
) LIMIT 1;
|
||||
|
||||
REPLACE INTO TestResult (TestRunId, TestCaseId, ResultId, DurationTime)
|
||||
SELECT (
|
||||
SELECT TestRunId FROM TestRun WHERE TestRunName = '${test_run_name}'
|
||||
) AS TestRunId, (
|
||||
SELECT TestCaseId FROM TestCase WHERE TestCaseName = '${test_case_name}'
|
||||
) AS TestCaseId, (
|
||||
SELECT ResultId FROM ResultDict WHERE ResultName = '${test_case_result}'
|
||||
) AS ResultId, '${duration}';
|
||||
|
||||
EOF
|
||||
done < <(tr -d '\r' <"${logfile}" | grep "^------END" |
|
||||
sed -e 's/^.*END::\(.*\)::\([A-Za-z0-9]*\)::.*Duration::\(-*[0-9]*\) sec.*$/\1 \2 \3/')
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# xcattestbundle2sql
|
||||
#
|
||||
# $1 The name of the test run
|
||||
# $2 Bundle file of xcattest
|
||||
#
|
||||
function xcattestbundle2sql()
|
||||
{
|
||||
local test_run_name="$1"
|
||||
local logfile="$2"
|
||||
|
||||
local test_case_name=""
|
||||
local test_case_result="No run"
|
||||
|
||||
[ -n "${test_run_name}" ]
|
||||
warn_if_bad "$?" "test run has no name" || return 1
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
--
|
||||
-- Test run has name '${test_run_name}'
|
||||
--
|
||||
|
||||
EOF
|
||||
|
||||
[ -f "${logfile}" ]
|
||||
warn_if_bad "$?" "${logfile}: No such log file" || return 1
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
--
|
||||
-- Analysis file '${logfile}'
|
||||
--
|
||||
|
||||
INSERT INTO ResultDict (ResultId, ResultName)
|
||||
SELECT * FROM (SELECT NULL, '${test_case_result}') AS tmp
|
||||
WHERE NOT EXISTS (
|
||||
SELECT ResultId FROM ResultDict WHERE ResultName = '${test_case_result}'
|
||||
) LIMIT 1;
|
||||
|
||||
EOF
|
||||
|
||||
while read -r test_case_name
|
||||
do
|
||||
# Remove any comment
|
||||
test_case_name="${test_case_name%%#*}"
|
||||
# Chomp
|
||||
test_case_name=$(echo ${test_case_name})
|
||||
[ -z "${test_case_name}" ] && continue
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
INSERT INTO TestCase (TestCaseId, TestCaseName)
|
||||
SELECT * FROM (SELECT NULL, '${test_case_name}') AS tmp
|
||||
WHERE NOT EXISTS (
|
||||
SELECT TestCaseId FROM TestCase WHERE TestCaseName = '${test_case_name}'
|
||||
) LIMIT 1;
|
||||
|
||||
INSERT IGNORE INTO TestResult (TestRunId, TestCaseId, ResultId, DurationTime)
|
||||
SELECT (
|
||||
SELECT TestRunId FROM TestRun WHERE TestRunName = '${test_run_name}'
|
||||
) AS TestRunId, (
|
||||
SELECT TestCaseId FROM TestCase WHERE TestCaseName = '${test_case_name}'
|
||||
) AS TestCaseId, (
|
||||
SELECT ResultId FROM ResultDict WHERE ResultName = '${test_case_result}'
|
||||
) AS ResultId, '0';
|
||||
|
||||
EOF
|
||||
done < <(tr -d '\r' <"${logfile}")
|
||||
}
|
||||
|
||||
#
|
||||
# jenkinsprojectlog2sql
|
||||
#
|
||||
# $1 Log file of jenkins project run
|
||||
#
|
||||
# When return 0, will set global shell variable TestRunName
|
||||
#
|
||||
function jenkinsprojectlog2sql()
|
||||
{
|
||||
local logfile="$1"
|
||||
local foo=""
|
||||
|
||||
local test_run_name=""
|
||||
local start_time=""
|
||||
local end_time=""
|
||||
local os=""
|
||||
local arch=""
|
||||
local xcat_git_commit=""
|
||||
local memo=""
|
||||
|
||||
[ -f "${logfile}" ]
|
||||
warn_if_bad "$?" "${logfile}: No such log file" || return 1
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
--
|
||||
-- Analysis file '${logfile}'
|
||||
--
|
||||
|
||||
EOF
|
||||
|
||||
test_run_name="$(tr -d '\r' <"${logfile}" |
|
||||
awk '/project.*description/ { print $(NF - 1) }')"
|
||||
[ -n "${test_run_name}" ]
|
||||
warn_if_bad "$?" "${test_run_name}: fail to parse test run name" || return 1
|
||||
|
||||
foo="$(tr -d '\r' <"${logfile}" | head -n 1 | cut -d ' ' -f 1)"
|
||||
[ "${#foo}" = 14 ]
|
||||
warn_if_bad "$?" "${foo}: fail to parse test start time" || return 1
|
||||
start_time="${foo:0:4}-${foo:4:2}-${foo:6:2} ${foo:8:2}:${foo:10:2}:${foo:12:2}"
|
||||
|
||||
foo="$(tr -d '\r' <"${logfile}" | tail -n 1 | cut -d ' ' -f 1)"
|
||||
[ "${#foo}" = 14 ]
|
||||
warn_if_bad "$?" "${foo}: fail to parse test end time" || return 1
|
||||
end_time="${foo:0:4}-${foo:4:2}-${foo:6:2} ${foo:8:2}:${foo:10:2}:${foo:12:2}"
|
||||
|
||||
arch="$(tr -d '\r' <"${logfile}" | awk -F - '/project.*description/ { print $2 }')"
|
||||
[ "${arch}" = "ppc64el" ] && arch="ppc64le"
|
||||
[ -n "${arch}" ]
|
||||
warn_if_bad "$?" "${arch}: fail to parse arch" || return 1
|
||||
|
||||
os="$(tr -d '\r' <"${logfile}" | awk '/os.*=>/ { print $NF }')"
|
||||
[ -n "${os}" ]
|
||||
warn_if_bad "$?" "${os}: fail to parse operating system" || return 1
|
||||
|
||||
memo="$(tr -d '\r' <"${logfile}" | grep -A 7 'project.*description' | cut -d ' ' -f 4-)"
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
INSERT INTO ArchDict (ArchId, ArchName)
|
||||
SELECT * FROM (SELECT NULL, '${arch}') AS tmp
|
||||
WHERE NOT EXISTS (
|
||||
SELECT ArchId FROM ArchDict WHERE ArchName = '${arch}'
|
||||
) LIMIT 1;
|
||||
|
||||
INSERT INTO OSDict (OSId, OSName)
|
||||
SELECT * FROM (SELECT NULL, '${os}') AS tmp
|
||||
WHERE NOT EXISTS (
|
||||
SELECT OSId FROM OSDict WHERE OSName = '${os}'
|
||||
) LIMIT 1;
|
||||
|
||||
INSERT IGNORE INTO TestRun
|
||||
(TestRunId, TestRunName, StartTime, EndTime, ArchId, OSId, xCATgitCommit, Memo)
|
||||
SELECT NULL, '${test_run_name}', '${start_time}', '${end_time}', (
|
||||
SELECT ArchId FROM ArchDict WHERE ArchName = '${arch}'
|
||||
) AS ArchId, (
|
||||
SELECT OSId FROM OSDict WHERE OSName = '${os}'
|
||||
) AS OSId, '${xcat_git_commit}', '${memo}';
|
||||
|
||||
EOF
|
||||
|
||||
TestRunName="${test_run_name}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Main
|
||||
|
||||
declare VERSION="0.00.1"
|
||||
|
||||
declare xCATjkLog_DIR=""
|
||||
declare TestRunName=""
|
||||
|
||||
declare JenkinsProjectLog=""
|
||||
declare xCATTestLogs=""
|
||||
|
||||
while [ "$#" -gt "0" ]
|
||||
do
|
||||
case "$1" in
|
||||
"--help")
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
[ "$1" == "--" ] && shift
|
||||
[ -z "${xCATjkLog_DIR}" ]
|
||||
exit_if_bad "$?" "invalid predicate - $1"
|
||||
xCATjkLog_DIR="$1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
[ -z "${xCATjkLog_DIR}" ] && usage >&2 && exit 1
|
||||
|
||||
[ -d "${xCATjkLog_DIR}" ]
|
||||
exit_if_bad "$?" "${xCATjkLog_DIR}: No such directory"
|
||||
|
||||
# Check if the mail log is there. If it is not, exit directly
|
||||
JenkinsMailLog="$(echo "${xCATjkLog_DIR}/mail."*)"
|
||||
[ -f "${JenkinsMailLog}" ]
|
||||
exit_if_bad "$?" "${JenkinsMailLog}: no such log file"
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<EOF
|
||||
-- xCATjkLog2SQL - version ${VERSION}
|
||||
--
|
||||
-- Run on host ${HOSTNAME}
|
||||
-- Database: xcatjkloganalyzer
|
||||
-- ------------------------------------------------------
|
||||
-- Log directory '${xCATjkLog_DIR}'
|
||||
|
||||
EOF
|
||||
|
||||
JenkinsProjectLog="$(echo "${xCATjkLog_DIR}/log."*)"
|
||||
jenkinsprojectlog2sql "${JenkinsProjectLog}"
|
||||
exit_if_bad "$?" "${JenkinsProjectLog}: parse error"
|
||||
|
||||
xCATTestBundle="$(echo "${xCATjkLog_DIR}/"*".bundle")"
|
||||
xcattestbundle2sql "${TestRunName}" "${xCATTestBundle}"
|
||||
warn_if_bad "$?" "${xCATTestBundle}: parse error"
|
||||
|
||||
for xCATTestLog in "${xCATjkLog_DIR}/xcattest.log."*
|
||||
do
|
||||
xcattestlog2sql "${TestRunName}" "${xCATTestLog}"
|
||||
warn_if_bad "$?" "${xCATTestLog}: parse error"
|
||||
done
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<EOF
|
||||
-- Logs parse completed on $(date "+%Y-%m-%d %H:%M:%S %z")
|
||||
EOF
|
||||
|
||||
exit 0
|
@ -1,33 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT="$0"
|
||||
! type readlink >/dev/null 2>&1 &&
|
||||
echo "Command \"readlink\" not found" >&2 && exit 1
|
||||
while [ -L "${SCRIPT}" ]
|
||||
do
|
||||
LINK="$(readlink "${SCRIPT}")"
|
||||
if [ "/" = "${LINK:0:1}" ]
|
||||
then
|
||||
SCRIPT="${LINK}"
|
||||
else
|
||||
SCRIPT="${SCRIPT%/*}/${LINK}"
|
||||
fi
|
||||
done
|
||||
BASE_DIR="${SCRIPT%/*}"
|
||||
|
||||
xCATjkScanLogs="${BASE_DIR}/xcatjk-scanlogs.sh"
|
||||
if [ ! -x "${xCATjkScanLogs}" ]
|
||||
then
|
||||
echo "Script ${xCATjkScanLogs} not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<EOF
|
||||
-- xCATjkLogs scan last three days
|
||||
--
|
||||
-- Run on host ${HOSTNAME}
|
||||
-- ------------------------------------------------------
|
||||
|
||||
EOF
|
||||
|
||||
"${xCATjkScanLogs}" --recent /xCATjk/log
|
@ -1,43 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT="$0"
|
||||
! type readlink >/dev/null 2>&1 &&
|
||||
echo "Command \"readlink\" not found" >&2 && exit 1
|
||||
while [ -L "${SCRIPT}" ]
|
||||
do
|
||||
LINK="$(readlink "${SCRIPT}")"
|
||||
if [ "/" = "${LINK:0:1}" ]
|
||||
then
|
||||
SCRIPT="${LINK}"
|
||||
else
|
||||
SCRIPT="${SCRIPT%/*}/${LINK}"
|
||||
fi
|
||||
done
|
||||
BASE_DIR="${SCRIPT%/*}"
|
||||
|
||||
SQLofCreateTables="${BASE_DIR}/xCATjkLogAnalyzer.sql"
|
||||
if [ ! -f "${SQLofCreateTables}" ]
|
||||
then
|
||||
echo "${SQLofCreateTables}: SQL file not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
xCATjkScanLogs="${BASE_DIR}/xcatjk-scanlogs.sh"
|
||||
if [ ! -x "${xCATjkScanLogs}" ]
|
||||
then
|
||||
echo "Script ${xCATjkScanLogs} not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<EOF
|
||||
-- xCATjkLogs redo everything
|
||||
--
|
||||
-- Run on host ${HOSTNAME}
|
||||
-- ------------------------------------------------------
|
||||
|
||||
EOF
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <"${SQLofCreateTables}"
|
||||
|
||||
"${xCATjkScanLogs}" /xCATjk/log
|
@ -1,249 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
function usage()
|
||||
{
|
||||
local script="${0##*/}"
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<-EOF
|
||||
Usage: ${script} [OPTIONS] DIRECTORY
|
||||
|
||||
Options:
|
||||
--help display this help and exit
|
||||
--recent scan logs for the last three days
|
||||
|
||||
Examples:
|
||||
|
||||
${script} --recent /xCATjk/log
|
||||
EOF
|
||||
}
|
||||
|
||||
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
export PATH
|
||||
|
||||
#
|
||||
# warn_if_bad Put out warning message(s) if $1 has bad RC.
|
||||
#
|
||||
# $1 0 (pass) or non-zero (fail).
|
||||
# $2+ Remaining arguments printed only if the $1 is non-zero.
|
||||
#
|
||||
# Incoming $1 is returned unless it is 0
|
||||
#
|
||||
function warn_if_bad()
|
||||
{
|
||||
local -i rc="$1"
|
||||
local script="${0##*/}"
|
||||
|
||||
# Ignore if no problems
|
||||
[ "${rc}" -eq "0" ] && return 0
|
||||
|
||||
# Broken
|
||||
shift
|
||||
echo "${script}: $@" >&2
|
||||
return "${rc}"
|
||||
}
|
||||
|
||||
#
|
||||
# exit_if_bad Put out error message(s) if $1 has bad RC.
|
||||
#
|
||||
# $1 0 (pass) or non-zero (fail).
|
||||
# $2+ Remaining arguments printed only if the $1 is non-zero.
|
||||
#
|
||||
# Exits with 1 unless $1 is 0
|
||||
#
|
||||
function exit_if_bad()
|
||||
{
|
||||
warn_if_bad "$@" || exit 1
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# check_root_or_exit
|
||||
#
|
||||
# Breaks the script if not running as root.
|
||||
#
|
||||
# If this returns 1, the invoker MUST abort the script.
|
||||
#
|
||||
# Returns 0 if running as root
|
||||
# Returns 1 if not (and breaks the script)
|
||||
#
|
||||
function check_root_or_exit()
|
||||
{
|
||||
[ "${UID}" -eq "0" ]
|
||||
exit_if_bad "$?" "Must be run by UID=0. Actual UID=${UID}."
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# check_executes Check for executable(s)
|
||||
#
|
||||
# Returns 0 if true.
|
||||
# Returns 1 if not.
|
||||
#
|
||||
function check_executes()
|
||||
{
|
||||
local cmd
|
||||
local all_ok="yes"
|
||||
for cmd in "$@"
|
||||
do
|
||||
if ! type "${cmd}" &>/dev/null
|
||||
then
|
||||
echo "Command \"${cmd}\" not found." >&2
|
||||
all_ok="no"
|
||||
fi
|
||||
done
|
||||
[ "${all_ok}" = "yes" ]
|
||||
}
|
||||
|
||||
#
|
||||
# check_exec_or_exit Check for required executables.
|
||||
#
|
||||
# Exits (not returns) if commands listed on command line do not exist.
|
||||
#
|
||||
# Returns 0 if true.
|
||||
# Exits with 1 if not.
|
||||
#
|
||||
function check_exec_or_exit()
|
||||
{
|
||||
check_executes "$@"
|
||||
exit_if_bad "$?" "Above listed required command(s) not found."
|
||||
return 0
|
||||
}
|
||||
|
||||
TMP_DIR=""
|
||||
|
||||
#
|
||||
# internal_setup Script setup
|
||||
#
|
||||
# Returns 0 on success.
|
||||
# Exits (not returns) with 1 on failure.
|
||||
#
|
||||
function internal_setup()
|
||||
{
|
||||
shopt -s extglob
|
||||
|
||||
# Trap exit for internal_cleanup function.
|
||||
trap "internal_cleanup" EXIT
|
||||
|
||||
check_exec_or_exit awk mktemp printf
|
||||
|
||||
umask 0077
|
||||
|
||||
TMP_DIR="$(mktemp -d "/tmp/${0##*/}.XXXXXXXX" 2>/dev/null)"
|
||||
[ -d "${TMP_DIR}" ]
|
||||
exit_if_bad "$?" "Make temporary directory failed."
|
||||
|
||||
custom_setup
|
||||
}
|
||||
|
||||
#
|
||||
# internal_cleanup Script cleanup (reached via trap 0)
|
||||
#
|
||||
# Destory any temporarily facility created by internal_setup.
|
||||
#
|
||||
function internal_cleanup()
|
||||
{
|
||||
custom_cleanup
|
||||
|
||||
[ -d "${TMP_DIR}" ] && rm -rf "${TMP_DIR}"
|
||||
}
|
||||
|
||||
#
|
||||
# custom_setup
|
||||
#
|
||||
function custom_setup()
|
||||
{
|
||||
check_exec_or_exit awk dirname
|
||||
}
|
||||
|
||||
#
|
||||
# custom_cleanup
|
||||
#
|
||||
function custom_cleanup()
|
||||
{
|
||||
:
|
||||
}
|
||||
|
||||
#
|
||||
# cleanup_n_exec Do the cleanup, then execute the command
|
||||
#
|
||||
# $1+ The command to execute
|
||||
#
|
||||
function cleanup_n_exec()
|
||||
{
|
||||
internal_cleanup
|
||||
|
||||
exec "$@"
|
||||
}
|
||||
|
||||
internal_setup
|
||||
|
||||
SCRIPT="$0"
|
||||
! type readlink >/dev/null 2>&1 &&
|
||||
echo "Command \"readlink\" not found" >&2 && exit 1
|
||||
while [ -L "${SCRIPT}" ]
|
||||
do
|
||||
LINK="$(readlink "${SCRIPT}")"
|
||||
if [ "/" = "${LINK:0:1}" ]
|
||||
then
|
||||
SCRIPT="${LINK}"
|
||||
else
|
||||
SCRIPT="${SCRIPT%/*}/${LINK}"
|
||||
fi
|
||||
done
|
||||
BASE_DIR="${SCRIPT%/*}"
|
||||
|
||||
xCATjkLog2SQL="${BASE_DIR}/xcatjk-log2sql.sh"
|
||||
[ -x "${xCATjkLog2SQL}" ]
|
||||
exit_if_bad "$?" "Script ${xCATjkLog2SQL} not found"
|
||||
|
||||
declare VERSION="0.0.1"
|
||||
|
||||
declare xCATjkLog_TOPDIR=""
|
||||
declare -a FIND_ARGS=()
|
||||
|
||||
while [ "$#" -gt "0" ]
|
||||
do
|
||||
case "$1" in
|
||||
"--help")
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
"--recent")
|
||||
FIND_ARGS=(-mtime -3)
|
||||
;;
|
||||
*)
|
||||
[ "$1" == "--" ] && shift
|
||||
[ -z "${xCATjkLog_TopDir}" ]
|
||||
exit_if_bad "$?" "invalid predicate - $1"
|
||||
xCATjkLog_TopDir="$1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
[ -z "${xCATjkLog_TopDir}" ] && usage >&2 && exit 1
|
||||
|
||||
[ -d "${xCATjkLog_TopDir}" ]
|
||||
exit_if_bad "$?" "${xCATjkLog_TopDir}: No such directory"
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<EOF
|
||||
-- xCATjkScanLogs - version ${VERSION}
|
||||
--
|
||||
-- Run on host ${HOSTNAME}
|
||||
-- ------------------------------------------------------
|
||||
-- Top level log directory '${xCATjkLog_TopDir}'
|
||||
|
||||
EOF
|
||||
|
||||
find "${xCATjkLog_TopDir}" -name 'log.*-*-*' "${FIND_ARGS[@]}" -print0 |
|
||||
xargs -r -n 1 -0 awk '{ print $1, FILENAME; exit }' | sort -k 1 |
|
||||
awk '{ print $2 }' | xargs -r -n 1 dirname |
|
||||
xargs -r -n 1 "${xCATjkLog2SQL}"
|
||||
|
||||
while read -r ; do echo "${REPLY}" ; done <<EOF
|
||||
|
||||
--
|
||||
-- All log directories parse completed on $(date "+%Y-%m-%d %H:%M:%S %z")
|
||||
EOF
|
||||
|
||||
exit 0
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user