Testing for CTest checksum
This commit is contained in:
parent
86e81b53c1
commit
af5ef0c969
|
@ -147,10 +147,12 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler()
|
|||
static_cast<cmCTestSubmitHandler*>(handler)->SelectParts(this->Parts);
|
||||
}
|
||||
|
||||
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("RetryTime",
|
||||
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("RetryDelay",
|
||||
this->RetryDelay.c_str());
|
||||
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("RetryCount",
|
||||
this->RetryCount.c_str());
|
||||
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("InternalTest",
|
||||
this->InternalTest ? "ON" : "OFF");
|
||||
|
||||
return handler;
|
||||
}
|
||||
|
@ -186,6 +188,12 @@ bool cmCTestSubmitCommand::CheckArgumentKeyword(std::string const& arg)
|
|||
return true;
|
||||
}
|
||||
|
||||
if(arg == "INTERNAL_TEST_CHECKSUM")
|
||||
{
|
||||
this->InternalTest = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Look for other arguments.
|
||||
return this->Superclass::CheckArgumentKeyword(arg);
|
||||
}
|
||||
|
@ -233,11 +241,13 @@ bool cmCTestSubmitCommand::CheckArgumentValue(std::string const& arg)
|
|||
if(this->ArgumentDoing == ArgumentDoingRetryCount)
|
||||
{
|
||||
this->RetryCount = arg;
|
||||
return true;
|
||||
}
|
||||
|
||||
if(this->ArgumentDoing == ArgumentDoingRetryDelay)
|
||||
{
|
||||
this->RetryDelay = arg;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Look for other arguments.
|
||||
|
|
|
@ -29,6 +29,7 @@ public:
|
|||
{
|
||||
this->PartsMentioned = false;
|
||||
this->FilesMentioned = false;
|
||||
this->InternalTest = false;
|
||||
this->RetryCount = "";
|
||||
this->RetryDelay = "";
|
||||
}
|
||||
|
@ -107,6 +108,7 @@ protected:
|
|||
bool PartsMentioned;
|
||||
std::set<cmCTest::Part> Parts;
|
||||
bool FilesMentioned;
|
||||
bool InternalTest;
|
||||
cmCTest::SetOfStrings Files;
|
||||
std::string RetryCount;
|
||||
std::string RetryDelay;
|
||||
|
|
|
@ -452,11 +452,19 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const cmStdString& localprefix,
|
|||
= url + ((url.find("?",0) == cmStdString::npos) ? "?" : "&")
|
||||
+ "FileName=" + ofile;
|
||||
|
||||
char md5[33];
|
||||
cmSystemTools::ComputeFileMD5(local_file.c_str(), md5);
|
||||
md5[32] = 0;
|
||||
upload_as += "&MD5=";
|
||||
upload_as += md5;
|
||||
|
||||
if(cmSystemTools::IsOn(this->GetOption("InternalTest")))
|
||||
{
|
||||
upload_as += "bad_md5sum";
|
||||
}
|
||||
else
|
||||
{
|
||||
char md5[33];
|
||||
cmSystemTools::ComputeFileMD5(local_file.c_str(), md5);
|
||||
md5[32] = 0;
|
||||
upload_as += md5;
|
||||
}
|
||||
|
||||
struct stat st;
|
||||
if ( ::stat(local_file.c_str(), &st) )
|
||||
|
@ -518,23 +526,26 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const cmStdString& localprefix,
|
|||
// If we time out or checksum fails, wait and retry
|
||||
if(res == CURLE_OPERATION_TIMEDOUT || this->HasErrors)
|
||||
{
|
||||
std::string retryTime = this->GetOption("RetryTime") == NULL ?
|
||||
"" : this->GetOption("RetryTime");
|
||||
std::string retryDelay = this->GetOption("RetryDelay") == NULL ?
|
||||
"" : this->GetOption("RetryDelay");
|
||||
std::string retryCount = this->GetOption("RetryCount") == NULL ?
|
||||
"" : this->GetOption("RetryCount");
|
||||
|
||||
int time = retryTime == "" ? atoi(this->CTest->GetCTestConfiguration(
|
||||
"CTestSubmitRetryDelay").c_str()) : atoi(retryTime.c_str());
|
||||
int delay = retryDelay == "" ? atoi(this->CTest->GetCTestConfiguration(
|
||||
"CTestSubmitRetryDelay").c_str()) : atoi(retryDelay.c_str());
|
||||
int count = retryCount == "" ? atoi(this->CTest->GetCTestConfiguration(
|
||||
"CTestSubmitRetryCount").c_str()) : atoi(retryCount.c_str());
|
||||
|
||||
for(int i = 0; i < count; i++)
|
||||
{
|
||||
cmCTestLog(this->CTest, HANDLER_OUTPUT,
|
||||
" Connection timed out, waiting " << time << " seconds...\n");
|
||||
" Connection timed out, waiting " << delay << " seconds...\n");
|
||||
|
||||
double stop = cmSystemTools::GetTime() + time;
|
||||
while(cmSystemTools::GetTime() < stop) {} //wait <time> seconds
|
||||
double stop = cmSystemTools::GetTime() + delay;
|
||||
while(cmSystemTools::GetTime() < stop)
|
||||
{
|
||||
cmSystemTools::Delay(100);
|
||||
}
|
||||
|
||||
cmCTestLog(this->CTest, HANDLER_OUTPUT,
|
||||
" Retry submission: Attempt " << (i + 1) << " of "
|
||||
|
@ -622,23 +633,20 @@ void cmCTestSubmitHandler
|
|||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
output = cmSystemTools::UpperCase(output);
|
||||
if(output.find("WARNING") != std::string::npos)
|
||||
{
|
||||
output = cmSystemTools::UpperCase(output);
|
||||
if(output.find("WARNING") != std::string::npos)
|
||||
{
|
||||
this->HasWarnings = true;
|
||||
}
|
||||
if(output.find("ERROR") != std::string::npos)
|
||||
{
|
||||
this->HasErrors = true;
|
||||
}
|
||||
this->HasWarnings = true;
|
||||
}
|
||||
if(output.find("ERROR") != std::string::npos)
|
||||
{
|
||||
this->HasErrors = true;
|
||||
}
|
||||
|
||||
if(this->HasWarnings || this->HasErrors)
|
||||
{
|
||||
cmCTestLog(this->CTest, HANDLER_OUTPUT, " Server Response:\n" <<
|
||||
cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "\n");
|
||||
}
|
||||
if(this->HasWarnings || this->HasErrors)
|
||||
{
|
||||
cmCTestLog(this->CTest, HANDLER_OUTPUT, " Server Response:\n" <<
|
||||
cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1449,6 +1449,17 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
|
|||
--output-log "${CMake_BINARY_DIR}/Tests/CTestTest3/testOutput.log"
|
||||
)
|
||||
|
||||
CONFIGURE_FILE("${CMake_SOURCE_DIR}/Tests/CTestTestChecksum/test.cmake.in"
|
||||
"${CMake_BINARY_DIR}/Tests/CTestTestChecksum/test.cmake" @ONLY
|
||||
ESCAPE_QUOTES)
|
||||
ADD_TEST(CTestTestChecksum ${CMAKE_CTEST_COMMAND}
|
||||
-S "${CMake_BINARY_DIR}/Tests/CTestTestChecksum/test.cmake" -V
|
||||
--output-log
|
||||
"${CMake_BINARY_DIR}/Tests/CTestTestChecksum/testOutput.log"
|
||||
)
|
||||
SET_TESTS_PROPERTIES(CTestTestChecksum PROPERTIES PASS_REGULAR_EXPRESSION
|
||||
"Submission failed: Checksum failed for file")
|
||||
|
||||
# these tests take a long time, make sure they have it
|
||||
# if timeouts have not already been set
|
||||
GET_TEST_PROPERTY(CTestTest TIMEOUT PREVIOUS_TIMEOUT)
|
||||
|
|
|
@ -113,7 +113,7 @@ IF(svncommand)
|
|||
CTEST_TEST(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res PARALLEL_LEVEL 5 SCHEDULE_RANDOM ON)
|
||||
CTEST_MEMCHECK(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res PARALLEL_LEVEL 5)
|
||||
CTEST_COVERAGE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
||||
CTEST_SUBMIT(RETRY_COUNT 4 RETRY_DELAY 10 RETURN_VALUE res)
|
||||
CTEST_SUBMIT(RETURN_VALUE res)
|
||||
|
||||
ELSE(svncommand)
|
||||
MESSAGE("Cannot find SVN command: ${svncommand}")
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
CMAKE_MINIMUM_REQUIRED(VERSION 2.1)
|
||||
|
||||
# Settings:
|
||||
SET(CTEST_DASHBOARD_ROOT "@CMake_BINARY_DIR@/Tests/CTestTest")
|
||||
SET(CTEST_SITE "@SITE@")
|
||||
SET(CTEST_BUILD_NAME "CTestTest-@BUILDNAME@-Checksum")
|
||||
|
||||
SET(CTEST_SOURCE_DIRECTORY "@CMake_SOURCE_DIR@/Tests/CTestTestParallel")
|
||||
SET(CTEST_BINARY_DIRECTORY "@CMake_BINARY_DIR@/Tests/CTestTestParallel")
|
||||
SET(CTEST_CVS_COMMAND "@CVSCOMMAND@")
|
||||
SET(CTEST_CMAKE_GENERATOR "@CMAKE_TEST_GENERATOR@")
|
||||
SET(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CONFIG_TYPE}")
|
||||
SET(CTEST_MEMORYCHECK_COMMAND "@MEMORYCHECK_COMMAND@")
|
||||
SET(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE "@MEMORYCHECK_SUPPRESSIONS_FILE@")
|
||||
SET(CTEST_MEMORYCHECK_COMMAND_OPTIONS "@MEMORYCHECK_COMMAND_OPTIONS@")
|
||||
SET(CTEST_COVERAGE_COMMAND "@COVERAGE_COMMAND@")
|
||||
SET(CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
|
||||
|
||||
CTEST_START(Experimental)
|
||||
CTEST_CONFIGURE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
||||
CTEST_BUILD(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
||||
CTEST_TEST(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res PARALLEL_LEVEL 4)
|
||||
CTEST_SUBMIT(RETRY_DELAY 3 RETRY_COUNT 2 INTERNAL_TEST_CHECKSUM RETURN_VALUE res)
|
Loading…
Reference in New Issue