Revision: 365
Author: bslatkin
Date: Sat Jun 5 17:26:59 2010
Log: hub: FeedEntryRecord uses 1/2 the space as before
http://code.google.com/p/pubsubhubbub/source/detail?r=365
Modified:
/trunk/hub/main.py
/trunk/hub/main_test.py
=======================================
--- /trunk/hub/main.py Thu Jun 3 16:53:03 2010
+++ /trunk/hub/main.py Sat Jun 5 17:26:59 2010
@@ -1315,12 +1315,15 @@
class FeedEntryRecord(db.Expando):
"""Represents a feed entry that has been seen.
- The key name of this entity is a get_hash_key_name() hash of the
combination
- of the topic URL and the entry_id.
+ The key name of this entity is a get_hash_key_name() hash of the
entry_id.
"""
- entry_id_hash = db.StringProperty(required=True, indexed=False)
entry_content_hash = db.StringProperty(indexed=False)
- update_time = db.DateTimeProperty(auto_now=True)
+ update_time = db.DateTimeProperty(auto_now=True, indexed=False)
+
+ @property
+ def id_hash(self):
+ """Returns the sha1 hash of the entry ID."""
+ return self.key().name()[len('hash_'):]
@classmethod
def create_key(cls, topic, entry_id):
@@ -1374,10 +1377,7 @@
A new FeedEntryRecord that should be inserted into the Datastore.
"""
key = cls.create_key(topic, entry_id)
- return cls(key_name=key.name(),
- parent=key.parent(),
- entry_id_hash=sha1_hash(entry_id),
- entry_content_hash=content_hash)
+ return cls(key=key, entry_content_hash=content_hash)
class EventToDeliver(db.Model):
@@ -2295,7 +2295,7 @@
existing_entries.extend(FeedEntryRecord.get_entries_for_topic(
topic, key_set))
- existing_dict = dict((e.entry_id_hash, e.entry_content_hash)
+ existing_dict = dict((e.id_hash, e.entry_content_hash)
for e in existing_entries if e)
logging.debug('Retrieved %d feed entries, %d of which have been seen
before',
len(entries_map), len(existing_dict))
=======================================
--- /trunk/hub/main_test.py Thu Jun 3 17:12:34 2010
+++ /trunk/hub/main_test.py Sat Jun 5 17:26:59 2010
@@ -1362,12 +1362,12 @@
@staticmethod
def get_entry(entry_id, entry_list):
"""Finds the entry with the given ID in the list of entries."""
- return [e for e in entry_list if e.entry_id_hash ==
sha1_hash(entry_id)][0]
+ return [e for e in entry_list if e.id_hash == sha1_hash(entry_id)][0]
def testAllNewContent(self):
"""Tests when al pulled feed content is new."""
entry_list, entry_payloads = self.run_test()
- entry_id_hash_set = set(f.entry_id_hash for f in entry_list)
+ entry_id_hash_set = set(f.id_hash for f in entry_list)
self.assertEquals(set(sha1_hash(k) for k in self.entries_map.keys()),
entry_id_hash_set)
self.assertEquals(self.entries_map.values(), entry_payloads)
@@ -1380,7 +1380,7 @@
self.topic, 'id2', sha1_hash('content2')).put()
entry_list, entry_payloads = self.run_test()
- entry_id_hash_set = set(f.entry_id_hash for f in entry_list)
+ entry_id_hash_set = set(f.id_hash for f in entry_list)
self.assertEquals(set(sha1_hash(k) for k in ['id3']),
entry_id_hash_set)
self.assertEquals(['content3'], entry_payloads)
@@ -1393,7 +1393,7 @@
self.entries_map['id1'] = 'newcontent1'
entry_list, entry_payloads = self.run_test()
- entry_id_hash_set = set(f.entry_id_hash for f in entry_list)
+ entry_id_hash_set = set(f.id_hash for f in entry_list)
self.assertEquals(set(sha1_hash(k) for k in ['id1', 'id3']),
entry_id_hash_set)
@@ -1406,7 +1406,7 @@
"""Tests when the content contains unicode characters."""
self.entries_map['id2'] = u'\u2019 asdf'
entry_list, entry_payloads = self.run_test()
- entry_id_hash_set = set(f.entry_id_hash for f in entry_list)
+ entry_id_hash_set = set(f.id_hash for f in entry_list)
self.assertEquals(set(sha1_hash(k) for k in self.entries_map.keys()),
entry_id_hash_set)
@@ -1424,7 +1424,7 @@
main.MAX_FEED_ENTRY_RECORD_LOOKUPS = 1
try:
entry_list, entry_payloads = self.run_test()
- entry_id_hash_set = set(f.entry_id_hash for f in entry_list)
+ entry_id_hash_set = set(f.id_hash for f in entry_list)
self.assertEquals(set(sha1_hash(k) for k in self.entries_map.keys()),
entry_id_hash_set)
self.assertEquals(self.entries_map.values(), entry_payloads)
@@ -1502,7 +1502,7 @@
self.topic, self.all_ids)
self.assertEquals(
[sha1_hash(k) for k in self.all_ids],
- [e.entry_id_hash for e in feed_entries])
+ [e.id_hash for e in feed_entries])
work = EventToDeliver.all().get()
event_key = work.key()
@@ -1537,7 +1537,7 @@
self.topic, self.all_ids)
self.assertEquals(
[sha1_hash(k) for k in self.all_ids],
- [e.entry_id_hash for e in feed_entries])
+ [e.id_hash for e in feed_entries])
work = EventToDeliver.all().get()
event_key = work.key()
@@ -1572,7 +1572,7 @@
self.topic, self.all_ids)
self.assertEquals(
[sha1_hash(k) for k in self.all_ids],
- [e.entry_id_hash for e in feed_entries])
+ [e.id_hash for e in feed_entries])
work = EventToDeliver.all().get()
event_key = work.key()
@@ -1818,7 +1818,7 @@
feed_entries = list(FeedEntryRecord.all())
self.assertEquals(
set(sha1_hash(k) for k in self.all_ids),
- set(e.entry_id_hash for e in feed_entries))
+ set(e.id_hash for e in feed_entries))
work = EventToDeliver.all().get()
event_key = work.key()
@@ -1923,7 +1923,7 @@
expected_records = main.MAX_NEW_FEED_ENTRY_RECORDS
self.assertEquals(
[sha1_hash(k) for k in self.all_ids[:expected_records]],
- [e.entry_id_hash for e in feed_entries])
+ [e.id_hash for e in feed_entries])
work = EventToDeliver.all().get()
event_key = work.key()