TEST_F(WiFuTransportIntegrationTest, UDPTransfer) { Semaphore* ready = new Semaphore(); ready->init(0); int packets = 1000; int length = 1000 * packets; gcstring message = RandomStringGenerator::get_data(length); AddressPort* receiver = new AddressPort("127.0.0.1", 5000); struct udp_struct info; info.ap = receiver; info.message = message; info.packets = packets; info.ready = ready; pthread_t thread; if (pthread_create(&thread, NULL, &udp_thread, &info) != 0) { FAIL() << "Error creating thread in UDPTest"; } int socket = wifu_socket(AF_INET, SOCK_DGRAM, UDP); if (socket < 0) { FAIL() << "Error creating udp socket"; } socklen_t len = sizeof (struct sockaddr_in); int index = 0; int increment = 1000; int total_sent = 0; ready->wait(); while (index < message.size()) { int n = wifu_sendto(socket, message.data() + index, increment, 0, (struct sockaddr*) receiver->get_network_struct_ptr(), len); total_sent += n; index += increment; } wifu_close(socket); ASSERT_EQ(message.size(), total_sent); pthread_join(thread, NULL); }