Esempio n. 1
0
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);
}