[Cmake-commits] [cmake-commits] zach.mullen committed cmCTestMultiProcessHandler.cxx 1.16 1.17 cmCTestMultiProcessHandler.h 1.9 1.10 cmCTestRunTest.cxx 1.14 1.15 cmCTestTestHandler.cxx 1.115 1.116 cmCTestTestHandler.h 1.46 1.47
cmake-commits at cmake.org
cmake-commits at cmake.org
Mon Sep 7 10:26:19 EDT 2009
Update of /cvsroot/CMake/CMake/Source/CTest
In directory public:/mounts/ram/cvs-serv29390/CTest
Modified Files:
cmCTestMultiProcessHandler.cxx cmCTestMultiProcessHandler.h
cmCTestRunTest.cxx cmCTestTestHandler.cxx cmCTestTestHandler.h
Log Message:
ENH: Added ctest test options PROCESSORS and RUN_SERIAL. These allow specification of resource allocation for given tests running with the ctest -j N option. RUN_SERIAL ensures that a given test does not run in parallel with any other test. Also forced appending of "..." to the longest test name in ctest.
Index: cmCTestMultiProcessHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMultiProcessHandler.cxx,v
retrieving revision 1.16
retrieving revision 1.17
diff -C 2 -d -r1.16 -r1.17
*** cmCTestMultiProcessHandler.cxx 4 Sep 2009 14:16:06 -0000 1.16
--- cmCTestMultiProcessHandler.cxx 7 Sep 2009 14:26:08 -0000 1.17
***************
*** 26,29 ****
--- 26,30 ----
this->ParallelLevel = 1;
this->Completed = 0;
+ this->RunningCount = 0;
}
// Set the tests
***************
*** 113,120 ****
--- 114,138 ----
{
this->Completed++;
+ this->RunningCount -= GetProcessorsUsed(test);
testRun->EndTest(this->Completed, this->Total, false);
}
}
+ inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test)
+ {
+ size_t processors =
+ static_cast<int>(this->Properties[test]->Processors);
+ //If this is set to run serially, it must run alone.
+ //Also, if processors setting is set higher than the -j
+ //setting, we default to using all of the process slots.
+ if(this->Properties[test]->RunSerial
+ || processors > this->ParallelLevel)
+ {
+ processors = this->ParallelLevel;
+ }
+
+ return processors;
+ }
+
bool cmCTestMultiProcessHandler::StartTest(int test)
{
***************
*** 161,165 ****
void cmCTestMultiProcessHandler::StartNextTests()
{
! size_t numToStart = this->ParallelLevel - this->RunningTests.size();
if(numToStart == 0)
{
--- 179,183 ----
void cmCTestMultiProcessHandler::StartNextTests()
{
! size_t numToStart = this->ParallelLevel - this->RunningCount;
if(numToStart == 0)
{
***************
*** 172,182 ****
i != tests.end(); ++i)
{
! //int processors = this->Properties[i->first]->Processors;
!
! // if(processors > )
// start test should start only one test
if(this->StartTest(i->first))
{
! numToStart--;
}
else
--- 190,203 ----
i != tests.end(); ++i)
{
! size_t processors = GetProcessorsUsed(i->first);
! if(processors > numToStart)
! {
! return;
! }
// start test should start only one test
if(this->StartTest(i->first))
{
! numToStart -= processors;
! this->RunningCount += processors;
}
else
***************
*** 242,246 ****
this->RunningTests.erase(p);
this->WriteCheckpoint(test);
!
delete p;
}
--- 263,267 ----
this->RunningTests.erase(p);
this->WriteCheckpoint(test);
! this->RunningCount -= GetProcessorsUsed(test);
delete p;
}
Index: cmCTestMultiProcessHandler.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMultiProcessHandler.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -C 2 -d -r1.9 -r1.10
*** cmCTestMultiProcessHandler.h 4 Sep 2009 14:16:06 -0000 1.9
--- cmCTestMultiProcessHandler.h 7 Sep 2009 14:26:09 -0000 1.10
***************
*** 81,84 ****
--- 81,85 ----
void CheckResume();
int FindMaxIndex();
+ inline size_t GetProcessorsUsed(int index);
// map from test number to set of depend tests
TestMap Tests;
***************
*** 88,91 ****
--- 89,93 ----
//Number of tests that are complete
size_t Completed;
+ size_t RunningCount;
//list of test properties (indices concurrent to the test map)
PropertiesMap Properties;
Index: cmCTestTestHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestTestHandler.cxx,v
retrieving revision 1.115
retrieving revision 1.116
diff -C 2 -d -r1.115 -r1.116
*** cmCTestTestHandler.cxx 4 Sep 2009 14:16:06 -0000 1.115
--- cmCTestTestHandler.cxx 7 Sep 2009 14:26:13 -0000 1.116
***************
*** 1980,1983 ****
--- 1980,1987 ----
rtit->Expensive = cmSystemTools::IsOn(val.c_str());
}
+ if ( key == "RUN_SERIAL" )
+ {
+ rtit->RunSerial = cmSystemTools::IsOn(val.c_str());
+ }
if ( key == "FAIL_REGULAR_EXPRESSION" )
{
***************
*** 2128,2131 ****
--- 2132,2136 ----
test.WillFail = false;
test.Expensive = false;
+ test.RunSerial = false;
test.Timeout = 0;
test.Processors = 1;
Index: cmCTestTestHandler.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestTestHandler.h,v
retrieving revision 1.46
retrieving revision 1.47
diff -C 2 -d -r1.46 -r1.47
*** cmCTestTestHandler.h 3 Sep 2009 15:14:12 -0000 1.46
--- cmCTestTestHandler.h 7 Sep 2009 14:26:16 -0000 1.47
***************
*** 98,101 ****
--- 98,102 ----
bool WillFail;
bool Expensive;
+ bool RunSerial;
double Timeout;
int Index;
Index: cmCTestRunTest.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestRunTest.cxx,v
retrieving revision 1.14
retrieving revision 1.15
diff -C 2 -d -r1.14 -r1.15
*** cmCTestRunTest.cxx 4 Sep 2009 17:50:06 -0000 1.14
--- cmCTestRunTest.cxx 7 Sep 2009 14:26:10 -0000 1.15
***************
*** 477,481 ****
const int maxTestNameWidth = this->CTest->GetMaxTestNameWidth();
std::string outname = this->TestProperties->Name + " ";
! outname.resize(maxTestNameWidth, '.');
*this->TestHandler->LogFile << this->TestProperties->Index << "/"
--- 477,481 ----
const int maxTestNameWidth = this->CTest->GetMaxTestNameWidth();
std::string outname = this->TestProperties->Name + " ";
! outname.resize(maxTestNameWidth + 4, '.');
*this->TestHandler->LogFile << this->TestProperties->Index << "/"
More information about the Cmake-commits
mailing list