int test_sky_lua_generate_header() { importtmp("tests/fixtures/sky_lua/0/data.json"); sky_table *table = sky_table_create(); table->path = bfromcstr("tmp"); sky_table_open(table); struct tagbstring source = bsStatic( "function aggregate(event)\n" " label = event:first_name() .. ' ' .. event:last_name()\n" " return event.x + event.y\n" "end\n" ); bstring event_decl = NULL; bstring event_metatype = NULL; bstring init_descriptor_func = NULL; int rc = sky_lua_generate_event_info(&source, table->property_file, &event_decl, &event_metatype, &init_descriptor_func); mu_assert_int_equals(rc, 0); mu_assert_bstring(event_decl, "typedef struct {\n" " int64_t ts;\n" " uint32_t timestamp;\n" " uint16_t action_id;\n" " sky_string_t _first_name;\n" " sky_string_t _last_name;\n" " int32_t x;\n" " int32_t y;\n" "} sky_lua_event_t;" ); mu_assert_bstring(event_metatype, "ffi.metatype('sky_lua_event_t', {\n" " __index = {\n" " first_name = function(event) return ffi.string(event._first_name.data, event._first_name.length) end,\n" " last_name = function(event) return ffi.string(event._last_name.data, event._last_name.length) end,\n" " x = function(event) return event.x end,\n" " y = function(event) return event.y end,\n" " }\n" "})\n" ); mu_assert_bstring(init_descriptor_func, "function sky_init_descriptor(_descriptor)\n" " descriptor = ffi.cast('sky_data_descriptor_t*', _descriptor)\n" " descriptor:set_data_sz(ffi.sizeof('sky_lua_event_t'));\n" " descriptor:set_ts_offset(ffi.offsetof('sky_lua_event_t', 'ts'));\n" " descriptor:set_timestamp_offset(ffi.offsetof('sky_lua_event_t', 'timestamp'));\n" " descriptor:set_action_id_offset(ffi.offsetof('sky_lua_event_t', 'action_id'));\n" " descriptor:set_property(4, ffi.offsetof('sky_lua_event_t', '_first_name'), 1);\n" " descriptor:set_property(5, ffi.offsetof('sky_lua_event_t', '_last_name'), 1);\n" " descriptor:set_property(2, ffi.offsetof('sky_lua_event_t', 'x'), 2);\n" " descriptor:set_property(3, ffi.offsetof('sky_lua_event_t', 'y'), 2);\n" "end\n" ); bdestroy(event_decl); bdestroy(event_metatype); bdestroy(init_descriptor_func); sky_table_free(table); return 0; }
int test_sky_message_header_unpack() { FILE *file = fopen("tests/fixtures/message_header/0/message", "r"); sky_message_header *header = sky_message_header_create(); mu_assert_bool(sky_message_header_unpack(header, file) == 0); fclose(file); mu_assert_int64_equals(header->version, 1LL); mu_assert_bstring(header->name, "eadd"); mu_assert_bstring(header->table_name, "bar"); sky_message_header_free(header); return 0; }
int test_sky_action_file_path() { int rc; struct tagbstring path = bsStatic("/dev/null"); sky_action_file *action_file = sky_action_file_create(); rc = sky_action_file_set_path(action_file, &path); mu_assert_int_equals(rc, 0); mu_assert_bstring(action_file->path, "/dev/null"); bstring ret; rc = sky_action_file_get_path(action_file, &ret); mu_assert_int_equals(rc, 0); mu_assert_bstring(ret, "/dev/null"); sky_action_file_free(action_file); bdestroy(ret); return 0; }
int test_sky_peach_message_unpack() { FILE *file = fopen("tests/fixtures/peach_message/0/message", "r"); sky_peach_message *message = sky_peach_message_create(); mu_assert_bool(sky_peach_message_unpack(message, file) == 0); fclose(file); mu_assert_bstring(message->query, "class Foo{ public Int x; }"); sky_peach_message_free(message); return 0; }
int test_sky_data_file_set_header_path() { int rc; struct tagbstring path = bsStatic("/dev/null"); sky_data_file *data_file = sky_data_file_create(); rc = sky_data_file_set_path(data_file, &path); mu_assert_int_equals(rc, 0); mu_assert_bstring(data_file->path, "/dev/null"); sky_data_file_free(data_file); return 0; }
int test_sky_add_event_message_unpack() { FILE *file = fopen("tests/fixtures/add_event_message/0/message", "r"); sky_add_event_message *message = sky_add_event_message_create(); mu_assert_bool(sky_add_event_message_unpack(message, file) == 0); fclose(file); mu_assert_int_equals(message->object_id, 10); mu_assert_int64_equals(message->timestamp, 1000LL); mu_assert_bstring(message->action_name, "foo"); sky_add_event_message_free(message); return 0; }
int test_sky_create_table_message_unpack() { FILE *file = fopen("tests/fixtures/create_table_message/0/message", "r"); sky_create_table_message *message = sky_create_table_message_create(); message->data_path = bfromcstr("/tmp/data"); message->table = sky_table_create(); mu_assert_bool(sky_create_table_message_unpack(message, file) == 0); fclose(file); mu_assert_bstring(message->table->path, "/tmp/data/foo"); sky_table_free(message->table); sky_create_table_message_free(message); return 0; }