[asterisk-commits] mmichelson: branch group/dns r432510 - /team/group/dns/tests/test_dns.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Mar 5 16:23:42 CST 2015


Author: mmichelson
Date: Thu Mar  5 16:23:41 2015
New Revision: 432510

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432510
Log:
Change async test to use ast_cond_timedwait()

This way, if there is some issue, the test will eventually
time out, rather than waiting forever.


Modified:
    team/group/dns/tests/test_dns.c

Modified: team/group/dns/tests/test_dns.c
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/tests/test_dns.c?view=diff&rev=432510&r1=432509&r2=432510
==============================================================================
--- team/group/dns/tests/test_dns.c (original)
+++ team/group/dns/tests/test_dns.c Thu Mar  5 16:23:41 2015
@@ -750,6 +750,7 @@
 	RAII_VAR(struct async_resolution_data *, async_data, NULL, ao2_cleanup); 
 	RAII_VAR(struct ast_dns_query *, query, NULL, ao2_cleanup);
 	enum ast_test_result_state res = AST_TEST_PASS;
+	struct timespec timeout;
 
 	switch (cmd) {
 	case TEST_INIT:
@@ -799,11 +800,21 @@
 		goto cleanup;
 	}
 
+	clock_gettime(CLOCK_REALTIME, &timeout);
+	timeout.tv_sec += 10;
 	ast_mutex_lock(&async_data->lock);
 	while (!async_data->complete) {
-		ast_cond_wait(&async_data->cond, &async_data->lock);
+		if (ast_cond_timedwait(&async_data->cond, &async_data->lock, &timeout) == ETIMEDOUT) {
+			break;
+		}
 	}
 	ast_mutex_unlock(&async_data->lock);
+
+	if (!async_data->complete) {
+		ast_test_status_update(test, "Asynchronous resolution timed out\n");
+		res = AST_TEST_FAIL;
+		goto cleanup;
+	}
 
 	if (!test_resolver_data.resolution_complete) {
 		ast_test_status_update(test, "Asynchronous resolution completed early?\n");




More information about the asterisk-commits mailing list