diff options
author | Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com> | 2010-09-25 15:19:07 +0200 |
---|---|---|
committer | Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com> | 2010-09-25 15:19:07 +0200 |
commit | 3ea8556bb62e442af30b3a481296a5420efe253b (patch) | |
tree | c25a1eba813092ad54af1fd81fbc79b58ae10f79 | |
parent | 6e7f9b66770f59d689ac324bf661982888e6f114 (diff) | |
download | zeitgeist-3ea8556bb62e442af30b3a481296a5420efe253b.tar.gz |
Renamed the LeastRecentActor sorting type to OldestActor and implemented
a new LeastRecentActor which does what it was supposed to do (LP: #646124).
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | _zeitgeist/engine/main.py | 5 | ||||
-rwxr-xr-x | test/engine-test.py | 54 | ||||
-rw-r--r-- | zeitgeist/datamodel.py | 5 |
4 files changed, 48 insertions, 21 deletions
@@ -17,7 +17,10 @@ Engine: make use of the database's indexes. - Catch any exceptions trying to notify a monitor of changes and redirect them to the error log. - - **** LeastRecentActor and OldestActor change goes here... *** + - Fixed LeastRecentActor sorting not working in combination with event + template filtering (LP: #641968). + - Renamed the LeastRecentActor sorting type to OldestActor and implemented + a new LeastRecentActor which does what it was supposed to do (LP: #646124). Datahub: diff --git a/_zeitgeist/engine/main.py b/_zeitgeist/engine/main.py index 5f7f30a5..74f36616 100644 --- a/_zeitgeist/engine/main.py +++ b/_zeitgeist/engine/main.py @@ -343,7 +343,7 @@ class ZeitgeistEngine: else: raise NotImplementedError, "Unsupported return_mode." - if order == ResultType.LeastRecentActor: + if order == ResultType.OldestActor: sql += """ NATURAL JOIN ( SELECT actor, min(timestamp) AS timestamp @@ -366,7 +366,8 @@ class ZeitgeistEngine: " GROUP BY subj_origin ORDER BY timestamp DESC", " GROUP BY subj_origin ORDER BY timestamp ASC", " GROUP BY subj_origin ORDER BY COUNT(subj_origin) DESC, timestamp DESC", - " GROUP BY subj_origin ORDER BY COUNT(subj_origin) ASC, timestamp ASC")[order] + " GROUP BY subj_origin ORDER BY COUNT(subj_origin) ASC, timestamp ASC", + " GROUP BY actor ORDER BY timestamp ASC")[order] if max_events > 0: sql += " LIMIT %d" % max_events diff --git a/test/engine-test.py b/test/engine-test.py index b9fdd8fe..f18905b7 100755 --- a/test/engine-test.py +++ b/test/engine-test.py @@ -595,19 +595,8 @@ class ZeitgeistEngineTest(_engineTestClass): events = self.engine.find_events( TimeRange(105,107), [], StorageState.Any, 0, ResultType.MostRecentActor) self.assertEquals([e[0][1] for e in events], ["107", "105"]) - - def testResultTypesLeastRecentActor(self): - import_events("test/data/twenty_events.js", self.engine) - - events = self.engine.find_events( - TimeRange.always(), - [Event.new_for_values(subject_manifestation="stfu:File")], - StorageState.Any, 0, ResultType.LeastRecentActor) - self.assertEquals([e[0][1] for e in events], ["100", "101", "105"]) - # LeastRecentActor should really be: 100, 101, 105. See bug #646124. - # This will be renamed to something like OldestActor. - - def testResultTypesLeastRecentActorBug641968(self): + + def testResultTypesOldestActorBug641968(self): events = [ Event.new_for_values(timestamp=1, actor="boo", subject_uri="tmp/boo"), Event.new_for_values(timestamp=2, actor="boo", subject_uri="home/boo"), @@ -618,22 +607,55 @@ class ZeitgeistEngineTest(_engineTestClass): # Get the least recent actors ids = self.engine.find_eventids(TimeRange.always(), - [], StorageState.Any, 0, ResultType.LeastRecentActor) + [], StorageState.Any, 0, ResultType.OldestActor) self.assertEquals(ids, [1, 3, 4]) # Get the least recent actors for "home/boo" template = Event.new_for_values(subject_uri="home/boo") ids = self.engine.find_eventids(TimeRange.always(), - [template], StorageState.Any, 0, ResultType.LeastRecentActor) + [template], StorageState.Any, 0, ResultType.OldestActor) self.assertEquals(ids, [2]) # Let's also try the same with MostRecentActor... Although there # should be no problem here. template = Event.new_for_values(subject_uri="home/boo") ids = self.engine.find_eventids(TimeRange.always(), - [template], StorageState.Any, 0, ResultType.LeastRecentActor) + [template], StorageState.Any, 0, ResultType.OldestActor) self.assertEquals(ids, [2]) + def testResultTypesOldestActor(self): + import_events("test/data/twenty_events.js", self.engine) + + events = self.engine.find_events( + TimeRange.always(), + [Event.new_for_values(subject_manifestation="stfu:File")], + StorageState.Any, 0, ResultType.OldestActor) + self.assertEquals([e[0][1] for e in events], ["100", "101", "105"]) + + def testResultTypesLeastRecentActor(self): + import_events("test/data/twenty_events.js", self.engine) + + events = self.engine.find_events( + TimeRange.always(), + [Event.new_for_values(subject_manifestation="stfu:File")], + StorageState.Any, 0, ResultType.LeastRecentActor) + self.assertEquals([e[0][1] for e in events], ['105', '114', '119']) + + def testResultTypesLeastRecentActor2(self): + # The same test as before, but this time with fewer events so that + # it is actually understandable. + events = [ + Event.new_for_values(timestamp=1, actor="gedit", subject_uri="oldFile"), + Event.new_for_values(timestamp=2, actor="banshee", subject_uri="oldMusic"), + Event.new_for_values(timestamp=3, actor="banshee", subject_uri="newMusic"), + Event.new_for_values(timestamp=4, actor="gedit", subject_uri="newFile"), + ] + self.engine.insert_events(events) + + events = self.engine.find_events(TimeRange.always(), + [], StorageState.Any, 0, ResultType.LeastRecentActor) + self.assertEquals([e[0][1] for e in events], ['3', '4']) + def testResultTypesMostPopularOrigin(self): import_events("test/data/twenty_events.js", self.engine) diff --git a/zeitgeist/datamodel.py b/zeitgeist/datamodel.py index 36eb7478..a5dd9bd1 100644 --- a/zeitgeist/datamodel.py +++ b/zeitgeist/datamodel.py @@ -1029,14 +1029,15 @@ class ResultType(object): "ordered by the popularity of the actor")) LeastPopularActor = enum_factory(("The last event of each different actor," "ordered ascendingly by the popularity of the actor")) - MostRecentActor = enum_factory(("The last event of each different actor")) - LeastRecentActor = enum_factory(("The first event of each different actor")) + MostRecentActor = enum_factory(("The Actor that has been used to most recently")) + LeastRecentActor = enum_factory(("The Actor that has been used to least recently")) MostRecentOrigin = enum_factory(("The last event of each different origin")) LeastRecentOrigin = enum_factory(("The first event of each different origin")) MostPopularOrigin = enum_factory(("The last event of each different origin," "ordered by the popularity of the origins")) LeastPopularOrigin = enum_factory(("The last event of each different origin," "ordered ascendingly by the popularity of the origin")) + OldestActor = enum_factory(("The first event of each different actor")) INTERPRETATION_DOC = \ |