Fix date issues with different models
This commit is contained in:
parent
b04e32c642
commit
2756c05b60
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#ifdef HAVE_CURL
|
#ifdef HAVE_CURL
|
||||||
# include "cmCTestSubmit.h"
|
# include "cmCTestSubmit.h"
|
||||||
|
# include "curl/curl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -183,6 +184,7 @@ cmCTest::cmCTest()
|
|||||||
m_Verbose = false;
|
m_Verbose = false;
|
||||||
m_DartMode = false;
|
m_DartMode = false;
|
||||||
m_ShowOnly = false;
|
m_ShowOnly = false;
|
||||||
|
m_TestModel = cmCTest::EXPERIMENTAL;
|
||||||
int cc;
|
int cc;
|
||||||
for ( cc=0; cc < cmCTest::LAST_TEST; cc ++ )
|
for ( cc=0; cc < cmCTest::LAST_TEST; cc ++ )
|
||||||
{
|
{
|
||||||
@ -258,7 +260,7 @@ void cmCTest::Initialize()
|
|||||||
std::ifstream tfin(tagfile.c_str());
|
std::ifstream tfin(tagfile.c_str());
|
||||||
std::string tag;
|
std::string tag;
|
||||||
time_t tctime = time(0);
|
time_t tctime = time(0);
|
||||||
struct tm *lctime = gmtime(&tctime);
|
struct tm *lctime = localtime(&tctime);
|
||||||
if ( tfin )
|
if ( tfin )
|
||||||
{
|
{
|
||||||
tfin >> tag;
|
tfin >> tag;
|
||||||
@ -280,6 +282,40 @@ void cmCTest::Initialize()
|
|||||||
}
|
}
|
||||||
if ( tag.size() == 0 )
|
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];
|
char datestring[100];
|
||||||
sprintf(datestring, "%04d%02d%02d-%02d%02d",
|
sprintf(datestring, "%04d%02d%02d-%02d%02d",
|
||||||
lctime->tm_year + 1900,
|
lctime->tm_year + 1900,
|
||||||
@ -434,8 +470,21 @@ int cmCTest::UpdateDirectory()
|
|||||||
return 1;
|
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;
|
std::ofstream os;
|
||||||
if ( !this->OpenOutputFile("", "Update.xml", os) )
|
if ( !this->OpenOutputFile("", "Update.xml", os) )
|
||||||
{
|
{
|
||||||
@ -444,18 +493,18 @@ int cmCTest::UpdateDirectory()
|
|||||||
std::string start_time = ::CurrentTime();
|
std::string start_time = ::CurrentTime();
|
||||||
|
|
||||||
|
|
||||||
std::string output;
|
std::string goutput;
|
||||||
int retVal = 0;
|
int retVal = 0;
|
||||||
bool res = true;
|
bool res = true;
|
||||||
if ( !m_ShowOnly )
|
if ( !m_ShowOnly )
|
||||||
{
|
{
|
||||||
res = cmSystemTools::RunCommand(command.c_str(), output,
|
res = cmSystemTools::RunCommand(command.c_str(), goutput,
|
||||||
retVal, sourceDirectory.c_str(),
|
retVal, sourceDirectory.c_str(),
|
||||||
m_Verbose);
|
m_Verbose);
|
||||||
std::ofstream ofs;
|
std::ofstream ofs;
|
||||||
if ( this->OpenOutputFile("Temporary", "LastUpdate.log", ofs) )
|
if ( this->OpenOutputFile("Temporary", "LastUpdate.log", ofs) )
|
||||||
{
|
{
|
||||||
ofs << output;
|
ofs << goutput;
|
||||||
ofs.close();
|
ofs.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -469,7 +518,8 @@ int cmCTest::UpdateDirectory()
|
|||||||
<< "\t<Site>" <<m_DartConfiguration["Site"] << "</Site>\n"
|
<< "\t<Site>" <<m_DartConfiguration["Site"] << "</Site>\n"
|
||||||
<< "\t<BuildName>" << m_DartConfiguration["BuildName"]
|
<< "\t<BuildName>" << m_DartConfiguration["BuildName"]
|
||||||
<< "</BuildName>\n"
|
<< "</BuildName>\n"
|
||||||
<< "\t<BuildStamp>" << m_CurrentTag << "-Experimental</BuildStamp>\n"
|
<< "\t<BuildStamp>" << m_CurrentTag << "-"
|
||||||
|
<< this->GetTestModelString() << "</BuildStamp>\n"
|
||||||
<< "\t<StartDateTime>" << start_time << "</StartDateTime>\n"
|
<< "\t<StartDateTime>" << start_time << "</StartDateTime>\n"
|
||||||
<< "\t<UpdateCommand>" << command << "</UpdateCommand>\n"
|
<< "\t<UpdateCommand>" << command << "</UpdateCommand>\n"
|
||||||
<< "\t<UpdateReturnStatus>";
|
<< "\t<UpdateReturnStatus>";
|
||||||
@ -480,7 +530,7 @@ int cmCTest::UpdateDirectory()
|
|||||||
os << "</UpdateReturnStatus>" << std::endl;
|
os << "</UpdateReturnStatus>" << std::endl;
|
||||||
|
|
||||||
std::vector<cmStdString> lines;
|
std::vector<cmStdString> lines;
|
||||||
cmSystemTools::Split(output.c_str(), lines);
|
cmSystemTools::Split(goutput.c_str(), lines);
|
||||||
std::cout << "Updated; gathering version information" << std::endl;
|
std::cout << "Updated; gathering version information" << std::endl;
|
||||||
cmRegularExpression date_author("^date: +([^;]+); +author: +([^;]+); +state: +[^;]+;");
|
cmRegularExpression date_author("^date: +([^;]+); +author: +([^;]+); +state: +[^;]+;");
|
||||||
cmRegularExpression revision("^revision +([^ ]*) *$");
|
cmRegularExpression revision("^revision +([^ ]*) *$");
|
||||||
@ -501,9 +551,10 @@ int cmCTest::UpdateDirectory()
|
|||||||
{
|
{
|
||||||
const char* file = line + 2;
|
const char* file = line + 2;
|
||||||
//std::cout << "Line" << cc << ": " << mod << " - " << file << std::endl;
|
//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;
|
//std::cout << "Do log: " << logcommand << std::endl;
|
||||||
output = "";
|
std::string output;
|
||||||
res = cmSystemTools::RunCommand(logcommand.c_str(), output,
|
res = cmSystemTools::RunCommand(logcommand.c_str(), output,
|
||||||
retVal, sourceDirectory.c_str(),
|
retVal, sourceDirectory.c_str(),
|
||||||
m_Verbose);
|
m_Verbose);
|
||||||
@ -713,6 +764,7 @@ int cmCTest::UpdateDirectory()
|
|||||||
if (! res || retVal )
|
if (! res || retVal )
|
||||||
{
|
{
|
||||||
std::cerr << "Error(s) when updating the project" << std::endl;
|
std::cerr << "Error(s) when updating the project" << std::endl;
|
||||||
|
std::cerr << "Output: " << goutput << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -720,6 +772,7 @@ int cmCTest::UpdateDirectory()
|
|||||||
|
|
||||||
int cmCTest::ConfigureDirectory()
|
int cmCTest::ConfigureDirectory()
|
||||||
{
|
{
|
||||||
|
std::cout << "Configure project" << std::endl;
|
||||||
std::string cCommand = m_DartConfiguration["ConfigureCommand"];
|
std::string cCommand = m_DartConfiguration["ConfigureCommand"];
|
||||||
if ( cCommand.size() == 0 )
|
if ( cCommand.size() == 0 )
|
||||||
{
|
{
|
||||||
@ -743,6 +796,12 @@ int cmCTest::ConfigureDirectory()
|
|||||||
res = cmSystemTools::RunCommand(cCommand.c_str(), output,
|
res = cmSystemTools::RunCommand(cCommand.c_str(), output,
|
||||||
retVal, buildDirectory.c_str(),
|
retVal, buildDirectory.c_str(),
|
||||||
m_Verbose);
|
m_Verbose);
|
||||||
|
std::ofstream ofs;
|
||||||
|
if ( this->OpenOutputFile("Temporary", "LastConfigure.log", ofs) )
|
||||||
|
{
|
||||||
|
ofs << output;
|
||||||
|
ofs.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -758,6 +817,7 @@ int cmCTest::ConfigureDirectory()
|
|||||||
|
|
||||||
int cmCTest::BuildDirectory()
|
int cmCTest::BuildDirectory()
|
||||||
{
|
{
|
||||||
|
std::cout << "Build project" << std::endl;
|
||||||
std::string makeCommand = m_DartConfiguration["MakeCommand"];
|
std::string makeCommand = m_DartConfiguration["MakeCommand"];
|
||||||
if ( makeCommand.size() == 0 )
|
if ( makeCommand.size() == 0 )
|
||||||
{
|
{
|
||||||
@ -932,6 +992,7 @@ int cmCTest::BuildDirectory()
|
|||||||
|
|
||||||
int cmCTest::CoverageDirectory()
|
int cmCTest::CoverageDirectory()
|
||||||
{
|
{
|
||||||
|
std::cout << "Performing coverage" << std::endl;
|
||||||
std::vector<std::string> files;
|
std::vector<std::string> files;
|
||||||
std::vector<std::string> cfiles;
|
std::vector<std::string> cfiles;
|
||||||
std::vector<std::string> cdirs;
|
std::vector<std::string> cdirs;
|
||||||
@ -1105,7 +1166,8 @@ int cmCTest::CoverageDirectory()
|
|||||||
|
|
||||||
log << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
log << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||||
<< "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
|
<< "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
|
||||||
<< "\" BuildStamp=\"" << m_CurrentTag << "-Experimental\" Name=\""
|
<< "\" BuildStamp=\"" << m_CurrentTag << "-"
|
||||||
|
<< this->GetTestModelString() << "\" Name=\""
|
||||||
<< m_DartConfiguration["Site"] << "\">\n"
|
<< m_DartConfiguration["Site"] << "\">\n"
|
||||||
<< "<Coverage>\n"
|
<< "<Coverage>\n"
|
||||||
<< "\t<StartDateTime>" << start_time << "</StartDateTime>" << std::endl;
|
<< "\t<StartDateTime>" << start_time << "</StartDateTime>" << std::endl;
|
||||||
@ -1213,7 +1275,8 @@ int cmCTest::CoverageDirectory()
|
|||||||
local_start_time = ::CurrentTime();
|
local_start_time = ::CurrentTime();
|
||||||
cfileoutput << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
cfileoutput << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||||
<< "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
|
<< "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
|
||||||
<< "\" BuildStamp=\"" << m_CurrentTag << "-Experimental\" Name=\""
|
<< "\" BuildStamp=\"" << m_CurrentTag << "-"
|
||||||
|
<< this->GetTestModelString() << "\" Name=\""
|
||||||
<< m_DartConfiguration["Site"] << "\">\n"
|
<< m_DartConfiguration["Site"] << "\">\n"
|
||||||
<< "<CoverageLog>\n"
|
<< "<CoverageLog>\n"
|
||||||
<< "\t<StartDateTime>" << local_start_time << "</StartDateTime>" << std::endl;
|
<< "\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"
|
os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||||
<< "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
|
<< "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
|
||||||
<< "\" BuildStamp=\"" << m_CurrentTag << "-Experimental\" Name=\""
|
<< "\" BuildStamp=\"" << m_CurrentTag << "-"
|
||||||
|
<< this->GetTestModelString() << "\" Name=\""
|
||||||
<< m_DartConfiguration["Site"] << "\">\n"
|
<< m_DartConfiguration["Site"] << "\">\n"
|
||||||
<< "<Build>\n"
|
<< "<Build>\n"
|
||||||
<< "\t<StartDateTime>" << m_StartBuild << "</StartDateTime>\n"
|
<< "\t<StartDateTime>" << m_StartBuild << "</StartDateTime>\n"
|
||||||
@ -1578,6 +1642,7 @@ void cmCTest::ProcessDirectory(std::vector<std::string> &passed,
|
|||||||
|
|
||||||
int cmCTest::TestDirectory()
|
int cmCTest::TestDirectory()
|
||||||
{
|
{
|
||||||
|
std::cout << "Test project" << std::endl;
|
||||||
std::vector<std::string> passed;
|
std::vector<std::string> passed;
|
||||||
std::vector<std::string> failed;
|
std::vector<std::string> failed;
|
||||||
int total;
|
int total;
|
||||||
@ -1727,7 +1792,8 @@ std::string cmCTest::GetSubmitResultsPrefix()
|
|||||||
{
|
{
|
||||||
std::string name = m_DartConfiguration["Site"] +
|
std::string name = m_DartConfiguration["Site"] +
|
||||||
"___" + m_DartConfiguration["BuildName"] +
|
"___" + m_DartConfiguration["BuildName"] +
|
||||||
"___" + m_CurrentTag + "-Experimental___XML___";
|
"___" + m_CurrentTag + "-" +
|
||||||
|
this->GetTestModelString() + "___XML___";
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1745,7 +1811,8 @@ void cmCTest::GenerateDartOutput(std::ostream& os)
|
|||||||
|
|
||||||
os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||||
<< "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
|
<< "<Site BuildName=\"" << m_DartConfiguration["BuildName"]
|
||||||
<< "\" BuildStamp=\"" << m_CurrentTag << "-Experimental\" Name=\""
|
<< "\" BuildStamp=\"" << m_CurrentTag << "-"
|
||||||
|
<< this->GetTestModelString() << "\" Name=\""
|
||||||
<< m_DartConfiguration["Site"] << "\">\n"
|
<< m_DartConfiguration["Site"] << "\">\n"
|
||||||
<< "<Testing>\n"
|
<< "<Testing>\n"
|
||||||
<< "\t<StartDateTime>" << m_StartTest << "</StartDateTime>\n"
|
<< "\t<StartDateTime>" << m_StartTest << "</StartDateTime>\n"
|
||||||
@ -1846,3 +1913,16 @@ int cmCTest::ProcessTests()
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string cmCTest::GetTestModelString()
|
||||||
|
{
|
||||||
|
switch ( m_TestModel )
|
||||||
|
{
|
||||||
|
case cmCTest::NIGHTLY:
|
||||||
|
return "Nightly";
|
||||||
|
case cmCTest::CONTINUOUS:
|
||||||
|
return "Continuous";
|
||||||
|
}
|
||||||
|
return "Experimental";
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,9 @@
|
|||||||
|
|
||||||
=========================================================================*/
|
=========================================================================*/
|
||||||
|
|
||||||
|
#ifndef cmCTest_h
|
||||||
|
#define cmCTest_h
|
||||||
|
|
||||||
|
|
||||||
#include "cmStandardIncludes.h"
|
#include "cmStandardIncludes.h"
|
||||||
|
|
||||||
@ -91,6 +94,15 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool SetTest(const char*);
|
bool SetTest(const char*);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the cmake test mode (experimental, nightly, continuous).
|
||||||
|
*/
|
||||||
|
void SetTestModel(int mode)
|
||||||
|
{
|
||||||
|
m_TestModel = mode;
|
||||||
|
}
|
||||||
|
std::string GetTestModelString();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor
|
* constructor
|
||||||
*/
|
*/
|
||||||
@ -108,6 +120,12 @@ public:
|
|||||||
bool m_DartMode;
|
bool m_DartMode;
|
||||||
bool m_ShowOnly;
|
bool m_ShowOnly;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
EXPERIMENTAL,
|
||||||
|
NIGHTLY,
|
||||||
|
CONTINUOUS
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum {
|
enum {
|
||||||
FIRST_TEST = 0,
|
FIRST_TEST = 0,
|
||||||
@ -185,6 +203,8 @@ private:
|
|||||||
std::string m_StartTest;
|
std::string m_StartTest;
|
||||||
std::string m_EndTest;
|
std::string m_EndTest;
|
||||||
|
|
||||||
|
bool m_TestModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate the Dart compatible output
|
* Generate the Dart compatible output
|
||||||
*/
|
*/
|
||||||
@ -197,3 +217,4 @@ private:
|
|||||||
std::string MakeXMLSafe(const std::string&);
|
std::string MakeXMLSafe(const std::string&);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -60,6 +60,25 @@ int main (int argc, char *argv[])
|
|||||||
inst.SetTest(args[i+1].c_str());
|
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)
|
if(arg.find("-R",0) == 0 && i < args.size() - 1)
|
||||||
{
|
{
|
||||||
inst.m_UseIncludeRegExp = true;
|
inst.m_UseIncludeRegExp = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user