mirror of
https://github.com/reactos/CMake.git
synced 2025-02-20 03:31:55 +00:00
CTest: Provide more detailed information on resource allocation error
This commit is contained in:
parent
f0df3ed5b9
commit
a5be3916ee
@ -197,7 +197,39 @@ bool cmCTestMultiProcessHandler::StartTestProcess(int test)
|
||||
this->LockResources(test);
|
||||
|
||||
if (!this->ResourceAllocationErrors[test].empty()) {
|
||||
testRun->StartFailure("Insufficient resources", "Failed to start");
|
||||
std::ostringstream e;
|
||||
e << "Insufficient resources for test " << this->Properties[test]->Name
|
||||
<< ":\n\n";
|
||||
for (auto const& it : this->ResourceAllocationErrors[test]) {
|
||||
switch (it.second) {
|
||||
case ResourceAllocationError::NoResourceType:
|
||||
e << " Test requested resources of type '" << it.first
|
||||
<< "' which does not exist\n";
|
||||
break;
|
||||
|
||||
case ResourceAllocationError::InsufficientResources:
|
||||
e << " Test requested resources of type '" << it.first
|
||||
<< "' in the following amounts:\n";
|
||||
for (auto const& group : this->Properties[test]->ResourceGroups) {
|
||||
for (auto const& requirement : group) {
|
||||
if (requirement.ResourceType == it.first) {
|
||||
e << " " << requirement.SlotsNeeded
|
||||
<< (requirement.SlotsNeeded == 1 ? " slot\n" : " slots\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
e << " but only the following units were available:\n";
|
||||
for (auto const& res :
|
||||
this->ResourceAllocator.GetResources().at(it.first)) {
|
||||
e << " '" << res.first << "': " << res.second.Total
|
||||
<< (res.second.Total == 1 ? " slot\n" : " slots\n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
e << "\n";
|
||||
}
|
||||
e << "Resource spec file:\n\n " << this->TestHandler->ResourceSpecFile;
|
||||
testRun->StartFailure(e.str(), "Insufficient resources");
|
||||
this->FinishTestProcess(testRun, false);
|
||||
return false;
|
||||
}
|
||||
|
@ -548,6 +548,7 @@ bool cmCTestTestHandler::ProcessOptions()
|
||||
val = this->GetOption("ResourceSpecFile");
|
||||
if (val) {
|
||||
this->UseResourceSpec = true;
|
||||
this->ResourceSpecFile = val;
|
||||
auto result = this->ResourceSpec.ReadFromJSONFile(val);
|
||||
if (result != cmCTestResourceSpec::ReadFileResult::READ_OK) {
|
||||
cmCTestLog(this->CTest, ERROR_MESSAGE,
|
||||
|
@ -338,6 +338,7 @@ private:
|
||||
|
||||
bool UseResourceSpec;
|
||||
cmCTestResourceSpec ResourceSpec;
|
||||
std::string ResourceSpecFile;
|
||||
|
||||
void GenerateRegressionImages(cmXMLWriter& xml, const std::string& dart);
|
||||
cmsys::RegularExpression DartStuff1;
|
||||
|
@ -1,4 +1,14 @@
|
||||
^Insufficient resources
|
||||
^Insufficient resources for test Test1:
|
||||
|
||||
Test requested resources of type 'fluxcapacitors' in the following amounts:
|
||||
200 slots
|
||||
but only the following units were available:
|
||||
'outatime': 121 slots
|
||||
|
||||
Resource spec file:
|
||||
|
||||
[^
|
||||
]*/Tests/RunCMake/CTestResourceAllocation/resspec.json
|
||||
CMake Error at [^
|
||||
]*/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res/test\.cmake:[0-9]+ \(message\):
|
||||
Tests did not pass$
|
||||
|
@ -1,4 +1,11 @@
|
||||
^Insufficient resources
|
||||
^Insufficient resources for test Test1:
|
||||
|
||||
Test requested resources of type 'terminators' which does not exist
|
||||
|
||||
Resource spec file:
|
||||
|
||||
[^
|
||||
]*/Tests/RunCMake/CTestResourceAllocation/resspec.json
|
||||
CMake Error at [^
|
||||
]*/Tests/RunCMake/CTestResourceAllocation/notenough2-ctest-s-res/test\.cmake:[0-9]+ \(message\):
|
||||
Tests did not pass$
|
||||
|
@ -1,4 +1,21 @@
|
||||
^Insufficient resources
|
||||
^Insufficient resources for test Test1:
|
||||
|
||||
Test requested resources of type 'widgets' in the following amounts:
|
||||
12 slots
|
||||
but only the following units were available:
|
||||
'0': 4 slots
|
||||
'1': 2 slots
|
||||
'2': 4 slots
|
||||
'3': 8 slots
|
||||
'4': 1 slot
|
||||
'5': 1 slot
|
||||
'6': 1 slot
|
||||
'7': 1 slot
|
||||
|
||||
Resource spec file:
|
||||
|
||||
[^
|
||||
]*/Tests/RunCMake/CTestResourceAllocation/resspec.json
|
||||
CMake Error at [^
|
||||
]*/Tests/RunCMake/CTestResourceAllocation/notenough3-ctest-s-res/test\.cmake:[0-9]+ \(message\):
|
||||
Tests did not pass$
|
||||
|
Loading…
x
Reference in New Issue
Block a user