Merge lp:~rainct/zeitgeist/fts-current-uri into lp:~zeitgeist/zeitgeist/bluebird

Proposed by Siegfried Gevatter
Status: Merged
Approved by: Michal Hruby
Approved revision: 431
Merged at revision: 431
Proposed branch: lp:~rainct/zeitgeist/fts-current-uri
Merge into: lp:~zeitgeist/zeitgeist/bluebird
Diff against target: 859 lines (+317/-244)
3 files modified
extensions/fts++/indexer.cpp (+16/-6)
extensions/fts++/test/test-indexer.cpp (+300/-237)
test/dbus/engine-test.py (+1/-1)
To merge this branch: bzr merge lp:~rainct/zeitgeist/fts-current-uri
Reviewer Review Type Date Requested Status
Michal Hruby (community) Approve
Review via email: mp+97655@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Siegfried Gevatter (rainct) wrote :

Outstanding issue: Should CompileEventFilterQuery also be changed to use current_uri instead (or in addition to?) uri?

Revision history for this message
Michal Hruby (mhr3) wrote :

The boolean terms we're adding to the document should also use current_uri. As for CompileEventFilterQuery, since the indexer no longer cares about logged uris, there's basically no distinction between them - therefore it should look at uri field and if that is unset try current_uri.

review: Needs Fixing
lp:~rainct/zeitgeist/fts-current-uri updated
429. By Siegfried Gevatter

FTS++: Change to current_uri in some more places. Add random test cases.

430. By Siegfried Gevatter

FTS++: some more test cases and add a couple utility functions

431. By Siegfried Gevatter

FTS++: more test stuff (add more asserts, extend {Most,Least}Recent tests,
       introduce new helper function)

Revision history for this message
Michal Hruby (mhr3) wrote :

