示例#1
0
 def test_lifecycle2(self):
     """Run through a different ref counting cycle with a copy."""
     for i in range(5, 16):  # 32, 64,..., 65536
         s = (2 ** i) * x
         rc = 2
         self.assertEqual(grc(s), rc)
         m = zmq.Frame(s, copy=False)
         rc += 2
         self.assertEqual(grc(s), rc)
         m2 = copy.copy(m)
         rc += 1
         self.assertEqual(grc(s), rc)
         # no increase in refcount for accessing buffer
         # which references m directly
         buf = m.buffer
         self.assertEqual(grc(s), rc)
         self.assertEqual(s, b(str(m)))
         self.assertEqual(s, bytes(m2))
         self.assertEqual(s, m2.bytes)
         self.assertEqual(s, m.bytes)
         self.assertEqual(s, bytes(buf))
         # self.assertTrue(s is str(m))
         # self.assertTrue(s is str(m2))
         del buf
         self.assertEqual(grc(s), rc)
         del m
         rc -= 1
         self.assertEqual(grc(s), rc)
         del m2
         rc -= 2
         await_gc(s, rc)
         self.assertEqual(grc(s), rc)
         self.assertEqual(rc, 2)
         del s
示例#2
0
文件: plumbing.py 项目: nrusch/rill
    def sendto(self, socket, prefix=None):
        """
        Send this Message to a socket.

        Parameters
        ----------
        prefix : bytes
            Additional frame to insert at the beginning of the message. Usually
            used for the identity.
        """
        # For PUB sockets we add the graph id to the first frame for
        # subscriptions to match against
        # FIXME: always add the graph_id to the first frame, because this lets
        # us route the message without deserializing the payload.
        if is_socket_type(socket, zmq.PUB):
            assert self.graph_id is not None
            # FIXME: we may need to encode the graph_id if it's unicode
            key = join(self.protocol, self.graph_id)
        else:
            key = self.protocol

        frames = [bytes(key), bytes(self.command), self.raw_payload, self.id]
        if prefix:
            frames.insert(0, prefix)

        if self.revision is not None:
            frames.append(bytes(self.revision))

        socket.send_multipart(frames)
示例#3
0
文件: client.py 项目: nrusch/rill
    def watch_graph(self, graph, message_id, sync=True):
        """
        Receive update messages for a graph.

        Sends [SUBSCRIBE][graph] to the agent
        """
        self.graph = graph
        # FIXME: we should probably just use json here
        self.pipe.send_multipart(
            [b"SUBSCRIBE",
             bytes(graph),
             bytes(message_id),
             bytes(int(sync))])
示例#4
0
 def test_lifecycle2(self):
     """Run through a different ref counting cycle with a copy."""
     for i in range(5, 16):  # 32, 64,..., 65536
         s = (2**i) * x
         rc = 2
         self.assertEqual(grc(s), rc)
         m = zmq.Frame(s)
         rc += 2
         self.assertEqual(grc(s), rc)
         m2 = copy.copy(m)
         rc += 1
         self.assertEqual(grc(s), rc)
         buf = m.buffer
         rc += view_rc
         self.assertEqual(grc(s), rc)
         self.assertEqual(s, b(str(m)))
         self.assertEqual(s, bytes(m2))
         self.assertEqual(s, m2.bytes)
         self.assertEqual(s, m.bytes)
         # self.assert_(s is str(m))
         # self.assert_(s is str(m2))
         del buf
         self.assertEqual(grc(s), rc)
         del m
         # m.buffer is kept until m is del'd
         rc -= view_rc
         rc -= 1
         self.assertEqual(grc(s), rc)
         del m2
         rc -= 2
         await_gc(s, rc)
         self.assertEqual(grc(s), rc)
         self.assertEqual(rc, 2)
         del s
示例#5
0
    def test_lifecycle1(self):
        """Run through a ref counting cycle with a copy."""
        for i in range(5, 16):  # 32, 64,..., 65536
            s = (2 ** i) * x
            rc = 2
            self.assertEqual(grc(s), rc)
            m = zmq.Frame(s, copy=False)
            rc += 2
            self.assertEqual(grc(s), rc)
            m2 = copy.copy(m)
            rc += 1
            self.assertEqual(grc(s), rc)
            buf = m2.buffer

            rc += view_rc
            self.assertEqual(grc(s), rc)

            self.assertEqual(s, b(str(m)))
            self.assertEqual(s, bytes(m2))
            self.assertEqual(s, m.bytes)
            # self.assertTrue(s is str(m))
            # self.assertTrue(s is str(m2))
            del m2
            rc -= 1
            self.assertEqual(grc(s), rc)
            rc -= view_rc
            del buf
            self.assertEqual(grc(s), rc)
            del m
            rc -= 2
            await_gc(s, rc)
            self.assertEqual(grc(s), rc)
            self.assertEqual(rc, 2)
            del s
