From b23eec3ebc6152307903844a90a08077bda2e08c Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Sun, 15 Jul 2018 12:35:35 +0200 Subject: tests: Fix inconsistent test filenames --- tests/libtracker-data/Makefile.am | 2 +- tests/libtracker-data/meson.build | 2 +- tests/libtracker-data/tracker-db-journal-test.c | 405 +++++++++++++++++++++++ tests/libtracker-data/tracker-db-journal.c | 405 ----------------------- tests/libtracker-sparql/Makefile.am | 2 +- tests/libtracker-sparql/meson.build | 5 +- tests/libtracker-sparql/tracker-gb-737023-test.c | 113 +++++++ tests/libtracker-sparql/tracker-gb-737023.c | 113 ------- 8 files changed, 525 insertions(+), 522 deletions(-) create mode 100644 tests/libtracker-data/tracker-db-journal-test.c delete mode 100644 tests/libtracker-data/tracker-db-journal.c create mode 100644 tests/libtracker-sparql/tracker-gb-737023-test.c delete mode 100644 tests/libtracker-sparql/tracker-gb-737023.c diff --git a/tests/libtracker-data/Makefile.am b/tests/libtracker-data/Makefile.am index 6939b9460..3beb17997 100644 --- a/tests/libtracker-data/Makefile.am +++ b/tests/libtracker-data/Makefile.am @@ -59,7 +59,7 @@ tracker_ontology_SOURCES = tracker-ontology-test.c tracker_ontology_change_SOURCES = tracker-ontology-change-test.c tracker_backup_SOURCES = tracker-backup-test.c tracker_crc32_test_SOURCES = tracker-crc32-test.c -tracker_db_journal_SOURCES = tracker-db-journal.c +tracker_db_journal_SOURCES = tracker-db-journal-test.c EXTRA_DIST += \ dawg-testcases \ diff --git a/tests/libtracker-data/meson.build b/tests/libtracker-data/meson.build index f9d42a5cd..a99ca89fe 100644 --- a/tests/libtracker-data/meson.build +++ b/tests/libtracker-data/meson.build @@ -16,7 +16,7 @@ crc32_test = executable('tracker-crc32-test', test('data-crc32', crc32_test) db_journal_test = executable('tracker-db-journal-test', - 'tracker-db-journal.c', + 'tracker-db-journal-test.c', dependencies: [tracker_common_dep, tracker_data_dep], c_args: test_c_args) test('data-db-journal', db_journal_test) diff --git a/tests/libtracker-data/tracker-db-journal-test.c b/tests/libtracker-data/tracker-db-journal-test.c new file mode 100644 index 000000000..184c6ab46 --- /dev/null +++ b/tests/libtracker-data/tracker-db-journal-test.c @@ -0,0 +1,405 @@ +/* + * Copyright (C) 2008, Nokia + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" + +#include + +#include + +#ifndef DISABLE_JOURNAL + +static void +test_init_and_shutdown (void) +{ + GError *error = NULL; + gboolean result; + gchar *path; + GFile *data_location, *child; + TrackerDBJournal *writer; + + path = g_build_filename (TOP_BUILDDIR, "tests", "libtracker-db", NULL); + data_location = g_file_new_for_path (path); + g_free (path); + + child = g_file_get_child (data_location, "tracker-store.journal"); + path = g_file_get_path (child); + g_unlink (path); + g_object_unref (child); + + /* check double init/shutdown */ + tracker_db_journal_set_rotating (FALSE, G_MAXSIZE, NULL); + writer = tracker_db_journal_new (data_location, FALSE, &error); + g_assert_no_error (error); + g_assert_nonnull (writer); + + result = tracker_db_journal_free (writer, &error); + g_assert_no_error (error); + g_assert (result == TRUE); + + tracker_db_journal_set_rotating (FALSE, G_MAXSIZE, NULL); + writer = tracker_db_journal_new (data_location, FALSE, &error); + g_assert_no_error (error); + g_assert_nonnull (writer); + + result = tracker_db_journal_free (writer, &error); + g_assert_no_error (error); + g_assert (result == TRUE); + + g_object_unref (data_location); + g_free (path); +} + +static void +test_write_functions (void) +{ + gchar *path; + gsize initial_size, actual_size; + gboolean result; + GError *error = NULL; + GFile *data_location, *child; + TrackerDBJournal *writer; + + path = g_build_filename (TOP_BUILDDIR, "tests", "libtracker-db", NULL); + data_location = g_file_new_for_path (path); + g_free (path); + + child = g_file_get_child (data_location, "tracker-store.journal"); + path = g_file_get_path (child); + g_unlink (path); + g_object_unref (child); + + tracker_db_journal_set_rotating (FALSE, G_MAXSIZE, NULL); + writer = tracker_db_journal_new (data_location, FALSE, &error); + g_object_unref (data_location); + g_assert_no_error (error); + + /* Size is 8 due to header */ + actual_size = tracker_db_journal_get_size (writer); + g_assert_cmpint (actual_size, ==, 8); + + /* Check with rollback, nothing is added */ + initial_size = tracker_db_journal_get_size (writer); + result = tracker_db_journal_start_transaction (writer, time (NULL)); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 10, "http://resource"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 11, "http://predicate"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_delete_statement (writer, 0, 10, 11, "test"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_rollback_transaction (writer); + g_assert_cmpint (result, ==, TRUE); + actual_size = tracker_db_journal_get_size (writer); + g_assert_cmpint (initial_size, ==, actual_size); + + /* Check with commit, somethign is added */ + result = tracker_db_journal_start_transaction (writer, time (NULL)); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 12, "http://resource"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 13, "http://predicate"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 14, "http://resource"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_delete_statement_id (writer, 0, 12, 13, 14); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_commit_db_transaction (writer, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + actual_size = tracker_db_journal_get_size (writer); + g_assert_cmpint (initial_size, !=, actual_size); + + /* Test insert statement */ + result = tracker_db_journal_start_transaction (writer, time (NULL)); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 15, "http://resource"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 16, "http://predicate"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_insert_statement (writer, 0, 15, 16, "test"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_commit_db_transaction (writer, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + /* Test insert id */ + result = tracker_db_journal_start_transaction (writer, time (NULL)); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 17, "http://resource"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 18, "http://predicate"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_resource (writer, 19, "http://resource"); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_append_insert_statement_id (writer, 0, 17, 18, 19); + g_assert_cmpint (result, ==, TRUE); + result = tracker_db_journal_commit_db_transaction (writer, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + /* Test fsync */ + result = tracker_db_journal_fsync (writer); + g_assert_cmpint (result, ==, TRUE); + + tracker_db_journal_free (writer, &error); + g_assert_no_error (error); + + g_free (path); +} + +static void +test_read_functions (void) +{ + GError *error = NULL; + gchar *path; + gboolean result; + TrackerDBJournalEntryType type; + gint id, s_id, p_id, o_id; + const gchar *uri, *str; + GFile *data_location; + TrackerDBJournalReader *reader; + + path = g_build_filename (TOP_BUILDDIR, "tests", "libtracker-db", NULL); + data_location = g_file_new_for_path (path); + g_free (path); + + /* NOTE: we don't unlink here so we can use the data from the write tests */ + + /* Create an iterator */ + reader = tracker_db_journal_reader_new (data_location, &error); + g_object_unref (data_location); + g_assert_no_error (error); + g_assert_nonnull (reader); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_START); + + /* First transaction */ + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_START_TRANSACTION); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); + + result = tracker_db_journal_reader_get_resource (reader, &id, &uri); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (id, ==, 12); + g_assert_cmpstr (uri, ==, "http://resource"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); + + result = tracker_db_journal_reader_get_resource (reader, &id, &uri); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (id, ==, 13); + g_assert_cmpstr (uri, ==, "http://predicate"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); + + result = tracker_db_journal_reader_get_resource (reader, &id, &uri); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (id, ==, 14); + g_assert_cmpstr (uri, ==, "http://resource"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_DELETE_STATEMENT_ID); + + result = tracker_db_journal_reader_get_statement_id (reader, NULL, &s_id, &p_id, &o_id); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (s_id, ==, 12); + g_assert_cmpint (p_id, ==, 13); + g_assert_cmpint (o_id, ==, 14); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_END_TRANSACTION); + + /* Second transaction */ + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_START_TRANSACTION); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); + + result = tracker_db_journal_reader_get_resource (reader, &id, &uri); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (id, ==, 15); + g_assert_cmpstr (uri, ==, "http://resource"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); + + result = tracker_db_journal_reader_get_resource (reader, &id, &uri); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (id, ==, 16); + g_assert_cmpstr (uri, ==, "http://predicate"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_INSERT_STATEMENT); + + result = tracker_db_journal_reader_get_statement (reader, NULL, &s_id, &p_id, &str); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (s_id, ==, 15); + g_assert_cmpint (p_id, ==, 16); + g_assert_cmpstr (str, ==, "test"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_END_TRANSACTION); + + /* Third transaction */ + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_START_TRANSACTION); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); + + result = tracker_db_journal_reader_get_resource (reader, &id, &uri); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (id, ==, 17); + g_assert_cmpstr (uri, ==, "http://resource"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); + + result = tracker_db_journal_reader_get_resource (reader, &id, &uri); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (id, ==, 18); + g_assert_cmpstr (uri, ==, "http://predicate"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); + + result = tracker_db_journal_reader_get_resource (reader, &id, &uri); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (id, ==, 19); + g_assert_cmpstr (uri, ==, "http://resource"); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_INSERT_STATEMENT_ID); + + result = tracker_db_journal_reader_get_statement_id (reader, NULL, &s_id, &p_id, &o_id); + g_assert_cmpint (result, ==, TRUE); + g_assert_cmpint (s_id, ==, 17); + g_assert_cmpint (p_id, ==, 18); + g_assert_cmpint (o_id, ==, 19); + + result = tracker_db_journal_reader_next (reader, &error); + g_assert_no_error (error); + g_assert_cmpint (result, ==, TRUE); + + type = tracker_db_journal_reader_get_entry_type (reader); + g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_END_TRANSACTION); + + tracker_db_journal_reader_free (reader); +} + +#endif /* DISABLE_JOURNAL */ + +int +main (int argc, char **argv) +{ + gchar *path; + int result; + + g_test_init (&argc, &argv, NULL); + +#ifndef DISABLE_JOURNAL + /* None of these tests make sense in case of disabled journal */ + g_test_add_func ("/libtracker-db/tracker-db-journal/write-functions", + test_write_functions); + g_test_add_func ("/libtracker-db/tracker-db-journal/read-functions", + test_read_functions); + g_test_add_func ("/libtracker-db/tracker-db-journal/init-and-shutdown", + test_init_and_shutdown); +#endif /* DISABLE_JOURNAL */ + + result = g_test_run (); + + /* Clean up */ + path = g_build_filename (TOP_BUILDDIR, "tests", "libtracker-db", "tracker-store.journal", NULL); + g_unlink (path); + g_free (path); + + return result; +} diff --git a/tests/libtracker-data/tracker-db-journal.c b/tests/libtracker-data/tracker-db-journal.c deleted file mode 100644 index 184c6ab46..000000000 --- a/tests/libtracker-data/tracker-db-journal.c +++ /dev/null @@ -1,405 +0,0 @@ -/* - * Copyright (C) 2008, Nokia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "config.h" - -#include - -#include - -#ifndef DISABLE_JOURNAL - -static void -test_init_and_shutdown (void) -{ - GError *error = NULL; - gboolean result; - gchar *path; - GFile *data_location, *child; - TrackerDBJournal *writer; - - path = g_build_filename (TOP_BUILDDIR, "tests", "libtracker-db", NULL); - data_location = g_file_new_for_path (path); - g_free (path); - - child = g_file_get_child (data_location, "tracker-store.journal"); - path = g_file_get_path (child); - g_unlink (path); - g_object_unref (child); - - /* check double init/shutdown */ - tracker_db_journal_set_rotating (FALSE, G_MAXSIZE, NULL); - writer = tracker_db_journal_new (data_location, FALSE, &error); - g_assert_no_error (error); - g_assert_nonnull (writer); - - result = tracker_db_journal_free (writer, &error); - g_assert_no_error (error); - g_assert (result == TRUE); - - tracker_db_journal_set_rotating (FALSE, G_MAXSIZE, NULL); - writer = tracker_db_journal_new (data_location, FALSE, &error); - g_assert_no_error (error); - g_assert_nonnull (writer); - - result = tracker_db_journal_free (writer, &error); - g_assert_no_error (error); - g_assert (result == TRUE); - - g_object_unref (data_location); - g_free (path); -} - -static void -test_write_functions (void) -{ - gchar *path; - gsize initial_size, actual_size; - gboolean result; - GError *error = NULL; - GFile *data_location, *child; - TrackerDBJournal *writer; - - path = g_build_filename (TOP_BUILDDIR, "tests", "libtracker-db", NULL); - data_location = g_file_new_for_path (path); - g_free (path); - - child = g_file_get_child (data_location, "tracker-store.journal"); - path = g_file_get_path (child); - g_unlink (path); - g_object_unref (child); - - tracker_db_journal_set_rotating (FALSE, G_MAXSIZE, NULL); - writer = tracker_db_journal_new (data_location, FALSE, &error); - g_object_unref (data_location); - g_assert_no_error (error); - - /* Size is 8 due to header */ - actual_size = tracker_db_journal_get_size (writer); - g_assert_cmpint (actual_size, ==, 8); - - /* Check with rollback, nothing is added */ - initial_size = tracker_db_journal_get_size (writer); - result = tracker_db_journal_start_transaction (writer, time (NULL)); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 10, "http://resource"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 11, "http://predicate"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_delete_statement (writer, 0, 10, 11, "test"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_rollback_transaction (writer); - g_assert_cmpint (result, ==, TRUE); - actual_size = tracker_db_journal_get_size (writer); - g_assert_cmpint (initial_size, ==, actual_size); - - /* Check with commit, somethign is added */ - result = tracker_db_journal_start_transaction (writer, time (NULL)); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 12, "http://resource"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 13, "http://predicate"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 14, "http://resource"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_delete_statement_id (writer, 0, 12, 13, 14); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_commit_db_transaction (writer, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - actual_size = tracker_db_journal_get_size (writer); - g_assert_cmpint (initial_size, !=, actual_size); - - /* Test insert statement */ - result = tracker_db_journal_start_transaction (writer, time (NULL)); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 15, "http://resource"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 16, "http://predicate"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_insert_statement (writer, 0, 15, 16, "test"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_commit_db_transaction (writer, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - /* Test insert id */ - result = tracker_db_journal_start_transaction (writer, time (NULL)); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 17, "http://resource"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 18, "http://predicate"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_resource (writer, 19, "http://resource"); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_append_insert_statement_id (writer, 0, 17, 18, 19); - g_assert_cmpint (result, ==, TRUE); - result = tracker_db_journal_commit_db_transaction (writer, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - /* Test fsync */ - result = tracker_db_journal_fsync (writer); - g_assert_cmpint (result, ==, TRUE); - - tracker_db_journal_free (writer, &error); - g_assert_no_error (error); - - g_free (path); -} - -static void -test_read_functions (void) -{ - GError *error = NULL; - gchar *path; - gboolean result; - TrackerDBJournalEntryType type; - gint id, s_id, p_id, o_id; - const gchar *uri, *str; - GFile *data_location; - TrackerDBJournalReader *reader; - - path = g_build_filename (TOP_BUILDDIR, "tests", "libtracker-db", NULL); - data_location = g_file_new_for_path (path); - g_free (path); - - /* NOTE: we don't unlink here so we can use the data from the write tests */ - - /* Create an iterator */ - reader = tracker_db_journal_reader_new (data_location, &error); - g_object_unref (data_location); - g_assert_no_error (error); - g_assert_nonnull (reader); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_START); - - /* First transaction */ - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_START_TRANSACTION); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); - - result = tracker_db_journal_reader_get_resource (reader, &id, &uri); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (id, ==, 12); - g_assert_cmpstr (uri, ==, "http://resource"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); - - result = tracker_db_journal_reader_get_resource (reader, &id, &uri); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (id, ==, 13); - g_assert_cmpstr (uri, ==, "http://predicate"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); - - result = tracker_db_journal_reader_get_resource (reader, &id, &uri); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (id, ==, 14); - g_assert_cmpstr (uri, ==, "http://resource"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_DELETE_STATEMENT_ID); - - result = tracker_db_journal_reader_get_statement_id (reader, NULL, &s_id, &p_id, &o_id); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (s_id, ==, 12); - g_assert_cmpint (p_id, ==, 13); - g_assert_cmpint (o_id, ==, 14); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_END_TRANSACTION); - - /* Second transaction */ - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_START_TRANSACTION); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); - - result = tracker_db_journal_reader_get_resource (reader, &id, &uri); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (id, ==, 15); - g_assert_cmpstr (uri, ==, "http://resource"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); - - result = tracker_db_journal_reader_get_resource (reader, &id, &uri); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (id, ==, 16); - g_assert_cmpstr (uri, ==, "http://predicate"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_INSERT_STATEMENT); - - result = tracker_db_journal_reader_get_statement (reader, NULL, &s_id, &p_id, &str); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (s_id, ==, 15); - g_assert_cmpint (p_id, ==, 16); - g_assert_cmpstr (str, ==, "test"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_END_TRANSACTION); - - /* Third transaction */ - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_START_TRANSACTION); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); - - result = tracker_db_journal_reader_get_resource (reader, &id, &uri); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (id, ==, 17); - g_assert_cmpstr (uri, ==, "http://resource"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); - - result = tracker_db_journal_reader_get_resource (reader, &id, &uri); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (id, ==, 18); - g_assert_cmpstr (uri, ==, "http://predicate"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_RESOURCE); - - result = tracker_db_journal_reader_get_resource (reader, &id, &uri); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (id, ==, 19); - g_assert_cmpstr (uri, ==, "http://resource"); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_INSERT_STATEMENT_ID); - - result = tracker_db_journal_reader_get_statement_id (reader, NULL, &s_id, &p_id, &o_id); - g_assert_cmpint (result, ==, TRUE); - g_assert_cmpint (s_id, ==, 17); - g_assert_cmpint (p_id, ==, 18); - g_assert_cmpint (o_id, ==, 19); - - result = tracker_db_journal_reader_next (reader, &error); - g_assert_no_error (error); - g_assert_cmpint (result, ==, TRUE); - - type = tracker_db_journal_reader_get_entry_type (reader); - g_assert_cmpint (type, ==, TRACKER_DB_JOURNAL_END_TRANSACTION); - - tracker_db_journal_reader_free (reader); -} - -#endif /* DISABLE_JOURNAL */ - -int -main (int argc, char **argv) -{ - gchar *path; - int result; - - g_test_init (&argc, &argv, NULL); - -#ifndef DISABLE_JOURNAL - /* None of these tests make sense in case of disabled journal */ - g_test_add_func ("/libtracker-db/tracker-db-journal/write-functions", - test_write_functions); - g_test_add_func ("/libtracker-db/tracker-db-journal/read-functions", - test_read_functions); - g_test_add_func ("/libtracker-db/tracker-db-journal/init-and-shutdown", - test_init_and_shutdown); -#endif /* DISABLE_JOURNAL */ - - result = g_test_run (); - - /* Clean up */ - path = g_build_filename (TOP_BUILDDIR, "tests", "libtracker-db", "tracker-store.journal", NULL); - g_unlink (path); - g_free (path); - - return result; -} diff --git a/tests/libtracker-sparql/Makefile.am b/tests/libtracker-sparql/Makefile.am index ebc4137ff..21ecca866 100644 --- a/tests/libtracker-sparql/Makefile.am +++ b/tests/libtracker-sparql/Makefile.am @@ -25,6 +25,6 @@ tracker_resource_test_SOURCES = tracker-resource-test.c tracker_sparql_test_SOURCES = tracker-sparql-test.c -tracker_gb_737023_test_SOURCES = tracker-gb-737023.c +tracker_gb_737023_test_SOURCES = tracker-gb-737023-test.c EXTRA_DIST += meson.build diff --git a/tests/libtracker-sparql/meson.build b/tests/libtracker-sparql/meson.build index 326c7d7a9..d671b4627 100644 --- a/tests/libtracker-sparql/meson.build +++ b/tests/libtracker-sparql/meson.build @@ -1,3 +1,6 @@ +libtracker_sparql_tests = [ + +l test_c_args = [ '-DTEST', '-DTEST_DOMAIN_ONTOLOGY_RULE="@0@/src/tracker-store/default.rule"'.format(source_root), @@ -17,7 +20,7 @@ sparql_test = executable('tracker-sparql-test', test('sparql', sparql_test) gb_737023_test = executable('tracker-gb-737023-test', - 'tracker-gb-737023.c', + 'tracker-gb-737023-test.c', dependencies: [tracker_common_dep, tracker_sparql_dep], c_args: [tracker_c_args, test_c_args]) test('gb_737023', sparql_test) diff --git a/tests/libtracker-sparql/tracker-gb-737023-test.c b/tests/libtracker-sparql/tracker-gb-737023-test.c new file mode 100644 index 000000000..0955ffc25 --- /dev/null +++ b/tests/libtracker-sparql/tracker-gb-737023-test.c @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2014, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include + +#include + +#include + +static void +query_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) +{ + GCancellable *cancellable; + GError *error = NULL; + TrackerSparqlConnection *conn = TRACKER_SPARQL_CONNECTION (source_object); + TrackerSparqlCursor *cursor = NULL; + + cursor = tracker_sparql_connection_query_finish (conn, res, &error); + if (error != NULL) { + g_error_free (error); + } + + cancellable = g_cancellable_new (); + tracker_sparql_connection_query_async (conn, + "SELECT ?urn WHERE {?urn a rdfs:Resource}", + cancellable, + query_cb, + NULL); + g_cancellable_cancel (cancellable); + + g_object_unref (cancellable); + g_clear_object (&cursor); +} + +static gboolean +quit_cb (gpointer user_data) +{ + g_main_loop_quit ((GMainLoop *) user_data); + return G_SOURCE_REMOVE; +} + +static void +test_tracker_sparql_gb737023 (void) +{ + GCancellable *cancellable; + GError *error = NULL; + GMainLoop *loop; + TrackerSparqlConnection *conn; + + g_test_bug_base ("https://bugzilla.gnome.org/show_bug.cgi?id="); + g_test_bug ("737023"); + + g_setenv ("TRACKER_SPARQL_BACKEND", "bus", TRUE); + conn = tracker_sparql_connection_get (NULL, &error); + g_assert_no_error (error); + + loop = g_main_loop_new (NULL, FALSE); + + /* This should be enough. */ + g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, + 2, + quit_cb, + loop, + (GDestroyNotify) g_main_loop_unref); + + cancellable = g_cancellable_new (); + tracker_sparql_connection_query_async (conn, + "SELECT ?urn WHERE {?urn a rdfs:Resource}", + cancellable, + query_cb, + NULL); + g_cancellable_cancel (cancellable); + g_main_loop_run (loop); + + g_object_unref (cancellable); + g_object_unref (conn); +} + +gint +main (gint argc, gchar **argv) +{ + gint result; + + setlocale (LC_ALL, ""); + + g_setenv ("TRACKER_TEST_DOMAIN_ONTOLOGY_RULE", TEST_DOMAIN_ONTOLOGY_RULE, TRUE); + g_setenv ("TRACKER_DB_ONTOLOGIES_DIR", TEST_ONTOLOGIES_DIR, TRUE); + + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/libtracker-sparql/tracker/gb737023", + test_tracker_sparql_gb737023); + + result = g_test_run (); + + return result; +} diff --git a/tests/libtracker-sparql/tracker-gb-737023.c b/tests/libtracker-sparql/tracker-gb-737023.c deleted file mode 100644 index 0955ffc25..000000000 --- a/tests/libtracker-sparql/tracker-gb-737023.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2014, Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include - -#include - -#include - -static void -query_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) -{ - GCancellable *cancellable; - GError *error = NULL; - TrackerSparqlConnection *conn = TRACKER_SPARQL_CONNECTION (source_object); - TrackerSparqlCursor *cursor = NULL; - - cursor = tracker_sparql_connection_query_finish (conn, res, &error); - if (error != NULL) { - g_error_free (error); - } - - cancellable = g_cancellable_new (); - tracker_sparql_connection_query_async (conn, - "SELECT ?urn WHERE {?urn a rdfs:Resource}", - cancellable, - query_cb, - NULL); - g_cancellable_cancel (cancellable); - - g_object_unref (cancellable); - g_clear_object (&cursor); -} - -static gboolean -quit_cb (gpointer user_data) -{ - g_main_loop_quit ((GMainLoop *) user_data); - return G_SOURCE_REMOVE; -} - -static void -test_tracker_sparql_gb737023 (void) -{ - GCancellable *cancellable; - GError *error = NULL; - GMainLoop *loop; - TrackerSparqlConnection *conn; - - g_test_bug_base ("https://bugzilla.gnome.org/show_bug.cgi?id="); - g_test_bug ("737023"); - - g_setenv ("TRACKER_SPARQL_BACKEND", "bus", TRUE); - conn = tracker_sparql_connection_get (NULL, &error); - g_assert_no_error (error); - - loop = g_main_loop_new (NULL, FALSE); - - /* This should be enough. */ - g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, - 2, - quit_cb, - loop, - (GDestroyNotify) g_main_loop_unref); - - cancellable = g_cancellable_new (); - tracker_sparql_connection_query_async (conn, - "SELECT ?urn WHERE {?urn a rdfs:Resource}", - cancellable, - query_cb, - NULL); - g_cancellable_cancel (cancellable); - g_main_loop_run (loop); - - g_object_unref (cancellable); - g_object_unref (conn); -} - -gint -main (gint argc, gchar **argv) -{ - gint result; - - setlocale (LC_ALL, ""); - - g_setenv ("TRACKER_TEST_DOMAIN_ONTOLOGY_RULE", TEST_DOMAIN_ONTOLOGY_RULE, TRUE); - g_setenv ("TRACKER_DB_ONTOLOGIES_DIR", TEST_ONTOLOGIES_DIR, TRUE); - - g_test_init (&argc, &argv, NULL); - - g_test_add_func ("/libtracker-sparql/tracker/gb737023", - test_tracker_sparql_gb737023); - - result = g_test_run (); - - return result; -} -- cgit v1.2.1