2004-05-25 Paul Jakma <paul@dishone.st>
* main.c: new file, common 'main' portion which then calls
test_init.
* heavy.c: remove common portions now in 'main.
* heavy-wq.c: ditto
* heavy-thread.c: ditto
* heavy*.c: Set the slow_function iteration number lower, to 300, it
was several orders of magnitude too 'slow' to be useful. :)
* Makefile.am: main is a source of the tests. heavy should link
to the math library.
diff --git a/tests/heavy.c b/tests/heavy.c
index 4b0fc73..577a481 100644
--- a/tests/heavy.c
+++ b/tests/heavy.c
@@ -1,5 +1,5 @@
/*
- * $Id: heavy.c,v 1.2 2005/04/21 16:58:44 paul Exp $
+ * $Id: heavy.c,v 1.3 2005/04/25 16:42:24 paul Exp $
*
* This file is part of Quagga.
*
@@ -30,27 +30,12 @@
*/
#include <zebra.h>
-#include <lib/version.h>
-#include "getopt.h"
#include "thread.h"
#include "vty.h"
#include "command.h"
#include "memory.h"
#include <math.h>
-struct thread_master *master;
-
-struct option longopts[] =
-{
- { "daemon", no_argument, NULL, 'd'},
- { "config_file", required_argument, NULL, 'f'},
- { "help", no_argument, NULL, 'h'},
- { "vty_addr", required_argument, NULL, 'A'},
- { "vty_port", required_argument, NULL, 'P'},
- { "version", no_argument, NULL, 'v'},
- { 0 }
-};
-
enum
{
ITERS_FIRST = 0,
@@ -66,7 +51,7 @@
double x = 1;
int j;
- for (j = 0; j < 300000; j++)
+ for (j = 0; j < 300; j++)
x += sin(x)*j;
if ((i % ITERS_LATER) == 0)
@@ -93,14 +78,6 @@
slow_func (vty, str, i);
}
-DEFUN (daemon_exit,
- daemon_exit_cmd,
- "daemon-exit",
- "Make the daemon exit\n")
-{
- exit(0);
-}
-
DEFUN (clear_foo,
clear_foo_cmd,
"clear foo .LINE",
@@ -121,148 +98,14 @@
return CMD_SUCCESS;
}
-static int timer_count;
-int
-heavy_timer (struct thread *thread)
-{
- int *count = THREAD_ARG(thread);
-
- printf ("run %d of timer\n", (*count)++);
- thread_add_timer (master, heavy_timer, count, 5);
- return 0;
-}
-
-static void
-heavy_timer_init()
-{
- thread_add_timer (master, heavy_timer, &timer_count, 5);
-}
-
static void
slow_vty_init()
{
install_element (VIEW_NODE, &clear_foo_cmd);
- install_element (VIEW_NODE, &daemon_exit_cmd);
}
-/* Help information display. */
-static void
-usage (char *progname, int status)
+void
+test_init()
{
- if (status != 0)
- fprintf (stderr, "Try `%s --help' for more information.\n", progname);
- else
- {
- printf ("Usage : %s [OPTION...]\n\
-Daemon which does 'slow' things.\n\n\
--d, --daemon Runs in daemon mode\n\
--f, --config_file Set configuration file name\n\
--A, --vty_addr Set vty's bind address\n\
--P, --vty_port Set vty's port number\n\
--v, --version Print program version\n\
--h, --help Display this help and exit\n\
-\n\
-Report bugs to %s\n", progname, ZEBRA_BUG_ADDRESS);
- }
- exit (status);
+ slow_vty_init();
}
-
-
-/* main routine. */
-int
-main (int argc, char **argv)
-{
- char *p;
- char *vty_addr = NULL;
- int vty_port = 4000;
- int daemon_mode = 0;
- char *progname;
- struct thread thread;
- char *config_file = NULL;
-
- /* Set umask before anything for security */
- umask (0027);
-
- /* get program name */
- progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);
-
- /* master init. */
- master = thread_master_create ();
-
- while (1)
- {
- int opt;
-
- opt = getopt_long (argc, argv, "dhf:A:P:v", longopts, 0);
-
- if (opt == EOF)
- break;
-
- switch (opt)
- {
- case 0:
- break;
- case 'f':
- config_file = optarg;
- break;
- case 'd':
- daemon_mode = 1;
- break;
- case 'A':
- vty_addr = optarg;
- break;
- case 'P':
- /* Deal with atoi() returning 0 on failure */
- if (strcmp(optarg, "0") == 0)
- {
- vty_port = 0;
- break;
- }
- vty_port = atoi (optarg);
- vty_port = (vty_port ? vty_port : 4000);
- break;
- case 'v':
- print_version (progname);
- exit (0);
- break;
- case 'h':
- usage (progname, 0);
- break;
- default:
- usage (progname, 1);
- break;
- }
- }
-
- /* Library inits. */
- cmd_init (1);
- vty_init (master);
- memory_init ();
-
- /* OSPF vty inits. */
- slow_vty_init ();
-
- sort_node ();
-
- /* Change to the daemon program. */
- if (daemon_mode)
- daemon (0, 0);
-
- /* Create VTY socket */
- vty_serv_sock (vty_addr, vty_port, "/tmp/.heavy.sock");
-
- /* Configuration file read*/
- if (!config_file)
- usage (progname, 1);
- vty_read_config (config_file, NULL);
-
- heavy_timer_init();
-
- /* Fetch next active thread. */
- while (thread_fetch (master, &thread))
- thread_call (&thread);
-
- /* Not reached. */
- exit (0);
-}
-