def f(c, a, b): data = yield _scatter((c.ip, c.port), [1, 2, 3]) assert c.ip in str(data[0]) assert c.ip in repr(data[0]) assert merge(a.data, b.data) == \ {d.key: i for d, i in zip(data, [1, 2, 3])} assert set(c.who_has) == {d.key for d in data} assert all(len(v) == 1 for v in c.who_has.values()) result = yield [d._get() for d in data] assert result == [1, 2, 3] yield data[0]._delete() assert merge(a.data, b.data) == \ {d.key: i for d, i in zip(data[1:], [2, 3])} assert data[0].key not in c.who_has data = yield scatter_to_workers((c.ip, c.port), [a.address, b.address], [4, 5, 6]) m = merge(a.data, b.data) for d, v in zip(data, [4, 5, 6]): assert m[d.key] == v result = yield _gather((c.ip, c.port), data) assert result == [4, 5, 6]
def f(c, a, b): keys = yield _scatter((c.ip, c.port), [1, 2, 3]) assert merge(a.data, b.data) == \ {k: i for k, i in zip(keys, [1, 2, 3])} assert set(c.who_has) == set(keys) assert all(len(v) == 1 for v in c.who_has.values()) keys2, who_has, nbytes = yield scatter_to_workers([a.address, b.address], [4, 5, 6]) m = merge(a.data, b.data) for k, v in zip(keys2, [4, 5, 6]): assert m[k] == v assert isinstance(who_has, dict) assert set(concat(who_has.values())) == {a.address, b.address} assert len(who_has) == len(keys2) assert isinstance(nbytes, dict) assert set(nbytes) == set(who_has) assert all(isinstance(v, int) for v in nbytes.values()) result = yield _gather((c.ip, c.port), keys2) assert result == [4, 5, 6]
def f(c, a, b): bad = ('127.0.0.1', 9001) # this worker doesn't exist c.who_has['x'].add(bad) c.has_what[bad].add('x') c.who_has['z'].add(bad) c.has_what[bad].add('z') c.who_has['z'].add(a.address) c.has_what[a.address].add('z') a.data['z'] = 5 result = yield _gather((c.ip, c.port), ['z']) assert result == [5] try: yield _gather((c.ip, c.port), ['x']) assert False except KeyError as e: assert 'x' in e.args
def f(c, a, b): bad = ("127.0.0.1", 9001) # this worker doesn't exist c.who_has["x"].add(bad) c.has_what[bad].add("x") c.who_has["z"].add(bad) c.has_what[bad].add("z") c.who_has["z"].add(a.address) c.has_what[a.address].add("z") a.data["z"] = 5 result = yield _gather((c.ip, c.port), ["z"]) assert result == [5] try: yield _gather((c.ip, c.port), ["x"]) assert False except KeyError as e: assert "x" in e.args
def test_gather_with_missing_worker(s, a, b): bad = '127.0.0.1:9001' # this worker doesn't exist s.who_has['x'].add(bad) s.has_what[bad].add('x') s.who_has['z'].add(bad) s.has_what[bad].add('z') s.ncores['z'] = 4 s.who_has['z'].add(a.address) s.has_what[a.address].add('z') a.data['z'] = 5 result = yield _gather((s.ip, s.port), ['z']) assert result == [5] try: yield _gather((s.ip, s.port), ['x']) assert False except KeyError as e: assert 'x' in e.args
def f(c, a, b): data = yield _scatter((c.ip, c.port), [1, 2, 3]) assert c.ip in str(data[0]) assert c.ip in repr(data[0]) assert merge(a.data, b.data) == {d.key: i for d, i in zip(data, [1, 2, 3])} assert set(c.who_has) == {d.key for d in data} assert all(len(v) == 1 for v in c.who_has.values()) result = yield [d._get() for d in data] assert result == [1, 2, 3] yield data[0]._delete() assert merge(a.data, b.data) == {d.key: i for d, i in zip(data[1:], [2, 3])} assert data[0].key not in c.who_has data, who_has, nbytes = yield scatter_to_workers((c.ip, c.port), [a.address, b.address], [4, 5, 6]) m = merge(a.data, b.data) for d, v in zip(data, [4, 5, 6]): assert m[d.key] == v assert isinstance(who_has, dict) assert set(concat(who_has.values())) == {a.address, b.address} assert len(who_has) == len(data) assert isinstance(nbytes, dict) assert set(nbytes) == set(who_has) assert all(isinstance(v, int) for v in nbytes.values()) result = yield _gather((c.ip, c.port), data) assert result == [4, 5, 6]