diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 799ff79a0..cbb9a32c2 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -85,5 +85,5 @@ CurlOptions: @CTEST_CURL_OPTIONS@ # For CTest submissions that timeout, these options # specify behavior for retrying the submission -CTestRetryTime: @CTEST_SUBMIT_RETRY_DELAY@ -CTestRetryCount: @CTEST_SUBMIT_RETRY_COUNT@ +CTestSubmitRetryDelay: @CTEST_SUBMIT_RETRY_DELAY@ +CTestSubmitRetryCount: @CTEST_SUBMIT_RETRY_COUNT@ diff --git a/Source/CTest/cmCTestSubmitCommand.h b/Source/CTest/cmCTestSubmitCommand.h index 14dfa37c0..5a80b45a5 100644 --- a/Source/CTest/cmCTestSubmitCommand.h +++ b/Source/CTest/cmCTestSubmitCommand.h @@ -63,7 +63,8 @@ public: virtual const char* GetFullDocumentation() { return - " ctest_submit([PARTS ...] [FILES ...] [RETURN_VALUE res])\n" + " ctest_submit([PARTS ...] [FILES ...] [RETRY_COUNT count] " + " [RETRY_DELAY delay][RETURN_VALUE res])\n" "By default all available parts are submitted if no PARTS or FILES " "are specified. " "The PARTS option lists a subset of parts to be submitted. " @@ -79,7 +80,11 @@ public: " ExtraFiles = Files listed by CTEST_EXTRA_SUBMIT_FILES\n" " Submit = nothing\n" "The FILES option explicitly lists specific files to be submitted. " - "Each individual file must exist at the time of the call.\n"; + "Each individual file must exist at the time of the call.\n" + "The RETRY_DELAY option specifies how long in seconds to wait after " + "a timed-out submission before attempting to re-submit.\n" + "The RETRY_COUNT option specifies how many times to retry a timed-out " + "submission.\n"; } cmTypeMacro(cmCTestSubmitCommand, cmCTestHandlerCommand); diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index fca05aca1..fe00a8236 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -55,12 +55,19 @@ public: std::string Message; private: - std::string CurrentValue; - std::string CurrentTag; + + std::vector CurrentValue; + + std::string GetCurrentValue() + { + std::string val; + val.assign(&this->CurrentValue[0], this->CurrentValue.size()); + return val; + } virtual void StartElement(const char* name, const char** atts) { - this->CurrentValue = ""; + this->CurrentValue.clear(); if(strcmp(name, "cdash") == 0) { this->CDashVersion = this->FindAttribute(atts, "version"); @@ -76,12 +83,12 @@ private: { if(strcmp(name, "status") == 0) { - this->CurrentValue = cmSystemTools::UpperCase(this->CurrentValue); - if(this->CurrentValue == "OK" || this->CurrentValue == "SUCCESS") + std::string status = cmSystemTools::UpperCase(this->GetCurrentValue()); + if(status == "OK" || status == "SUCCESS") { this->Status = STATUS_OK; } - else if(this->CurrentValue == "WARNING") + else if(status == "WARNING") { this->Status = STATUS_WARNING; } @@ -92,15 +99,15 @@ private: } else if(strcmp(name, "filename") == 0) { - this->Filename = this->CurrentValue; + this->Filename = this->GetCurrentValue(); } else if(strcmp(name, "md5") == 0) { - this->MD5 = this->CurrentValue; + this->MD5 = this->GetCurrentValue(); } else if(strcmp(name, "message") == 0) { - this->Message = this->CurrentValue; + this->Message = this->GetCurrentValue(); } } }; @@ -445,9 +452,8 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const cmStdString& localprefix, char md5[33]; cmSystemTools::ComputeFileMD5(local_file.c_str(), md5); md5[32] = 0; - std::stringstream md5string; - md5string << "&MD5=" << md5; - upload_as += md5string.str(); + upload_as += "&MD5="; + upload_as += md5; struct stat st; if ( ::stat(local_file.c_str(), &st) ) @@ -501,9 +507,9 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const cmStdString& localprefix, "" : this->GetOption("RetryCount"); int time = retryTime == "" ? atoi(this->CTest->GetCTestConfiguration( - "CTestRetryTime").c_str()) : atoi(retryTime.c_str()); + "CTestSubmitRetryDelay").c_str()) : atoi(retryTime.c_str()); int count = retryCount == "" ? atoi(this->CTest->GetCTestConfiguration( - "CTestRetryCount").c_str()) : atoi(retryCount.c_str()); + "CTestSubmitRetryCount").c_str()) : atoi(retryCount.c_str()); for(int i = 0; i < count; i++) {