1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-20 21:40:15 +08:00

cmCTestMultiProcessHandler: Modernize member initialization

This commit is contained in:
Brad King
2024-03-07 08:53:19 -05:00
parent 7457b474a1
commit bbcbcff7d9
3 changed files with 23 additions and 34 deletions

View File

@@ -66,18 +66,13 @@ private:
cmCTestMultiProcessHandler* Handler; cmCTestMultiProcessHandler* Handler;
}; };
cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() cmCTestMultiProcessHandler::cmCTestMultiProcessHandler(
cmCTest* ctest, cmCTestTestHandler* handler)
: CTest(ctest)
, TestHandler(handler)
, ProcessorsAvailable(cmAffinity::GetProcessorsAvailable())
, HaveAffinity(this->ProcessorsAvailable.size())
{ {
this->ParallelLevel = 1;
this->TestLoad = 0;
this->FakeLoadForTesting = 0;
this->Completed = 0;
this->RunningCount = 0;
this->ProcessorsAvailable = cmAffinity::GetProcessorsAvailable();
this->HaveAffinity = this->ProcessorsAvailable.size();
this->HasCycles = false;
this->HasInvalidGeneratedResourceSpec = false;
this->SerialTestRunning = false;
} }
cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler() = default; cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler() = default;

View File

@@ -58,7 +58,7 @@ public:
unsigned int Slots; unsigned int Slots;
}; };
cmCTestMultiProcessHandler(); cmCTestMultiProcessHandler(cmCTest* ctest, cmCTestTestHandler* handler);
virtual ~cmCTestMultiProcessHandler(); virtual ~cmCTestMultiProcessHandler();
// Set the tests // Set the tests
void SetTests(TestMap tests, PropertiesMap properties); void SetTests(TestMap tests, PropertiesMap properties);
@@ -81,13 +81,6 @@ public:
this->TestResults = r; this->TestResults = r;
} }
void SetCTest(cmCTest* ctest) { this->CTest = ctest; }
void SetTestHandler(cmCTestTestHandler* handler)
{
this->TestHandler = handler;
}
cmCTestTestHandler* GetTestHandler() { return this->TestHandler; } cmCTestTestHandler* GetTestHandler() { return this->TestHandler; }
void SetRepeatMode(cmCTest::Repeat mode, int count) void SetRepeatMode(cmCTest::Repeat mode, int count)
@@ -171,22 +164,26 @@ protected:
bool InitResourceAllocator(std::string& error); bool InitResourceAllocator(std::string& error);
bool CheckGeneratedResourceSpec(); bool CheckGeneratedResourceSpec();
private:
cmCTest* CTest;
cmCTestTestHandler* TestHandler;
bool UseResourceSpec = false; bool UseResourceSpec = false;
cmCTestResourceSpec ResourceSpec; cmCTestResourceSpec ResourceSpec;
std::string ResourceSpecFile; std::string ResourceSpecFile;
std::string ResourceSpecSetupFixture; std::string ResourceSpecSetupFixture;
cm::optional<std::size_t> ResourceSpecSetupTest; cm::optional<std::size_t> ResourceSpecSetupTest;
bool HasInvalidGeneratedResourceSpec; bool HasInvalidGeneratedResourceSpec = false;
// Tests pending selection to start. They may have dependencies. // Tests pending selection to start. They may have dependencies.
TestMap PendingTests; TestMap PendingTests;
// List of pending test indexes, ordered by cost. // List of pending test indexes, ordered by cost.
std::list<int> OrderedTests; std::list<int> OrderedTests;
// Total number of tests we'll be running // Total number of tests we'll be running
size_t Total; size_t Total = 0;
// Number of tests that are complete // Number of tests that are complete
size_t Completed; size_t Completed = 0;
size_t RunningCount; size_t RunningCount = 0;
std::set<size_t> ProcessorsAvailable; std::set<size_t> ProcessorsAvailable;
size_t HaveAffinity; size_t HaveAffinity;
bool StopTimePassed = false; bool StopTimePassed = false;
@@ -204,7 +201,7 @@ protected:
ResourceAvailabilityErrors; ResourceAvailabilityErrors;
cmCTestResourceAllocator ResourceAllocator; cmCTestResourceAllocator ResourceAllocator;
std::vector<cmCTestTestHandler::cmCTestTestResult>* TestResults; std::vector<cmCTestTestHandler::cmCTestTestResult>* TestResults;
size_t ParallelLevel; // max number of process that can be run at once size_t ParallelLevel = 1; // max number of process that can be run at once
// 'make' jobserver client. If connected, we acquire a token // 'make' jobserver client. If connected, we acquire a token
// for each test before running its process. // for each test before running its process.
@@ -214,16 +211,14 @@ protected:
// Callback invoked when a token is received. // Callback invoked when a token is received.
void JobServerReceivedToken(); void JobServerReceivedToken();
unsigned long TestLoad; unsigned long TestLoad = 0;
unsigned long FakeLoadForTesting; unsigned long FakeLoadForTesting = 0;
cm::uv_loop_ptr Loop; cm::uv_loop_ptr Loop;
cm::uv_idle_ptr StartNextTestsOnIdle_; cm::uv_idle_ptr StartNextTestsOnIdle_;
cm::uv_timer_ptr StartNextTestsOnTimer_; cm::uv_timer_ptr StartNextTestsOnTimer_;
cmCTestTestHandler* TestHandler; bool HasCycles = false;
cmCTest* CTest;
bool HasCycles;
cmCTest::Repeat RepeatMode = cmCTest::Repeat::Never; cmCTest::Repeat RepeatMode = cmCTest::Repeat::Never;
int RepeatCount = 1; int RepeatCount = 1;
bool Quiet; bool Quiet = false;
bool SerialTestRunning; bool SerialTestRunning = false;
}; };

View File

@@ -1359,10 +1359,9 @@ bool cmCTestTestHandler::ProcessDirectory(std::vector<std::string>& passed,
this->StartTestTime = std::chrono::system_clock::now(); this->StartTestTime = std::chrono::system_clock::now();
auto elapsed_time_start = std::chrono::steady_clock::now(); auto elapsed_time_start = std::chrono::steady_clock::now();
auto parallel = cm::make_unique<cmCTestMultiProcessHandler>(); auto parallel =
parallel->SetCTest(this->CTest); cm::make_unique<cmCTestMultiProcessHandler>(this->CTest, this);
parallel->SetParallelLevel(this->CTest->GetParallelLevel()); parallel->SetParallelLevel(this->CTest->GetParallelLevel());
parallel->SetTestHandler(this);
if (this->RepeatMode != cmCTest::Repeat::Never) { if (this->RepeatMode != cmCTest::Repeat::Never) {
parallel->SetRepeatMode(this->RepeatMode, this->RepeatCount); parallel->SetRepeatMode(this->RepeatMode, this->RepeatCount);
} else { } else {