diff options
| author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-09-22 04:23:34 +0200 | 
|---|---|---|
| committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-09-22 07:18:39 +0200 | 
| commit | 9c9a04705ff431c1e10bf40f2e964a43360441ac (patch) | |
| tree | 7fe17b5a1e65f97a7bd6d8d211975213439f2ea6 /tests/timer | |
| parent | 633a0e76a2fbb31ce6dd4dadb35313aed3aa385c (diff) | |
timer_test: also report early finishes, report timing on error
When a timer was late, show the timing details.
Also count whether timers fired early, for completeness' sake.
Change-Id: Id3942637d77a28b5092ffffcc3e6d9d67c2b8e68
Diffstat (limited to 'tests/timer')
| -rw-r--r-- | tests/timer/timer_test.c | 22 | ||||
| -rw-r--r-- | tests/timer/timer_test.ok | 2 | 
2 files changed, 19 insertions, 5 deletions
diff --git a/tests/timer/timer_test.c b/tests/timer/timer_test.c index 4981fd52..c576a049 100644 --- a/tests/timer/timer_test.c +++ b/tests/timer/timer_test.c @@ -67,6 +67,7 @@ static int timer_nsteps = MAIN_TIMER_NSTEPS;  static unsigned int expired_timers = 0;  static unsigned int total_timers = 0;  static unsigned int too_late = 0; +static unsigned int too_soon = 0;  static void main_timer_fired(void *data)  { @@ -115,17 +116,30 @@ static void secondary_timer_fired(void *data)  	timersub(¤t, &v->stop, &res);  	if (timercmp(&res, &precision, >)) { -		fprintf(stderr, "ERROR: timer %p has expired too late!\n", -			&v->timer); +		fprintf(stderr, "ERROR: timer has expired too late:" +			" wanted %d.%06d now %d.%06d diff %d.%06d\n", +			(int)v->stop.tv_sec, (int)v->stop.tv_usec, +			(int)current.tv_sec, (int)current.tv_usec, +			(int)res.tv_sec, (int)res.tv_usec +		       );  		too_late++;  	} +	else if (timercmp(¤t, &v->stop, <)) { +		fprintf(stderr, "ERROR: timer has expired too soon:" +			" wanted %d.%06d now %d.%06d diff %d.%06d\n", +			(int)v->stop.tv_sec, (int)v->stop.tv_usec, +			(int)current.tv_sec, (int)current.tv_usec, +			(int)res.tv_sec, (int)res.tv_usec +		       ); +		too_soon++; +	}  	llist_del(&v->head);  	talloc_free(data);  	expired_timers++;  	if (expired_timers == total_timers) { -		fprintf(stdout, "test over: added=%u expired=%u too_late=%u \n", -			total_timers, expired_timers, too_late); +		fprintf(stdout, "test over: added=%u expired=%u too_soon=%u too_late=%u\n", +			total_timers, expired_timers, too_soon, too_late);  		exit(EXIT_SUCCESS);  	} diff --git a/tests/timer/timer_test.ok b/tests/timer/timer_test.ok index 1bb382ee..7c000008 100644 --- a/tests/timer/timer_test.ok +++ b/tests/timer/timer_test.ok @@ -1,2 +1,2 @@  Running timer test for 5 steps, accepting imprecision of 0.020000 seconds -test over: added=31 expired=31 too_late=0  +test over: added=31 expired=31 too_soon=0 too_late=0  | 
