[asterisk-commits] russell: branch russell/heap r175773 - /team/russell/heap/tests/test_sched.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sat Feb 14 15:37:42 CST 2009


Author: russell
Date: Sat Feb 14 15:37:42 2009
New Revision: 175773

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=175773
Log:
merge the add() and del() tests

Modified:
    team/russell/heap/tests/test_sched.c

Modified: team/russell/heap/tests/test_sched.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/heap/tests/test_sched.c?view=diff&rev=175773&r1=175772&r2=175773
==============================================================================
--- team/russell/heap/tests/test_sched.c (original)
+++ team/russell/heap/tests/test_sched.c Sat Feb 14 15:37:42 2009
@@ -37,17 +37,18 @@
 	return 0;
 }
 
-static char *handle_cli_sched_test_add(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+static char *handle_cli_sched_test(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	struct sched_context *con;
 	struct timeval start;
-	unsigned int i;
+	unsigned int num, i;
+	int *sched_ids = NULL;
 
 	switch (cmd) {
 	case CLI_INIT:
-		e->command = "sched test add";
+		e->command = "sched test";
 		e->usage = ""
-			"Usage: sched test add <num>\n"
+			"Usage: sched test <num>\n"
 			"";
 		return NULL;
 	case CLI_GENERATE:
@@ -58,24 +59,43 @@
 		return CLI_SHOWUSAGE;
 	}
 
-	if (sscanf(a->argv[e->args], "%u", &i) != 1) {
+	if (sscanf(a->argv[e->args], "%u", &num) != 1) {
 		return CLI_SHOWUSAGE;
 	}
-
-	ast_cli(a->fd, "Testing ast_sched_add() performance - timing how long it takes "
-			"to add %u entries at random time intervals from 0 to 60 seconds\n", i);
 
 	if (!(con = sched_context_create())) {
 		ast_cli(a->fd, "Test failed - could not create scheduler context\n");
 		return CLI_FAILURE;
 	}
 
+	if (!(sched_ids = ast_malloc(sizeof(*sched_ids) * num))) {
+		ast_cli(a->fd, "Test failed - memory allocation failure\n");
+		goto return_cleanup;
+	}
+
+	ast_cli(a->fd, "Testing ast_sched_add() performance - timing how long it takes "
+			"to add %u entries at random time intervals from 0 to 60 seconds\n", num);
+
 	start = ast_tvnow();
 
-	while (i--) {
+	for (i = 0; i < num; i++) {
 		int when = abs(ast_random()) % 60000;
-		if (ast_sched_add(con, when, sched_cb, NULL) == -1) {
+		if ((sched_ids[i] = ast_sched_add(con, when, sched_cb, NULL)) == -1) {
 			ast_cli(a->fd, "Test failed - sched_add returned -1\n");
+			goto return_cleanup;
+		}
+	}
+
+	ast_cli(a->fd, "Test complete - %d ms\n", ast_tvdiff_ms(ast_tvnow(), start));
+
+	ast_cli(a->fd, "Testing ast_sched_del() performance - timing how long it takes "
+			"to delete %u entries with random time intervals from 0 to 60 seconds\n", num);
+
+	start = ast_tvnow();
+
+	for (i = 0; i < num; i++) {
+		if (ast_sched_del(con, sched_ids[i]) == -1) {
+			ast_cli(a->fd, "Test failed - sched_del returned -1\n");
 			goto return_cleanup;
 		}
 	}
@@ -84,57 +104,15 @@
 
 return_cleanup:
 	sched_context_destroy(con);
-
-	return CLI_SUCCESS;
-}
-
-static char *handle_cli_sched_test_del(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
-{
-	struct sched_context *con;
-	struct timeval start;
-	unsigned int i;
-
-	switch (cmd) {
-	case CLI_INIT:
-		e->command = "sched test del";
-		e->usage = ""
-			"Usage: sched test del <num>\n"
-			"";
-		return NULL;
-	case CLI_GENERATE:
-		return NULL;
+	if (sched_ids) {
+		ast_free(sched_ids);
 	}
-
-	if (a->argc != e->args + 1) {
-		return CLI_SHOWUSAGE;
-	}
-
-	if (sscanf(a->argv[e->args], "%u", &i) != 1) {
-		return CLI_SHOWUSAGE;
-	}
-
-	ast_cli(a->fd, "Testing ast_sched_del() performance - timing how long it takes "
-			"to delete %u entries with random time intervals from 0 to 60 seconds\n", i);
-
-	if (!(con = sched_context_create())) {
-		ast_cli(a->fd, "Test failed - could not create scheduler context\n");
-		return CLI_FAILURE;
-	}
-
-	start = ast_tvnow();
-
-	/* Stuff goes here. */
-
-	ast_cli(a->fd, "Test complete - %d ms\n", ast_tvdiff_ms(ast_tvnow(), start));
-
-	sched_context_destroy(con);
 
 	return CLI_SUCCESS;
 }
 
 static struct ast_cli_entry cli_sched[] = {
-	AST_CLI_DEFINE(handle_cli_sched_test_add, "Test ast_sched_add performance"),
-	AST_CLI_DEFINE(handle_cli_sched_test_del, "Test ast_sched_del performance"),
+	AST_CLI_DEFINE(handle_cli_sched_test, "Test ast_sched add/del performance"),
 };
 
 static int unload_module(void)




More information about the asterisk-commits mailing list