mirror of
https://github.com/systemd/systemd.git
synced 2025-03-31 14:50:15 +03:00
Merge pull request #4392 from keszybz/running-timers
Fix for display of elapsed timers
This commit is contained in:
commit
cdc31c592a
@ -261,6 +261,8 @@ static void timer_set_state(Timer *t, TimerState state) {
|
||||
if (state != TIMER_WAITING) {
|
||||
t->monotonic_event_source = sd_event_source_unref(t->monotonic_event_source);
|
||||
t->realtime_event_source = sd_event_source_unref(t->realtime_event_source);
|
||||
t->next_elapse_monotonic_or_boottime = USEC_INFINITY;
|
||||
t->next_elapse_realtime = USEC_INFINITY;
|
||||
}
|
||||
|
||||
if (state != old_state)
|
||||
|
@ -73,7 +73,7 @@ static void test_next(const char *input, const char *new_tz, usec_t after, usec_
|
||||
|
||||
u = after;
|
||||
r = calendar_spec_next_usec(c, after, &u);
|
||||
printf("At: %s\n", r < 0 ? strerror(-r) : format_timestamp_us(buf, sizeof(buf), u));
|
||||
printf("At: %s\n", r < 0 ? strerror(-r) : format_timestamp_us(buf, sizeof buf, u));
|
||||
if (expect != (usec_t)-1)
|
||||
assert_se(r >= 0 && u == expect);
|
||||
else
|
||||
@ -109,6 +109,28 @@ static void test_timestamp(void) {
|
||||
assert_se(y == x);
|
||||
}
|
||||
|
||||
static void test_hourly_bug_4031(void) {
|
||||
CalendarSpec *c;
|
||||
usec_t n, u, w;
|
||||
char buf[FORMAT_TIMESTAMP_MAX], zaf[FORMAT_TIMESTAMP_MAX];
|
||||
int r;
|
||||
|
||||
assert_se(calendar_spec_from_string("hourly", &c) >= 0);
|
||||
n = now(CLOCK_REALTIME);
|
||||
assert_se((r = calendar_spec_next_usec(c, n, &u)) >= 0);
|
||||
|
||||
printf("Now: %s (%"PRIu64")\n", format_timestamp_us(buf, sizeof buf, n), n);
|
||||
printf("Next hourly: %s (%"PRIu64")\n", r < 0 ? strerror(-r) : format_timestamp_us(buf, sizeof buf, u), u);
|
||||
|
||||
assert_se((r = calendar_spec_next_usec(c, u, &w)) >= 0);
|
||||
printf("Next hourly: %s (%"PRIu64")\n", r < 0 ? strerror(-r) : format_timestamp_us(zaf, sizeof zaf, w), w);
|
||||
|
||||
assert_se(n < u);
|
||||
assert_se(u <= n + USEC_PER_HOUR);
|
||||
assert_se(u < w);
|
||||
assert_se(w <= u + USEC_PER_HOUR);
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
CalendarSpec *c;
|
||||
|
||||
@ -177,6 +199,7 @@ int main(int argc, char* argv[]) {
|
||||
assert_se(calendar_spec_from_string("00:00:00.0..00.9", &c) < 0);
|
||||
|
||||
test_timestamp();
|
||||
test_hourly_bug_4031();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user