MFH: r491252 net/py-pyzmq: Fix framework compliance issues

Identified while QA'ing an upcoming net/libzmq update [1]:

 - Strip shared libraries.
 - Update (correct) LICENSE definition, previous was incomplete.
 - Backport upstream PR [2] to fix test_large_send OOM issue.

 QA: 209 passed, 33 skipped in 58.81 seconds

 [2] https://github.com/zeromq/pyzmq/pull/1219

PR:		230575 [1]
Approved by:	portmgr (blanket: framework compliance)

Approved by:	ports-secteam (blanket: framework compliance)
This commit is contained in:
Kubilay Kocak 2019-03-25 07:39:00 +00:00
parent 9070eebd4f
commit e95bd2aad6
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/branches/2019Q1/; revision=496798
2 changed files with 80 additions and 1 deletions

View File

@ -10,7 +10,10 @@ PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= novel@FreeBSD.org
COMMENT= Python bindings for ZeroMQ
LICENSE= LGPL3
LICENSE= BSD3CLAUSE LGPL3
LICENSE_COMB= multi
LICENSE_FILE_BSD3CLAUSE= ${WRKSRC}/COPYING.BSD
LICENSE_FILE_LGPL3= ${WRKSRC}/COPYING.LESSER
LIB_DEPENDS= libzmq.so:net/libzmq4
TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>=0:devel/py-pytest@${PY_FLAVOR}
@ -30,4 +33,8 @@ do-test:
@cd ${WRKSRC} && ${PYTHON_CMD} ${PYSETUP} build_ext --inplace
@cd ${WRKSRC} && ${PYTHON_CMD} ${PYSETUP} test
post-install:
${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/zmq/backend/cython/*.so
${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/zmq/devices/*.so
.include <bsd.port.post.mk>

View File

@ -0,0 +1,72 @@
From 545ed995e2121b8229390a34a3ae144f3a13cd84 Mon Sep 17 00:00:00 2001
From: Min RK <benjaminrk@gmail.com>
Date: Mon, 20 Aug 2018 17:02:04 +0200
Subject: [PATCH] improve test_large_send
- reduce memory requirements by calling `recv(copy=False)`
- treat MemoryError during send/recv as a skip due to insufficient memory
- give it mark.large so it's easier for test runners to skip it explicitly
---
zmq/tests/test_socket.py | 32 +++++++++++++++++++++++---------
1 file changed, 23 insertions(+), 9 deletions(-)
diff --git zmq/tests/test_socket.py zmq/tests/test_socket.py
index 72eedb5a..59bf087e 100644
--- zmq/tests/test_socket.py
+++ zmq/tests/test_socket.py
@@ -485,7 +485,7 @@ def test_subscribe_method(self):
pub.send(b'prefixmessage')
events = p.poll(1000)
self.assertEqual(events, [])
-
+
# Travis can't handle how much memory PyPy uses on this test
@mark.skipif(
(
@@ -497,16 +497,30 @@ def test_subscribe_method(self):
),
reason="only run on 64b and not on Travis."
)
+ @mark.large
def test_large_send(self):
+ c = os.urandom(1)
+ N = 2**31 + 1
try:
- buf = os.urandom(1) * (2**31 + 1)
- except MemoryError:
- raise SkipTest()
+ buf = c * N
+ except MemoryError as e:
+ raise SkipTest("Not enough memory: %s" % e)
a, b = self.create_bound_pair()
- a.send(buf, copy=False)
- rcvd = b.recv()
- assert rcvd == buf
-
+ try:
+ a.send(buf, copy=False)
+ rcvd = b.recv(copy=False)
+ except MemoryError as e:
+ raise SkipTest("Not enough memory: %s" % e)
+ # sample the front and back of the received message
+ # without checking the whole content
+ # Python 2: items in memoryview are bytes
+ # Python 3: items im memoryview are int
+ byte = c if sys.version_info < (3,) else ord(c)
+ view = memoryview(rcvd)
+ assert len(view) == N
+ assert view[0] == byte
+ assert view[-1] == byte
+
def test_custom_serialize(self):
a, b = self.create_bound_pair(zmq.DEALER, zmq.ROUTER)
def serialize(msg):
@@ -515,7 +529,7 @@ def serialize(msg):
content = json.dumps(msg['content']).encode('utf8')
frames.append(content)
return frames
-
+
def deserialize(frames):
identities = frames[:-1]
content = json.loads(frames[-1].decode('utf8'))