[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