Bulk-send peer_add events in bulk_add_subscriptions().

Send a single peer_add event per stream that has multiple users.

(imported from commit 1027b212557f848d437128a03698ecd54575c3fd)
This commit is contained in:
Steve Howell
2013-09-13 18:27:12 -04:00
parent c8c64984d3
commit 3c69a6dd26
2 changed files with 10 additions and 10 deletions

View File

@@ -785,12 +785,12 @@ def bulk_add_subscriptions(streams, users):
new_users = filter(is_new_user, users)
new_user_ids = [user.id for user in new_users]
other_user_ids = list(set(get_subscriber_ids(stream)) - set(new_user_ids))
for user_profile in new_users:
for other_user_id in other_user_ids:
if other_user_ids:
for user_profile in new_users:
notice = dict(event=dict(type="subscriptions", op="peer_add",
subscriptions=[stream.name],
user_email=user_profile.email),
users=[other_user_id])
users=other_user_ids)
tornado_callbacks.send_notification(notice)
return ([(user_profile, stream_name) for (user_profile, recipient_id, stream_name) in new_subs] +

View File

@@ -1152,8 +1152,9 @@ class SubscriptionAPITest(AuthedTestCase):
dict(principals=ujson.dumps([self.test_email])),
)
add_event = events.pop(0)
add_peer_events = events
self.assertEqual(len(events), 2)
add_event, add_peer_event = events
self.assertEqual(add_event['event']['type'], 'subscriptions')
self.assertEqual(add_event['event']['op'], 'add')
self.assertEqual(add_event['users'], [get_user_profile_by_email(self.test_email).id])
@@ -1162,11 +1163,10 @@ class SubscriptionAPITest(AuthedTestCase):
set([email1, email2, self.test_email])
)
self.assertEqual(len(add_peer_events), 2)
for ev in add_peer_events:
self.assertEqual(ev['event']['type'], 'subscriptions')
self.assertEqual(ev['event']['op'], 'peer_add')
self.assertEqual(ev['event']['user_email'], self.test_email)
self.assertEqual(len(add_peer_event['users']), 2)
self.assertEqual(add_peer_event['event']['type'], 'subscriptions')
self.assertEqual(add_peer_event['event']['op'], 'peer_add')
self.assertEqual(add_peer_event['event']['user_email'], self.test_email)
# Finally, add othello, exercising the do_add_subscription() code path.