예제 #1
0
 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 
예제 #2
0
 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
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
 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)