[Cmake-commits] [cmake-commits] king committed cmCTestMemCheckHandler.cxx 1.25.2.1 1.25.2.2 cmCTestMultiProcessHandler.cxx 1.25.2.4 1.25.2.5 cmCTestMultiProcessHandler.h 1.13.2.1 1.13.2.2
cmake-commits at cmake.org
cmake-commits at cmake.org
Tue Nov 3 17:25:05 EST 2009
Update of /cvsroot/CMake/CMake/Source/CTest
In directory public:/mounts/ram/cvs-serv14310/Source/CTest
Modified Files:
Tag: CMake-2-8
cmCTestMemCheckHandler.cxx cmCTestMultiProcessHandler.cxx
cmCTestMultiProcessHandler.h
Log Message:
CMake 2.8.0-rc5
Index: cmCTestMultiProcessHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMultiProcessHandler.cxx,v
retrieving revision 1.25.2.4
retrieving revision 1.25.2.5
diff -C 2 -d -r1.25.2.4 -r1.25.2.5
*** cmCTestMultiProcessHandler.cxx 28 Oct 2009 16:15:41 -0000 1.25.2.4
--- cmCTestMultiProcessHandler.cxx 3 Nov 2009 22:25:03 -0000 1.25.2.5
***************
*** 16,19 ****
--- 16,20 ----
#include "cmSystemTools.h"
#include <stdlib.h>
+ #include <stack>
cmCTestMultiProcessHandler::cmCTestMultiProcessHandler()
***************
*** 57,60 ****
--- 58,65 ----
{
this->CheckResume();
+ if(!this->CheckCycles())
+ {
+ return;
+ }
this->TestHandler->SetMaxIndex(this->FindMaxIndex());
this->StartNextTests();
***************
*** 341,345 ****
int count = 0;
for (PropertiesMap::iterator it = this->Properties.begin();
! it != this->Properties.end(); it ++ )
{
count++;
--- 346,350 ----
int count = 0;
for (PropertiesMap::iterator it = this->Properties.begin();
! it != this->Properties.end(); ++it)
{
count++;
***************
*** 434,435 ****
--- 439,484 ----
return max;
}
+
+ //Returns true if no cycles exist in the dependency graph
+ bool cmCTestMultiProcessHandler::CheckCycles()
+ {
+ cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
+ "Checking test dependency graph..." << std::endl);
+ for(TestMap::iterator it = this->Tests.begin();
+ it != this->Tests.end(); ++it)
+ {
+ //DFS from each element to itself
+ std::stack<int> s;
+ std::vector<int> visited;
+ s.push(it->first);
+ visited.push_back(it->first);
+
+ while(!s.empty())
+ {
+ int test = s.top();
+ s.pop();
+
+ for(TestSet::iterator d = this->Tests[test].begin();
+ d != this->Tests[test].end(); ++d)
+ {
+ s.push(*d);
+ for(std::vector<int>::iterator v = visited.begin();
+ v != visited.end(); ++v)
+ {
+ if(*v == *d)
+ {
+ //cycle exists
+ cmCTestLog(this->CTest, ERROR_MESSAGE, "Error: a cycle exists in "
+ "the test dependency graph for the test \""
+ << this->Properties[*d]->Name << "\"." << std::endl
+ << "Please fix the cycle and run ctest again." << std::endl);
+ return false;
+ }
+ }
+ visited.push_back(*d);
+ }
+ visited.pop_back();
+ }
+ }
+ return true;
+ }
Index: cmCTestMultiProcessHandler.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMultiProcessHandler.h,v
retrieving revision 1.13.2.1
retrieving revision 1.13.2.2
diff -C 2 -d -r1.13.2.1 -r1.13.2.2
*** cmCTestMultiProcessHandler.h 1 Oct 2009 21:21:12 -0000 1.13.2.1
--- cmCTestMultiProcessHandler.h 3 Nov 2009 22:25:03 -0000 1.13.2.2
***************
*** 77,80 ****
--- 77,82 ----
//Check if we need to resume an interrupted test set
void CheckResume();
+ //Check if there are any circular dependencies
+ bool CheckCycles();
int FindMaxIndex();
inline size_t GetProcessorsUsed(int index);
Index: cmCTestMemCheckHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMemCheckHandler.cxx,v
retrieving revision 1.25.2.1
retrieving revision 1.25.2.2
diff -C 2 -d -r1.25.2.1 -r1.25.2.2
*** cmCTestMemCheckHandler.cxx 1 Oct 2009 21:21:12 -0000 1.25.2.1
--- cmCTestMemCheckHandler.cxx 3 Nov 2009 22:25:03 -0000 1.25.2.2
***************
*** 660,665 ****
cmsys::RegularExpression vgFMM(
"== .*Mismatched free\\(\\) / delete / delete \\[\\]");
! cmsys::RegularExpression vgMLK(
"== .*[0-9][0-9]* bytes in [0-9][0-9]* blocks are definitely lost"
" in loss record [0-9][0-9]* of [0-9]");
cmsys::RegularExpression vgPAR(
--- 660,669 ----
cmsys::RegularExpression vgFMM(
"== .*Mismatched free\\(\\) / delete / delete \\[\\]");
! cmsys::RegularExpression vgMLK1(
"== .*[0-9][0-9]* bytes in [0-9][0-9]* blocks are definitely lost"
+ " in loss record [0-9][0-9]* of [0-9]");
+ cmsys::RegularExpression vgMLK2(
+ "== .*[0-9][0-9]* \\([0-9]*,?[0-9]* direct, [0-9]*,?[0-9]* indirect\\)"
+ " bytes in [0-9][0-9]* blocks are definitely lost"
" in loss record [0-9][0-9]* of [0-9]");
cmsys::RegularExpression vgPAR(
***************
*** 706,710 ****
failure = cmCTestMemCheckHandler::FMM;
}
! else if ( vgMLK.find(lines[cc]) )
{
failure = cmCTestMemCheckHandler::MLK;
--- 710,718 ----
failure = cmCTestMemCheckHandler::FMM;
}
! else if ( vgMLK1.find(lines[cc]) )
! {
! failure = cmCTestMemCheckHandler::MLK;
! }
! else if ( vgMLK2.find(lines[cc]) )
{
failure = cmCTestMemCheckHandler::MLK;
More information about the Cmake-commits
mailing list