Awesome!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'extensions/fts++/indexer.cpp'
--- extensions/fts++/indexer.cpp 2012-03-14 12:31:51 +0000
+++ extensions/fts++/indexer.cpp 2012-03-16 18:46:19 +0000
@@ -262,7 +262,10 @@
262 for (unsigned j = 0; j < subjects->len; j++)262 for (unsigned j = 0; j < subjects->len; j++)
263 {263 {
264 ZeitgeistSubject *subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, j);264 ZeitgeistSubject *subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, j);
265 // For backwards compatibility, we still check URI
265 val = zeitgeist_subject_get_uri (subject);266 val = zeitgeist_subject_get_uri (subject);
267 if (!val || val[0] == '\0')
268 val = zeitgeist_subject_get_current_uri (subject);
266 if (val && val[0] != '\0')269 if (val && val[0] != '\0')
267 tmpl.push_back ("zgsu:" + StringUtils::MangleUri (val));270 tmpl.push_back ("zgsu:" + StringUtils::MangleUri (val));
268271
@@ -344,7 +347,7 @@
344 for (unsigned j = 0; j < subjects->len; j++)347 for (unsigned j = 0; j < subjects->len; j++)
345 {348 {
346 ZeitgeistSubject *subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, j);349 ZeitgeistSubject *subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, j);
347 val = zeitgeist_subject_get_uri (subject);350 val = zeitgeist_subject_get_current_uri (subject);
348 if (val && val[0] != '\0')351 if (val && val[0] != '\0')
349 doc.add_boolean_term (StringUtils::Truncate (FILTER_PREFIX_SUBJECT_URI + StringUtils::MangleUri (val)));352 doc.add_boolean_term (StringUtils::Truncate (FILTER_PREFIX_SUBJECT_URI + StringUtils::MangleUri (val)));
350353
@@ -928,12 +931,13 @@
928 if (subjects == NULL) continue;931 if (subjects == NULL) continue;
929 for (unsigned j = 0; j < subjects->len; j++)932 for (unsigned j = 0; j < subjects->len; j++)
930 {933 {
931 const gchar *subj_uri = zeitgeist_subject_get_uri ((ZeitgeistSubject*) subjects->pdata[j]);934 const gchar *subj_uri = zeitgeist_subject_get_current_uri (
935 (ZeitgeistSubject*) subjects->pdata[j]);
932 if (subj_uri == NULL) continue;936 if (subj_uri == NULL) continue;
933 remapper[subj_uri] = event_id;937 remapper[subj_uri] = event_id;
934 ZeitgeistEvent *event = zeitgeist_event_new ();938 ZeitgeistEvent *event = zeitgeist_event_new ();
935 ZeitgeistSubject *subject = zeitgeist_subject_new ();939 ZeitgeistSubject *subject = zeitgeist_subject_new ();
936 zeitgeist_subject_set_uri (subject, subj_uri);940 zeitgeist_subject_set_current_uri (subject, subj_uri);
937 zeitgeist_event_add_subject (event, subject); // FIXME: leaks?941 zeitgeist_event_add_subject (event, subject); // FIXME: leaks?
938 g_ptr_array_add (event_templates, event);942 g_ptr_array_add (event_templates, event);
939 }943 }
@@ -976,7 +980,8 @@
976 if (subjects == NULL) continue;980 if (subjects == NULL) continue;
977 for (unsigned j = 0; j < subjects->len; j++)981 for (unsigned j = 0; j < subjects->len; j++)
978 {982 {
979 const gchar *subj_uri = zeitgeist_subject_get_uri ((ZeitgeistSubject*) subjects->pdata[j]);983 const gchar *subj_uri = zeitgeist_subject_get_current_uri (
984 (ZeitgeistSubject*) subjects->pdata[j]);
980 if (subj_uri == NULL) continue;985 if (subj_uri == NULL) continue;
981 relevancy_map[event_id] = relevancy_map[remapper[subj_uri]];986 relevancy_map[event_id] = relevancy_map[remapper[subj_uri]];
982 }987 }
@@ -1259,7 +1264,6 @@
1259{1264{
1260 try1265 try
1261 {1266 {
1262 // FIXME: we need to special case MOVE_EVENTs
1263 const gchar *val;1267 const gchar *val;
1264 guint event_id = zeitgeist_event_get_id (event);1268 guint event_id = zeitgeist_event_get_id (event);
1265 g_return_if_fail (event_id > 0);1269 g_return_if_fail (event_id > 0);
@@ -1288,7 +1292,13 @@
1288 ZeitgeistSubject *subject;1292 ZeitgeistSubject *subject;
1289 subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, i);1293 subject = (ZeitgeistSubject*) g_ptr_array_index (subjects, i);
12901294
1291 val = zeitgeist_subject_get_uri (subject);1295 // We use current_uri (vs. uri) where since we care about real stuff,
1296 // not whatever happened some time ago.
1297 //
1298 // This will most likely still be the same as URI (unless something
1299 // triggers a reindexation of the DB), but at least MOVE_EVENTS
1300 // will have the updated URI.
1301 val = zeitgeist_subject_get_current_uri (subject);
1292 if (val == NULL || val[0] == '\0') continue;1302 if (val == NULL || val[0] == '\0') continue;
12931303
1294 std::string uri(val);1304 std::string uri(val);
12951305
=== modified file 'extensions/fts++/test/test-indexer.cpp'
--- extensions/fts++/test/test-indexer.cpp 2012-03-14 15:47:20 +0000
+++ extensions/fts++/test/test-indexer.cpp 2012-03-16 18:46:19 +0000
@@ -62,6 +62,30 @@
62 g_object_unref (fix->db);62 g_object_unref (fix->db);
63}63}
6464
65static void
66assert_nth_result_has_id (GPtrArray* results, guint n, guint32 event_id)
67{
68 g_assert_cmpuint (n, <, results->len);
69 ZeitgeistEvent *event = (ZeitgeistEvent*) results->pdata[n];
70 g_assert (event);
71 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
72}
73
74// This function only supports events with a single subject,
75// since that's enough for the tests in this file.
76static void
77assert_nth_result_has_text (GPtrArray* results, int n, const char *text)
78{
79 g_assert_cmpuint (n, <, results->len);
80 ZeitgeistEvent *event = (ZeitgeistEvent*) results->pdata[n];
81 g_assert (event);
82 g_assert_cmpint (zeitgeist_event_num_subjects (event), ==, 1);
83 ZeitgeistSubject *subject = (ZeitgeistSubject*)
84 g_ptr_array_index (zeitgeist_event_get_subjects (event), 0);
85 g_assert (subject);
86 g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, text);
87}
88
65static ZeitgeistEvent* create_test_event1 (void)89static ZeitgeistEvent* create_test_event1 (void)
66{90{
67 ZeitgeistEvent *event = zeitgeist_event_new ();91 ZeitgeistEvent *event = zeitgeist_event_new ();
@@ -131,7 +155,7 @@
131 zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION);155 zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION);
132 zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT);156 zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT);
133 zeitgeist_subject_set_uri (subject, "file:///home/username/Documents/my_fabulous_presentation.pdf");157 zeitgeist_subject_set_uri (subject, "file:///home/username/Documents/my_fabulous_presentation.pdf");
134 zeitgeist_subject_set_text (subject, NULL);158 zeitgeist_subject_set_text (subject, "test texts");
135 zeitgeist_subject_set_mimetype (subject, "application/pdf");159 zeitgeist_subject_set_mimetype (subject, "application/pdf");
136160
137 zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MODIFY_EVENT);161 zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MODIFY_EVENT);
@@ -191,7 +215,7 @@
191 zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION);215 zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION);
192 zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT);216 zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT);
193 zeitgeist_subject_set_uri (subject, "file:///home/username/directory-with-dashes/and.dot/%C4%8C%20some-intl/CamelCasePresentation.pdf");217 zeitgeist_subject_set_uri (subject, "file:///home/username/directory-with-dashes/and.dot/%C4%8C%20some-intl/CamelCasePresentation.pdf");
194 zeitgeist_subject_set_text (subject, NULL);218 zeitgeist_subject_set_text (subject, "some more texts");
195 zeitgeist_subject_set_mimetype (subject, "application/pdf");219 zeitgeist_subject_set_mimetype (subject, "application/pdf");
196220
197 zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MODIFY_EVENT);221 zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MODIFY_EVENT);
@@ -203,6 +227,27 @@
203 return event;227 return event;
204}228}
205229
230static ZeitgeistEvent* create_test_event8 (void)
231{
232 ZeitgeistEvent *event = zeitgeist_event_new ();
233 ZeitgeistSubject *subject = zeitgeist_subject_new ();
234
235 zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION);
236 zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT);
237 zeitgeist_subject_set_uri (subject, "file:///home/username/Documents/my_fabulous_presentation.pdf");
238 zeitgeist_subject_set_current_uri (subject, "file:///home/username/Awesome.pdf");
239 zeitgeist_subject_set_text (subject, "some more textt about a presentation or something");
240 zeitgeist_subject_set_mimetype (subject, "application/pdf");
241
242 zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_MOVE_EVENT);
243 zeitgeist_event_set_manifestation (event, ZEITGEIST_ZG_USER_ACTIVITY);
244 zeitgeist_event_set_actor (event, "application://nautilus.desktop");
245 zeitgeist_event_add_subject (event, subject);
246
247 g_object_unref (subject);
248 return event;
249}
250
206// Steals the event, ref it if you want to keep it251// Steals the event, ref it if you want to keep it
207static guint252static guint
208index_event (Fixture *fix, ZeitgeistEvent *event)253index_event (Fixture *fix, ZeitgeistEvent *event)
@@ -236,6 +281,42 @@
236 return event_id;281 return event_id;
237}282}
238283
284static GPtrArray*
285search_simple (Fixture *fix, const char *text, GPtrArray *templates,
286 ZeitgeistResultType result_type, guint *matches)
287{
288 if (!templates) templates = g_ptr_array_new ();
289 return zeitgeist_indexer_search (fix->indexer,
290 text,
291 zeitgeist_time_range_new_anytime (),
292 templates,
293 0, // offset
294 10, // count
295 result_type,
296 matches,
297 NULL);
298}
299
300static GPtrArray*
301search_with_relevancies_simple (Fixture *fix, const char *text,
302 GPtrArray *templates, ZeitgeistResultType result_type,
303 gdouble **relevancies, gint *relevancies_size, guint *matches)
304{
305 if (!templates) templates = g_ptr_array_new ();
306 return zeitgeist_indexer_search_with_relevancies (fix->indexer,
307 text,
308 zeitgeist_time_range_new_anytime (),
309 templates,
310 ZEITGEIST_STORAGE_STATE_ANY,
311 0, // offset
312 10, // count
313 result_type,
314 relevancies,
315 relevancies_size,
316 matches,
317 NULL);
318}
319
239static void320static void
240test_simple_query (Fixture *fix, gconstpointer data)321test_simple_query (Fixture *fix, gconstpointer data)
241{322{
@@ -249,33 +330,44 @@
249 index_event (fix, create_test_event3 ());330 index_event (fix, create_test_event3 ());
250 index_event (fix, create_test_event4 ());331 index_event (fix, create_test_event4 ());
251332
252 GPtrArray *results =333 GPtrArray *results = search_simple (fix, "text", NULL,
253 zeitgeist_indexer_search (fix->indexer,334 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
254 "text",
255 zeitgeist_time_range_new_anytime (),
256 g_ptr_array_new (),
257 0,
258 10,
259 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
260 &matches,
261 NULL);
262335
263 g_assert_cmpuint (matches, >, 0);336 g_assert_cmpuint (matches, >, 0);
264 g_assert_cmpuint (results->len, ==, 1);337 g_assert_cmpuint (results->len, ==, 1);
265338 assert_nth_result_has_id (results, 0, event_id);
266 event = (ZeitgeistEvent*) results->pdata[0];339 assert_nth_result_has_text (results, 0, "text");
267 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);340}
268341
269 ZeitgeistSubject *subject = (ZeitgeistSubject*)342static void
270 g_ptr_array_index (zeitgeist_event_get_subjects (event), 0);343test_simple_query_empty_database (Fixture *fix, gconstpointer data)
271 g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "text");344{
345 guint matches;
346
347 GPtrArray *results = search_simple (fix,
348 "NothingWillEverMatchThisMwhahahaha", NULL,
349 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
350
351 g_assert_cmpuint (matches, ==, 0);
352 g_assert_cmpuint (results->len, ==, 0);
353}
354
355static void
356test_simple_query_no_results (Fixture *fix, gconstpointer data)
357{
358 // add test events to DBs
359 index_event (fix, create_test_event1 ());
360 index_event (fix, create_test_event2 ());
361 index_event (fix, create_test_event3 ());
362 index_event (fix, create_test_event4 ());
363
364 test_simple_query_empty_database (fix, data);
272}365}
273366
274static void367static void
275test_simple_with_filter (Fixture *fix, gconstpointer data)368test_simple_with_filter (Fixture *fix, gconstpointer data)
276{369{
277 guint matches;370 guint matches;
278 guint event_id;
279 ZeitgeistEvent* event;371 ZeitgeistEvent* event;
280372
281 // add test events to DBs373 // add test events to DBs
@@ -287,16 +379,8 @@
287 zeitgeist_event_set_interpretation (event, ZEITGEIST_NFO_DOCUMENT);379 zeitgeist_event_set_interpretation (event, ZEITGEIST_NFO_DOCUMENT);
288 g_ptr_array_add (filters, event); // steals ref380 g_ptr_array_add (filters, event); // steals ref
289381
290 GPtrArray *results =382 GPtrArray *results = search_simple (fix, "text", filters,
291 zeitgeist_indexer_search (fix->indexer,383 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
292 "text",
293 zeitgeist_time_range_new_anytime (),
294 filters,
295 0,
296 10,
297 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
298 &matches,
299 NULL);
300384
301 g_assert_cmpuint (results->len, ==, 0);385 g_assert_cmpuint (results->len, ==, 0);
302 g_assert_cmpuint (matches, ==, 0);386 g_assert_cmpuint (matches, ==, 0);
@@ -321,38 +405,24 @@
321 zeitgeist_event_add_subject (event, subject);405 zeitgeist_event_add_subject (event, subject);
322 g_ptr_array_add (filters, event); // steals ref406 g_ptr_array_add (filters, event); // steals ref
323407
324 GPtrArray *results =408 GPtrArray *results = search_simple (fix, "text", filters,
325 zeitgeist_indexer_search (fix->indexer,409 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
326 "text",
327 zeitgeist_time_range_new_anytime (),
328 filters,
329 0,
330 10,
331 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
332 &matches,
333 NULL);
334410
335 g_assert_cmpuint (matches, >, 0);411 g_assert_cmpuint (matches, >, 0);
336 g_assert_cmpuint (results->len, ==, 1);412 g_assert_cmpuint (results->len, ==, 1);
337413 assert_nth_result_has_id (results, 0, event_id);
338 event = (ZeitgeistEvent*) results->pdata[0];414 assert_nth_result_has_text (results, 0, "text");
339 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
340
341 subject = (ZeitgeistSubject*)
342 g_ptr_array_index (zeitgeist_event_get_subjects (event), 0);
343 g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "text");
344}415}
345416
346static void417static void
347test_simple_negation (Fixture *fix, gconstpointer data)418test_simple_negation (Fixture *fix, gconstpointer data)
348{419{
349 guint matches;420 guint matches;
350 guint event_id;
351 ZeitgeistEvent* event;421 ZeitgeistEvent* event;
352 ZeitgeistSubject *subject;422 ZeitgeistSubject *subject;
353423
354 // add test events to DBs424 // add test events to DBs
355 event_id = index_event (fix, create_test_event1 ());425 index_event (fix, create_test_event1 ());
356 index_event (fix, create_test_event2 ());426 index_event (fix, create_test_event2 ());
357427
358 GPtrArray *filters = g_ptr_array_new_with_free_func (g_object_unref);428 GPtrArray *filters = g_ptr_array_new_with_free_func (g_object_unref);
@@ -362,16 +432,8 @@
362 zeitgeist_event_add_subject (event, subject);432 zeitgeist_event_add_subject (event, subject);
363 g_ptr_array_add (filters, event); // steals ref433 g_ptr_array_add (filters, event); // steals ref
364434
365 GPtrArray *results =435 GPtrArray *results = search_simple (fix, "text", filters,
366 zeitgeist_indexer_search (fix->indexer,436 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
367 "text",
368 zeitgeist_time_range_new_anytime (),
369 filters,
370 0,
371 10,
372 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
373 &matches,
374 NULL);
375437
376 g_assert_cmpuint (matches, ==, 0);438 g_assert_cmpuint (matches, ==, 0);
377 g_assert_cmpuint (results->len, ==, 0);439 g_assert_cmpuint (results->len, ==, 0);
@@ -381,12 +443,11 @@
381test_simple_noexpand (Fixture *fix, gconstpointer data)443test_simple_noexpand (Fixture *fix, gconstpointer data)
382{444{
383 guint matches;445 guint matches;
384 guint event_id;
385 ZeitgeistEvent* event;446 ZeitgeistEvent* event;
386 ZeitgeistSubject *subject;447 ZeitgeistSubject *subject;
387448
388 // add test events to DBs449 // add test events to DBs
389 event_id = index_event (fix, create_test_event1 ());450 index_event (fix, create_test_event1 ());
390 index_event (fix, create_test_event2 ());451 index_event (fix, create_test_event2 ());
391452
392 GPtrArray *filters = g_ptr_array_new_with_free_func (g_object_unref);453 GPtrArray *filters = g_ptr_array_new_with_free_func (g_object_unref);
@@ -396,16 +457,8 @@
396 zeitgeist_event_add_subject (event, subject);457 zeitgeist_event_add_subject (event, subject);
397 g_ptr_array_add (filters, event); // steals ref458 g_ptr_array_add (filters, event); // steals ref
398459
399 GPtrArray *results =460 GPtrArray *results = search_simple (fix, "text", filters,
400 zeitgeist_indexer_search (fix->indexer,461 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
401 "text",
402 zeitgeist_time_range_new_anytime (),
403 filters,
404 0,
405 10,
406 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
407 &matches,
408 NULL);
409462
410 g_assert_cmpuint (matches, ==, 0);463 g_assert_cmpuint (matches, ==, 0);
411 g_assert_cmpuint (results->len, ==, 0);464 g_assert_cmpuint (results->len, ==, 0);
@@ -430,26 +483,13 @@
430 zeitgeist_event_add_subject (event, subject);483 zeitgeist_event_add_subject (event, subject);
431 g_ptr_array_add (filters, event); // steals ref484 g_ptr_array_add (filters, event); // steals ref
432485
433 GPtrArray *results =486 GPtrArray *results = search_simple (fix, "text", filters,
434 zeitgeist_indexer_search (fix->indexer,487 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
435 "text",
436 zeitgeist_time_range_new_anytime (),
437 filters,
438 0,
439 10,
440 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
441 &matches,
442 NULL);
443488
444 g_assert_cmpuint (matches, >, 0);489 g_assert_cmpuint (matches, >, 0);
445 g_assert_cmpuint (results->len, ==, 1);490 g_assert_cmpuint (results->len, ==, 1);
446491 assert_nth_result_has_id (results, 0, event_id);
447 event = (ZeitgeistEvent*) results->pdata[0];492 assert_nth_result_has_text (results, 0, "text");
448 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
449
450 subject = (ZeitgeistSubject*)
451 g_ptr_array_index (zeitgeist_event_get_subjects (event), 0);
452 g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "text");
453}493}
454494
455static void495static void
@@ -471,26 +511,14 @@
471 zeitgeist_event_add_subject (event, subject);511 zeitgeist_event_add_subject (event, subject);
472 g_ptr_array_add (filters, event); // steals ref512 g_ptr_array_add (filters, event); // steals ref
473513
474 GPtrArray *results =514 GPtrArray *results = search_simple (fix, "love", filters,
475 zeitgeist_indexer_search (fix->indexer,515 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
476 "love",
477 zeitgeist_time_range_new_anytime (),
478 filters,
479 0,
480 10,
481 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
482 &matches,
483 NULL);
484516
485 g_assert_cmpuint (matches, >, 0);517 g_assert_cmpuint (matches, >, 0);
486 g_assert_cmpuint (results->len, ==, 1);518 g_assert_cmpuint (results->len, ==, 1);
487519 assert_nth_result_has_id (results, 0, event_id);
488 event = (ZeitgeistEvent*) results->pdata[0];520 assert_nth_result_has_text (results, 0,
489 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);521 "Example.com Wiki Page. Kanji is awesome 漢字");
490
491 subject = (ZeitgeistSubject*)
492 g_ptr_array_index (zeitgeist_event_get_subjects (event), 0);
493 g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "Example.com Wiki Page. Kanji is awesome 漢字");
494}522}
495523
496static void524static void
@@ -507,22 +535,12 @@
507 index_event (fix, create_test_event3 ());535 index_event (fix, create_test_event3 ());
508 event_id = index_event (fix, create_test_event4 ());536 event_id = index_event (fix, create_test_event4 ());
509537
510 GPtrArray *results =538 GPtrArray *results = search_simple (fix, "fabulo*", NULL,
511 zeitgeist_indexer_search (fix->indexer,539 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
512 "fabulo*",
513 zeitgeist_time_range_new_anytime (),
514 g_ptr_array_new (),
515 0,
516 10,
517 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
518 &matches,
519 NULL);
520540
521 g_assert_cmpuint (matches, >, 0);541 g_assert_cmpuint (matches, >, 0);
522 g_assert_cmpuint (results->len, ==, 1);542 g_assert_cmpuint (results->len, ==, 1);
523543 assert_nth_result_has_id (results, 0, event_id);
524 event = (ZeitgeistEvent*) results->pdata[0];
525 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
526}544}
527545
528static void546static void
@@ -540,22 +558,12 @@
540 index_event (fix, create_test_event4 ());558 index_event (fix, create_test_event4 ());
541 event_id = index_event (fix, create_test_event5 ());559 event_id = index_event (fix, create_test_event5 ());
542560
543 GPtrArray *results =561 GPtrArray *results = search_simple (fix, "signal", NULL,
544 zeitgeist_indexer_search (fix->indexer,562 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
545 "signal",
546 zeitgeist_time_range_new_anytime (),
547 g_ptr_array_new (),
548 0,
549 10,
550 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
551 &matches,
552 NULL);
553563
554 g_assert_cmpuint (matches, >, 0);564 g_assert_cmpuint (matches, >, 0);
555 g_assert_cmpuint (results->len, ==, 1);565 g_assert_cmpuint (results->len, ==, 1);
556566 assert_nth_result_has_id (results, 0, event_id);
557 event = (ZeitgeistEvent*) results->pdata[0];
558 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
559}567}
560568
561static void569static void
@@ -583,22 +591,12 @@
583 zeitgeist_event_add_subject (event, subject);591 zeitgeist_event_add_subject (event, subject);
584 g_ptr_array_add (event_template, event);592 g_ptr_array_add (event_template, event);
585593
586 GPtrArray *results =594 GPtrArray *results = search_simple (fix, "pdf", event_template,
587 zeitgeist_indexer_search (fix->indexer,595 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
588 "pdf",
589 zeitgeist_time_range_new_anytime (),
590 event_template,
591 0,
592 10,
593 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
594 &matches,
595 NULL);
596596
597 g_assert_cmpuint (matches, >, 0);597 g_assert_cmpuint (matches, >, 0);
598 g_assert_cmpuint (results->len, ==, 1);598 g_assert_cmpuint (results->len, ==, 1);
599599 assert_nth_result_has_id (results, 0, event_id);
600 event = (ZeitgeistEvent*) results->pdata[0];
601 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
602}600}
603601
604static void602static void
@@ -626,22 +624,12 @@
626 zeitgeist_event_add_subject (event, subject);624 zeitgeist_event_add_subject (event, subject);
627 g_ptr_array_add (event_template, event);625 g_ptr_array_add (event_template, event);
628626
629 GPtrArray *results =627 GPtrArray *results = search_simple (fix, "pdf", event_template,
630 zeitgeist_indexer_search (fix->indexer,628 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
631 "pdf",
632 zeitgeist_time_range_new_anytime (),
633 event_template,
634 0,
635 10,
636 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
637 &matches,
638 NULL);
639629
640 g_assert_cmpuint (matches, >, 0);630 g_assert_cmpuint (matches, >, 0);
641 g_assert_cmpuint (results->len, ==, 1);631 g_assert_cmpuint (results->len, ==, 1);
642632 assert_nth_result_has_id (results, 0, event_id);
643 event = (ZeitgeistEvent*) results->pdata[0];
644 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
645}633}
646634
647static void635static void
@@ -669,22 +657,12 @@
669 zeitgeist_event_add_subject (event, subject);657 zeitgeist_event_add_subject (event, subject);
670 g_ptr_array_add (event_template, event);658 g_ptr_array_add (event_template, event);
671659
672 GPtrArray *results =660 GPtrArray *results = search_simple (fix, "pdf", event_template,
673 zeitgeist_indexer_search (fix->indexer,661 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
674 "pdf",
675 zeitgeist_time_range_new_anytime (),
676 event_template,
677 0,
678 10,
679 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
680 &matches,
681 NULL);
682662
683 g_assert_cmpuint (matches, >, 0);663 g_assert_cmpuint (matches, >, 0);
684 g_assert_cmpuint (results->len, ==, 1);664 g_assert_cmpuint (results->len, ==, 1);
685665 assert_nth_result_has_id (results, 0, event_id);
686 event = (ZeitgeistEvent*) results->pdata[0];
687 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
688}666}
689667
690static void668static void
@@ -699,26 +677,14 @@
699 index_event (fix, create_test_event1 ());677 index_event (fix, create_test_event1 ());
700 event_id = index_event (fix, create_test_event2 ());678 event_id = index_event (fix, create_test_event2 ());
701679
702 GPtrArray *results =680 GPtrArray *results = search_simple (fix, "漢*", NULL,
703 zeitgeist_indexer_search (fix->indexer,681 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
704 "漢*",
705 zeitgeist_time_range_new_anytime (),
706 g_ptr_array_new (),
707 0,
708 10,
709 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
710 &matches,
711 NULL);
712682
713 g_assert_cmpuint (matches, >, 0);683 g_assert_cmpuint (matches, >, 0);
714 g_assert_cmpuint (results->len, ==, 1);684 g_assert_cmpuint (results->len, ==, 1);
715685 assert_nth_result_has_id (results, 0, event_id);
716 event = (ZeitgeistEvent*) results->pdata[0];686 assert_nth_result_has_text (results, 0,
717 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);687 "Example.com Wiki Page. Kanji is awesome 漢字");
718
719 subject = (ZeitgeistSubject*)
720 g_ptr_array_index (zeitgeist_event_get_subjects (event), 0);
721 g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "Example.com Wiki Page. Kanji is awesome 漢字");
722}688}
723689
724static void690static void
@@ -734,26 +700,13 @@
734 index_event (fix, create_test_event2 ());700 index_event (fix, create_test_event2 ());
735 event_id = index_event (fix, create_test_event3 ());701 event_id = index_event (fix, create_test_event3 ());
736702
737 GPtrArray *results =703 GPtrArray *results = search_simple (fix, "παράδειγμα", NULL,
738 zeitgeist_indexer_search (fix->indexer,704 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
739 "παράδειγμα",
740 zeitgeist_time_range_new_anytime (),
741 g_ptr_array_new (),
742 0,
743 10,
744 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
745 &matches,
746 NULL);
747705
748 g_assert_cmpuint (matches, >, 0);706 g_assert_cmpuint (matches, >, 0);
749 g_assert_cmpuint (results->len, ==, 1);707 g_assert_cmpuint (results->len, ==, 1);
750708 assert_nth_result_has_id (results, 0, event_id);
751 event = (ZeitgeistEvent*) results->pdata[0];709 assert_nth_result_has_text (results, 0, "IDNwiki");
752 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
753
754 subject = (ZeitgeistSubject*)
755 g_ptr_array_index (zeitgeist_event_get_subjects (event), 0);
756 g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "IDNwiki");
757}710}
758711
759static void712static void
@@ -771,30 +724,16 @@
771 index_event (fix, create_test_event3 ());724 index_event (fix, create_test_event3 ());
772 index_event (fix, create_test_event4 ());725 index_event (fix, create_test_event4 ());
773726
774 GPtrArray *results =727 GPtrArray *results = search_with_relevancies_simple (fix, "text", NULL,
775 zeitgeist_indexer_search_with_relevancies (fix->indexer,728 ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS,
776 "text",729 &relevancies, &relevancies_size, &matches);
777 zeitgeist_time_range_new_anytime (),
778 g_ptr_array_new (),
779 ZEITGEIST_STORAGE_STATE_ANY,
780 0,
781 10,
782 (ZeitgeistResultType) 100,
783 &relevancies, &relevancies_size,
784 &matches,
785 NULL);
786730
787 g_assert_cmpuint (matches, >, 0);731 g_assert_cmpuint (matches, >, 0);
788 g_assert_cmpuint (results->len, ==, 1);732 g_assert_cmpuint (results->len, ==, 1);
789 g_assert_cmpint (relevancies_size, ==, 1);733 g_assert_cmpint (relevancies_size, ==, 1);
790 g_assert_cmpfloat (relevancies[0], >=, 1.0);734 g_assert_cmpfloat (relevancies[0], >=, 1.0);
791735 assert_nth_result_has_id (results, 0, event_id);
792 event = (ZeitgeistEvent*) results->pdata[0];736 assert_nth_result_has_text (results, 0, "text");
793 g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
794
795 ZeitgeistSubject *subject = (ZeitgeistSubject*)
796 g_ptr_array_index (zeitgeist_event_get_subjects (event), 0);
797 g_assert_cmpstr (zeitgeist_subject_get_text (subject), ==, "text");
798}737}
799738
800static void739static void
@@ -815,18 +754,9 @@
815 usleep (50000);754 usleep (50000);
816 event_id6 = index_event (fix, create_test_event6 ());755 event_id6 = index_event (fix, create_test_event6 ());
817756
818 GPtrArray *results =757 GPtrArray *results = search_with_relevancies_simple (fix, "user*", NULL,
819 zeitgeist_indexer_search_with_relevancies (fix->indexer,758 ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS,
820 "user*",759 &relevancies, &relevancies_size, &matches);
821 zeitgeist_time_range_new_anytime (),
822 g_ptr_array_new (),
823 ZEITGEIST_STORAGE_STATE_ANY,
824 0,
825 10,
826 ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS,
827 &relevancies, &relevancies_size,
828 &matches,
829 NULL);
830760
831 g_assert_cmpuint (matches, >, 0);761 g_assert_cmpuint (matches, >, 0);
832 g_assert_cmpuint (results->len, ==, 3);762 g_assert_cmpuint (results->len, ==, 3);
@@ -834,8 +764,131 @@
834764
835 // we're creating event 6 after 5 and 4, so it has to be more recent (but it seems765 // we're creating event 6 after 5 and 4, so it has to be more recent (but it seems
836 // that number of terms indexed matters as well, so careful with the relevancies)766 // that number of terms indexed matters as well, so careful with the relevancies)
837 g_assert_cmpuint (event_id6, ==,767 assert_nth_result_has_id (results, 0, event_id6);
838 zeitgeist_event_get_id ((ZeitgeistEvent*) results->pdata[0]));768}
769
770static void
771test_simple_move_event (Fixture *fix, gconstpointer data)
772{
773 guint matches;
774 guint event_id;
775 ZeitgeistEvent* event;
776
777 // add test events to DBs
778 index_event (fix, create_test_event1 ());
779 index_event (fix, create_test_event4 ());
780 event_id = index_event (fix, create_test_event8 ());
781
782 GPtrArray *results = search_simple (fix, "awesome", NULL,
783 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
784
785 g_assert_cmpuint (matches, >, 0);
786 g_assert_cmpuint (results->len, ==, 1);
787 assert_nth_result_has_id (results, 0, event_id);
788}
789
790static void
791test_simple_most_recent (Fixture *fix, gconstpointer data)
792{
793 guint matches;
794 guint event_id1, event_id2, event_id3, event_id4;
795 ZeitgeistEvent* event;
796 GPtrArray* results;
797 gdouble *relevancies;
798 gint relevancies_size;
799
800 // add test events to DBs
801 event_id1 = index_event (fix, create_test_event1 ());
802 event_id2 = index_event (fix, create_test_event2 ());
803 event_id3 = index_event (fix, create_test_event3 ());
804 event_id4 = index_event (fix, create_test_event4 ());
805
806 for (int i = 0; i < 4; ++i)
807 {
808 if (i == 0)
809 {
810 // Search for MostRecentEvents
811 results = search_simple (fix, "*text*", NULL,
812 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches);
813 }
814 else if (i == 1)
815 {
816 // Search for MostRecentSubjects
817 results = search_simple (fix, "*text*", NULL,
818 ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS, &matches);
819 }
820 else if (i == 2)
821 {
822 // SearchWithRelevancies for MostRecentEvents
823 GPtrArray *results = search_with_relevancies_simple (fix, "*text*", NULL,
824 ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
825 &relevancies, &relevancies_size, &matches);
826 }
827 else
828 {
829 // SearchWithRelevancies for MostRecentSubjects
830 GPtrArray *results = search_with_relevancies_simple (fix, "*text*", NULL,
831 ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS,
832 &relevancies, &relevancies_size, &matches);
833 }
834
835 g_assert_cmpuint (matches, >, 0);
836 g_assert_cmpuint (results->len, ==, 2);
837 assert_nth_result_has_id (results, 0, event_id4);
838 assert_nth_result_has_id (results, 1, event_id1);
839 }
840}
841
842static void
843test_simple_least_recent (Fixture *fix, gconstpointer data)
844{
845 guint matches;
846 guint event_id1, event_id2, event_id3, event_id4;
847 ZeitgeistEvent* event;
848 GPtrArray* results;
849 gdouble *relevancies;
850 gint relevancies_size;
851
852 // add test events to DBs
853 event_id1 = index_event (fix, create_test_event1 ());
854 event_id2 = index_event (fix, create_test_event2 ());
855 event_id3 = index_event (fix, create_test_event3 ());
856 event_id4 = index_event (fix, create_test_event4 ());
857
858 for (int i = 0; i < 4; ++i)
859 {
860 if (i == 0)
861 {
862 // Search for LeastRecentEvents
863 results = search_simple (fix, "*text*", NULL,
864 ZEITGEIST_RESULT_TYPE_LEAST_RECENT_EVENTS, &matches);
865 }
866 else if (i == 1)
867 {
868 // Search for LeastRecentSubjects
869 results = search_simple (fix, "*text*", NULL,
870 ZEITGEIST_RESULT_TYPE_LEAST_RECENT_SUBJECTS, &matches);
871 }
872 else if (i == 2)
873 {
874 // SearchWithRelevancies for LeastRecentEvents
875 GPtrArray *results = search_with_relevancies_simple (fix, "*text*", NULL,
876 ZEITGEIST_RESULT_TYPE_LEAST_RECENT_EVENTS,
877 &relevancies, &relevancies_size, &matches);
878 }
879 else
880 {
881 // SearchWithRelevancies for LeastRecentSubjects
882 GPtrArray *results = search_with_relevancies_simple (fix, "*text*", NULL,
883 ZEITGEIST_RESULT_TYPE_LEAST_RECENT_SUBJECTS,
884 &relevancies, &relevancies_size, &matches);
885 }
886
887 g_assert_cmpuint (matches, >, 0);
888 g_assert_cmpuint (results->len, ==, 2);
889 assert_nth_result_has_id (results, 0, event_id1);
890 assert_nth_result_has_id (results, 1, event_id4);
891 }
839}892}
840893
841G_BEGIN_DECLS894G_BEGIN_DECLS
@@ -851,6 +904,10 @@
851{904{
852 g_test_add ("/Zeitgeist/FTS/Indexer/SimpleQuery", Fixture, 0,905 g_test_add ("/Zeitgeist/FTS/Indexer/SimpleQuery", Fixture, 0,
853 setup, test_simple_query, teardown);906 setup, test_simple_query, teardown);
907 g_test_add ("/Zeitgeist/FTS/Indexer/SimpleQueryEmptyDatabase", Fixture, 0,
908 setup, test_simple_query_empty_database, teardown);
909 g_test_add ("/Zeitgeist/FTS/Indexer/SimpleQueryNoResults", Fixture, 0,
910 setup, test_simple_query_no_results, teardown);
854 g_test_add ("/Zeitgeist/FTS/Indexer/SimpleWithFilter", Fixture, 0,911 g_test_add ("/Zeitgeist/FTS/Indexer/SimpleWithFilter", Fixture, 0,
855 setup, test_simple_with_filter, teardown);912 setup, test_simple_with_filter, teardown);
856 g_test_add ("/Zeitgeist/FTS/Indexer/SimpleWithValidFilter", Fixture, 0,913 g_test_add ("/Zeitgeist/FTS/Indexer/SimpleWithValidFilter", Fixture, 0,
@@ -881,6 +938,12 @@
881 setup, test_simple_relevancies_query, teardown);938 setup, test_simple_relevancies_query, teardown);
882 g_test_add ("/Zeitgeist/FTS/Indexer/RelevanciesSubject", Fixture, 0,939 g_test_add ("/Zeitgeist/FTS/Indexer/RelevanciesSubject", Fixture, 0,
883 setup, test_simple_relevancies_subject_query, teardown);940 setup, test_simple_relevancies_subject_query, teardown);
941 g_test_add ("/Zeitgeist/FTS/Indexer/MoveEvent", Fixture, 0,
942 setup, test_simple_move_event, teardown);
943 g_test_add ("/Zeitgeist/FTS/Indexer/MostRecent", Fixture, 0,
944 setup, test_simple_most_recent, teardown);
945 g_test_add ("/Zeitgeist/FTS/Indexer/LeastRecent", Fixture, 0,
946 setup, test_simple_least_recent, teardown);
884947
885 // get rid of the "rebuilding index..." messages948 // get rid of the "rebuilding index..." messages
886 g_log_set_handler (NULL, G_LOG_LEVEL_MESSAGE, discard_message, NULL);949 g_log_set_handler (NULL, G_LOG_LEVEL_MESSAGE, discard_message, NULL);
887950
=== modified file 'test/dbus/engine-test.py'
--- test/dbus/engine-test.py 2012-01-02 07:42:53 +0000
+++ test/dbus/engine-test.py 2012-03-16 18:46:19 +0000
@@ -134,7 +134,7 @@
134134
135 def testIllegalPredefinedEventId(self):135 def testIllegalPredefinedEventId(self):
136 event = Event()136 event = Event()
137 event[0][0] = str(23) # This is illegal, we assert the erro later137 event[0][0] = str(23) # This is illegal, we assert the error later
138 event.timestamp = 0138 event.timestamp = 0
139 event.interpretation = Manifestation.USER_ACTIVITY139 event.interpretation = Manifestation.USER_ACTIVITY
140 event.manifestation = Interpretation.CREATE_EVENT140 event.manifestation = Interpretation.CREATE_EVENT

Subscribers

People subscribed via source and target branches