summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiegfried-Angel Gevatter Pujals <siegfried@gevatter.com>2012-04-03 20:40:44 +0200
committerSiegfried-Angel Gevatter Pujals <siegfried@gevatter.com>2012-04-03 20:40:44 +0200
commit2b2946d182925d3ed94476798257a0d5d356ae8f (patch)
treea5b7763282ae565bd49415a67cc794f5d682d916
parent2d38dfab686c5f6a99f6f5c54cb606c620c5071b (diff)
downloadzeitgeist-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.
-rw-r--r--extensions/fts++/controller.cpp16
-rw-r--r--extensions/fts++/indexer.cpp17
-rw-r--r--extensions/fts++/indexer.h2
-rw-r--r--extensions/fts++/test/test-indexer.cpp37
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