int test_pack_int16() { size_t sz; uint8_t data[] = {0x00, 0x00, 0x00}; minipack_pack_int16(data, 0, &sz); mu_assert_mem(data, 3, "\xD1\x00\x00"); mu_assert(sz == 3); minipack_pack_int16(data, 2, &sz); mu_assert_mem(data, 3, "\xD1\x00\x02"); mu_assert(sz == 3); minipack_pack_int16(data, 1000, &sz); mu_assert_mem(data, 3, "\xD1\x03\xE8"); mu_assert(sz == 3); minipack_pack_int16(data, 32767, &sz); mu_assert_mem(data, 3, "\xD1\x7F\xFF"); mu_assert(sz == 3); minipack_pack_int16(data, 32768, &sz); mu_assert_mem(data, 3, "\xD1\x80\x00"); mu_assert(sz == 3); return 0; }
int test_pack_raw32() { size_t sz; uint8_t data[] = {0x00, 0x00, 0x00, 0x00, 0x00}; minipack_pack_raw32(data, 0, &sz); mu_assert_mem(data, 5, "\xDB\x00\x00\x00\x00"); minipack_pack_raw32(data, 5, &sz); mu_assert_mem(data, 5, "\xDB\x00\x00\x00\x05"); return 0; }
int test_pack_bool() { size_t sz; uint8_t data[] = {0x00}; minipack_pack_bool(data, true, &sz); mu_assert_mem(data, 1, "\xC3"); mu_assert(sz == 1); minipack_pack_bool(data, false, &sz); mu_assert_mem(data, 1, "\xC2"); mu_assert(sz == 1); return 0; }
int test() { pthread_t thread; importtmp_n("tests/functional/fixtures/add_event/0/data.json", 4); start_server(1, &thread); send_msg("tests/functional/fixtures/add_event/0/input"); pthread_join(thread, NULL); mu_assert_msg("tests/functional/fixtures/add_event/0/output"); void *data; size_t data_length; sky_table *table = sky_table_create(); table->path = bfromcstr("tmp"); sky_table_open(table); sky_tablet_get_path(table->tablets[2], 10, &data, &data_length); mu_assert_mem(data, "\x03\xe8\x03\x00\x00\x00\x00\x00\x00\x05\x00\x1f\x00\x00\x00\xff" "\xa6\x7a\x7a\x7a\x7a\x7a\x7a\xfe\x0a\x01\xa3\x78\x79\x7a\x02\xd1" "\x00\xc8\x03\xcb\x40\x59\x0c\xcc\xcc\xcc\xcc\xcd\x04\xc3\x01\x00" "\x00\x10\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x20\x00\x00\x00" "\x00\x00\x02\x00\x01\x00\x00\x30\x00\x00\x00\x00\x00\x03\x00", data_length ); sky_table_free(table); free(data); return 0; }
int test_pack_nil() { size_t sz; uint8_t data[] = {0x00}; minipack_pack_nil(data, &sz); mu_assert_mem(data, 1, "\xC0"); mu_assert_msgpack_nil(1, "\xC0"); mu_assert(sz == 1); return 0; }
// Action event. int test_sky_event_action_event_pack() { size_t sz; void *addr = calloc(ACTION_EVENT_DATA_LENGTH, 1); sky_event *event = sky_event_create(0, 30LL, 20); sky_event_pack(event, addr, &sz); sky_event_free(event); mu_assert_long_equals(sz, ACTION_EVENT_DATA_LENGTH); mu_assert_mem(addr, &ACTION_EVENT_DATA, ACTION_EVENT_DATA_LENGTH); free(addr); return 0; }
// Data event. int test_sky_event_data_event_pack() { size_t sz; void *addr = calloc(DATA_EVENT_DATA_LENGTH, 1); sky_event *event = sky_event_create(0, 30LL, 0); sky_event_set_data(event, 1, &foo); sky_event_set_data(event, 2, &bar); sky_event_pack(event, addr, &sz); sky_event_free(event); mu_assert_long_equals(sz, DATA_EVENT_DATA_LENGTH); mu_assert_mem(addr, &DATA_EVENT_DATA, DATA_EVENT_DATA_LENGTH); free(addr); return 0; }
int test_sky_block_pack() { sky_block *block = sky_block_create(NULL); block->min_object_id = 10; block->max_object_id = 20; block->min_timestamp = 30LL; block->max_timestamp = 40LL; size_t sz; uint8_t *buffer[SKY_BLOCK_HEADER_SIZE]; int rc = sky_block_pack(block, buffer, &sz); mu_assert_int_equals(rc, 0); mu_assert_long_equals(sz, SKY_BLOCK_HEADER_SIZE); mu_assert_mem(buffer, &DATA, SKY_BLOCK_HEADER_SIZE); sky_block_free(block); return 0; }
int test_sky_add_event_message_worker_map() { importtmp("tests/fixtures/add_event_message/1/import.json"); sky_table *table = sky_table_create(); table->path = bfromcstr("tmp"); table->default_tablet_count = 1; sky_table_open(table); struct tagbstring XYZ_STR = bsStatic("xyz"); sky_add_event_message *message = sky_add_event_message_create(); message->event = sky_event_create(10, 1000L, 20); message->event->data_count = 4; message->event->data = calloc(message->event->data_count, sizeof(*message->event->data)); message->event->data[0] = sky_event_data_create_string(1, &XYZ_STR); message->event->data[1] = sky_event_data_create_int(2, 200); message->event->data[2] = sky_event_data_create_double(3, 100.2); message->event->data[3] = sky_event_data_create_boolean(4, true); sky_worker *worker = sky_worker_create(); worker->data = (void*)message; void *null = NULL; int rc = sky_add_event_message_worker_map(worker, table->tablets[0], &null); mu_assert_int_equals(rc, 0); void *data; size_t data_length; sky_tablet_get_path(table->tablets[0], 10, &data, &data_length); mu_assert_int_equals(rc, 0); mu_assert_mem( data, "\x03\xE8\x03\x00\x00\x00\x00\x00\x00\x14\x00\x15\x00\x00\x00\x01" "\xA3\x78\x79\x7A\x02\xD1\x00\xC8\x03\xCB\x40\x59\x0C\xCC\xCC\xCC" "\xCC\xCD\x04\xC3", data_length ); free(data); sky_add_event_message_free(message); sky_worker_free(worker); sky_table_free(table); return 0; }