def test_get_stream_new_when_sess_hard_closing(self): node_a, node_b = MockNode(), MockNode() session_mock = MockSession(MockNetwork()) session_mock._id = "1" session_mock.closed = False session_mock.closing_mode = ZeroSession.HARD_CLOSING_MODE pipe = ZeroPipe(node_a, node_b) with pytest.raises(TethysSessionClosed): pipe.get_stream(session_mock)
def test_get_stream_new_when_sess_closed(self): node_a, node_b = MockNode(), MockNode() session_mock = MockSession(MockNetwork()) session_mock._id = "1" session_mock.closed = True session_mock.closing_mode = None pipe = ZeroPipe(node_a, node_b) with pytest.raises(TethysSessionClosed): pipe.get_stream(session_mock)
def test_push_many_return_piece_of_data(self): node_a, node_b = MockNode(), MockNode() session_mock = MockSession(MockNetwork()) session_mock._id = "1" stream_mock = mock.MagicMock() def get_stream(_): return stream_mock def lambda_dummy(x, *_, **__): return x pipe = ZeroPipe(node_a, node_b, filters=[FNFilter(lambda_dummy)], filters_threshold=2) pipe.get_stream = mock.MagicMock(side_effect=get_stream) res = pipe.push(list(range(5)), session_mock, many=True, test_kw=1) assert res is True pipe.get_stream.assert_called_once_with(session_mock) stream_mock.write.assert_called_once_with(list(range(2, 5)), many=True, test_kw=1)
def test_get_stream_new_without_transport(self): node_a, node_b = MockNode(), MockNode() session_mock = MockSession(MockNetwork()) session_mock._id = "1" session_mock.closed = False session_mock.closing_mode = None transport_mock = ZeroTransport(MockConnector()) def transport_factory(_): return transport_mock transport_factory_mock = mock.MagicMock(side_effect=transport_factory) ZeroPipe.set_transport_factory(transport_factory_mock) pipe = ZeroPipe(node_a, node_b) ZeroStream.load = load ZeroStream.save = mock.MagicMock() stream = pipe.get_stream(session_mock) ZeroStream.save.assert_called_once_with(save_dependency=False) ZeroPipe._transport_factory.assert_called_once_with(pipe) assert stream.transport == transport_mock
def test_get_stream_exists(self): node_a, node_b = MockNode(), MockNode() session_mock = mock.MagicMock(spec=ZeroSession) session_mock.id = "1" session_mock.closed = False session_mock.closing_mode = None stream_mock = mock.MagicMock() stream_cls_mock = mock.MagicMock( side_effect=lambda *_, **__: stream_mock) stream_cls_mock.load = mock.MagicMock( side_effect=lambda *_, **__: stream_mock) pipe = ZeroPipe(node_a, node_b) @contextmanager def patch(): old_load = ZeroStream.load old_new = ZeroStream.__new__ try: ZeroStream.load = lambda *_, **__: stream_mock ZeroStream.__new__ = lambda *_, **__: stream_mock yield ZeroStream finally: ZeroStream.load = old_load ZeroStream.__new__ = old_new with patch(): assert pipe.get_stream(session_mock) == stream_mock
def test_push_many(self): node_a, node_b = MockNode(), MockNode() session_mock = MockSession(MockNetwork()) session_mock._id = "1" stream_mock = mock.MagicMock() def get_stream(_): return stream_mock pipe = ZeroPipe(node_a, node_b) pipe.get_stream = mock.MagicMock(side_effect=get_stream) res = pipe.push([...], session_mock, many=True, test_kw=1) assert res is True pipe.get_stream.assert_called_once_with(session_mock) stream_mock.write.assert_called_once_with([...], many=True, test_kw=1)
def test_get_stream_new_with_transport(self): node_a, node_b = MockNode(), MockNode() session_mock = MockSession(MockNetwork()) session_mock._id = "1" session_mock.closed = False session_mock.closing_mode = None transport_mock = ZeroTransport(MockConnector()) pipe = ZeroPipe(node_a, node_b, transport=transport_mock) ZeroStream.load = load ZeroStream.save = mock.MagicMock() stream = pipe.get_stream(session_mock) ZeroStream.save.assert_called_once_with(save_dependency=False) assert stream.transport == transport_mock
def test_push_many_return_empty(self): node_a, node_b = MockNode(), MockNode() session_mock = MockSession(MockNetwork()) session_mock._id = "1" stream_mock = mock.MagicMock() def get_stream(_): return stream_mock def lambda_null(*_, **__): return 0 pipe = ZeroPipe(node_a, node_b, filters=[FNFilter(lambda_null)]) pipe.get_stream = mock.MagicMock(side_effect=get_stream) res = pipe.push(list(range(5)), session_mock, many=True, test_kw=1) assert res is False pipe.get_stream.assert_not_called() stream_mock.write.assert_not_called()
def test_pull(self): node_a, node_b = MockNode(), MockNode() session_mock = MockSession(MockNetwork()) session_mock._id = "1" session_mock.closed = False session_mock.closing_mode = ZeroSession.HARD_CLOSING_MODE stream_mock = mock.MagicMock() stream_mock.read = mock.MagicMock( side_effect=lambda *_, **__: iter([("key", "value")])) def get_stream(_): return stream_mock pipe = ZeroPipe(node_a, node_b) pipe.get_stream = mock.MagicMock(side_effect=get_stream) assert next(pipe.pull(session_mock, test_kw=1)) == "value" pipe.get_stream.assert_called_once_with(session_mock) stream_mock.read.assert_called_once_with(test_kw=1)