void test_recreate_temporary_object_on_opened_database(void) { const gchar table_name[] = "<users>"; const gchar *path; path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, path, NULL); grn_test_assert_not_null(context, database); grn_test_assert_null(context, grn_table_create(context, table_name, strlen(table_name), NULL, GRN_OBJ_TABLE_HASH_KEY, grn_ctx_at(context, GRN_DB_UINT32), NULL)); database2 = grn_db_open(context2, path); grn_test_assert_not_null(context2, database2); grn_test_assert_null(context2, grn_ctx_get(context2, table_name, strlen(table_name))); grn_test_assert_null(context2, grn_table_create(context, table_name, strlen(table_name), NULL, GRN_OBJ_TABLE_HASH_KEY, grn_ctx_at(context, GRN_DB_UINT32), NULL)); }
void test_get_persistent_object_from_opened_database(void) { const gchar table_name[] = "Users"; const gchar *path; path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, path, NULL); grn_test_assert_not_null(context, database); grn_test_assert_not_null(context, grn_table_create(context, table_name, strlen(table_name), NULL, GRN_OBJ_TABLE_HASH_KEY | GRN_OBJ_PERSISTENT, grn_ctx_at(context, GRN_DB_UINT32), NULL)); database2 = grn_db_open(context2, path); grn_test_assert_not_null(context2, database2); grn_test_assert_not_null(context2, grn_ctx_get(context2, table_name, strlen(table_name))); }
void cut_setup(void) { const gchar *database_path; cut_set_fixture_data_dir(grn_test_get_base_dir(), "fixtures", "story", "taiyaki", NULL); remove_tmp_directory(); g_mkdir_with_parents(tmp_directory, 0700); context = g_new0(grn_ctx, 1); grn_ctx_init(context, 0); database_path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, database_path, NULL); setup_values(); load_data(); shops = get("Shops"); location_index = get("Locations.shop"); result = grn_table_create(context, NULL, 0, NULL, GRN_TABLE_HASH_KEY | GRN_OBJ_WITH_SUBREC, shops, NULL); }
void cut_setup(void) { const gchar *database_path; cut_set_fixture_data_dir(grn_test_get_base_dir(), "fixtures", "geo", NULL); remove_tmp_directory(); g_mkdir_with_parents(tmp_directory, 0700); context = g_new0(grn_ctx, 1); grn_ctx_init(context, 0); database_path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, database_path, NULL); load_data(); points = get("Points"); short_degree_column = get("Points.short_degree"); location_index_column = get("Locations.point"); result = grn_table_create(context, NULL, 0, NULL, GRN_TABLE_HASH_KEY | GRN_OBJ_WITH_SUBREC, points, NULL); }
void cut_setup(void) { const gchar *database_path; cut_set_fixture_data_dir(grn_test_get_base_dir(), "fixtures", "story", "taiyaki", NULL); remove_tmp_directory(); g_mkdir_with_parents(tmp_directory, 0700); context = g_new0(grn_ctx, 1); grn_ctx_init(context, 0); database_path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, database_path, NULL); assert_send_commands(cut_get_fixture_data_string("ddl.grn", NULL)); assert_send_command(cut_get_fixture_data_string("areas.grn", NULL)); assert_send_command(cut_get_fixture_data_string("categories.grn", NULL)); assert_send_command(cut_get_fixture_data_string("shops.grn", NULL)); assert_send_command(cut_get_fixture_data_string("synonyms.grn", NULL)); }
void test_expression_lifetime_over_database(void) { const gchar *path; gint i, n_tries = 100; grn_obj *expression; cut_omit("will be SEGVed."); path = cut_build_path(tmp_directory, "database.groonga", NULL); for (i = 0; i < n_tries; i++) { gint j, n_records = 100; const gchar *query; grn_obj *table, *variable; grn_obj default_column; database = grn_db_create(context, path, NULL); grn_test_assert_context(context); assert_send_command("table_create Sites 0 ShortText"); assert_send_command("column_create Sites point COLUMN_SCALAR Int32"); for (j = 0; j < n_records; j++) { gchar *command; command = g_strdup_printf("load '" "[[\"_key\", \"point\"]," "[\"http://groonga.org/version/%d\",%d]]' " "Sites", j, j); assert_send_command(command); g_free(command); } table = get_object("Sites"); GRN_EXPR_CREATE_FOR_QUERY(context, table, expression, variable); grn_obj_unlink(context, table); GRN_TEXT_INIT(&default_column, 0); GRN_TEXT_PUTS(context, &default_column, "point"); query = "point:50"; grn_expr_parse(context, expression, query, strlen(query), &default_column, GRN_OP_MATCH, GRN_OP_AND, GRN_EXPR_SYNTAX_QUERY | GRN_EXPR_ALLOW_COLUMN); grn_test_assert_context(context); grn_obj_unlink(context, &default_column); grn_expr_compile(context, expression); grn_obj_remove(context, database); database = NULL; remove_tmp_directory(); g_mkdir_with_parents(tmp_directory, 0700); } grn_ctx_fin(context); g_free(context); context = NULL; }
void test_get_test_directory (void) { const gchar *test_dir; test_dir = cut_build_path(cuttest_get_base_dir(), "fixtures", "test-directory", NULL); cut_assert(run_cutter(cut_take_printf("--notify=no %s", test_dir))); cut_assert_exit_success(); }
void cut_setup(void) { remove_tmp_directory(); g_mkdir_with_parents(tmp_directory, 0700); context = g_new0(grn_ctx, 1); grn_ctx_init(context, 0); database_path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, database_path, NULL); }
void test_directory (void) { const char *this_directory; this_directory = cut_build_path(cuttest_get_base_dir(), "fixtures", "test-directory", NULL); cut_assert_equal_string(this_directory, cut_get_test_directory()); }
void test_load_absolute_path (void) { const gchar *config_file; GError *error = NULL; config_file = cut_build_path(tmp_dir, "temporary.conf", NULL); g_file_set_contents(config_file, "", 0, &error); gcut_assert_error(error); milter_manager_configuration_load(config, config_file, &error); gcut_assert_error(error); }
void cut_setup(void) { remove_tmp_directory(); g_mkdir_with_parents(tmp_directory, 0700); context = NULL; logger = setup_grn_logger(); context = g_new0(grn_ctx, 1); grn_ctx_init(context, 0); database = grn_db_create(context, cut_build_path(tmp_directory, "table.db", NULL), NULL); }
void data_create(void) { #define ADD_DATA(label, name, path) \ gcut_add_datum(label, \ "name", G_TYPE_STRING, name, \ "path", G_TYPE_STRING, path, \ NULL) ADD_DATA("anonymous", NULL, NULL); ADD_DATA("named", "Entries", NULL); ADD_DATA("named - explicit path", "Entries", cut_build_path(tmp_directory, "view.db", NULL)); #undef ADD_DATA }
void cut_setup(void) { const gchar *database_path; remove_tmp_directory(); g_mkdir_with_parents(tmp_directory, 0700); context = g_new0(grn_ctx, 1); grn_ctx_init(context, 0); database_path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, database_path, NULL); assert_send_command("table_create Test TABLE_PAT_KEY ShortText"); assert_send_command("column_create Test name COLUMN_SCALAR Text"); table = get_object("Test"); }
void cut_setup(void) { const gchar *database_path; remove_tmp_directory(); g_mkdir_with_parents(tmp_directory, 0700); context = g_new0(grn_ctx, 1); grn_ctx_init(context, 0); database_path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, database_path, NULL); table = NULL; column = NULL; result = NULL; cursor = NULL; }
void test_expire_cache_on_recreate(void) { const gchar *path; path = cut_build_path(tmp_directory, "database.groonga", NULL); database = grn_db_create(context, path, NULL); assert_send_command("table_create Sites 0 ShortText"); assert_send_command("load '[[\"_key\"],[\"groonga.org\"]]' Sites"); cut_assert_equal_string("[[[1],[[\"_key\",\"ShortText\"]],[\"groonga.org\"]]]", send_command("select Sites --output_columns _key")); assert_send_command("table_remove Sites"); grn_obj_remove(context, database); database = grn_db_create(context, path, NULL); assert_send_command("table_create Sites 0 ShortText"); cut_assert_equal_string("[[[0],[[\"_key\",\"ShortText\"]]]]", send_command("select Sites --output_columns _key")); }
void cut_setup (void) { process = NULL; expected_error = NULL; actual_error = NULL; output_string = g_string_new(NULL); error_string = g_string_new(NULL); exit_status = 0; reaped = FALSE; current_locale = g_strdup(setlocale(LC_ALL, NULL)); setlocale(LC_ALL, "C"); cuttest_echo_path = cut_build_path(cut_get_test_directory(), "..", "lib", "cuttest-echo", "cuttest-echo", NULL); }
void test_estimate_size_for_query(void) { grn_obj *index_column; grn_ii *ii; grn_obj_close(context, db); db = grn_db_create(context, cut_build_path(tmp_directory, "estimate.grn", NULL), NULL); assert_send_command("table_create Memos TABLE_NO_KEY"); assert_send_command("column_create Memos content COLUMN_SCALAR Text"); assert_send_command("table_create Terms TABLE_PAT_KEY ShortText " "--default_tokenizer TokenBigramSplitSymbolAlphaDigit " "--normalizer NormalizerAuto"); assert_send_command("column_create Terms index COLUMN_INDEX|WITH_POSITION " "Memos content"); assert_send_command("load --table Memos\n" "[" "[\"content\"]," "[\"Groonga\"]," "[\"Rroonga\"]," "[\"Mroonga\"]" "]"); index_column = grn_ctx_get(context, "Terms.index", strlen("Terms.index")); ii = (grn_ii *)index_column; cut_assert_equal_double(1, DBL_EPSILON, grn_ii_estimate_size_for_query(context, ii, "Groonga", strlen("Groonga"), NULL)); }
void test_mroonga_index_score(void) { grn_obj *t1,*c1,*lc,*ft; grn_obj buff; grn_id r1,r2,r3,r4; const gchar *mrn_dir; mrn_dir = cut_build_path(tmp_directory, "mrn", NULL); g_mkdir_with_parents(mrn_dir, 0700); grn_obj_close(context, db); db = grn_db_create(context, cut_build_path(mrn_dir, "mroonga.grn", NULL), NULL); cut_assert_not_null(db); /* actual table */ t1 = grn_table_create(context, "t1", 2, cut_build_path(mrn_dir, "t1.grn", NULL), GRN_OBJ_TABLE_NO_KEY|GRN_OBJ_PERSISTENT, NULL, 0); cut_assert_not_null(t1); /* lexicon table */ lc = grn_table_create(context, "lc", 2, cut_build_path(mrn_dir, "lc.grn", NULL), GRN_OBJ_TABLE_PAT_KEY|GRN_OBJ_PERSISTENT, grn_ctx_at(context, GRN_DB_SHORT_TEXT), 0); cut_assert_not_null(lc); grn_test_assert(grn_obj_set_info(context, lc, GRN_INFO_DEFAULT_TOKENIZER, grn_ctx_at(context, GRN_DB_BIGRAM))); /* actual column */ c1 = grn_column_create(context, t1, "c1", 2, cut_build_path(mrn_dir, "t1.c1.grn", NULL), GRN_OBJ_COLUMN_SCALAR|GRN_OBJ_PERSISTENT, grn_ctx_at(context, GRN_DB_TEXT)); cut_assert_not_null(c1); /* fulltext index */ ft = grn_column_create(context, lc, "ft", 2, cut_build_path(mrn_dir, "lc.ft.grn", NULL), GRN_OBJ_COLUMN_INDEX|GRN_OBJ_PERSISTENT, t1); cut_assert_not_null(ft); GRN_TEXT_INIT(&buff,0); /* link between actual column and fulltext index */ GRN_UINT32_SET(context, &buff, grn_obj_id(context, c1)); grn_obj_set_info(context, ft, GRN_INFO_SOURCE, &buff); /* need to use grn_id */ /* insert row */ r1 = grn_table_add(context, t1, NULL, 0, NULL); cut_assert_equal_int(1,r1); GRN_TEXT_SETS(context, &buff, "abcde"); grn_test_assert(grn_obj_set_value(context, c1, r1, &buff, GRN_OBJ_SET)); r2 = grn_table_add(context, t1, NULL, 0, NULL); cut_assert_equal_int(2,r2); GRN_TEXT_SETS(context, &buff, "fghij"); grn_test_assert(grn_obj_set_value(context, c1, r2, &buff, GRN_OBJ_SET)); r3 = grn_table_add(context, t1, NULL, 0, NULL); cut_assert_equal_int(3,r3); GRN_TEXT_SETS(context, &buff, "11 22 33"); grn_test_assert(grn_obj_set_value(context, c1, r3, &buff, GRN_OBJ_SET)); r4 = grn_table_add(context, t1, NULL, 0, NULL); cut_assert_equal_int(4,r4); GRN_TEXT_SETS(context, &buff, "44 22 55"); grn_test_assert(grn_obj_set_value(context, c1, r4, &buff, GRN_OBJ_SET)); /* confirm record are inserted in both column and index */ cut_assert_equal_int(4,grn_table_size(context,t1)); cut_assert_equal_int(23,grn_table_size(context,lc)); /* nlq search */ { grn_id id, docid; grn_obj *res; grn_table_cursor *tc; grn_obj score, *score_column; res = grn_table_create(context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, t1, 0); GRN_FLOAT_INIT(&score, 0); GRN_BULK_REWIND(&buff); GRN_TEXT_SETS(context, &buff, "hij"); grn_obj_search(context, ft, &buff, res, GRN_OP_OR, NULL); cut_assert_equal_int(1, grn_table_size(context, res)); score_column = grn_obj_column(context, res, "_score", 6); tc = grn_table_cursor_open(context, res, NULL, 0, NULL, 0, 0, -1, 0); while ((id = grn_table_cursor_next(context, tc))) { GRN_BULK_REWIND(&buff); grn_table_get_key(context, res, id, &docid, sizeof(grn_id)); cut_assert_equal_int(2, docid); cut_assert_not_null(grn_obj_get_value(context, c1, docid, &buff)); cut_assert_equal_int(5 ,GRN_TEXT_LEN(&buff)); cut_assert_equal_substring("fghij", (char*) GRN_BULK_HEAD(&buff),GRN_TEXT_LEN(&buff)); grn_obj_get_value(context, score_column, id, &score); cut_assert_equal_double(1.0, DBL_EPSILON, GRN_FLOAT_VALUE(&score)); } grn_table_cursor_close(context, tc); grn_obj_close(context, score_column); grn_obj_close(context, res); } /* boolean search */ { grn_id id, docid; grn_obj *res; grn_obj *match_columns, *match_columns_variable; grn_obj *expression, *expression_variable; grn_table_cursor *tc; grn_obj score, *score_column; const char *match_columns_expression = "c1 * 5"; const char *qstr = "+22 -55"; GRN_EXPR_CREATE_FOR_QUERY(context, t1, match_columns, match_columns_variable); grn_expr_parse(context, match_columns, match_columns_expression, strlen(match_columns_expression), NULL, GRN_OP_MATCH, GRN_OP_AND, GRN_EXPR_SYNTAX_SCRIPT); GRN_EXPR_CREATE_FOR_QUERY(context, t1, expression, expression_variable); res = grn_table_create(context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, t1, 0); grn_test_assert(grn_expr_parse(context, expression, qstr, strlen(qstr), match_columns, GRN_OP_MATCH, GRN_OP_OR, GRN_EXPR_SYNTAX_QUERY)); grn_table_select(context, t1, expression, res, GRN_OP_OR); cut_assert_equal_int(1, grn_table_size(context, res)); GRN_FLOAT_INIT(&score, 0); score_column = grn_obj_column(context, res, "_score", 6); tc = grn_table_cursor_open(context, res, NULL, 0, NULL, 0, 0, -1, 0); while ((id = grn_table_cursor_next(context, tc))) { GRN_BULK_REWIND(&buff); grn_table_get_key(context, res, id, &docid, sizeof(grn_id)); cut_assert_equal_int(3, docid); cut_assert_not_null(grn_obj_get_value(context, c1, docid, &buff)); cut_assert_equal_int(8, GRN_TEXT_LEN(&buff)); cut_assert_equal_substring("11 22 33", (char*) GRN_BULK_HEAD(&buff),GRN_TEXT_LEN(&buff)); grn_obj_get_value(context, score_column, id, &score); cut_assert_equal_double(5, DBL_EPSILON, GRN_FLOAT_VALUE(&score)); } grn_obj_close(context, expression); grn_obj_close(context, match_columns); grn_table_cursor_close(context ,tc); grn_obj_close(context, score_column); grn_obj_close(context, res); } grn_obj_close(context, &buff); grn_obj_close(context, ft); grn_obj_close(context, c1); grn_obj_close(context, lc); grn_obj_close(context, t1); }