def test_gather_after_failed_worker(): with cluster() as (c, [a, b]): with Executor(('127.0.0.1', c['port'])) as e: L = e.map(inc, range(10)) wait(L) a['proc'].terminate() result = e.gather(L) assert result == list(map(inc, range(10)))
def test_gather_after_failed_worker(loop): with cluster() as (s, [a, b]): with Executor(('127.0.0.1', s['port']), loop=loop) as e: L = e.map(inc, range(10)) wait(L) a['proc'].terminate() result = e.gather(L) assert result == list(map(inc, range(10)))
def test_submit_after_failed_worker(): with cluster() as (c, [a, b]): with Executor(('127.0.0.1', c['port'])) as e: L = e.map(inc, range(10)) wait(L) a['proc'].terminate() total = e.submit(sum, L) assert total.result() == sum(map(inc, range(10)))
def test_submit_after_failed_worker(loop): with cluster() as (s, [a, b]): with Executor(('127.0.0.1', s['port']), loop=loop) as e: L = e.map(inc, range(10)) wait(L) a['proc'].terminate() total = e.submit(sum, L) assert total.result() == sum(map(inc, range(10)))
def test_progressbar_cancel(loop): with cluster() as (s, [a, b]): with Executor(('127.0.0.1', s['port']), loop=loop) as e: import time L = [e.submit(lambda: time.sleep(0.3), i) for i in range(5)] p = ProgressWidget(L) sync(loop, p.listen) L[-1].cancel() wait(L[:-1]) assert p.status == 'error' assert p.bar.value == 0 # no tasks finish before cancel is called
def test_gather_then_submit_after_failed_workers(): with cluster(nworkers=4) as (c, [w, x, y, z]): with Executor(('127.0.0.1', c['port'])) as e: L = e.map(inc, range(20)) wait(L) w['proc'].terminate() total = e.submit(sum, L) wait([total]) (_, port) = first(e.who_has[total.key]) for d in [x, y, z]: if d['port'] == port: d['proc'].terminate() result = e.gather([total]) assert result == [sum(map(inc, range(20)))]
def test_gather_then_submit_after_failed_workers(loop): with cluster(nworkers=4) as (s, [w, x, y, z]): with Executor(('127.0.0.1', s['port']), loop=loop) as e: L = e.map(inc, range(20)) wait(L) w['proc'].terminate() total = e.submit(sum, L) wait([total]) (_, port) = first(e.scheduler.who_has[total.key]) for d in [x, y, z]: if d['port'] == port: d['proc'].terminate() result = e.gather([total]) assert result == [sum(map(inc, range(20)))]
def test_values(loop): with cluster() as (s, [a, b]): with Executor(('127.0.0.1', s['port']), loop=loop) as e: L = [e.submit(inc, i) for i in range(5)] wait(L) p = MultiProgressWidget(L) sync(loop, p.listen) assert set(p.bars) == {'inc'} assert p.status == 'finished' assert p.stream.closed() assert '5 / 5' in p.bar_texts['inc'].value assert p.bars['inc'].value == 1.0 x = e.submit(throws, 1) p = MultiProgressWidget([x]) sync(loop, p.listen) assert p.status == 'error'
def test_wait_sync(): with cluster() as (c, [a, b]): with Executor(('127.0.0.1', c['port'])) as e: x = e.submit(inc, 1) y = e.submit(inc, 2) done, not_done = wait([x, y]) assert done == {x, y} assert not_done == set() assert x.status == y.status == 'finished'
def test_progressbar_done(loop): with cluster() as (s, [a, b]): with Executor(('127.0.0.1', s['port']), loop=loop) as e: L = [e.submit(inc, i) for i in range(5)] wait(L) p = ProgressWidget(L) sync(loop, p.listen) assert p.status == 'finished' assert p.bar.value == 1.0 assert p.bar.bar_style == 'success' f = e.submit(throws, L) wait([f]) p = ProgressWidget([f]) sync(loop, p.listen) assert p.status == 'error' assert p.bar.value == 0.0 assert p.bar.bar_style == 'danger'
def test_values(loop): with cluster() as (c, [a, b]): with Executor(('127.0.0.1', c['port']), loop=loop) as e: L = [e.submit(inc, i) for i in range(5)] wait(L) p = MultiProgressWidget(L) p.start() assert set(p.all_keys) == {'inc'} assert len(p.all_keys['inc']) == 5 assert p.status == 'finished' assert not p.pc.is_running() assert p.texts['inc'].value == '5 / 5' assert p.bars['inc'].value == 1.0 x = e.submit(throws, 1) p = MultiProgressWidget([x]) p.start() assert p.status == 'error' assert p.bars[p.func(x.key)].value == 1.0
def test_wait_sync(loop): with cluster() as (s, [a, b]): with Executor(('127.0.0.1', s['port']), loop=loop) as e: x = e.submit(inc, 1) y = e.submit(inc, 2) done, not_done = wait([x, y]) assert done == {x, y} assert not_done == set() assert x.status == y.status == 'finished'