[tracker/wip/carlosg/graphs: 7/12] trackertestutils: Make await_update handle for InformationElement rewrites
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/graphs: 7/12] trackertestutils: Make await_update handle for InformationElement rewrites
- Date: Wed, 29 Apr 2020 20:33:37 +0000 (UTC)
commit 1dab90fe4d242b7361fdbe23465b11b1f484ede8
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Apr 23 12:30:39 2020 +0200
trackertestutils: Make await_update handle for InformationElement rewrites
With DataObject and InformationElement being split, a file update may result
in the InformationElement being torn out and completely recreated. Add code
to handle this situation to await_update.
utils/trackertestutils/helpers.py | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
---
diff --git a/utils/trackertestutils/helpers.py b/utils/trackertestutils/helpers.py
index 737a089fa..256ec1144 100644
--- a/utils/trackertestutils/helpers.py
+++ b/utils/trackertestutils/helpers.py
@@ -216,21 +216,34 @@ class await_update():
if not cursor.next():
raise AwaitException("Expected data is not present in the store.")
+ self.stored_as = cursor.get_string(0)[0]
+
+ query_on_create = 'SELECT nie:isStoredAs(tracker:uri(%s)) { }'
query_after = ' '.join([
'SELECT ?urn tracker:id(?urn) '
' WHERE { '
' ?urn a rdfs:Resource ; ',
self.after_predicates,
- ' . FILTER (tracker:id(?urn) = %s) '
+ ' . FILTER (tracker:id(?urn) = %s) ',
'}'
- ]) % self.resource_id
+ ])
def match_cb(notifier, service, graph, events):
for event in events:
- if event.get_event_type() == Tracker.NotifierEventType.UPDATE and event.get_id() ==
self.resource_id:
- log.debug("Processing %s event for id %s", event.get_event_type(), event.get_id())
- log.debug("Running %s", query_after)
- cursor = self.conn.query(query_after)
+ log.debug("Processing %s event for id %s", event.get_event_type(), event.get_id())
+ if event.get_event_type() == Tracker.NotifierEventType.DELETE and event.get_id() ==
self.resource_id:
+ self.resource_deleted = True
+ elif event.get_event_type() in [Tracker.NotifierEventType.CREATE,
+ Tracker.NotifierEventType.UPDATE]:
+ if event.get_event_type() == Tracker.NotifierEventType.CREATE:
+ if not self.resource_deleted:
+ raise AwaitException("Received insert with no prior delete")
+ cursor = self.conn.query(query_on_create % event.get_id())
+ if cursor.next() and cursor.get_string(0)[0] == self.stored_as:
+ self.resource_id = event.get_id()
+
+ log.debug("Running %s", query_after % event.get_id())
+ cursor = self.conn.query(query_after % event.get_id())
if cursor.next():
log.debug("Query matched!")
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]