The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Loading...
Searching...
No Matches
schedule_test.c
Go to the documentation of this file.
1/*
2 * schedule_test.c Tests for the scheduler
3 *
4 * Version: $Id: 848ad9d7760d336c923d3ca8b3e059135a24fe72 $
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 *
20 * @copyright 2016 Alan DeKok (aland@freeradius.org)
21 */
22
23RCSID("$Id: 848ad9d7760d336c923d3ca8b3e059135a24fe72 $")
24
25#include <freeradius-devel/io/schedule.h>
26#include <freeradius-devel/util/time.h>
27#include <freeradius-devel/radius/defs.h>
28#include <freeradius-devel/util/debug.h>
29#include <freeradius-devel/util/inet.h>
30#include <freeradius-devel/util/md5.h>
31#include <freeradius-devel/util/syserror.h>
32
33#include <sys/event.h>
34#include <stdio.h>
35#include <string.h>
36#include <pthread.h>
37
38#ifdef HAVE_GETOPT_H
39# include <getopt.h>
40#endif
41
42
43static int debug_lvl = 0;
44
45static NEVER_RETURNS void usage(void)
46{
47 fprintf(stderr, "usage: schedule_test [OPTS]\n");
48 fprintf(stderr, " -n <num> Start num network threads\n");
49 fprintf(stderr, " -w <num> Start num worker threads\n");
50 fprintf(stderr, " -x Debugging mode.\n");
51
52 fr_exit_now(EXIT_FAILURE);
53}
54
55int main(int argc, char *argv[])
56{
57 int c;
58 int num_networks = 1;
59 int num_workers = 2;
60 TALLOC_CTX *autofree = talloc_autofree_context();
61 fr_schedule_t *sched;
62
64
66
67 while ((c = getopt(argc, argv, "n:w:x")) != -1) switch (c) {
68 case 'n':
69 num_networks = atoi(optarg);
70 if ((num_networks <= 0) || (num_networks > 16)) usage();
71 break;
72
73 case 'w':
74 num_workers = atoi(optarg);
75 if ((num_workers <= 0) || (num_workers > 1024)) usage();
76 break;
77
78 case 'x':
79 debug_lvl++;
81 break;
82
83 case 'h':
84 default:
85 usage();
86 }
87
88#if 0
89 argc -= (optind - 1);
90 argv += (optind - 1);
91#endif
92
93 sched = fr_schedule_create(autofree, NULL, &default_log, L_DBG_LVL_MAX, num_networks, num_workers, NULL, NULL);
94 if (!sched) {
95 fprintf(stderr, "schedule_test: Failed to create scheduler\n");
96 fr_exit_now(EXIT_FAILURE);
97 }
98
99 sleep(1);
100
101 (void) fr_schedule_destroy(&sched);
102
103 return 0;
104}
#define RCSID(id)
Definition build.h:483
#define NEVER_RETURNS
Should be placed before the function return type.
Definition build.h:313
#define fr_exit_now(_x)
Exit without calling atexit() handlers, producing a log message in debug builds.
Definition debug.h:234
int fr_log_init_legacy(fr_log_t *log, bool daemonize)
Initialise file descriptors based on logging destination.
Definition log.c:907
int fr_debug_lvl
Definition log.c:43
fr_log_t default_log
Definition log.c:291
@ L_DBG_LVL_MAX
Lowest priority debug messages (-xxxxx | -Xxxx).
Definition log.h:74
static TALLOC_CTX * autofree
static int num_workers
fr_schedule_t * fr_schedule_create(TALLOC_CTX *ctx, fr_event_list_t *el, fr_log_t *logger, fr_log_lvl_t lvl, fr_schedule_thread_instantiate_t worker_thread_instantiate, fr_schedule_thread_detach_t worker_thread_detach, fr_schedule_config_t *config)
Create a scheduler and spawn the child threads.
Definition schedule.c:463
int fr_schedule_destroy(fr_schedule_t **sc_to_free)
Destroy a scheduler, and tell its child threads to exit.
Definition schedule.c:761
The scheduler.
Definition schedule.c:125
int main(int argc, char *argv[])
static NEVER_RETURNS void usage(void)
static int debug_lvl
#define talloc_autofree_context
The original function is deprecated, so replace it with our version.
Definition talloc.h:51
int fr_time_start(void)
Initialize the local time.
Definition time.c:150