def test_backpressure_connect_empty_stream(): @Stream.register_api() class from_list(Stream): def __init__(self, source, **kwargs): self.source = source super().__init__(ensure_io_loop=True, **kwargs) def start(self): self.stopped = False self.loop.add_callback(self.run) @gen.coroutine def run(self): while not self.stopped and len(self.source) > 0: yield self._emit(self.source.pop(0)) source_list = [0, 1, 2, 3, 4] source = Stream.from_list(source_list) sout = Stream() L = sout.rate_limit(1).sink_to_list() source.connect(sout) source.start() wait_for(lambda: L == [0], 0.01) assert len(source_list) > 0
def test_rate_limit(): source = Stream() L = source.rate_limit(0.05).sink_to_list() start = time() for i in range(5): yield source.emit(i) stop = time() assert stop - start > 0.2 assert len(L) == 5