[Cmake-commits] [cmake-commits] zach.mullen committed cmCTestMemCheckHandler.cxx 1.23 1.24 cmCTestMultiProcessHandler.cxx 1.8 1.9 cmCTestMultiProcessHandler.h 1.5 1.6 cmCTestRunTest.cxx 1.4 1.5 cmCTestRunTest.h 1.3 1.4 cmCTestTestHandler.cxx 1.107 1.108 cmCTestTestHandler.h 1.41 1.42
cmake-commits at cmake.org
cmake-commits at cmake.org
Fri Aug 28 11:08:41 EDT 2009
Update of /cvsroot/CMake/CMake/Source/CTest
In directory public:/mounts/ram/cvs-serv22462/Source/CTest
Modified Files:
cmCTestMemCheckHandler.cxx cmCTestMultiProcessHandler.cxx
cmCTestMultiProcessHandler.h cmCTestRunTest.cxx
cmCTestRunTest.h cmCTestTestHandler.cxx cmCTestTestHandler.h
Log Message:
Added ctest -N test. Fixed ctest working directory bug. MemCheck fix coming soon...
Index: cmCTestMemCheckHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMemCheckHandler.cxx,v
retrieving revision 1.23
retrieving revision 1.24
diff -C 2 -d -r1.23 -r1.24
*** cmCTestMemCheckHandler.cxx 27 May 2009 15:14:08 -0000 1.23
--- cmCTestMemCheckHandler.cxx 28 Aug 2009 15:08:39 -0000 1.24
***************
*** 868,872 ****
return true;
}
!
void
cmCTestMemCheckHandler::ProcessOneTest(cmCTestTestProperties *props,
--- 868,872 ----
return true;
}
! //TODO ZACH move this logic into cmCTestRunTest
void
cmCTestMemCheckHandler::ProcessOneTest(cmCTestTestProperties *props,
Index: cmCTestRunTest.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestRunTest.cxx,v
retrieving revision 1.4
retrieving revision 1.5
diff -C 2 -d -r1.4 -r1.5
*** cmCTestRunTest.cxx 27 Aug 2009 14:37:26 -0000 1.4
--- cmCTestRunTest.cxx 28 Aug 2009 15:08:39 -0000 1.5
***************
*** 56,60 ****
//---------------------------------------------------------
! bool cmCTestRunTest::EndTest()
{
//restore the old environment
--- 56,60 ----
//---------------------------------------------------------
! bool cmCTestRunTest::EndTest(int completed, int total)
{
//restore the old environment
***************
*** 63,67 ****
cmSystemTools::RestoreEnv(this->OrigEnv);
}
! this->WriteLogOutputTop();
std::string reason;
bool passed = true;
--- 63,67 ----
cmSystemTools::RestoreEnv(this->OrigEnv);
}
! this->WriteLogOutputTop(completed, total);
std::string reason;
bool passed = true;
***************
*** 260,263 ****
--- 260,264 ----
bool cmCTestRunTest::StartTest()
{
+ this->ComputeArguments();
std::vector<std::string>& args = this->TestProperties->Args;
this->TestResult.Properties = this->TestProperties;
***************
*** 269,278 ****
this->TestResult.Path = this->TestProperties->Directory.c_str();
- // find the test executable
- this->ActualCommand
- = this->TestHandler->FindTheExecutable(args[1].c_str());
- this->TestCommand
- = cmSystemTools::ConvertToOutputPath(this->ActualCommand.c_str());
-
// continue if we did not find the executable
if (this->TestCommand == "")
--- 270,273 ----
***************
*** 290,297 ****
}
}
- /**
- * Run an executable command and put the stdout in output.
- */
cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl
<< this->Index << ": "
--- 285,319 ----
}
}
+ this->StartTime = this->CTest->CurrentTime();
+
+ return this->CreateProcess(this->TestProperties->Timeout,
+ &this->TestProperties->Environment);
+ }
+
+ void cmCTestRunTest::ComputeArguments()
+ {
+ std::vector<std::string>& args = this->TestProperties->Args;
+ // find the test executable
+ this->ActualCommand
+ = this->TestHandler->FindTheExecutable(args[1].c_str());
+ this->TestCommand
+ = cmSystemTools::ConvertToOutputPath(this->ActualCommand.c_str());
+ // add the arguments
+ std::vector<std::string>::const_iterator j =
+ this->TestProperties->Args.begin();
+ ++j; // skip test name
+ ++j; // skip command as it is in actualCommand
+
+ //TODO ZACH the problem is here for memcheck. We need to call
+ //memcheckhandler.GenerateTestCommand BEFORE we run the process.
+ // this->TestHandler->GenerateTestCommand(this->Arguments);
+ for(;j != this->TestProperties->Args.end(); ++j)
+ {
+ this->TestCommand += " ";
+ this->TestCommand += cmSystemTools::EscapeSpaces(j->c_str());
+ this->Arguments.push_back(*j);
+ }
+ this->TestResult.FullCommandLine = this->TestCommand;
cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl
<< this->Index << ": "
***************
*** 299,309 ****
<< " command: " << this->TestCommand
<< std::endl);
-
- this->StartTime = this->CTest->CurrentTime();
-
- return this->CreateProcess(this->ActualCommand,
- this->TestProperties->Args,
- this->TestProperties->Timeout,
- &this->TestProperties->Environment);
}
--- 321,324 ----
***************
*** 331,352 ****
//----------------------------------------------------------------------
! bool cmCTestRunTest::CreateProcess(std::string command,
! std::vector<std::string> args,
! double testTimeOut,
std::vector<std::string>* environment)
{
- std::vector<std::string> commandArgs;
- std::vector<std::string>::iterator i = args.begin();
-
- ++i; //skip test name
- ++i; //skip executable name
- for(; i != args.end(); ++i)
- {
- commandArgs.push_back(*i);
- }
this->TestProcess = new cmProcess;
this->TestProcess->SetId(this->Index);
! this->TestProcess->SetCommand(command.c_str());
! this->TestProcess->SetCommandArguments(commandArgs);
std::vector<std::string> origEnv;
--- 346,357 ----
//----------------------------------------------------------------------
! bool cmCTestRunTest::CreateProcess(double testTimeOut,
std::vector<std::string>* environment)
{
this->TestProcess = new cmProcess;
this->TestProcess->SetId(this->Index);
! this->TestProcess->SetWorkingDirectory(this->TestProperties->Directory.c_str());
! this->TestProcess->SetCommand(this->ActualCommand.c_str());
! this->TestProcess->SetCommandArguments(this->Arguments);
std::vector<std::string> origEnv;
***************
*** 381,385 ****
}
! void cmCTestRunTest::WriteLogOutputTop()
{
/* Not sure whether we want to prepend the test index anymore
--- 386,390 ----
}
! void cmCTestRunTest::WriteLogOutputTop(int completed, int total)
{
/* Not sure whether we want to prepend the test index anymore
***************
*** 387,393 ****
<< this->Index << ": ");*/
cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3)
! << this->TestProperties->Index << "/");
cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3)
! << this->TestHandler->TotalNumberOfTests << " ");
if ( this->TestHandler->MemCheck )
{
--- 392,399 ----
<< this->Index << ": ");*/
cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3)
! << completed << "/");
cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3)
! << total << " ");
!
if ( this->TestHandler->MemCheck )
{
***************
*** 398,401 ****
--- 404,412 ----
cmCTestLog(this->CTest, HANDLER_OUTPUT, "Testing");
}
+
+ std::stringstream indexStr;
+ indexStr << " (" << this->Index << ")";
+ cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(6)
+ << indexStr.str().c_str());
cmCTestLog(this->CTest, HANDLER_OUTPUT, " ");
const int maxTestNameWidth = this->CTest->GetMaxTestNameWidth();
***************
*** 403,423 ****
outname.resize(maxTestNameWidth, '.');
- // add the arguments
- std::vector<std::string>::const_iterator j =
- this->TestProperties->Args.begin();
- ++j; // skip test name
- ++j; // skip command as it is in actualCommand
- std::vector<const char*> arguments;
- this->TestHandler->GenerateTestCommand(arguments);
- arguments.push_back(this->ActualCommand.c_str());
- for(;j != this->TestProperties->Args.end(); ++j)
- {
- this->TestCommand += " ";
- this->TestCommand += cmSystemTools::EscapeSpaces(j->c_str());
- arguments.push_back(j->c_str());
- }
- arguments.push_back(0);
- this->TestResult.FullCommandLine = this->TestCommand;
-
*this->TestHandler->LogFile << this->TestProperties->Index << "/"
<< this->TestHandler->TotalNumberOfTests << " Testing: "
--- 414,417 ----
***************
*** 426,434 ****
<< this->TestHandler->TotalNumberOfTests
<< " Test: " << this->TestProperties->Name.c_str() << std::endl;
! *this->TestHandler->LogFile << "Command: ";
! std::vector<cmStdString>::size_type ll;
! for ( ll = 0; ll < arguments.size()-1; ll ++ )
{
! *this->TestHandler->LogFile << "\"" << arguments[ll] << "\" ";
}
*this->TestHandler->LogFile << std::endl
--- 420,430 ----
<< this->TestHandler->TotalNumberOfTests
<< " Test: " << this->TestProperties->Name.c_str() << std::endl;
! *this->TestHandler->LogFile << "Command: \"" << this->ActualCommand << "\"";
!
! for (std::vector<std::string>::iterator i = this->Arguments.begin();
! i != this->Arguments.end(); ++i)
{
! *this->TestHandler->LogFile
! << " \"" << i->c_str() << "\"";
}
*this->TestHandler->LogFile << std::endl
Index: cmCTestMultiProcessHandler.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMultiProcessHandler.cxx,v
retrieving revision 1.8
retrieving revision 1.9
diff -C 2 -d -r1.8 -r1.9
*** cmCTestMultiProcessHandler.cxx 27 Aug 2009 14:37:26 -0000 1.8
--- cmCTestMultiProcessHandler.cxx 28 Aug 2009 15:08:39 -0000 1.9
***************
*** 25,28 ****
--- 25,29 ----
{
this->ParallelLevel = 1;
+ this->Completed = 0;
}
// Set the tests
***************
*** 39,42 ****
--- 40,44 ----
}
this->Tests = tests;
+ this->Total = this->Tests.size();
this->Properties = properties;
}
***************
*** 82,86 ****
else
{
! testRun->EndTest();
}
}
--- 84,88 ----
else
{
! testRun->EndTest(this->Completed, this->Total);
}
}
***************
*** 131,137 ****
void cmCTestMultiProcessHandler::StartNextTests()
{
! cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl
! << "Number of running tests : " << this->RunningTests.size()
! << "\n");
size_t numToStart = this->ParallelLevel - this->RunningTests.size();
if(numToStart == 0)
--- 133,139 ----
void cmCTestMultiProcessHandler::StartNextTests()
{
! //cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl
! // << "Number of running tests : " << this->RunningTests.size()
! // << "\n");
size_t numToStart = this->ParallelLevel - this->RunningTests.size();
if(numToStart == 0)
***************
*** 184,197 ****
i != finished.end(); ++i)
{
cmCTestRunTest* p = *i;
int test = p->GetIndex();
!
! if(p->EndTest())
{
! this->Passed->push_back(p->GetTestProperties()->Name);
}
else
{
! this->Failed->push_back(p->GetTestProperties()->Name);
}
for(TestMap::iterator j = this->Tests.begin();
--- 186,200 ----
i != finished.end(); ++i)
{
+ this->Completed++;
cmCTestRunTest* p = *i;
int test = p->GetIndex();
!
! if(p->EndTest(this->Completed, this->Total))
{
! this->Passed->push_back(p->GetTestProperties()->Name);
}
else
{
! this->Failed->push_back(p->GetTestProperties()->Name);
}
for(TestMap::iterator j = this->Tests.begin();
***************
*** 227,243 ****
}
! void cmCTestMultiProcessHandler::PrintTests()
{
! #undef cout
! for( TestMap::iterator i = this->Tests.begin();
! i!= this->Tests.end(); ++i)
{
! std::cout << "Test " << i->first << " (";
! for(TestSet::iterator j = i->second.begin();
! j != i->second.end(); ++j)
{
! std::cout << *j << " ";
}
! std::cout << ")\n";
}
}
--- 230,265 ----
}
! //---------------------------------------------------------------------
! //For ShowOnly mode
! void cmCTestMultiProcessHandler::PrintTestList()
{
! int count = 0;
! for (PropertiesMap::iterator it = this->Properties.begin();
! it != this->Properties.end(); it ++ )
{
! count++;
! cmCTestTestHandler::cmCTestTestProperties& p = *it->second;
!
! cmCTestRunTest testRun;
! testRun.SetCTest(this->CTest);
! testRun.SetTestHandler(this->TestHandler);
! testRun.SetIndex(p.Index);
! testRun.SetTestProperties(&p);
! testRun.ComputeArguments(); //logs the command in verbose mode
!
! cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3)
! << count << "/");
! cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3)
! << this->Total << " ");
! if (this->TestHandler->MemCheck)
{
! cmCTestLog(this->CTest, HANDLER_OUTPUT, "Memory Check");
}
! else
! {
! cmCTestLog(this->CTest, HANDLER_OUTPUT, "Testing");
! }
! cmCTestLog(this->CTest, HANDLER_OUTPUT, " ");
! cmCTestLog(this->CTest, HANDLER_OUTPUT, p.Name.c_str() << std::endl);
}
}
***************
*** 283,323 ****
this->TestRunningMap[index] = false;
this->TestFinishMap[index] = true;
}
-
- #if 0
- int main()
- {
- cmCTestMultiProcessHandler h;
- h.SetParallelLevel(4);
- std::map<int, std::set<int> > tests;
- std::set<int> depends;
- for(int i =1; i < 92; i++)
- {
- tests[i] = depends;
- }
- depends.clear();
- depends.insert(45); subprject
- tests[46] = depends; subproject-stage2
- depends.clear();
- depends.insert(55); simpleinstall simpleinstall-s2
- tests[56] = depends;
- depends.clear();
- depends.insert(70); wrapping
- tests[71] = depends; qtwrapping
- depends.clear();
- depends.insert(71); qtwrapping
- tests[72] = depends; testdriver1
- depends.clear();
- depends.insert(72) testdriver1
- tests[73] = depends; testdriver2
- depends.clear();
- depends.insert(73); testdriver2
- tests[74] = depends; testdriver3
- depends.clear();
- depends.insert(79); linkorder1
- tests[80] = depends; linkorder2
- h.SetTests(tests);
- h.PrintTests();
- h.RunTests();
- }
- #endif
--- 305,308 ----
this->TestRunningMap[index] = false;
this->TestFinishMap[index] = true;
+ this->Completed++;
}
Index: cmCTestTestHandler.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestTestHandler.h,v
retrieving revision 1.41
retrieving revision 1.42
diff -C 2 -d -r1.41 -r1.42
*** cmCTestTestHandler.h 27 Aug 2009 14:37:27 -0000 1.41
--- cmCTestTestHandler.h 28 Aug 2009 15:08:39 -0000 1.42
***************
*** 142,146 ****
void WriteTestResultFooter(std::ostream& os, cmCTestTestResult* result);
- void PrintTestList();
//! Clean test output to specified length
bool CleanTestOutput(std::string& output, size_t length);
--- 142,145 ----
Index: cmCTestMultiProcessHandler.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestMultiProcessHandler.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C 2 -d -r1.5 -r1.6
*** cmCTestMultiProcessHandler.h 27 Aug 2009 14:37:26 -0000 1.5
--- cmCTestMultiProcessHandler.h 28 Aug 2009 15:08:39 -0000 1.6
***************
*** 41,45 ****
void SetParallelLevel(size_t);
void RunTests();
! void PrintTests();
//void SetCTestCommand(const char* c) { this->CTestCommand = c;}
//void SetTestCacheFile(const char* c) { this->CTestCacheFile = c;}
--- 41,45 ----
void SetParallelLevel(size_t);
void RunTests();
! void PrintTestList();
//void SetCTestCommand(const char* c) { this->CTestCommand = c;}
//void SetTestCacheFile(const char* c) { this->CTestCacheFile = c;}
***************
*** 81,84 ****
--- 81,88 ----
// map from test number to set of depend tests
TestMap Tests;
+ //Total number of tests we'll be running
+ int Total;
+ //Number of tests that are complete
+ int Completed;
//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.107
retrieving revision 1.108
diff -C 2 -d -r1.107 -r1.108
*** cmCTestTestHandler.cxx 27 Aug 2009 14:37:26 -0000 1.107
--- cmCTestTestHandler.cxx 28 Aug 2009 15:08:39 -0000 1.108
***************
*** 1305,1333 ****
//---------------------------------------------------------------------
- void cmCTestTestHandler::PrintTestList()
- {
- int total = this->TotalNumberOfTests;
- for (ListOfTests::iterator it = this->TestList.begin();
- it != this->TestList.end(); it ++ )
- {
- cmCTestTestProperties& p = *it;
- cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3)
- << p.Index << "/");
- cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3)
- << total << " ");
- if (this->MemCheck)
- {
- cmCTestLog(this->CTest, HANDLER_OUTPUT, "Memory Check");
- }
- else
- {
- cmCTestLog(this->CTest, HANDLER_OUTPUT, "Testing");
- }
- cmCTestLog(this->CTest, HANDLER_OUTPUT, " ");
- cmCTestLog(this->CTest, HANDLER_OUTPUT, p.Name.c_str() << std::endl);
- }
- }
-
- //---------------------------------------------------------------------
void cmCTestTestHandler::ProcessDirectory(std::vector<cmStdString> &passed,
std::vector<cmStdString> &failed)
--- 1305,1308 ----
***************
*** 1335,1343 ****
this->ComputeTestList();
- if(this->CTest->GetShowOnly())
- {
- this->PrintTestList();
- return;
- }
cmCTestMultiProcessHandler parallel;
parallel.SetCTest(this->CTest);
--- 1310,1313 ----
***************
*** 1381,1386 ****
this->TestResults.clear();
parallel.SetTestResults(&this->TestResults);
! parallel.RunTests();
!
*this->LogFile << "End testing: "
<< this->CTest->CurrentTime() << std::endl;
--- 1351,1362 ----
this->TestResults.clear();
parallel.SetTestResults(&this->TestResults);
! if(this->CTest->GetShowOnly())
! {
! parallel.PrintTestList();
! }
! else
! {
! parallel.RunTests();
! }
*this->LogFile << "End testing: "
<< this->CTest->CurrentTime() << std::endl;
Index: cmCTestRunTest.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CTest/cmCTestRunTest.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C 2 -d -r1.3 -r1.4
*** cmCTestRunTest.h 27 Aug 2009 14:37:26 -0000 1.3
--- cmCTestRunTest.h 28 Aug 2009 15:08:39 -0000 1.4
***************
*** 56,68 ****
//launch the test process, return whether it started correctly
bool StartTest();
! //capture the test results and send them back to the test handler
! bool EndTest();
! protected:
void DartProcessing();
! bool CreateProcess(std::string executable,
! std::vector<std::string> args,
! double testTimeOut,
std::vector<std::string>* environment);
! void WriteLogOutputTop();
cmCTestTestHandler::cmCTestTestProperties * TestProperties;
--- 56,68 ----
//launch the test process, return whether it started correctly
bool StartTest();
! //capture and report the test results
! bool EndTest(int completed, int total);
! //Called by ctest -N to log the command string
! void ComputeArguments();
! private:
void DartProcessing();
! bool CreateProcess(double testTimeOut,
std::vector<std::string>* environment);
! void WriteLogOutputTop(int completed, int total);
cmCTestTestHandler::cmCTestTestProperties * TestProperties;
***************
*** 87,90 ****
--- 87,91 ----
std::string TestCommand;
std::string ActualCommand;
+ std::vector<std::string> Arguments;
};
More information about the Cmake-commits
mailing list