summaryrefslogtreecommitdiff
path: root/.pc
diff options
context:
space:
mode:
Diffstat (limited to '.pc')
-rw-r--r--.pc/.quilt_patches1
-rw-r--r--.pc/.quilt_series1
-rw-r--r--.pc/.version1
-rw-r--r--.pc/applied-patches3
-rw-r--r--.pc/cffi-fix.patch/zmq/backend/cffi/__init__.py22
-rw-r--r--.pc/cffi-fix.patch/zmq/backend/cffi/_cffi.py238
-rw-r--r--.pc/monitor-test.patch/zmq/tests/test_monitor.py63
-rw-r--r--.pc/noncopysend-test.patch/zmq/tests/test_message.py362
8 files changed, 0 insertions, 691 deletions
diff --git a/.pc/.quilt_patches b/.pc/.quilt_patches
deleted file mode 100644
index 6857a8d..0000000
--- a/.pc/.quilt_patches
+++ /dev/null
@@ -1 +0,0 @@
-debian/patches
diff --git a/.pc/.quilt_series b/.pc/.quilt_series
deleted file mode 100644
index c206706..0000000
--- a/.pc/.quilt_series
+++ /dev/null
@@ -1 +0,0 @@
-series
diff --git a/.pc/.version b/.pc/.version
deleted file mode 100644
index 0cfbf08..0000000
--- a/.pc/.version
+++ /dev/null
@@ -1 +0,0 @@
-2
diff --git a/.pc/applied-patches b/.pc/applied-patches
deleted file mode 100644
index 0d2af1f..0000000
--- a/.pc/applied-patches
+++ /dev/null
@@ -1,3 +0,0 @@
-noncopysend-test.patch
-cffi-fix.patch
-monitor-test.patch
diff --git a/.pc/cffi-fix.patch/zmq/backend/cffi/__init__.py b/.pc/cffi-fix.patch/zmq/backend/cffi/__init__.py
deleted file mode 100644
index ca3164d..0000000
--- a/.pc/cffi-fix.patch/zmq/backend/cffi/__init__.py
+++ /dev/null
@@ -1,22 +0,0 @@
-"""CFFI backend (for PyPY)"""
-
-# Copyright (C) PyZMQ Developers
-# Distributed under the terms of the Modified BSD License.
-
-from zmq.backend.cffi import (constants, error, message, context, socket,
- _poll, devices, utils)
-
-__all__ = []
-for submod in (constants, error, message, context, socket,
- _poll, devices, utils):
- __all__.extend(submod.__all__)
-
-from .constants import *
-from .error import *
-from .message import *
-from .context import *
-from .socket import *
-from .devices import *
-from ._poll import *
-from ._cffi import zmq_version_info, ffi
-from .utils import *
diff --git a/.pc/cffi-fix.patch/zmq/backend/cffi/_cffi.py b/.pc/cffi-fix.patch/zmq/backend/cffi/_cffi.py
deleted file mode 100644
index 67f4b6b..0000000
--- a/.pc/cffi-fix.patch/zmq/backend/cffi/_cffi.py
+++ /dev/null
@@ -1,238 +0,0 @@
-# coding: utf-8
-"""The main CFFI wrapping of libzmq"""
-
-# Copyright (C) PyZMQ Developers
-# Distributed under the terms of the Modified BSD License.
-
-
-import json
-import os
-from os.path import dirname, join
-from cffi import FFI
-
-from zmq.utils.constant_names import all_names, no_prefix
-
-
-ffi = FFI()
-
-base_zmq_version = (3,2,2)
-
-core_functions = \
-'''
-void* zmq_socket(void *context, int type);
-int zmq_close(void *socket);
-
-int zmq_bind(void *socket, const char *endpoint);
-int zmq_connect(void *socket, const char *endpoint);
-
-int zmq_errno(void);
-const char * zmq_strerror(int errnum);
-
-void* zmq_stopwatch_start(void);
-unsigned long zmq_stopwatch_stop(void *watch);
-void zmq_sleep(int seconds_);
-int zmq_device(int device, void *frontend, void *backend);
-'''
-
-core32_functions = \
-'''
-int zmq_unbind(void *socket, const char *endpoint);
-int zmq_disconnect(void *socket, const char *endpoint);
-void* zmq_ctx_new();
-int zmq_ctx_destroy(void *context);
-int zmq_ctx_get(void *context, int opt);
-int zmq_ctx_set(void *context, int opt, int optval);
-int zmq_proxy(void *frontend, void *backend, void *capture);
-int zmq_socket_monitor(void *socket, const char *addr, int events);
-'''
-
-core40_functions = \
-'''
-int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key);
-'''
-
-message32_functions = \
-'''
-typedef struct { ...; } zmq_msg_t;
-typedef ... zmq_free_fn;
-
-int zmq_msg_init(zmq_msg_t *msg);
-int zmq_msg_init_size(zmq_msg_t *msg, size_t size);
-int zmq_msg_init_data(zmq_msg_t *msg,
- void *data,
- size_t size,
- zmq_free_fn *ffn,
- void *hint);
-
-size_t zmq_msg_size(zmq_msg_t *msg);
-void *zmq_msg_data(zmq_msg_t *msg);
-int zmq_msg_close(zmq_msg_t *msg);
-
-int zmq_msg_send(zmq_msg_t *msg, void *socket, int flags);
-int zmq_msg_recv(zmq_msg_t *msg, void *socket, int flags);
-'''
-
-sockopt_functions = \
-'''
-int zmq_getsockopt(void *socket,
- int option_name,
- void *option_value,
- size_t *option_len);
-
-int zmq_setsockopt(void *socket,
- int option_name,
- const void *option_value,
- size_t option_len);
-'''
-
-polling_functions = \
-'''
-typedef struct
-{
- void *socket;
- int fd;
- short events;
- short revents;
-} zmq_pollitem_t;
-
-int zmq_poll(zmq_pollitem_t *items, int nitems, long timeout);
-'''
-
-extra_functions = \
-'''
-void * memcpy(void *restrict s1, const void *restrict s2, size_t n);
-int get_ipc_path_max_len(void);
-'''
-
-def load_compiler_config():
- import zmq
- zmq_dir = dirname(zmq.__file__)
- zmq_parent = dirname(zmq_dir)
-
- fname = join(zmq_dir, 'utils', 'compiler.json')
- if os.path.exists(fname):
- with open(fname) as f:
- cfg = json.load(f)
- else:
- cfg = {}
-
- cfg.setdefault("include_dirs", [])
- cfg.setdefault("library_dirs", [])
- cfg.setdefault("runtime_library_dirs", [])
- cfg.setdefault("libraries", ["zmq"])
-
- # cast to str, because cffi can't handle unicode paths (?!)
- cfg['libraries'] = [str(lib) for lib in cfg['libraries']]
- for key in ("include_dirs", "library_dirs", "runtime_library_dirs"):
- # interpret paths relative to parent of zmq (like source tree)
- abs_paths = []
- for p in cfg[key]:
- if p.startswith('zmq'):
- p = join(zmq_parent, p)
- abs_paths.append(str(p))
- cfg[key] = abs_paths
- return cfg
-
-cfg = load_compiler_config()
-
-def zmq_version_info():
- ffi_check = FFI()
- ffi_check.cdef('void zmq_version(int *major, int *minor, int *patch);')
- cfg = load_compiler_config()
- C_check_version = ffi_check.verify('#include <zmq.h>',
- libraries=cfg['libraries'],
- include_dirs=cfg['include_dirs'],
- library_dirs=cfg['library_dirs'],
- runtime_library_dirs=cfg['runtime_library_dirs'],
- )
- major = ffi.new('int*')
- minor = ffi.new('int*')
- patch = ffi.new('int*')
-
- C_check_version.zmq_version(major, minor, patch)
-
- return (int(major[0]), int(minor[0]), int(patch[0]))
-
-def _make_defines(names):
- _names = []
- for name in names:
- define_line = "#define %s ..." % (name)
- _names.append(define_line)
-
- return "\n".join(_names)
-
-c_constant_names = []
-for name in all_names:
- if no_prefix(name):
- c_constant_names.append(name)
- else:
- c_constant_names.append("ZMQ_" + name)
-
-constants = _make_defines(c_constant_names)
-
-try:
- _version_info = zmq_version_info()
-except Exception as e:
- raise ImportError("PyZMQ CFFI backend couldn't find zeromq: %s\n"
- "Please check that you have zeromq headers and libraries." % e)
-
-if _version_info >= (3,2,2):
- functions = '\n'.join([constants,
- core_functions,
- core32_functions,
- core40_functions,
- message32_functions,
- sockopt_functions,
- polling_functions,
- extra_functions,
- ])
-else:
- raise ImportError("PyZMQ CFFI backend requires zeromq >= 3.2.2,"
- " but found %i.%i.%i" % _version_info
- )
-
-
-ffi.cdef(functions)
-
-C = ffi.verify('''
- #include <stdio.h>
- #include <sys/un.h>
- #include <string.h>
-
- #include <zmq.h>
- #include <zmq_utils.h>
- #include "zmq_compat.h"
-
-int get_ipc_path_max_len(void) {
- struct sockaddr_un *dummy;
- return sizeof(dummy->sun_path) - 1;
-}
-
-''',
- libraries=cfg['libraries'],
- include_dirs=cfg['include_dirs'],
- library_dirs=cfg['library_dirs'],
- runtime_library_dirs=cfg['runtime_library_dirs'],
-)
-
-nsp = new_sizet_pointer = lambda length: ffi.new('size_t*', length)
-
-new_uint64_pointer = lambda: (ffi.new('uint64_t*'),
- nsp(ffi.sizeof('uint64_t')))
-new_int64_pointer = lambda: (ffi.new('int64_t*'),
- nsp(ffi.sizeof('int64_t')))
-new_int_pointer = lambda: (ffi.new('int*'),
- nsp(ffi.sizeof('int')))
-new_binary_data = lambda length: (ffi.new('char[%d]' % (length)),
- nsp(ffi.sizeof('char') * length))
-
-value_uint64_pointer = lambda val : (ffi.new('uint64_t*', val),
- ffi.sizeof('uint64_t'))
-value_int64_pointer = lambda val: (ffi.new('int64_t*', val),
- ffi.sizeof('int64_t'))
-value_int_pointer = lambda val: (ffi.new('int*', val),
- ffi.sizeof('int'))
-value_binary_data = lambda val, length: (ffi.new('char[%d]' % (length + 1), val),
- ffi.sizeof('char') * length)
-
-IPC_PATH_MAX_LEN = C.get_ipc_path_max_len()
diff --git a/.pc/monitor-test.patch/zmq/tests/test_monitor.py b/.pc/monitor-test.patch/zmq/tests/test_monitor.py
deleted file mode 100644
index d47e23f..0000000
--- a/.pc/monitor-test.patch/zmq/tests/test_monitor.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) PyZMQ Developers
-# Distributed under the terms of the Modified BSD License.
-
-
-import sys
-import time
-import struct
-
-from unittest import TestCase
-
-import zmq
-from zmq.tests import BaseZMQTestCase, skip_if, skip_pypy
-from zmq.utils.monitor import recv_monitor_message
-
-skip_lt_4 = skip_if(zmq.zmq_version_info() < (4,), "requires zmq >= 4")
-
-class TestSocketMonitor(BaseZMQTestCase):
-
- @skip_lt_4
- def test_monitor(self):
- """Test monitoring interface for sockets."""
- s_rep = self.context.socket(zmq.REP)
- s_req = self.context.socket(zmq.REQ)
- self.sockets.extend([s_rep, s_req])
- s_req.bind("tcp://127.0.0.1:6666")
- # try monitoring the REP socket
-
- s_rep.monitor("inproc://monitor.rep", zmq.EVENT_ALL)
- # create listening socket for monitor
- s_event = self.context.socket(zmq.PAIR)
- self.sockets.append(s_event)
- s_event.connect("inproc://monitor.rep")
- s_event.linger = 0
- # test receive event for connect event
- s_rep.connect("tcp://127.0.0.1:6666")
- m = recv_monitor_message(s_event)
- self.assertEqual(m['event'], zmq.EVENT_CONNECT_DELAYED)
- self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6666")
- # test receive event for connected event
- m = recv_monitor_message(s_event)
- self.assertEqual(m['event'], zmq.EVENT_CONNECTED)
-
- @skip_lt_4
- def test_monitor_connected(self):
- """Test connected monitoring socket."""
- s_rep = self.context.socket(zmq.REP)
- s_req = self.context.socket(zmq.REQ)
- self.sockets.extend([s_rep, s_req])
- s_req.bind("tcp://127.0.0.1:6667")
- # try monitoring the REP socket
- # create listening socket for monitor
- s_event = s_rep.get_monitor_socket()
- s_event.linger = 0
- self.sockets.append(s_event)
- # test receive event for connect event
- s_rep.connect("tcp://127.0.0.1:6667")
- m = recv_monitor_message(s_event)
- self.assertEqual(m['event'], zmq.EVENT_CONNECT_DELAYED)
- self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6667")
- # test receive event for connected event
- m = recv_monitor_message(s_event)
- self.assertEqual(m['event'], zmq.EVENT_CONNECTED)
diff --git a/.pc/noncopysend-test.patch/zmq/tests/test_message.py b/.pc/noncopysend-test.patch/zmq/tests/test_message.py
deleted file mode 100644
index d8770bd..0000000
--- a/.pc/noncopysend-test.patch/zmq/tests/test_message.py
+++ /dev/null
@@ -1,362 +0,0 @@
-# -*- coding: utf8 -*-
-# Copyright (C) PyZMQ Developers
-# Distributed under the terms of the Modified BSD License.
-
-
-import copy
-import sys
-try:
- from sys import getrefcount as grc
-except ImportError:
- grc = None
-
-import time
-from pprint import pprint
-from unittest import TestCase
-
-import zmq
-from zmq.tests import BaseZMQTestCase, SkipTest, skip_pypy, PYPY
-from zmq.utils.strtypes import unicode, bytes, b, u
-
-
-# some useful constants:
-
-x = b'x'
-
-try:
- view = memoryview
-except NameError:
- view = buffer
-
-if grc:
- rc0 = grc(x)
- v = view(x)
- view_rc = grc(x) - rc0
-
-def await_gc(obj, rc):
- """wait for refcount on an object to drop to an expected value
-
- Necessary because of the zero-copy gc thread,
- which can take some time to receive its DECREF message.
- """
- for i in range(50):
- # rc + 2 because of the refs in this function
- if grc(obj) <= rc + 2:
- return
- time.sleep(0.05)
-
-class TestFrame(BaseZMQTestCase):
-
- @skip_pypy
- def test_above_30(self):
- """Message above 30 bytes are never copied by 0MQ."""
- for i in range(5, 16): # 32, 64,..., 65536
- s = (2**i)*x
- self.assertEqual(grc(s), 2)
- m = zmq.Frame(s)
- self.assertEqual(grc(s), 4)
- del m
- await_gc(s, 2)
- self.assertEqual(grc(s), 2)
- del s
-
- def test_str(self):
- """Test the str representations of the Frames."""
- for i in range(16):
- s = (2**i)*x
- m = zmq.Frame(s)
- m_str = str(m)
- m_str_b = b(m_str) # py3compat
- self.assertEqual(s, m_str_b)
-
- def test_bytes(self):
- """Test the Frame.bytes property."""
- for i in range(1,16):
- s = (2**i)*x
- m = zmq.Frame(s)
- b = m.bytes
- self.assertEqual(s, m.bytes)
- if not PYPY:
- # check that it copies
- self.assert_(b is not s)
- # check that it copies only once
- self.assert_(b is m.bytes)
-
- def test_unicode(self):
- """Test the unicode representations of the Frames."""
- s = u('asdf')
- self.assertRaises(TypeError, zmq.Frame, s)
- for i in range(16):
- s = (2**i)*u('§')
- m = zmq.Frame(s.encode('utf8'))
- self.assertEqual(s, unicode(m.bytes,'utf8'))
-
- def test_len(self):
- """Test the len of the Frames."""
- for i in range(16):
- s = (2**i)*x
- m = zmq.Frame(s)
- self.assertEqual(len(s), len(m))
-
- @skip_pypy
- 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)
- 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.assert_(s is str(m))
- # self.assert_(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
-
- @skip_pypy
- 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
-
- @skip_pypy
- def test_tracker(self):
- m = zmq.Frame(b'asdf', track=True)
- self.assertFalse(m.tracker.done)
- pm = zmq.MessageTracker(m)
- self.assertFalse(pm.done)
- del m
- for i in range(10):
- if pm.done:
- break
- time.sleep(0.1)
- self.assertTrue(pm.done)
-
- def test_no_tracker(self):
- m = zmq.Frame(b'asdf', track=False)
- self.assertEqual(m.tracker, None)
- m2 = copy.copy(m)
- self.assertEqual(m2.tracker, None)
- self.assertRaises(ValueError, zmq.MessageTracker, m)
-
- @skip_pypy
- def test_multi_tracker(self):
- m = zmq.Frame(b'asdf', track=True)
- m2 = zmq.Frame(b'whoda', track=True)
- mt = zmq.MessageTracker(m,m2)
- self.assertFalse(m.tracker.done)
- self.assertFalse(mt.done)
- self.assertRaises(zmq.NotDone, mt.wait, 0.1)
- del m
- time.sleep(0.1)
- self.assertRaises(zmq.NotDone, mt.wait, 0.1)
- self.assertFalse(mt.done)
- del m2
- self.assertTrue(mt.wait() is None)
- self.assertTrue(mt.done)
-
-
- def test_buffer_in(self):
- """test using a buffer as input"""
- ins = b("§§¶•ªº˜µ¬˚…∆˙åß∂©œ∑´†≈ç√")
- m = zmq.Frame(view(ins))
-
- def test_bad_buffer_in(self):
- """test using a bad object"""
- self.assertRaises(TypeError, zmq.Frame, 5)
- self.assertRaises(TypeError, zmq.Frame, object())
-
- def test_buffer_out(self):
- """receiving buffered output"""
- ins = b("§§¶•ªº˜µ¬˚…∆˙åß∂©œ∑´†≈ç√")
- m = zmq.Frame(ins)
- outb = m.buffer
- self.assertTrue(isinstance(outb, view))
- self.assert_(outb is m.buffer)
- self.assert_(m.buffer is m.buffer)
-
- def test_multisend(self):
- """ensure that a message remains intact after multiple sends"""
- a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR)
- s = b"message"
- m = zmq.Frame(s)
- self.assertEqual(s, m.bytes)
-
- a.send(m, copy=False)
- time.sleep(0.1)
- self.assertEqual(s, m.bytes)
- a.send(m, copy=False)
- time.sleep(0.1)
- self.assertEqual(s, m.bytes)
- a.send(m, copy=True)
- time.sleep(0.1)
- self.assertEqual(s, m.bytes)
- a.send(m, copy=True)
- time.sleep(0.1)
- self.assertEqual(s, m.bytes)
- for i in range(4):
- r = b.recv()
- self.assertEqual(s,r)
- self.assertEqual(s, m.bytes)
-
- def test_buffer_numpy(self):
- """test non-copying numpy array messages"""
- try:
- import numpy
- except ImportError:
- raise SkipTest("numpy required")
- rand = numpy.random.randint
- shapes = [ rand(2,16) for i in range(5) ]
- for i in range(1,len(shapes)+1):
- shape = shapes[:i]
- A = numpy.random.random(shape)
- m = zmq.Frame(A)
- if view.__name__ == 'buffer':
- self.assertEqual(A.data, m.buffer)
- B = numpy.frombuffer(m.buffer,dtype=A.dtype).reshape(A.shape)
- else:
- self.assertEqual(memoryview(A), m.buffer)
- B = numpy.array(m.buffer,dtype=A.dtype).reshape(A.shape)
- self.assertEqual((A==B).all(), True)
-
- def test_memoryview(self):
- """test messages from memoryview"""
- major,minor = sys.version_info[:2]
- if not (major >= 3 or (major == 2 and minor >= 7)):
- raise SkipTest("memoryviews only in python >= 2.7")
-
- s = b'carrotjuice'
- v = memoryview(s)
- m = zmq.Frame(s)
- buf = m.buffer
- s2 = buf.tobytes()
- self.assertEqual(s2,s)
- self.assertEqual(m.bytes,s)
-
- 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)
-
- @skip_pypy
- def test_buffer_numpy(self):
- """test non-copying numpy array messages"""
- try:
- import numpy
- except ImportError:
- raise SkipTest("requires numpy")
- if sys.version_info < (2,7):
- raise SkipTest("requires new-style buffer interface (py >= 2.7)")
- rand = numpy.random.randint
- shapes = [ rand(2,5) for i in range(5) ]
- a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR)
- dtypes = [int, float, '>i4', 'B']
- for i in range(1,len(shapes)+1):
- shape = shapes[:i]
- for dt in dtypes:
- A = numpy.empty(shape, dtype=dt)
- while numpy.isnan(A).any():
- # don't let nan sneak in
- A = numpy.ndarray(shape, dtype=dt)
- a.send(A, copy=False)
- msg = b.recv(copy=False)
-
- B = numpy.frombuffer(msg, A.dtype).reshape(A.shape)
- self.assertEqual(A.shape, B.shape)
- self.assertTrue((A==B).all())
- A = numpy.empty(shape, dtype=[('a', int), ('b', float), ('c', 'a32')])
- A['a'] = 1024
- A['b'] = 1e9
- A['c'] = 'hello there'
- a.send(A, copy=False)
- msg = b.recv(copy=False)
-
- B = numpy.frombuffer(msg, A.dtype).reshape(A.shape)
- self.assertEqual(A.shape, B.shape)
- self.assertTrue((A==B).all())
-
- def test_frame_more(self):
- """test Frame.more attribute"""
- frame = zmq.Frame(b"hello")
- self.assertFalse(frame.more)
- sa,sb = self.create_bound_pair(zmq.PAIR, zmq.PAIR)
- sa.send_multipart([b'hi', b'there'])
- frame = self.recv(sb, copy=False)
- self.assertTrue(frame.more)
- if zmq.zmq_version_info()[0] >= 3 and not PYPY:
- self.assertTrue(frame.get(zmq.MORE))
- frame = self.recv(sb, copy=False)
- self.assertFalse(frame.more)
- if zmq.zmq_version_info()[0] >= 3 and not PYPY:
- self.assertFalse(frame.get(zmq.MORE))
-