4 * @brief Tests for the sender_t class.
9 * Copyright (C) 2005 Jan Hutter, Martin Willi
10 * Hochschule fuer Technik Rapperswil
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>.
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
25 #include "sender_test.h"
28 #include <threads/sender.h>
29 #include <network/packet.h>
30 #include <network/socket.h>
31 #include <queues/send_queue.h>
32 #include <queues/job_queue.h>
33 #include <queues/jobs/incoming_packet_job.h>
36 * Number of packets to send by sender-thread
38 #define NUMBER_OF_PACKETS_TO_SEND 5
40 void test_sender(protected_tester_t
*tester
)
47 packet_t
*received_packet
;
49 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, /* spi */
50 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, /* spi */
51 0x05, /* next payload */
52 0x20, /* IKE version */
53 0x00, /* exchange type */
55 0x00,0x00,0x00,0x01, /* message id */
56 0x00,0x00,0x00,0x24, /* length */
57 0x12,0x34,0x56,0x67, /* some data */
60 chunk_t data
= chunk_from_buf(test_data
);
62 sender
= sender_create();
63 receiver
= receiver_create();
65 for (i
= 0; i
< NUMBER_OF_PACKETS_TO_SEND
; i
++)
67 packet
= packet_create(AF_INET
);
68 packet
->set_destination(packet
, host_create(AF_INET
, "127.0.0.1", 500));
69 packet
->set_source(packet
, host_create(AF_INET
, "127.0.0.1", 500));
70 packet
->set_data(packet
, chunk_clone(data
));
71 charon
->send_queue
->add(charon
->send_queue
,packet
);
74 for (i
= 0; i
< NUMBER_OF_PACKETS_TO_SEND
; i
++)
76 job
= charon
->job_queue
->get(charon
->job_queue
);
77 tester
->assert_true(tester
, (job
->get_type(job
) == INCOMING_PACKET
), "job type check");
78 received_packet
= ((incoming_packet_job_t
*)(job
))->get_packet((incoming_packet_job_t
*)(job
));
79 received
= received_packet
->get_data(received_packet
);
80 tester
->assert_true(tester
, received
.len
== data
.len
, "received data length check");
81 tester
->assert_true(tester
, memcmp(received
.ptr
, data
.ptr
, data
.len
) == 0, "received data value check");
82 received_packet
->destroy(received_packet
);
86 sender
->destroy(sender
);
87 receiver
->destroy(receiver
);