blob: dec5f2e8b581cc4baa3cf7d21dd2bb26ba17cdea [file] [log] [blame]
# Copyright 2018 Open Networking Foundation (ONF)
#
# Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
# the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
# or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
#
# TestON is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# TestON is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with TestON. If not, see <http://www.gnu.org/licenses/>.
#
# If you have any questions, or if you don't understand R,
# please contact Jeremy Ronquillo: j_ronquillo@u.pacific.edu
pipelineMinValue = 1000
initSQL <- function( host, port, user, pass ) {
dbConnect( dbDriver( "PostgreSQL" ),
dbname = "onostest",
host = host,
port = strtoi( port ),
user = user,
password = pass )
}
simpleSQLCommand <- function( testName, branch, limit=0 ){
paste( "SELECT * FROM executed_test_tests WHERE actual_test_name='",
testName,
"' AND branch='",
branch,
"' ORDER BY date DESC ",
if (limit > 0) "LIMIT " else "",
if (limit > 0) limit else "",
sep="" )
}
retrieveData <- function( con, sqlCommand ){
print( "Sending SQL command:" )
print( sqlCommand )
result <- dbGetQuery( con, sqlCommand )
# Check if data has been received
if ( nrow( result ) == 0 ){
print( "[ERROR]: No data received from the databases. Please double check this by manually running the SQL command." )
quit( status = 1 )
}
result
}
generateMultiTestMultiBuildSQLCommand <- function( branch, testsToInclude, buildsToShow ){
tests <- getTestList( testsToInclude )
multiTestSQLCommand( branch, tests, buildsToShow, TRUE )
}
generateMultiTestSingleBuildSQLCommand <- function( branch, testsToInclude, buildToShow ){
tests <- getTestList( testsToInclude )
operator <- "= "
if ( buildToShow == "latest" ){
operator <- ">= "
buildToShow <- "1000"
}
multiTestSQLCommand( branch, tests, buildToShow, FALSE, operator )
}
generateGroupedTestSingleBuildSQLCommand <- function( branch, groupsToInclude, buildToShow ){
operator <- "= "
if( buildToShow == "latest" ){
operator <- ">= "
buildToShow <- "1000"
}
tests <- strsplit( groupsToInclude, ";" )
sqlCommands <- c()
for( i in 1:length( tests[[1]] ) ){
splitTestList <- strsplit( tests[[1]][ i ], "-" )
testList <- splitTestList[[1]][2]
testsCommand <- "'"
for ( test in as.list( strsplit( testList, "," )[[1]] ) ){
testsCommand <- paste( testsCommand, test, "','", sep="" )
}
testsCommand <- substr( testsCommand, 0, nchar( testsCommand ) - 2 )
sqlCommands = c( sqlCommands, multiTestSQLCommand( branch, testsCommand, buildToShow, FALSE, operator ) )
}
sqlCommands
}
getTitlesFromGroupTest <- function( branch, groupsToInclude ){
tests <- strsplit( groupsToInclude, ";" )
titles <- list()
for( i in 1:length( tests[[1]] ) ){
splitTestList <- strsplit( tests[[1]][ i ], "-" )
titles[[i]] <- splitTestList[[1]][1]
}
titles
}
getTestList <- function( testsToInclude ){
tests <- "'"
for ( test in as.list( strsplit( testsToInclude, "," )[[1]] ) ){
tests <- paste( tests, test, "','", sep="" )
}
tests <- substr( tests, 0, nchar( tests ) - 2 )
tests
}
multiTestSQLCommand <- function( branch, tests, builds, isDisplayingMultipleBuilds, operator=">= " ){
if ( isDisplayingMultipleBuilds ){
operator2 <- "<="
multipleBuildsToShow <- builds
singleBuild <- pipelineMinValue
}
else{
operator2 <- "="
multipleBuildsToShow <- 1
singleBuild <- builds
}
paste( "SELECT * ",
"FROM executed_test_tests a ",
"WHERE ( SELECT COUNT( * ) FROM executed_test_tests b ",
"WHERE b.branch='",
branch,
"' AND b.actual_test_name IN (",
tests,
") AND a.actual_test_name = b.actual_test_name AND a.date <= b.date AND b.build ", operator,
singleBuild,
" ) ",
operator2,
" ",
multipleBuildsToShow,
" AND a.branch='",
branch,
"' AND a.actual_test_name IN (",
tests,
") AND a.build ", operator,
singleBuild,
" ORDER BY a.actual_test_name DESC, a.date DESC",
sep="")
}