def test_popen_send_instance(self): channel = self.gw.remote_exec(""" from py.__.test.dist.mypickle import PickleChannel channel = PickleChannel(channel) from py.__.test.dist.testing.test_mypickle import A a1 = A() a1.hello = 10 channel.send(a1) a2 = channel.receive() channel.send(a2 is a1) """) channel = PickleChannel(channel) a_received = channel.receive() assert isinstance(a_received, A) assert a_received.hello == 10 channel.send(a_received) remote_a2_is_a1 = channel.receive() assert remote_a2_is_a1
def test_popen_send_instance(self): channel = self.gw.remote_exec(""" from py.__.test.dist.mypickle import PickleChannel channel = PickleChannel(channel) from py.__.test.dist.testing.test_mypickle import A a1 = A() a1.hello = 10 channel.send(a1) a2 = channel.receive() channel.send(a2 is a1) """) channel = PickleChannel(channel) a_received = channel.receive() assert isinstance(a_received, A) assert a_received.hello == 10 channel.send(a_received) remote_a2_is_a1 = channel.receive() assert remote_a2_is_a1
def test_send_concurrent(self): channel = self.gw.remote_exec(""" from py.__.test.dist.mypickle import PickleChannel channel = PickleChannel(channel) from py.__.test.dist.testing.test_mypickle import A l = [A() for i in range(10)] channel.send(l) other_l = channel.receive() channel.send((l, other_l)) channel.send(channel.receive()) channel.receive() """) channel = PickleChannel(channel) l = [A() for i in range(10)] channel.send(l) other_l = channel.receive() channel.send(other_l) ret = channel.receive() assert ret[0] is other_l assert ret[1] is l back = channel.receive() assert other_l is other_l channel.send(None)
def test_send_concurrent(self): channel = self.gw.remote_exec(""" from py.__.test.dist.mypickle import PickleChannel channel = PickleChannel(channel) from py.__.test.dist.testing.test_mypickle import A l = [A() for i in range(10)] channel.send(l) other_l = channel.receive() channel.send((l, other_l)) channel.send(channel.receive()) channel.receive() """) channel = PickleChannel(channel) l = [A() for i in range(10)] channel.send(l) other_l = channel.receive() channel.send(other_l) ret = channel.receive() assert ret[0] is other_l assert ret[1] is l back = channel.receive() assert other_l is other_l channel.send(None)
def test_popen_with_callback_with_endmarker_and_unpickling_error(self): channel = self.gw.remote_exec(""" from py.__.test.dist.mypickle import PickleChannel channel = PickleChannel(channel) from py.__.test.dist.testing.test_mypickle import A a1 = A() channel.send(a1) channel.send(a1) """) channel = PickleChannel(channel) queue = py.std.Queue.Queue() a = channel.receive() channel._ipickle._unpicklememo.clear() channel.setcallback(queue.put, endmarker=-1) next = queue.get(timeout=TESTTIMEOUT) assert next == -1 error = channel._getremoteerror() assert isinstance(error, UnpickleError)
def test_popen_with_callback_with_endmarker_and_unpickling_error(self): channel = self.gw.remote_exec(""" from py.__.test.dist.mypickle import PickleChannel channel = PickleChannel(channel) from py.__.test.dist.testing.test_mypickle import A a1 = A() channel.send(a1) channel.send(a1) """) channel = PickleChannel(channel) queue = py.std.Queue.Queue() a = channel.receive() channel._ipickle._unpicklememo.clear() channel.setcallback(queue.put, endmarker=-1) next = queue.get(timeout=TESTTIMEOUT) assert next == -1 error = channel._getremoteerror() assert isinstance(error, UnpickleError)