blob: 604aa0348d0cf2107bb26943d799819d1cda471a [file] [log] [blame]
#!/usr/bin/env vpython
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""pusub_json_status_push unit tests"""
import unittest
import zlib
from cStringIO import StringIO
import test_env # pylint: disable=relative-import
from master.pubsub_json_status_push import StatusPush, MessageTooBigError
class PubSubJsonStatusPush(unittest.TestCase):
def setUp(self):
super(PubSubJsonStatusPush, self).setUp()
self._old_compress = getattr(zlib, 'compress')
setattr(zlib, 'compress', lambda x: x)
def tearDown(self):
setattr(zlib, 'compress', self._old_compress)
def test_batch_data_no_builds(self):
master = {'foo': 'bar'}
builds = []
sp = StatusPush(None, 'fake', None)
data = list(sp._get_pubsub_messages(master, builds))
self.assertEquals(len(data), 1)
def test_batch_data_5_builds(self):
master = {'foo': 'bar'}
builds = ['#' * 1000000 for _ in xrange(5)]
sp = StatusPush(None, 'fake', None)
data = list(sp._get_pubsub_messages(master, builds))
self.assertEquals(len(data), 1)
def test_batch_data_10_builds(self):
master = {'foo': 'bar'}
builds = ['#' * 1000000 for _ in xrange(10)]
sp = StatusPush(None, 'fake', None)
self.assertRaises(
MessageTooBigError, list, sp._get_pubsub_messages(master, builds))
self.assertEquals(sp._splits, 2)
data = list(sp._get_pubsub_messages(master, builds))
self.assertEquals(len(data), 2)
if __name__ == '__main__':
unittest.main()