def test_from_file(): with tmpfile() as fn: with open(fn, 'wt') as f: f.write('{"x": 1, "y": 2}\n') f.write('{"x": 2, "y": 2}\n') f.write('{"x": 3, "y": 2}\n') f.flush() source = Stream.from_textfile(fn, poll_interval=0.010, asynchronous=True, start=False) L = source.map(json.loads).pluck('x').sink_to_list() assert L == [] source.start() yield await_for(lambda: len(L) == 3, timeout=5) assert L == [1, 2, 3] f.write('{"x": 4, "y": 2}\n') f.write('{"x": 5, "y": 2}\n') f.flush() start = time() while L != [1, 2, 3, 4, 5]: yield gen.sleep(0.01) assert time() < start + 2 # reads within 2s
def test_from_file(): with tmpfile() as fn: with open(fn, 'wt') as f: f.write('{"x": 1, "y": 2}\n') f.write('{"x": 2, "y": 2}\n') f.write('{"x": 3, "y": 2}\n') f.flush() source = Stream.from_textfile(fn, poll_interval=0.010) L = source.map(json.loads).pluck('x').sink_to_list() assert L == [] source.start() assert L == [1, 2, 3] f.write('{"x": 4, "y": 2}\n') f.write('{"x": 5, "y": 2}\n') f.flush() start = time() while L != [1, 2, 3, 4, 5]: yield gen.sleep(0.01) assert time() < start + 2 # reads within 2s
def test_from_file_end(): with tmpfile() as fn: with open(fn, 'wt') as f: f.write('data1\n') f.flush() source = Stream.from_textfile(fn, poll_interval=0.010, start=False, from_end=True) out = source.sink_to_list() source.start() assert out == [] yield await_for(lambda: source.started, 2, period=0.02) f.write('data2\n') f.flush() yield await_for(lambda: out == ['data2\n'], timeout=5, period=0.1)