示例#6
0
 def test_lifecycle2(self):
     """Run through a different ref counting cycle with a copy."""
     for i in range(5, 16):  # 32, 64,..., 65536
         s = (2**i)*x
         rc = 2
         self.assertEqual(grc(s), rc)
         m = zmq.Frame(s)
         rc += 2
         self.assertEqual(grc(s), rc)
         m2 = copy.copy(m)
         rc += 1
         self.assertEqual(grc(s), rc)
         buf = m.buffer
         rc += view_rc
         self.assertEqual(grc(s), rc)
         self.assertEqual(s, b(str(m)))
         self.assertEqual(s, bytes(m2))
         self.assertEqual(s, m2.bytes)
         self.assertEqual(s, m.bytes)
         # self.assert_(s is str(m))
         # self.assert_(s is str(m2))
         del buf
         self.assertEqual(grc(s), rc)
         del m
         # m.buffer is kept until m is del'd
         rc -= view_rc
         rc -= 1
         self.assertEqual(grc(s), rc)
         del m2
         rc -= 2
         await_gc(s, rc)
         self.assertEqual(grc(s), rc)
         self.assertEqual(rc, 2)
         del s
示例#7
0
    def test_lifecycle1(self):
        """Run through a ref counting cycle with a copy."""
        for i in range(5, 16):  # 32, 64,..., 65536
            s = (2**i)*x
            rc = 2
            self.assertEquals(grc(s), rc)
            m = zmq.Frame(s)
            rc += 2
            self.assertEquals(grc(s), rc)
            m2 = copy.copy(m)
            rc += 1
            self.assertEquals(grc(s), rc)
            buf = m2.buffer

            rc += view_rc
            self.assertEquals(grc(s), rc)

            self.assertEquals(s, b(str(m)))
            self.assertEquals(s, bytes(m2))
            self.assertEquals(s, m.bytes)
            # self.assert_(s is str(m))
            # self.assert_(s is str(m2))
            del m2
            rc -= 1
            self.assertEquals(grc(s), rc)
            rc -= view_rc
            del buf
            self.assertEquals(grc(s), rc)
            del m
            rc -= 2
            self.assertEquals(grc(s), rc)
            self.assertEquals(rc, 2)
            del s
示例#8
0
 def test_noncopying_recv(self):
     """check for clobbering message buffers"""
     null = b'\0' * 64
     sa, sb = self.create_bound_pair(zmq.PAIR, zmq.PAIR)
     for i in range(32):
         # try a few times
         sb.send(null, copy=False)
         m = sa.recv(copy=False)
         mb = m.bytes
         # buf = view(m)
         buf = m.buffer
         del m
         for i in range(5):
             ff = b'\xff' * (40 + i * 10)
             sb.send(ff, copy=False)
             m2 = sa.recv(copy=False)
             if view.__name__ == 'buffer':
                 b = bytes(buf)
             else:
                 b = buf.tobytes()
             self.assertEqual(b, null)
             self.assertEqual(mb, null)
             self.assertEqual(m2.bytes, ff)
示例#9
0
 def test_noncopying_recv(self):
     """check for clobbering message buffers"""
     null = asbytes('\0'*64)
     sa,sb = self.create_bound_pair(zmq.PAIR, zmq.PAIR)
     for i in range(32):
         # try a few times
         sb.send(null, copy=False)
         m = sa.recv(copy=False)
         mb = m.bytes
         # buf = view(m)
         buf = m.buffer
         del m
         for i in range(5):
             ff=asbytes('\xff'*(40 + i*10))
             sb.send(ff, copy=False)
             m2 = sa.recv(copy=False)
             if view.__name__ == 'buffer':
                 b = bytes(buf)
             else:
                 b = buf.tobytes()
             self.assertEquals(b, null)
             self.assertEquals(mb, null)
             self.assertEquals(m2.bytes, ff)