Added SILC Thread Queue API
[runtime.git] / lib / silcserver / tests / test_silcserver.c
1 #include "silc.h"
2 #include "silcserver.h"
3
4 SilcSchedule schedule;
5
6 static void running(SilcServer server, void *context)
7 {
8   SILC_LOG_DEBUG(("***** RUNNING"));
9 }
10
11 static void stopped(SilcServer server, void *context)
12 {
13   SILC_LOG_DEBUG(("***** STOPPED"));
14   silc_schedule_stop(schedule);
15 }
16
17 int main(int argc, char **argv)
18 {
19   SilcBool success = FALSE;
20   SilcServer server;
21   SilcServerParams params;
22   SilcServerParamServerInfo info;
23   SilcServerParamInterface iface;
24   SilcServerParamClient client_all;
25
26   if (argc > 1 && !strcmp(argv[1], "-d")) {
27     silc_log_debug(TRUE);
28     silc_log_debug_hexdump(TRUE);
29     silc_log_set_debug_string("*server*,*skr*,*ske*,*connauth*,*packet*,*stream*,*net*,*pkcs*,*asn1*");
30   }
31
32   SILC_LOG_DEBUG(("Allocating scheduler"));
33   schedule = silc_schedule_init(0, NULL);
34
35   silc_cipher_register_default();
36   silc_pkcs_register_default();
37   silc_hash_register_default();
38   silc_hmac_register_default();
39
40   SILC_LOG_DEBUG(("Allocating server params context"));
41   params = silc_server_params_alloc();
42   if (!params)
43     goto err;
44
45   SILC_LOG_DEBUG(("Creating server params"));
46
47   info = silc_server_params_serverinfo_alloc();
48   if (!info)
49     goto err;
50   info->server_name = strdup("test server");
51
52   if (!silc_load_key_pair("test.pub", "test.prv", "",
53                           &info->public_key,
54                           &info->private_key)) {
55     if (!silc_create_key_pair("rsa", 2048, "test.pub", "test.prv", NULL, "",
56                               &info->public_key,
57                               &info->private_key, FALSE)) {
58       goto err;
59     }
60   }
61
62   iface = silc_calloc(1, sizeof(*iface));
63   if (!iface)
64     goto err;
65   iface->ip = strdup("127.0.0.1");
66   iface->port = 1334;
67   silc_server_params_serverinfo_add_iface(info, iface);
68   silc_server_params_set_serverinfo(params, info);
69
70   client_all = silc_calloc(1, sizeof(*client_all));
71   if (!client_all)
72     goto err;
73   silc_server_params_add_client(params, client_all);
74
75   params->use_threads = TRUE;
76
77   SILC_LOG_DEBUG(("Allocating server context"));
78   server = silc_server_alloc(NULL, params, schedule);
79   if (!server) {
80     SILC_LOG_DEBUG(("Error allocating server"));
81     goto err;
82   }
83
84   SILC_LOG_DEBUG(("Running server"));
85   silc_server_run(server, running, NULL);
86
87   SILC_LOG_DEBUG(("Running scheduler"));
88   silc_schedule(schedule);
89
90   silc_server_free(server);
91   silc_server_params_free(params);
92   silc_schedule_uninit(schedule);
93
94   success = TRUE;
95
96  err:
97   SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
98   fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
99
100   return success;
101 }