Fix for StopTime for cases when gmtime is a day ahead of localtime
This commit is contained in:
parent
a2fe175647
commit
9676c52c3e
|
@ -531,10 +531,22 @@ double cmCTestRunTest::ResolveTimeout()
|
||||||
time_t current_time = time(0);
|
time_t current_time = time(0);
|
||||||
lctime = gmtime(¤t_time);
|
lctime = gmtime(¤t_time);
|
||||||
int gm_hour = lctime->tm_hour;
|
int gm_hour = lctime->tm_hour;
|
||||||
|
time_t gm_time = mktime(lctime);
|
||||||
lctime = localtime(¤t_time);
|
lctime = localtime(¤t_time);
|
||||||
int local_hour = lctime->tm_hour;
|
int local_hour = lctime->tm_hour;
|
||||||
|
|
||||||
int timezone = (local_hour - gm_hour) * 100;
|
int tzone_offset = 0;
|
||||||
|
if(gm_time > current_time && gm_hour < local_hour)
|
||||||
|
{
|
||||||
|
// this means gm_time is on the next day
|
||||||
|
tzone_offset = local_hour - gm_hour - 24;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tzone_offset = local_hour - gm_hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
tzone_offset *= 100;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
// add todays year day and month to the time in str because
|
// add todays year day and month to the time in str because
|
||||||
// curl_getdate no longer assumes the day is today
|
// curl_getdate no longer assumes the day is today
|
||||||
|
@ -543,10 +555,8 @@ double cmCTestRunTest::ResolveTimeout()
|
||||||
lctime->tm_mon + 1,
|
lctime->tm_mon + 1,
|
||||||
lctime->tm_mday,
|
lctime->tm_mday,
|
||||||
this->CTest->GetStopTime().c_str(),
|
this->CTest->GetStopTime().c_str(),
|
||||||
timezone);
|
tzone_offset);
|
||||||
|
|
||||||
cmCTestLog(this->CTest, HANDLER_OUTPUT, "Computed stop time="
|
|
||||||
<< buf << std::endl);
|
|
||||||
time_t stop_time = curl_getdate(buf, ¤t_time);
|
time_t stop_time = curl_getdate(buf, ¤t_time);
|
||||||
if(stop_time == -1)
|
if(stop_time == -1)
|
||||||
{
|
{
|
||||||
|
@ -558,7 +568,7 @@ double cmCTestRunTest::ResolveTimeout()
|
||||||
{
|
{
|
||||||
stop_time += 24*60*60;
|
stop_time += 24*60*60;
|
||||||
}
|
}
|
||||||
double stop_timeout = stop_time - current_time;
|
int stop_timeout = (stop_time - current_time) % (24*60*60);
|
||||||
|
|
||||||
if(stop_timeout <= 0)
|
if(stop_timeout <= 0)
|
||||||
{
|
{
|
||||||
|
@ -567,7 +577,8 @@ double cmCTestRunTest::ResolveTimeout()
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
#undef min
|
#undef min
|
||||||
return timeout == 0 ? stop_timeout : std::min(timeout, stop_timeout);
|
return timeout == 0 ? stop_timeout :
|
||||||
|
std::min(timeout, static_cast<double>(stop_timeout));
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -2557,10 +2557,22 @@ void cmCTest::DetermineNextDayStop()
|
||||||
time_t current_time = time(0);
|
time_t current_time = time(0);
|
||||||
lctime = gmtime(¤t_time);
|
lctime = gmtime(¤t_time);
|
||||||
int gm_hour = lctime->tm_hour;
|
int gm_hour = lctime->tm_hour;
|
||||||
|
time_t gm_time = mktime(lctime);
|
||||||
lctime = localtime(¤t_time);
|
lctime = localtime(¤t_time);
|
||||||
int local_hour = lctime->tm_hour;
|
int local_hour = lctime->tm_hour;
|
||||||
|
|
||||||
int timezone = (local_hour - gm_hour) * 100;
|
int tzone_offset = 0;
|
||||||
|
if(gm_time > current_time && gm_hour < local_hour)
|
||||||
|
{
|
||||||
|
// this means gm_time is on the next day
|
||||||
|
tzone_offset = local_hour - gm_hour - 24;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tzone_offset = local_hour - gm_hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
tzone_offset *= 100;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
sprintf(buf, "%d%02d%02d %s %+05i",
|
sprintf(buf, "%d%02d%02d %s %+05i",
|
||||||
lctime->tm_year + 1900,
|
lctime->tm_year + 1900,
|
||||||
|
|
|
@ -25,8 +25,8 @@ CTEST_CONFIGURE(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
||||||
CTEST_BUILD(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
CTEST_BUILD(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
|
||||||
|
|
||||||
GET_DATE()
|
GET_DATE()
|
||||||
message("original time: ${${GD_PREFIX}HOUR}:${${GD_PREFIX}MINUTE}:${${GD_PREFIX}SECOND}")
|
message("curr time: ${${GD_PREFIX}HOUR}:${${GD_PREFIX}MINUTE}:${${GD_PREFIX}SECOND}")
|
||||||
ADD_SECONDS(25)
|
ADD_SECONDS(15)
|
||||||
message("stop time: ${new_hr}:${new_min}:${new_sec}")
|
message("stop time: ${new_hr}:${new_min}:${new_sec}")
|
||||||
|
|
||||||
CTEST_TEST(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res STOP_TIME "${new_hr}:${new_min}:${new_sec}")
|
CTEST_TEST(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res STOP_TIME "${new_hr}:${new_min}:${new_sec}")
|
||||||
|
|
Loading…
Reference in New Issue