]>
Commit | Line | Data |
---|---|---|
1 | /** | |
2 | * @file tests.c | |
3 | * | |
4 | * @brief Main for all testcases. | |
5 | * | |
6 | */ | |
7 | ||
8 | /* | |
9 | * Copyright (C) 2005 Jan Hutter, Martin Willi | |
10 | * Hochschule fuer Technik Rapperswil | |
11 | * | |
12 | * This program is free software; you can redistribute it and/or modify it | |
13 | * under the terms of the GNU General Public License as published by the | |
14 | * Free Software Foundation; either version 2 of the License, or (at your | |
15 | * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. | |
16 | * | |
17 | * This program is distributed in the hope that it will be useful, but | |
18 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
19 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
20 | * for more details. | |
21 | */ | |
22 | ||
23 | ||
24 | #include <stdio.h> | |
25 | ||
26 | #include <daemon.h> | |
27 | ||
28 | #include <queues/job_queue.h> | |
29 | #include <queues/event_queue.h> | |
30 | #include <queues/send_queue.h> | |
31 | #include <config/configuration.h> | |
32 | #include <sa/ike_sa_manager.h> | |
33 | #include <network/socket.h> | |
34 | #include <utils/logger_manager.h> | |
35 | #include <utils/tester.h> | |
36 | #include "linked_list_test.h" | |
37 | #include "thread_pool_test.h" | |
38 | #include "job_queue_test.h" | |
39 | #include "event_queue_test.h" | |
40 | #include "send_queue_test.h" | |
41 | #include "socket_test.h" | |
42 | #include "sender_test.h" | |
43 | #include "scheduler_test.h" | |
44 | #include "ike_sa_id_test.h" | |
45 | #include "ike_sa_test.h" | |
46 | #include "ike_sa_manager_test.h" | |
47 | #include "generator_test.h" | |
48 | #include "parser_test.h" | |
49 | #include "packet_test.h" | |
50 | #include "diffie_hellman_test.h" | |
51 | #include "hasher_test.h" | |
52 | #include "hmac_test.h" | |
53 | #include "prf_plus_test.h" | |
54 | #include "aes_cbc_crypter_test.h" | |
55 | #include "hmac_signer_test.h" | |
56 | #include "encryption_payload_test.h" | |
57 | #include "connection_test.h" | |
58 | #include "policy_test.h" | |
59 | #include "proposal_test.h" | |
60 | #include "rsa_test.h" | |
61 | #include "kernel_interface_test.h" | |
62 | #include "child_sa_test.h" | |
63 | #include "certificate_test.h" | |
64 | #include "leak_detective_test.h" | |
65 | #include "identification_test.h" | |
66 | ||
67 | /* output for test messages */ | |
68 | extern FILE * stderr; | |
69 | ||
70 | test_t linked_list_test = {test_linked_list,"Linked List"}; | |
71 | test_t iterator_test = {test_linked_list_iterator,"Linked List Iterator"}; | |
72 | test_t linked_list_insert_and_remove_test = {test_linked_list_insert_and_remove,"Linked List Insert and remove"}; | |
73 | test_t event_queue_test = {test_event_queue,"Event-Queue"}; | |
74 | test_t job_queue_test1 = {test_job_queue,"Job-Queue"}; | |
75 | test_t send_queue_test = {test_send_queue,"Send-Queue"}; | |
76 | test_t socket_test = {test_socket,"Socket"}; | |
77 | test_t thread_pool_test = {test_thread_pool,"Thread Pool"}; | |
78 | test_t sender_test = {test_sender,"Sender"}; | |
79 | test_t scheduler_test = {test_scheduler,"Scheduler"}; | |
80 | test_t ike_sa_id_test = {test_ike_sa_id,"IKE_SA-Identifier"}; | |
81 | test_t ike_sa_test = {test_ike_sa,"IKE_SA"}; | |
82 | test_t ike_sa_manager_test = {test_ike_sa_manager, "IKE_SA-Manager"}; | |
83 | test_t generator_test1 = {test_generator_with_header_payload,"Generator: header payload"}; | |
84 | test_t generator_test2 = {test_generator_with_transform_attribute,"Generator: transform attribute"}; | |
85 | test_t generator_test3 = {test_generator_with_transform_substructure,"Generator: transform substructure"}; | |
86 | test_t generator_test4 = {test_generator_with_proposal_substructure,"Generator: proposal substructure"}; | |
87 | test_t generator_test5 = {test_generator_with_sa_payload,"Generator: Message with SA Payload"}; | |
88 | test_t generator_test6 = {test_generator_with_ke_payload,"Generator: KE Payload"}; | |
89 | test_t generator_test7 = {test_generator_with_notify_payload,"Generator: Notify Payload"}; | |
90 | test_t generator_test8 = {test_generator_with_nonce_payload,"Generator: Nonce Payload"}; | |
91 | test_t generator_test9 = {test_generator_with_id_payload,"Generator: ID Payload"}; | |
92 | test_t generator_test10 = {test_generator_with_auth_payload,"Generator: AUTH Payload"}; | |
93 | test_t generator_test11 = {test_generator_with_ts_payload,"Generator: TS Payload"}; | |
94 | test_t generator_test12 = {test_generator_with_cert_payload,"Generator: CERT Payload"}; | |
95 | test_t generator_test13 = {test_generator_with_certreq_payload,"Generator: CERTREQ Payload"}; | |
96 | test_t generator_test14 = {test_generator_with_delete_payload,"Generator: DELETE Payload"}; | |
97 | test_t generator_test15 = {test_generator_with_vendor_id_payload,"Generator: VENDOR ID Payload"}; | |
98 | test_t generator_test16 = {test_generator_with_cp_payload,"Generator: CP Payload"}; | |
99 | test_t generator_test17 = {test_generator_with_eap_payload,"Generator: EAP Payload"}; | |
100 | test_t parser_test1 = {test_parser_with_header_payload, "Parser: header payload"}; | |
101 | test_t parser_test2 = {test_parser_with_sa_payload, "Parser: sa payload"}; | |
102 | test_t parser_test3 = {test_parser_with_nonce_payload, "Parser: nonce payload"}; | |
103 | test_t parser_test4 = {test_parser_with_ke_payload, "Parser: key exchange payload"}; | |
104 | test_t parser_test5 = {test_parser_with_notify_payload, "Parser: notify payload"}; | |
105 | test_t parser_test6 = {test_parser_with_id_payload, "Parser: ID payload"}; | |
106 | test_t parser_test7 = {test_parser_with_auth_payload, "Parser: AUTH payload"}; | |
107 | test_t parser_test8 = {test_parser_with_ts_payload, "Parser: TS payload"}; | |
108 | test_t parser_test9 = {test_parser_with_cert_payload, "Parser: CERT payload"}; | |
109 | test_t parser_test10 = {test_parser_with_certreq_payload, "Parser: CERTREQ payload"}; | |
110 | test_t parser_test11 = {test_parser_with_delete_payload, "Parser: DELETE payload"}; | |
111 | test_t parser_test12 = {test_parser_with_vendor_id_payload, "Parser: VENDOR ID payload"}; | |
112 | test_t parser_test13 = {test_parser_with_cp_payload, "Parser: CP payload"}; | |
113 | test_t parser_test14 = {test_parser_with_eap_payload, "Parser: EAP payload"}; | |
114 | test_t packet_test = {test_packet,"Packet"}; | |
115 | test_t diffie_hellman_test = {test_diffie_hellman,"Diffie Hellman"}; | |
116 | test_t sha1_hasher_test = {test_sha1_hasher,"SHA1 hasher"}; | |
117 | test_t md5_hasher_test = {test_md5_hasher,"MD5 hasher"}; | |
118 | test_t hmac_test1 = {test_hmac_sha1, "HMAC using SHA1"}; | |
119 | test_t hmac_test2 = {test_hmac_md5, "HMAC using MD5"}; | |
120 | test_t prf_plus_test = {test_prf_plus, "prf+"}; | |
121 | test_t aes_cbc_crypter_test = {test_aes_cbc_crypter, "AES CBC"}; | |
122 | test_t hmac_signer_test1 = {test_hmac_md5_signer, "HMAC MD5 signer test"}; | |
123 | test_t hmac_signer_test2 = {test_hmac_sha1_signer, "HMAC SHA1 signer test"}; | |
124 | test_t encryption_payload_test = {test_encryption_payload, "encryption payload test"}; | |
125 | test_t connection_test = {test_connection, "connection_t test"}; | |
126 | test_t policy_test = {test_policy, "policy_t test"}; | |
127 | test_t proposal_test = {test_proposal, "proposal_t test"}; | |
128 | test_t rsa_test = {test_rsa, "RSA private/public key test"}; | |
129 | test_t kernel_interface_test = {test_kernel_interface, "Kernel Interface"}; | |
130 | test_t child_sa_test = {test_child_sa, "Child SA"}; | |
131 | test_t certificate_test = {test_certificate, "X509 Certificate"}; | |
132 | test_t leak_detective_test = {test_leak_detective, "LEAK detective"}; | |
133 | test_t identification_test = {test_identification, "identification"}; | |
134 | ||
135 | ||
136 | daemon_t* charon; | |
137 | ||
138 | static void daemon_kill(daemon_t *this, char* none) | |
139 | { | |
140 | //this->socket->destroy(this->socket); | |
141 | this->ike_sa_manager->destroy(this->ike_sa_manager); | |
142 | this->job_queue->destroy(this->job_queue); | |
143 | this->event_queue->destroy(this->event_queue); | |
144 | this->send_queue->destroy(this->send_queue); | |
145 | this->kernel_interface->destroy(this->kernel_interface); | |
146 | //this->configuration->destroy(this->configuration); | |
147 | free(charon); | |
148 | } | |
149 | ||
150 | /** | |
151 | * @brief Create the dummy daemon for testing. | |
152 | * | |
153 | * @return created daemon_t | |
154 | */ | |
155 | daemon_t *daemon_create() | |
156 | { | |
157 | charon = malloc_thing(daemon_t); | |
158 | ||
159 | /* assign methods */ | |
160 | charon->kill = daemon_kill; | |
161 | ||
162 | charon->socket = socket_create(500); | |
163 | charon->ike_sa_manager = ike_sa_manager_create(); | |
164 | charon->job_queue = job_queue_create(); | |
165 | charon->event_queue = event_queue_create(); | |
166 | charon->send_queue = send_queue_create(); | |
167 | charon->kernel_interface = kernel_interface_create(); | |
168 | //charon->configuration = configuration_create(RETRANSMIT_TIMEOUT,MAX_RETRANSMIT_COUNT,HALF_OPEN_IKE_SA_TIMEOUT); | |
169 | charon->sender = NULL; | |
170 | charon->receiver = NULL; | |
171 | charon->scheduler = NULL; | |
172 | charon->thread_pool = NULL; | |
173 | ||
174 | return charon; | |
175 | } | |
176 | ||
177 | ||
178 | int main() | |
179 | { | |
180 | FILE * test_output = stderr; | |
181 | ||
182 | test_t *all_tests[] ={ | |
183 | &linked_list_test, | |
184 | &iterator_test, | |
185 | &linked_list_insert_and_remove_test, | |
186 | &thread_pool_test, | |
187 | &job_queue_test1, | |
188 | &event_queue_test, | |
189 | &send_queue_test, | |
190 | &scheduler_test, | |
191 | &socket_test, | |
192 | &sender_test, | |
193 | &ike_sa_id_test, | |
194 | &ike_sa_test, | |
195 | &generator_test1, | |
196 | &generator_test2, | |
197 | &parser_test1, | |
198 | &parser_test2, | |
199 | &parser_test3, | |
200 | &parser_test4, | |
201 | &parser_test5, | |
202 | &parser_test6, | |
203 | &parser_test7, | |
204 | &parser_test8, | |
205 | &parser_test9, | |
206 | &parser_test10, | |
207 | &parser_test11, | |
208 | &parser_test12, | |
209 | &parser_test13, | |
210 | &parser_test14, | |
211 | &generator_test3, | |
212 | &generator_test4, | |
213 | &generator_test5, | |
214 | &generator_test6, | |
215 | &generator_test7, | |
216 | &generator_test8, | |
217 | &generator_test9, | |
218 | &generator_test10, | |
219 | &generator_test11, | |
220 | &generator_test12, | |
221 | &generator_test13, | |
222 | &generator_test14, | |
223 | &generator_test15, | |
224 | &generator_test16, | |
225 | &generator_test17, | |
226 | &ike_sa_manager_test, | |
227 | &packet_test, | |
228 | &diffie_hellman_test, | |
229 | &sha1_hasher_test, | |
230 | &md5_hasher_test, | |
231 | &hmac_test1, | |
232 | &hmac_test2, | |
233 | &prf_plus_test, | |
234 | &aes_cbc_crypter_test, | |
235 | &hmac_signer_test1, | |
236 | &hmac_signer_test2, | |
237 | &encryption_payload_test, | |
238 | &connection_test, | |
239 | &policy_test, | |
240 | &proposal_test, | |
241 | &rsa_test, | |
242 | NULL | |
243 | }; | |
244 | /* get rid of compiler warning ;-) */ | |
245 | *all_tests = *all_tests; | |
246 | ||
247 | daemon_create(); | |
248 | ||
249 | //logger_manager->enable_log_level(logger_manager, ALL_LOGGERS, FULL); | |
250 | logger_manager->set_output(logger_manager, ALL_LOGGERS, stdout); | |
251 | ||
252 | tester_t *tester = tester_create(test_output, FALSE); | |
253 | ||
254 | tester->perform_tests(tester,all_tests); | |
255 | //tester->perform_test(tester,&sender_test); | |
256 | ||
257 | ||
258 | tester->destroy(tester); | |
259 | ||
260 | charon->kill(charon, NULL); | |
261 | ||
262 | return 0; | |
263 | } |