diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2003-02-11 02:52:01 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2003-02-11 02:52:01 (GMT) |
commit | 2756c05b60ef7bc230606813b0155e0e7f1a38df (patch) | |
tree | 6cfb0b4cf656da320b66e50791dc36a8e8c4cba5 /Source | |
parent | b04e32c642e4cdda0352a3fea7159cdadeb0f846 (diff) | |
download | CMake-2756c05b60ef7bc230606813b0155e0e7f1a38df.zip CMake-2756c05b60ef7bc230606813b0155e0e7f1a38df.tar.gz CMake-2756c05b60ef7bc230606813b0155e0e7f1a38df.tar.bz2 |
Fix date issues with different models
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmCTest.cxx | 108 | ||||
-rw-r--r-- | Source/cmCTest.h | 21 | ||||
-rw-r--r-- | Source/ctest.cxx | 19 |
3 files changed, 134 insertions, 14 deletions
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index e3571b1..050208a 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -21,6 +21,7 @@ #ifdef HAVE_CURL # include "cmCTestSubmit.h" +# include "curl/curl.h" #endif #include <stdio.h> @@ -183,6 +184,7 @@ cmCTest::cmCTest() m_Verbose = false; m_DartMode = false; m_ShowOnly = false; + m_TestModel = cmCTest::EXPERIMENTAL; int cc; for ( cc=0; cc < cmCTest::LAST_TEST; cc ++ ) { @@ -258,7 +260,7 @@ void cmCTest::Initialize() std::ifstream tfin(tagfile.c_str()); std::string tag; time_t tctime = time(0); - struct tm *lctime = gmtime(&tctime); + struct tm *lctime = localtime(&tctime); if ( tfin ) { tfin >> tag; @@ -280,6 +282,40 @@ void cmCTest::Initialize() } if ( tag.size() == 0 ) { +#ifdef HAVE_CURL + if ( m_TestModel == cmCTest::NIGHTLY ) + { + int hour; + int min; + int sec; + char stz[100]; + int tz; + tctime = time(0); + //Convert the nightly start time to seconds. Since we are + //providing only a time and a timezone, the current date of + //the local machine is assumed. Consequently, nightlySeconds + //is the time at which the nightly dashboard was opened or + //will be opened on the date of the current client machine. + //As such, this time may be in the past or in the future. + time_t ntime = curl_getdate( + m_DartConfiguration["NightlyStartTime"].c_str(), + &tctime); + tctime = time(0); + std::cout << "Seconds: " << tctime << std::endl; + if ( ntime > tctime ) + { + // If nightlySeconds is in the past, this is the current + // open dashboard, then return nightlySeconds. If + // nightlySeconds is in the future, this is the next + // dashboard to be opened, so subtract 24 hours to get the + // time of the current open dashboard + ntime -= (24 * 60 * 60 ); + std::cout << "Pick yesterday" << std::endl; + } + std::cout << "nightlySeconds: " << ntime << std::endl; + lctime = gmtime(&ntime); + } +#endif char datestring[100]; sprintf(datestring, "%04d%02d%02d-%02d%02d", lctime->tm_year + 1900, @@ -434,8 +470,21 @@ int cmCTest::UpdateDirectory() return 1; } - std::string command = cvsCommand + " -z3 update " + cvsOptions; + std::string extra_update_opts; + if ( m_TestModel == cmCTest::NIGHTLY ) + { + time_t currenttime = time(0); + struct tm* t = localtime(¤ttime); + char current_time[1024]; + strftime(current_time, 1000, "%Y-%m-%d ", t); + + std::string today_update_date = current_time + + m_DartConfiguration["NightlyStartTime"]; + extra_update_opts += "-D \"" + today_update_date +"\""; + } + std::string command = cvsCommand + " -z3 update " + cvsOptions + + " " + extra_update_opts; std::ofstream os; if ( !this->OpenOutputFile("", "Update.xml", os) ) { @@ -444,18 +493,18 @@ int cmCTest::UpdateDirectory() std::string start_time = ::CurrentTime(); - std::string output; + std::string goutput; int retVal = 0; bool res = true; if ( !m_ShowOnly ) { - res = cmSystemTools::RunCommand(command.c_str(), output, + res = cmSystemTools::RunCommand(command.c_str(), goutput, retVal, sourceDirectory.c_str(), m_Verbose); std::ofstream ofs; if ( this->OpenOutputFile("Temporary", "LastUpdate.log", ofs) ) { - ofs << output; + ofs << goutput; ofs.close(); } } @@ -469,7 +518,8 @@ int cmCTest::UpdateDirectory() << "\t<Site>" <<m_DartConfiguration["Site"] << "</Site>\n" << "\t<BuildName>" << m_DartConfiguration["BuildName"] << "</BuildName>\n" - << "\t<BuildStamp>" << m_CurrentTag << "-Experimental</BuildStamp>\n" + << "\t<BuildStamp>" << m_CurrentTag << "-" + << this->GetTestModelString() << "</BuildStamp>\n" << "\t<StartDateTime>" << start_time << "</StartDateTime>\n" << "\t<UpdateCommand>" << command << "</UpdateCommand>\n" << "\t<UpdateReturnStatus>"; @@ -480,7 +530,7 @@ int cmCTest::UpdateDirectory() os << "</UpdateReturnStatus>" << std::endl; std::vector<cmStdString> lines; - cmSystemTools::Split(output.c_str(), lines); + cmSystemTools::Split(goutput.c_str(), lines); std::cout << "Updated; gathering version information" << std::endl; cmRegularExpression date_author("^date: +([^;]+); +author: +([^;]+); +state: +[^;]+;"); cmRegularExpression revision("^revision +([^ ]*) *$"); @@ -501,9 +551,10 @@ int cmCTest::UpdateDirectory() { const char* file = line + 2; //std::cout << "Line" << cc << ": " << mod << " - " << file << std::endl; - std::string logcommand = cvsCommand + " -z3 log -N " + file; + std::string logcommand = cvsCommand + " -z3 log -N " + file + + " " + extra_update_opts; //std::cout << "Do log: " << logcommand << std::endl; - output = ""; + std::string output; res = cmSystemTools::RunCommand(logcommand.c_str(), output, retVal, sourceDirectory.c_str(), m_Verbose); @@ -713,6 +764,7 @@ int cmCTest::UpdateDirectory() if (! res || retVal ) { std::cerr << "Error(s) when updating the project" << std::endl; + std::cerr << "Output: " << goutput << std::endl; return 1; } return 0; @@ -720,6 +772,7 @@ int cmCTest::UpdateDirectory() int cmCTest::ConfigureDirectory() { + std::cout << "Configure project" << std::endl; std::string cCommand = m_DartConfiguration["ConfigureCommand"]; if ( cCommand.size() == 0 ) { @@ -743,6 +796,12 @@ int cmCTest::ConfigureDirectory() res = cmSystemTools::RunCommand(cCommand.c_str(), output, retVal, buildDirectory.c_str(), m_Verbose); + std::ofstream ofs; + if ( this->OpenOutputFile("Temporary", "LastConfigure.log", ofs) ) + { + ofs << output; + ofs.close(); + } } else { @@ -758,6 +817,7 @@ int cmCTest::ConfigureDirectory() int cmCTest::BuildDirectory() { + std::cout << "Build project" << std::endl; std::string makeCommand = m_DartConfiguration["MakeCommand"]; if ( makeCommand.size() == 0 ) { @@ -932,6 +992,7 @@ int cmCTest::BuildDirectory() int cmCTest::CoverageDirectory() { + std::cout << "Performing coverage" << std::endl; std::vector<std::string> files; std::vector<std::string> cfiles; std::vector<std::string> cdirs; @@ -1105,7 +1166,8 @@ int cmCTest::CoverageDirectory() log << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" << "<Site BuildName=\"" << m_DartConfiguration["BuildName"] - << "\" BuildStamp=\"" << m_CurrentTag << "-Experimental\" Name=\"" + << "\" BuildStamp=\"" << m_CurrentTag << "-" + << this->GetTestModelString() << "\" Name=\"" << m_DartConfiguration["Site"] << "\">\n" << "<Coverage>\n" << "\t<StartDateTime>" << start_time << "</StartDateTime>" << std::endl; @@ -1213,7 +1275,8 @@ int cmCTest::CoverageDirectory() local_start_time = ::CurrentTime(); cfileoutput << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" << "<Site BuildName=\"" << m_DartConfiguration["BuildName"] - << "\" BuildStamp=\"" << m_CurrentTag << "-Experimental\" Name=\"" + << "\" BuildStamp=\"" << m_CurrentTag << "-" + << this->GetTestModelString() << "\" Name=\"" << m_DartConfiguration["Site"] << "\">\n" << "<CoverageLog>\n" << "\t<StartDateTime>" << local_start_time << "</StartDateTime>" << std::endl; @@ -1346,7 +1409,8 @@ void cmCTest::GenerateDartBuildOutput(std::ostream& os, { os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" << "<Site BuildName=\"" << m_DartConfiguration["BuildName"] - << "\" BuildStamp=\"" << m_CurrentTag << "-Experimental\" Name=\"" + << "\" BuildStamp=\"" << m_CurrentTag << "-" + << this->GetTestModelString() << "\" Name=\"" << m_DartConfiguration["Site"] << "\">\n" << "<Build>\n" << "\t<StartDateTime>" << m_StartBuild << "</StartDateTime>\n" @@ -1578,6 +1642,7 @@ void cmCTest::ProcessDirectory(std::vector<std::string> &passed, int cmCTest::TestDirectory() { + std::cout << "Test project" << std::endl; std::vector<std::string> passed; std::vector<std::string> failed; int total; @@ -1727,7 +1792,8 @@ std::string cmCTest::GetSubmitResultsPrefix() { std::string name = m_DartConfiguration["Site"] + "___" + m_DartConfiguration["BuildName"] + - "___" + m_CurrentTag + "-Experimental___XML___"; + "___" + m_CurrentTag + "-" + + this->GetTestModelString() + "___XML___"; return name; } @@ -1745,7 +1811,8 @@ void cmCTest::GenerateDartOutput(std::ostream& os) os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" << "<Site BuildName=\"" << m_DartConfiguration["BuildName"] - << "\" BuildStamp=\"" << m_CurrentTag << "-Experimental\" Name=\"" + << "\" BuildStamp=\"" << m_CurrentTag << "-" + << this->GetTestModelString() << "\" Name=\"" << m_DartConfiguration["Site"] << "\">\n" << "<Testing>\n" << "\t<StartDateTime>" << m_StartTest << "</StartDateTime>\n" @@ -1846,3 +1913,16 @@ int cmCTest::ProcessTests() } return res; } + +std::string cmCTest::GetTestModelString() +{ + switch ( m_TestModel ) + { + case cmCTest::NIGHTLY: + return "Nightly"; + case cmCTest::CONTINUOUS: + return "Continuous"; + } + return "Experimental"; +} + diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 520b13b..f23f306 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -15,6 +15,9 @@ =========================================================================*/ +#ifndef cmCTest_h +#define cmCTest_h + #include "cmStandardIncludes.h" @@ -92,6 +95,15 @@ public: bool SetTest(const char*); /** + * Set the cmake test mode (experimental, nightly, continuous). + */ + void SetTestModel(int mode) + { + m_TestModel = mode; + } + std::string GetTestModelString(); + + /** * constructor */ cmCTest(); @@ -108,6 +120,12 @@ public: bool m_DartMode; bool m_ShowOnly; + enum { + EXPERIMENTAL, + NIGHTLY, + CONTINUOUS + }; + private: enum { FIRST_TEST = 0, @@ -185,6 +203,8 @@ private: std::string m_StartTest; std::string m_EndTest; + bool m_TestModel; + /** * Generate the Dart compatible output */ @@ -197,3 +217,4 @@ private: std::string MakeXMLSafe(const std::string&); }; +#endif diff --git a/Source/ctest.cxx b/Source/ctest.cxx index cb8bc20..256c255 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -60,6 +60,25 @@ int main (int argc, char *argv[]) inst.SetTest(args[i+1].c_str()); } + if( ( arg.find("-M",0) == 0 || arg.find("--test-model",0) == 0 ) && + (i < args.size() -1) ) + { + std::string& str = args[i+1]; + if ( str == "NIGHTLY" || str == "nightly" || str == "Nightly" ) + { + inst.SetTestModel(cmCTest::NIGHTLY); + } + else if ( str == "CONTINUOUS" || str == "continuous" || + str == "Continuous" ) + { + inst.SetTestModel(cmCTest::CONTINUOUS); + } + else + { + inst.SetTestModel(cmCTest::EXPERIMENTAL); + } + } + if(arg.find("-R",0) == 0 && i < args.size() - 1) { inst.m_UseIncludeRegExp = true; |