From af5ef0c96982be431791ea35d6de8798ffe70254 Mon Sep 17 00:00:00 2001 From: Zach Mullen Date: Thu, 10 Jun 2010 12:25:49 -0400 Subject: Testing for CTest checksum --- Source/CTest/cmCTestSubmitCommand.cxx | 12 ++++++- Source/CTest/cmCTestSubmitCommand.h | 2 ++ Source/CTest/cmCTestSubmitHandler.cxx | 60 ++++++++++++++++++++--------------- Tests/CMakeLists.txt | 11 +++++++ Tests/CTestTest3/test.cmake.in | 2 +- Tests/CTestTestChecksum/test.cmake.in | 23 ++++++++++++++ 6 files changed, 82 insertions(+), 28 deletions(-) create mode 100644 Tests/CTestTestChecksum/test.cmake.in diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx index 6a45d58..24974e3 100644 --- a/Source/CTest/cmCTestSubmitCommand.cxx +++ b/Source/CTest/cmCTestSubmitCommand.cxx @@ -147,10 +147,12 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() static_cast(handler)->SelectParts(this->Parts); } - static_cast(handler)->SetOption("RetryTime", + static_cast(handler)->SetOption("RetryDelay", this->RetryDelay.c_str()); static_cast(handler)->SetOption("RetryCount", this->RetryCount.c_str()); + static_cast(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. diff --git a/Source/CTest/cmCTestSubmitCommand.h b/Source/CTest/cmCTestSubmitCommand.h index 5a80b45..edc9c65 100644 --- a/Source/CTest/cmCTestSubmitCommand.h +++ b/Source/CTest/cmCTestSubmitCommand.h @@ -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 Parts; bool FilesMentioned; + bool InternalTest; cmCTest::SetOfStrings Files; std::string RetryCount; std::string RetryDelay; diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index 21c005d..4ca382c 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -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