[asterisk-commits] test time: Provide a timeout when waiting. (asterisk[master])

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Dec 28 16:34:33 CST 2015


Joshua Colp has submitted this change and it was merged.

Change subject: test_time: Provide a timeout when waiting.
......................................................................


test_time: Provide a timeout when waiting.

The test_timezone_watch unit test is written to expect a
condition to be signaled when the inotify daemon thread runs.
There exists a small window where the test_timezone_watch
thread can signal the inotify daemon thread while it is not
reading on the underlying file descriptor. If this occurs
the test_timezone_watch thread will wait indefinitely for a
signal that will never arrive.

This change adds a timeout to the condition so it will return
regardless after a period of time.

Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390
---
M main/stdtime/localtime.c
1 file changed, 4 insertions(+), 1 deletion(-)

Approvals:
  Matt Jordan: Looks good to me, approved
  Joshua Colp: Verified



diff --git a/main/stdtime/localtime.c b/main/stdtime/localtime.c
index 927d473..c10b7af 100644
--- a/main/stdtime/localtime.c
+++ b/main/stdtime/localtime.c
@@ -796,13 +796,16 @@
 
 void ast_localtime_wakeup_monitor(struct ast_test *info)
 {
+	struct timeval wait_now = ast_tvnow();
+	struct timespec wait_time = { .tv_sec = wait_now.tv_sec + 2, .tv_nsec = wait_now.tv_usec * 1000 };
+
 	if (inotify_thread != AST_PTHREADT_NULL) {
 		AST_LIST_LOCK(&zonelist);
 #ifdef TEST_FRAMEWORK
 		test = info;
 #endif
 		pthread_kill(inotify_thread, SIGURG);
-		ast_cond_wait(&initialization, &(&zonelist)->lock);
+		ast_cond_timedwait(&initialization, &(&zonelist)->lock, &wait_time);
 #ifdef TEST_FRAMEWORK
 		test = NULL;
 #endif

-- 
To view, visit https://gerrit.asterisk.org/1877
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Owner: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Matt Jordan <mjordan at digium.com>



More information about the asterisk-commits mailing list