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()

Reply via email to