diff options
author | Siegfried-Angel Gevatter Pujals <siegfried@gevatter.com> | 2012-04-03 20:40:44 +0200 |
---|---|---|
committer | Siegfried-Angel Gevatter Pujals <siegfried@gevatter.com> | 2012-04-03 20:40:44 +0200 |
commit | 2b2946d182925d3ed94476798257a0d5d356ae8f (patch) | |
tree | a5b7763282ae565bd49415a67cc794f5d682d916 /extensions | |
parent | 2d38dfab686c5f6a99f6f5c54cb606c620c5071b (diff) | |
download | zeitgeist-2b2946d182925d3ed94476798257a0d5d356ae8f.tar.gz |
FTS++: Ubuntu One events blacklist:
- Move blacklist check to separate function.
- Exclude blacklisted events from the Zeitgeist query when reindexing.
- Add environment variable to disable blacklisting.
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/fts++/controller.cpp | 16 | ||||
-rw-r--r-- | extensions/fts++/indexer.cpp | 17 | ||||
-rw-r--r-- | extensions/fts++/indexer.h | 2 | ||||
-rw-r--r-- | extensions/fts++/test/test-indexer.cpp | 37 |
4 files changed, 61 insertions, 11 deletions
diff --git a/extensions/fts++/controller.cpp b/extensions/fts++/controller.cpp index b849d819..ece90590 100644 --- a/extensions/fts++/controller.cpp +++ b/extensions/fts++/controller.cpp @@ -39,9 +39,23 @@ void Controller::RebuildIndex () GError *error = NULL; guint32 *event_ids; gint event_ids_size; - GPtrArray *templates = g_ptr_array_new (); + GPtrArray *templates = g_ptr_array_new_with_free_func (g_object_unref); + ZeitgeistEvent *event; ZeitgeistTimeRange *time_range = zeitgeist_time_range_new_anytime (); + if (g_getenv ("ZEITGEIST_FTS_DISABLE_EVENT_BLACKLIST") == NULL) + { + // Blacklist Ubuntu One events... + + event = zeitgeist_event_new (); + zeitgeist_event_set_actor (event, "!dbus://com.ubuntuone.SyncDaemon.service"); + g_ptr_array_add (templates, event); + + event = zeitgeist_event_new (); + zeitgeist_event_set_actor (event, "!dbus://org.desktopcouch.CouchDB.service"); + g_ptr_array_add (templates, event); + } + g_debug ("asking reader for all events"); event_ids = zeitgeist_db_reader_find_event_ids (zg_reader, time_range, diff --git a/extensions/fts++/indexer.cpp b/extensions/fts++/indexer.cpp index 21b03847..d2a09cd1 100644 --- a/extensions/fts++/indexer.cpp +++ b/extensions/fts++/indexer.cpp @@ -1301,14 +1301,23 @@ get_digest_for_uri (GChecksum *checksum, const gchar *uri, g_assert (digest_size == NULL || *digest_size == HASH_LENGTH); } -void Indexer::IndexEvent (ZeitgeistEvent *event) +static bool +CheckEventBlacklisted (ZeitgeistEvent *event) { // Blacklist Ubuntu One events... const gchar *actor; actor = zeitgeist_event_get_actor (event); - if (strcmp(actor, "dbus://com.ubuntuone.SyncDaemon.service") == 0) - return; - if (strcmp(actor, "dbus://org.desktopcouch.CouchDB.service") == 0) + if (g_strcmp0(actor, "dbus://com.ubuntuone.SyncDaemon.service") == 0) + return true; + if (g_strcmp0(actor, "dbus://org.desktopcouch.CouchDB.service") == 0) + return true; + + return false; +} + +void Indexer::IndexEvent (ZeitgeistEvent *event) +{ + if (blacklisting_enabled and CheckEventBlacklisted (event)) return; try diff --git a/extensions/fts++/indexer.h b/extensions/fts++/indexer.h index a80f4a79..7654c99c 100644 --- a/extensions/fts++/indexer.h +++ b/extensions/fts++/indexer.h @@ -48,6 +48,7 @@ public: { const gchar *home_dir = g_get_home_dir (); home_dir_path = home_dir != NULL ? home_dir : "/home"; + blacklisting_enabled = g_getenv ("ZEITGEIST_FTS_DISABLE_EVENT_BLACKLIST") == NULL; } ~Indexer () @@ -129,6 +130,7 @@ private: guint clear_failed_id; std::string home_dir_path; + bool blacklisting_enabled; }; } diff --git a/extensions/fts++/test/test-indexer.cpp b/extensions/fts++/test/test-indexer.cpp index 41beac81..62ca4118 100644 --- a/extensions/fts++/test/test-indexer.cpp +++ b/extensions/fts++/test/test-indexer.cpp @@ -270,6 +270,15 @@ static ZeitgeistEvent* create_test_event_simple (const char *uri, const char *te return event; } +static void +process_pending (Fixture *fix) +{ + while (zeitgeist_indexer_has_pending_tasks (fix->indexer)) + { + zeitgeist_indexer_process_task (fix->indexer); + } +} + // Steals the event, ref it if you want to keep it static guint index_event (Fixture *fix, ZeitgeistEvent *event) @@ -295,10 +304,7 @@ index_event (Fixture *fix, ZeitgeistEvent *event) zeitgeist_indexer_index_events (fix->indexer, events); g_ptr_array_unref (events); - while (zeitgeist_indexer_has_pending_tasks (fix->indexer)) - { - zeitgeist_indexer_process_task (fix->indexer); - } + process_pending (fix); // sleep for 1 msec to make sure the next event will have a // different timestamp @@ -1078,17 +1084,36 @@ static void test_index_ignore_ubuntu_one (Fixture *fix, gconstpointer data) { guint matches; + ZeitgeistEvent *event; + GPtrArray *results; // add test events to DBs index_event (fix, create_test_event_simple ("ubuntuone:uuid", "failme")); - ZeitgeistEvent *event = create_test_event_simple ("file:///nice%20uri", "failme"); + event = create_test_event_simple ("file:///nice%20uri", "failme"); zeitgeist_event_set_actor (event, "dbus://com.ubuntuone.SyncDaemon.service"); index_event (fix, event); - GPtrArray *results = search_simple (fix, "failme", NULL, + results = search_simple (fix, "failme", NULL, ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches); g_assert_cmpuint (results->len, ==, 0); + + // disabling blacklisting + g_setenv ("ZEITGEIST_FTS_DISABLE_EVENT_BLACKLIST", "1", true); + + // create a new FTS instance + zeitgeist_indexer_free (fix->indexer); + GError *error = NULL; + fix->indexer = zeitgeist_indexer_new (fix->db, &error); + g_assert (error == NULL); + + // wait for it to rebuild the index + process_pending (fix); + + results = search_simple (fix, "failme", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches); + + g_assert_cmpuint (results->len, ==, 1); // we still don't want ubuntuone:uuid } G_BEGIN_DECLS |