[Cmake-commits] CMake branch, next, updated. v2.8.1-1409-g5919d67

Zach Mullen zach.mullen at kitware.com
Tue Jun 15 10:30:00 EDT 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  5919d6733b5ca1fbdc6b3a4bbd85bf7059a0a8c8 (commit)
       via  960dc2b10ff8651c5c7f1be566855c8440effd2b (commit)
      from  0d482b0a90bbbd726f5b30032073c39dfa52e91d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5919d6733b5ca1fbdc6b3a4bbd85bf7059a0a8c8
commit 5919d6733b5ca1fbdc6b3a4bbd85bf7059a0a8c8
Merge: 0d482b0 960dc2b
Author: Zach Mullen <zach.mullen at kitware.com>
Date:   Tue Jun 15 10:29:57 2010 -0400

    Merge branch 'fix-stoptime-mem-leak' into next


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=960dc2b10ff8651c5c7f1be566855c8440effd2b
commit 960dc2b10ff8651c5c7f1be566855c8440effd2b
Author: Zach Mullen <zach.mullen at kitware.com>
Date:   Tue Jun 15 10:29:35 2010 -0400

    Do not exit if stoptime is passed.

diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx
index 8a69780..9b8cef5 100644
--- a/Source/CTest/cmCTestMultiProcessHandler.cxx
+++ b/Source/CTest/cmCTestMultiProcessHandler.cxx
@@ -23,6 +23,7 @@ cmCTestMultiProcessHandler::cmCTestMultiProcessHandler()
   this->ParallelLevel = 1;
   this->Completed = 0;
   this->RunningCount = 0;
+  this->StopTimePassed = false;
 }
 
 cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler()
@@ -69,6 +70,10 @@ void cmCTestMultiProcessHandler::RunTests()
   this->StartNextTests();
   while(this->Tests.size() != 0)
     {
+    if(this->StopTimePassed)
+      {
+      return;
+      }
     this->CheckOutput();
     this->StartNextTests();
     }
@@ -102,6 +107,12 @@ void cmCTestMultiProcessHandler::StartTestProcess(int test)
     {
     this->RunningTests.insert(testRun);
     }
+  else if(testRun->IsStopTimePassed())
+    {
+    this->StopTimePassed = true;
+    delete testRun;
+    return;
+    }
   else
     {
     this->UnlockResources(test);
@@ -251,6 +262,10 @@ void cmCTestMultiProcessHandler::StartNextTests()
         }
       if(this->StartTest(*test))
         {
+        if(this->StopTimePassed)
+          {
+          return;
+          }
         numToStart -= processors;
         this->RunningCount += processors;
         }
diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h
index d4f6c71..4f51b0b 100644
--- a/Source/CTest/cmCTestMultiProcessHandler.h
+++ b/Source/CTest/cmCTestMultiProcessHandler.h
@@ -94,6 +94,7 @@ protected:
   //Number of tests that are complete
   size_t Completed;
   size_t RunningCount;
+  bool StopTimePassed;
   //list of test properties (indices concurrent to the test map)
   PropertiesMap Properties;
   std::map<int, bool> TestRunningMap;
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx
index 4c9675b..9fb8827 100644
--- a/Source/CTest/cmCTestRunTest.cxx
+++ b/Source/CTest/cmCTestRunTest.cxx
@@ -32,6 +32,7 @@ cmCTestRunTest::cmCTestRunTest(cmCTestTestHandler* handler)
   this->ProcessOutput = "";
   this->CompressedOutput = "";
   this->CompressionRatio = 2;
+  this->StopTimePassed = false;
 }
 
 cmCTestRunTest::~cmCTestRunTest()
@@ -436,8 +437,13 @@ bool cmCTestRunTest::StartTest(size_t total)
     }
   this->StartTime = this->CTest->CurrentTime();
 
-  return this->ForkProcess(this->ResolveTimeout(),
-                             &this->TestProperties->Environment);
+  double timeout = this->ResolveTimeout();
+
+  if(this->StopTimePassed)
+    {
+    return false;
+    }
+  return this->ForkProcess(timeout, &this->TestProperties->Environment);
 }
 
 //----------------------------------------------------------------------
@@ -569,8 +575,9 @@ double cmCTestRunTest::ResolveTimeout()
   if(stop_timeout <= 0 || stop_timeout > this->CTest->LastStopTimeout)
     {
     cmCTestLog(this->CTest, ERROR_MESSAGE, "The stop time has been passed. "
-      "Exiting ctest." << std::endl);
-    exit(-1);
+      "Stopping all tests." << std::endl);
+    this->StopTimePassed = true;
+    return 0;
     }
   return timeout == 0 ? stop_timeout :
     (timeout < stop_timeout ? timeout : stop_timeout);
diff --git a/Source/CTest/cmCTestRunTest.h b/Source/CTest/cmCTestRunTest.h
index d7d3a2f..e0cb888 100644
--- a/Source/CTest/cmCTestRunTest.h
+++ b/Source/CTest/cmCTestRunTest.h
@@ -39,6 +39,8 @@ public:
 
   std::string GetProcessOutput() { return this->ProcessOutput; }
 
+  bool IsStopTimePassed() { return this->StopTimePassed; }
+
   cmCTestTestHandler::cmCTestTestResult GetTestResults()
   { return this->TestResult; }
 
@@ -90,6 +92,7 @@ private:
   std::string TestCommand;
   std::string ActualCommand;
   std::vector<std::string> Arguments;
+  bool StopTimePassed;
 };
 
 inline int getNumWidth(size_t n)
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx
index b9cee6c..d2742ec 100644
--- a/Source/CTest/cmCTestTestHandler.cxx
+++ b/Source/CTest/cmCTestTestHandler.cxx
@@ -1036,9 +1036,9 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed,
   
   bool randomSchedule = this->CTest->GetScheduleType() == "Random";
   if(randomSchedule)
-  {
+    {
     srand((unsigned)time(0));
-  }
+    }
 
   for (ListOfTests::iterator it = this->TestList.begin();
        it != this->TestList.end(); ++it)

-----------------------------------------------------------------------

Summary of changes:
 Source/CTest/cmCTestMultiProcessHandler.cxx |   15 +++++++++++++++
 Source/CTest/cmCTestMultiProcessHandler.h   |    1 +
 Source/CTest/cmCTestRunTest.cxx             |   15 +++++++++++----
 Source/CTest/cmCTestRunTest.h               |    3 +++
 Source/CTest/cmCTestTestHandler.cxx         |    4 ++--
 5 files changed, 32 insertions(+), 6 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list