| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file LICENSE.rst or https://cmake.org/licensing for details. */ |
| #pragma once |
| |
| #include "cmConfigure.h" // IWYU pragma: keep |
| |
| #include <iosfwd> |
| #include <set> |
| #include <string> |
| #include <vector> |
| |
| #include "cmCTest.h" |
| #include "cmCTestGenericHandler.h" |
| |
| /** \class cmCTestSubmitHandler |
| * \brief Helper class for CTest |
| * |
| * Submit testing results |
| * |
| */ |
| class cmCTestSubmitHandler : public cmCTestGenericHandler |
| { |
| public: |
| using Superclass = cmCTestGenericHandler; |
| |
| cmCTestSubmitHandler(cmCTest* ctest); |
| ~cmCTestSubmitHandler() override { this->LogFile = nullptr; } |
| |
| /* |
| * The main entry point for this class |
| */ |
| int ProcessHandler() override; |
| |
| /** Specify a set of parts (by name) to submit. */ |
| void SelectParts(std::set<cmCTest::Part> const& parts); |
| |
| /** Specify a set of files to submit. */ |
| void SelectFiles(std::set<std::string> const& files); |
| |
| void SetHttpHeaders(std::vector<std::string> const& v) |
| { |
| this->HttpHeaders.insert(this->HttpHeaders.end(), v.begin(), v.end()); |
| } |
| |
| private: |
| /** |
| * Submit file using various ways |
| */ |
| bool SubmitUsingHTTP(std::string const& localprefix, |
| std::vector<std::string> const& files, |
| std::string const& remoteprefix, |
| std::string const& url); |
| void ParseResponse(std::vector<char> chunk); |
| |
| // handle the cdash file upload protocol |
| int HandleCDashUploadFile(std::string const& file, std::string const& type); |
| |
| std::string GetSubmitResultsPrefix(); |
| int GetSubmitInactivityTimeout(); |
| |
| std::string HTTPProxy; |
| int HTTPProxyType = 0; |
| std::string HTTPProxyAuth; |
| std::ostream* LogFile = nullptr; |
| bool SubmitPart[cmCTest::PartCount]; |
| bool HasWarnings = false; |
| bool HasErrors = false; |
| std::set<std::string> Files; |
| std::vector<std::string> HttpHeaders; |
| |
| bool CDashUpload = false; |
| bool InternalTest = false; |
| |
| std::string CDashUploadFile; |
| std::string CDashUploadType; |
| std::string RetryCount; |
| std::string RetryDelay; |
| |
| friend class cmCTestSubmitCommand; |
| }; |