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)->SelectParts(this->Parts);
|
||||||
}
|
}
|
||||||
|
|
||||||
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("RetryTime",
|
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("RetryDelay",
|
||||||
this->RetryDelay.c_str());
|
this->RetryDelay.c_str());
|
||||||
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("RetryCount",
|
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("RetryCount",
|
||||||
this->RetryCount.c_str());
|
this->RetryCount.c_str());
|
||||||
|
static_cast<cmCTestSubmitHandler*>(handler)->SetOption("InternalTest",
|
||||||
|
this->InternalTest ? "ON" : "OFF");
|
||||||
|
|
||||||
return handler;
|
return handler;
|
||||||
}
|
}
|
||||||
@ -186,6 +188,12 @@ bool cmCTestSubmitCommand::CheckArgumentKeyword(std::string const& arg)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(arg == "INTERNAL_TEST_CHECKSUM")
|
||||||
|
{
|
||||||
|
this->InternalTest = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Look for other arguments.
|
// Look for other arguments.
|
||||||
return this->Superclass::CheckArgumentKeyword(arg);
|
return this->Superclass::CheckArgumentKeyword(arg);
|
||||||
}
|
}
|
||||||
@ -233,11 +241,13 @@ bool cmCTestSubmitCommand::CheckArgumentValue(std::string const& arg)
|
|||||||
if(this->ArgumentDoing == ArgumentDoingRetryCount)
|
if(this->ArgumentDoing == ArgumentDoingRetryCount)
|
||||||
{
|
{
|
||||||
this->RetryCount = arg;
|
this->RetryCount = arg;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this->ArgumentDoing == ArgumentDoingRetryDelay)
|
if(this->ArgumentDoing == ArgumentDoingRetryDelay)
|
||||||
{
|
{
|
||||||
this->RetryDelay = arg;
|
this->RetryDelay = arg;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Look for other arguments.
|
// Look for other arguments.
|
||||||
|
@ -29,6 +29,7 @@ public:
|
|||||||
{
|
{
|
||||||
this->PartsMentioned = false;
|
this->PartsMentioned = false;
|
||||||
this->FilesMentioned = false;
|
this->FilesMentioned = false;
|
||||||
|
this->InternalTest = false;
|
||||||
this->RetryCount = "";
|
this->RetryCount = "";
|
||||||
this->RetryDelay = "";
|
this->RetryDelay = "";
|
||||||
}
|
}
|
||||||
@ -107,6 +108,7 @@ protected:
|
|||||||
bool PartsMentioned;
|
bool PartsMentioned;
|
||||||
std::set<cmCTest::Part> Parts;
|
std::set<cmCTest::Part> Parts;
|
||||||
bool FilesMentioned;
|
bool FilesMentioned;
|
||||||
|
bool InternalTest;
|
||||||
cmCTest::SetOfStrings Files;
|
cmCTest::SetOfStrings Files;
|
||||||
std::string RetryCount;
|
std::string RetryCount;
|
||||||
std::string RetryDelay;
|
std::string RetryDelay;
|
||||||
|
@ -452,11 +452,19 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const cmStdString& localprefix,
|
|||||||
= url + ((url.find("?",0) == cmStdString::npos) ? "?" : "&")
|
= url + ((url.find("?",0) == cmStdString::npos) ? "?" : "&")
|
||||||
+ "FileName=" + ofile;
|
+ "FileName=" + ofile;
|
||||||
|
|
||||||
|
upload_as += "&MD5=";
|
||||||
|
|
||||||
|
if(cmSystemTools::IsOn(this->GetOption("InternalTest")))
|
||||||
|
{
|
||||||
|
upload_as += "bad_md5sum";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
char md5[33];
|
char md5[33];
|
||||||
cmSystemTools::ComputeFileMD5(local_file.c_str(), md5);
|
cmSystemTools::ComputeFileMD5(local_file.c_str(), md5);
|
||||||
md5[32] = 0;
|
md5[32] = 0;
|
||||||
upload_as += "&MD5=";
|
|
||||||
upload_as += md5;
|
upload_as += md5;
|
||||||
|
}
|
||||||
|
|
||||||
struct stat st;
|
struct stat st;
|
||||||
if ( ::stat(local_file.c_str(), &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 we time out or checksum fails, wait and retry
|
||||||
if(res == CURLE_OPERATION_TIMEDOUT || this->HasErrors)
|
if(res == CURLE_OPERATION_TIMEDOUT || this->HasErrors)
|
||||||
{
|
{
|
||||||
std::string retryTime = this->GetOption("RetryTime") == NULL ?
|
std::string retryDelay = this->GetOption("RetryDelay") == NULL ?
|
||||||
"" : this->GetOption("RetryTime");
|
"" : this->GetOption("RetryDelay");
|
||||||
std::string retryCount = this->GetOption("RetryCount") == NULL ?
|
std::string retryCount = this->GetOption("RetryCount") == NULL ?
|
||||||
"" : this->GetOption("RetryCount");
|
"" : this->GetOption("RetryCount");
|
||||||
|
|
||||||
int time = retryTime == "" ? atoi(this->CTest->GetCTestConfiguration(
|
int delay = retryDelay == "" ? atoi(this->CTest->GetCTestConfiguration(
|
||||||
"CTestSubmitRetryDelay").c_str()) : atoi(retryTime.c_str());
|
"CTestSubmitRetryDelay").c_str()) : atoi(retryDelay.c_str());
|
||||||
int count = retryCount == "" ? atoi(this->CTest->GetCTestConfiguration(
|
int count = retryCount == "" ? atoi(this->CTest->GetCTestConfiguration(
|
||||||
"CTestSubmitRetryCount").c_str()) : atoi(retryCount.c_str());
|
"CTestSubmitRetryCount").c_str()) : atoi(retryCount.c_str());
|
||||||
|
|
||||||
for(int i = 0; i < count; i++)
|
for(int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
cmCTestLog(this->CTest, HANDLER_OUTPUT,
|
cmCTestLog(this->CTest, HANDLER_OUTPUT,
|
||||||
" Connection timed out, waiting " << time << " seconds...\n");
|
" Connection timed out, waiting " << delay << " seconds...\n");
|
||||||
|
|
||||||
double stop = cmSystemTools::GetTime() + time;
|
double stop = cmSystemTools::GetTime() + delay;
|
||||||
while(cmSystemTools::GetTime() < stop) {} //wait <time> seconds
|
while(cmSystemTools::GetTime() < stop)
|
||||||
|
{
|
||||||
|
cmSystemTools::Delay(100);
|
||||||
|
}
|
||||||
|
|
||||||
cmCTestLog(this->CTest, HANDLER_OUTPUT,
|
cmCTestLog(this->CTest, HANDLER_OUTPUT,
|
||||||
" Retry submission: Attempt " << (i + 1) << " of "
|
" Retry submission: Attempt " << (i + 1) << " of "
|
||||||
@ -622,8 +633,6 @@ void cmCTestSubmitHandler
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
output = cmSystemTools::UpperCase(output);
|
output = cmSystemTools::UpperCase(output);
|
||||||
if(output.find("WARNING") != std::string::npos)
|
if(output.find("WARNING") != std::string::npos)
|
||||||
{
|
{
|
||||||
@ -640,7 +649,6 @@ void cmCTestSubmitHandler
|
|||||||
cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "\n");
|
cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmCTestSubmitHandler::TriggerUsingHTTP(
|
bool cmCTestSubmitHandler::TriggerUsingHTTP(
|
||||||
|
@ -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"
|
--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
|
# these tests take a long time, make sure they have it
|
||||||
# if timeouts have not already been set
|
# if timeouts have not already been set
|
||||||
GET_TEST_PROPERTY(CTestTest TIMEOUT PREVIOUS_TIMEOUT)
|
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_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_MEMCHECK(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res PARALLEL_LEVEL 5)
|
||||||
CTEST_COVERAGE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
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)
|
ELSE(svncommand)
|
||||||
MESSAGE("Cannot find SVN command: ${svncommand}")
|
MESSAGE("Cannot find SVN command: ${svncommand}")
|
||||||
|
23
Tests/CTestTestChecksum/test.cmake.in
Normal file
23
Tests/CTestTestChecksum/test.cmake.in
Normal file
@ -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…
x
Reference in New Issue
Block a user