TEST_F(cryptoboxtest, add_send_then_add_send) { add_devices(2); connect_devices(); send_all(); add_devices(1); connect_devices(); send_all(); verify_devices(); }
TEST_F(cryptoboxtest, send_ten_messages) { struct device *a, *b; add_devices(2); /* Connect the 2 devices */ connect_devices(); a = (struct device *)devicel.head->data; b = (struct device *)devicel.tail->data; err = device_new_session(a, b); ASSERT_EQ(0, err); for (int i=0; i<5; i++) { size_t len = rand_u16(); uint8_t *msg = (uint8_t *)mem_alloc(len, NULL); rand_bytes(msg, len); send_message(a, b, msg, len); /* reverse direction */ send_message(b, a, msg, len); mem_deref(msg); } }
void WormHoleRadio::attach_wormholes() { int w = 0; while(w < n_wormholes) { WormHoleRadioDevice *d1 = random_device(); WormHoleRadioDevice *d2 = random_device(); if(d1 != d2 && d1->nbrs.find(d2) == d1->nbrs.end()) { connect_devices(d1, d2); w++; } } }
TEST_F(cryptoboxtest, tmp) { #define NUM 3 struct device *a; add_devices(NUM); connect_devices(); //debug(); /* number of peers is always N-1 */ a = (struct device *)list_ledata(devicel.head); ASSERT_EQ(NUM-1, list_count(&a->peerl)); }
TEST_F(cryptoboxtest, send_one_message) { struct device *a, *b; add_devices(2); /* Connect the 2 devices */ connect_devices(); a = (struct device *)devicel.head->data; b = (struct device *)devicel.tail->data; err = device_new_session(a, b); ASSERT_EQ(0, err); send_message(a, b, hello_msg, sizeof(hello_msg)); }
TEST_F(cryptoboxtest, performance) { #define NUM_MESSAGES 1000 #define MSG_SIZE 256 uint64_t t1, t2; struct device *a, *b; size_t len = MSG_SIZE; add_devices(2); connect_devices(); a = (struct device *)devicel.head->data; b = (struct device *)devicel.tail->data; err = device_new_session(a, b); ASSERT_EQ(0, err); uint8_t *msg = (uint8_t *)mem_alloc(len, NULL); rand_bytes(msg, len); re_printf("sending %d messages of size %zu bytes\n", NUM_MESSAGES, len); t1 = tmr_jiffies(); for (int i=0; i<NUM_MESSAGES; i++) { send_message(a, b, msg, len); } t2 = tmr_jiffies(); re_printf("~~~ performance report ~~~\n"); re_printf("num_messages: %d\n", NUM_MESSAGES); re_printf("message_size: %zu\n", len); re_printf("total_time: %d ms\n", (int)(t2-t1)); re_printf("average: %.1f ms\n", 1.0*(t2-t1)/NUM_MESSAGES); re_printf("~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~\n"); re_printf("\n"); mem_deref(msg); }
/* Test sending messages between 3 devices */ TEST_F(cryptoboxtest, three_devices) { struct le *le; add_devices(3); /* Connect the devices */ connect_devices(); for (le = devicel.head; le; le = le->next) { struct device *dev = (struct device *)le->data, *other; struct le *next; next = le->next ? le->next : devicel.head; other = (struct device *)list_ledata(next); err = device_new_session(dev, other); ASSERT_EQ(0, err); send_message(dev, other, hello_msg, sizeof(hello_msg)); } }