unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#30030] [PATCH core-updates] gnu: java-jeromq: Update to 0.4.3.
@ 2018-01-08 20:15 Gábor Boskovits
  2018-01-23  8:06 ` Chris Marusich
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Gábor Boskovits @ 2018-01-08 20:15 UTC (permalink / raw)
  To: 30030; +Cc: Gábor Boskovits

* gnu/packages/java.scm (java-jeromq): Update to 0.4.3.
---
 gnu/packages/java.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 73a56df4f..66db15389 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -7594,7 +7594,7 @@ protocol-independent framework to build mail and messaging applications.")
 (define-public java-jeromq
   (package
     (name "java-jeromq")
-    (version "0.4.2")
+    (version "0.4.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/zeromq/jeromq/archive/v"
@@ -7602,7 +7602,7 @@ protocol-independent framework to build mail and messaging applications.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "17wx8dlyqmbw77xf6d6wxnhiyky6181zpf1a48jqzz9hidz0j841"))))
+                "0mmsz5dcr786z9pnvp3nvjchkfh0z82agv0lk4r084x3l06h55pm"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-jeromq.jar"
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#30030] [PATCH core-updates] gnu: java-jeromq: Update to 0.4.3.
  2018-01-08 20:15 [bug#30030] [PATCH core-updates] gnu: java-jeromq: Update to 0.4.3 Gábor Boskovits
@ 2018-01-23  8:06 ` Chris Marusich
  2018-01-23  8:26   ` Gábor Boskovits
  2018-03-03 17:52 ` bug#30030: Closing, already upstream Gábor Boskovits
  2018-03-08 11:38 ` [bug#30030] [PATCH] gnu: java-jeromq: Fix tests Gábor Boskovits
  2 siblings, 1 reply; 5+ messages in thread
From: Chris Marusich @ 2018-01-23  8:06 UTC (permalink / raw)
  To: Gábor Boskovits; +Cc: 30030

[-- Attachment #1: Type: text/plain, Size: 709 bytes --]

Gábor Boskovits <boskovits@gmail.com> writes:

> * gnu/packages/java.scm (java-jeromq): Update to 0.4.3.

Unfortunately, when this patch is applied to commit
f3cd6633ce7348fb92735d6cd708bdc8b3b063ee (the current tip of
core-updates), the "check" phase of the build fails.  Actually, it fails
even before the patch, so you this change doesn't break it.

The failures are not deterministic.  Various classes fail, and it's not
always the same one every time.  I briefly looked at the failures, and I
couldn't make much sense of it.  I think there are two avenues of
investigation:

1) Git bisect to find out which commit introduced the break.

2) Report the failure(s) upstream.

-- 
Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#30030] [PATCH core-updates] gnu: java-jeromq: Update to 0.4.3.
  2018-01-23  8:06 ` Chris Marusich
@ 2018-01-23  8:26   ` Gábor Boskovits
  0 siblings, 0 replies; 5+ messages in thread
From: Gábor Boskovits @ 2018-01-23  8:26 UTC (permalink / raw)
  To: Chris Marusich; +Cc: 30030

[-- Attachment #1: Type: text/plain, Size: 1156 bytes --]

Sorry about that.
I introduced this update because I got test failures.
After updating I did not experience the failure even after several
rebuilds, but the earlier version failed consistently.
I did not think, that the failure is not deterministic.
I will reopen this github issue then:
https://github.com/Boskovits/guix/issues/57


2018-01-23 9:06 GMT+01:00 Chris Marusich <cmmarusich@gmail.com>:

> Gábor Boskovits <boskovits@gmail.com> writes:
>
> > * gnu/packages/java.scm (java-jeromq): Update to 0.4.3.
>
> Unfortunately, when this patch is applied to commit
> f3cd6633ce7348fb92735d6cd708bdc8b3b063ee (the current tip of
> core-updates), the "check" phase of the build fails.  Actually, it fails
> even before the patch, so you this change doesn't break it.
>
> The failures are not deterministic.  Various classes fail, and it's not
> always the same one every time.  I briefly looked at the failures, and I
> couldn't make much sense of it.  I think there are two avenues of
> investigation:
>
> 1) Git bisect to find out which commit introduced the break.
>
> 2) Report the failure(s) upstream.
>
> --
> Chris
>

[-- Attachment #2: Type: text/html, Size: 1769 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#30030: Closing, already upstream
  2018-01-08 20:15 [bug#30030] [PATCH core-updates] gnu: java-jeromq: Update to 0.4.3 Gábor Boskovits
  2018-01-23  8:06 ` Chris Marusich
@ 2018-03-03 17:52 ` Gábor Boskovits
  2018-03-08 11:38 ` [bug#30030] [PATCH] gnu: java-jeromq: Fix tests Gábor Boskovits
  2 siblings, 0 replies; 5+ messages in thread
From: Gábor Boskovits @ 2018-03-03 17:52 UTC (permalink / raw)
  To: 30030-done

[-- Attachment #1: Type: text/plain, Size: 41 bytes --]

We already have this on master, closing.

[-- Attachment #2: Type: text/html, Size: 62 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#30030] [PATCH] gnu: java-jeromq: Fix tests.
  2018-01-08 20:15 [bug#30030] [PATCH core-updates] gnu: java-jeromq: Update to 0.4.3 Gábor Boskovits
  2018-01-23  8:06 ` Chris Marusich
  2018-03-03 17:52 ` bug#30030: Closing, already upstream Gábor Boskovits
@ 2018-03-08 11:38 ` Gábor Boskovits
  2 siblings, 0 replies; 5+ messages in thread
From: Gábor Boskovits @ 2018-03-08 11:38 UTC (permalink / raw)
  To: 30030; +Cc: Gábor Boskovits

* gnu/packages/patches/java-jeromq-fix-tests.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/java.scm (java-jeromq)[source](patches): Add it.
[arguments](#test-exclude): Disable more failing tests.
---
 gnu/local.mk                                     |   1 +
 gnu/packages/java.scm                            |  11 +-
 gnu/packages/patches/java-jeromq-fix-tests.patch | 247 +++++++++++++++++++++++
 3 files changed, 257 insertions(+), 2 deletions(-)
 create mode 100644 gnu/packages/patches/java-jeromq-fix-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9684d949f..2bae3660c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -782,6 +782,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/intltool-perl-compatibility.patch	\
   %D%/packages/patches/isl-0.11.1-aarch64-support.patch	\
   %D%/packages/patches/jacal-fix-texinfo.patch			\
+  %D%/packages/patches/java-jeromq-fix-tests.patch		\
   %D%/packages/patches/java-powermock-fix-java-files.patch		\
   %D%/packages/patches/java-xerces-bootclasspath.patch	\
   %D%/packages/patches/java-xerces-build_dont_unzip.patch	\
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 0f8c04e8b..85a8c9b3a 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -8117,7 +8117,8 @@ protocol-independent framework to build mail and messaging applications.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1gxkp7lv2ahymgrqdw94ncq54bmp4m4sw5m1x9gkp7l5bxn0xsyj"))))
+                "1gxkp7lv2ahymgrqdw94ncq54bmp4m4sw5m1x9gkp7l5bxn0xsyj"))
+              (patches (search-patches "java-jeromq-fix-tests.patch"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-jeromq.jar"
@@ -8131,7 +8132,13 @@ protocol-independent framework to build mail and messaging applications.")
          ;; Failures
          "**/DealerSpecTest.java"
          "**/CustomDecoderTest.java"
-         "**/CustomEncoderTest.java")))
+         "**/CustomEncoderTest.java"
+         "**/ConnectRidTest.java"
+         "**/ReqSpecTest.java"
+         "**/PushPullSpecTest.java"
+         "**/PubSubHwmTest.java"
+         "**/RouterSpecTest.java"
+         "**/ProxyTest.java")))
     (inputs
      `(("java-jnacl" ,java-jnacl)))
     (native-inputs
diff --git a/gnu/packages/patches/java-jeromq-fix-tests.patch b/gnu/packages/patches/java-jeromq-fix-tests.patch
new file mode 100644
index 000000000..40fa64801
--- /dev/null
+++ b/gnu/packages/patches/java-jeromq-fix-tests.patch
@@ -0,0 +1,247 @@
+From 5803aadd3f209eba1ffbb2cf7bf16778019dbee1 Mon Sep 17 00:00:00 2001
+From: fredoboulo <fredoboulo@users.noreply.github.com>
+Date: Fri, 23 Feb 2018 23:55:57 +0100
+Subject: [PATCH] Fix #524 : V1 and V2 protocol downgrades handle received data
+ in handshake buffer
+
+---
+ src/main/java/zmq/io/StreamEngine.java            | 21 ++++++++++--
+ src/test/java/zmq/io/AbstractProtocolVersion.java | 41 +++++++++++++----------
+ src/test/java/zmq/io/V0ProtocolTest.java          | 12 +++++++
+ src/test/java/zmq/io/V1ProtocolTest.java          | 16 +++++++--
+ src/test/java/zmq/io/V2ProtocolTest.java          | 16 +++++++--
+ 5 files changed, 81 insertions(+), 25 deletions(-)
+
+diff --git a/src/main/java/zmq/io/StreamEngine.java b/src/main/java/zmq/io/StreamEngine.java
+index b8933c92..fe2f2d8d 100644
+--- a/src/main/java/zmq/io/StreamEngine.java
++++ b/src/main/java/zmq/io/StreamEngine.java
+@@ -816,9 +816,7 @@ private boolean handshake()
+             assert (bufferSize == headerSize);
+ 
+             //  Make sure the decoder sees the data we have already received.
+-            greetingRecv.flip();
+-            inpos = greetingRecv;
+-            insize = greetingRecv.limit();
++            decodeDataAfterHandshake(0);
+ 
+             //  To allow for interoperability with peers that do not forward
+             //  their subscriptions, we inject a phantom subscription message
+@@ -846,6 +844,8 @@ else if (greetingRecv.get(revisionPos) == Protocol.V1.revision) {
+             }
+             encoder = new V1Encoder(errno, Config.OUT_BATCH_SIZE.getValue());
+             decoder = new V1Decoder(errno, Config.IN_BATCH_SIZE.getValue(), options.maxMsgSize, options.allocator);
++
++            decodeDataAfterHandshake(V2_GREETING_SIZE);
+         }
+         else if (greetingRecv.get(revisionPos) == Protocol.V2.revision) {
+             //  ZMTP/2.0 framing.
+@@ -859,6 +859,8 @@ else if (greetingRecv.get(revisionPos) == Protocol.V2.revision) {
+             }
+             encoder = new V2Encoder(errno, Config.OUT_BATCH_SIZE.getValue());
+             decoder = new V2Decoder(errno, Config.IN_BATCH_SIZE.getValue(), options.maxMsgSize, options.allocator);
++
++            decodeDataAfterHandshake(V2_GREETING_SIZE);
+         }
+         else {
+             zmtpVersion = Protocol.V3;
+@@ -904,6 +906,19 @@ else if (greetingRecv.get(revisionPos) == Protocol.V2.revision) {
+         return true;
+     }
+ 
++    private void decodeDataAfterHandshake(int greetingSize)
++    {
++        final int pos = greetingRecv.position();
++        if (pos > greetingSize) {
++            // data is present after handshake
++            greetingRecv.position(greetingSize).limit(pos);
++
++            //  Make sure the decoder sees this extra data.
++            inpos = greetingRecv;
++            insize = greetingRecv.remaining();
++        }
++    }
++
+     private Msg identityMsg()
+     {
+         Msg msg = new Msg(options.identitySize);
+diff --git a/src/test/java/zmq/io/AbstractProtocolVersion.java b/src/test/java/zmq/io/AbstractProtocolVersion.java
+index e60db403..aa06b4a7 100644
+--- a/src/test/java/zmq/io/AbstractProtocolVersion.java
++++ b/src/test/java/zmq/io/AbstractProtocolVersion.java
+@@ -18,15 +18,18 @@
+ import zmq.SocketBase;
+ import zmq.ZError;
+ import zmq.ZMQ;
++import zmq.ZMQ.Event;
+ import zmq.util.Utils;
+ 
+ public abstract class AbstractProtocolVersion
+ {
++    protected static final int REPETITIONS = 1000;
++
+     static class SocketMonitor extends Thread
+     {
+-        private final Ctx             ctx;
+-        private final String          monitorAddr;
+-        private final List<ZMQ.Event> events = new ArrayList<>();
++        private final Ctx         ctx;
++        private final String      monitorAddr;
++        private final ZMQ.Event[] events = new ZMQ.Event[1];
+ 
+         public SocketMonitor(Ctx ctx, String monitorAddr)
+         {
+@@ -41,15 +44,15 @@ public void run()
+             boolean rc = s.connect(monitorAddr);
+             assertThat(rc, is(true));
+             // Only some of the exceptional events could fire
+-            while (true) {
+-                ZMQ.Event event = ZMQ.Event.read(s);
+-                if (event == null && s.errno() == ZError.ETERM) {
+-                    break;
+-                }
+-                assertThat(event, notNullValue());
+-
+-                events.add(event);
++
++            ZMQ.Event event = ZMQ.Event.read(s);
++            if (event == null && s.errno() == ZError.ETERM) {
++                s.close();
++                return;
+             }
++            assertThat(event, notNullValue());
++
++            events[0] = event;
+             s.close();
+         }
+     }
+@@ -69,11 +72,12 @@ public void run()
+         boolean rc = ZMQ.setSocketOption(receiver, ZMQ.ZMQ_LINGER, 0);
+         assertThat(rc, is(true));
+ 
+-        SocketMonitor monitor = new SocketMonitor(ctx, "inproc://monitor");
+-        monitor.start();
+         rc = ZMQ.monitorSocket(receiver, "inproc://monitor", ZMQ.ZMQ_EVENT_HANDSHAKE_PROTOCOL);
+         assertThat(rc, is(true));
+ 
++        SocketMonitor monitor = new SocketMonitor(ctx, "inproc://monitor");
++        monitor.start();
++
+         rc = ZMQ.bind(receiver, host);
+         assertThat(rc, is(true));
+ 
+@@ -81,17 +85,18 @@ public void run()
+         OutputStream out = sender.getOutputStream();
+         for (ByteBuffer raw : raws) {
+             out.write(raw.array());
+-            ZMQ.msleep(100);
+         }
+ 
+         Msg msg = ZMQ.recv(receiver, 0);
+         assertThat(msg, notNullValue());
+         assertThat(new String(msg.data(), ZMQ.CHARSET), is(payload));
+ 
+-        ZMQ.msleep(500);
+-        assertThat(monitor.events.size(), is(1));
+-        assertThat(monitor.events.get(0).event, is(ZMQ.ZMQ_EVENT_HANDSHAKE_PROTOCOL));
+-        assertThat((Integer) monitor.events.get(0).arg, is(version));
++        monitor.join();
++
++        final Event event = monitor.events[0];
++        assertThat(event, notNullValue());
++        assertThat(event.event, is(ZMQ.ZMQ_EVENT_HANDSHAKE_PROTOCOL));
++        assertThat((Integer) event.arg, is(version));
+ 
+         InputStream in = sender.getInputStream();
+         byte[] data = new byte[255];
+diff --git a/src/test/java/zmq/io/V0ProtocolTest.java b/src/test/java/zmq/io/V0ProtocolTest.java
+index bd547d23..1a5b7aef 100644
+--- a/src/test/java/zmq/io/V0ProtocolTest.java
++++ b/src/test/java/zmq/io/V0ProtocolTest.java
+@@ -10,6 +10,18 @@
+ 
+ public class V0ProtocolTest extends AbstractProtocolVersion
+ {
++    @Test
++    public void testFixIssue524() throws IOException, InterruptedException
++    {
++        for (int idx = 0; idx < REPETITIONS; ++idx) {
++            if (idx % 100 == 0) {
++                System.out.print(idx + " ");
++            }
++            testProtocolVersion0short();
++        }
++        System.out.println();
++    }
++
+     @Test(timeout = 2000)
+     public void testProtocolVersion0short() throws IOException, InterruptedException
+     {
+diff --git a/src/test/java/zmq/io/V1ProtocolTest.java b/src/test/java/zmq/io/V1ProtocolTest.java
+index e1045f34..764159d0 100644
+--- a/src/test/java/zmq/io/V1ProtocolTest.java
++++ b/src/test/java/zmq/io/V1ProtocolTest.java
+@@ -10,7 +10,19 @@
+ 
+ public class V1ProtocolTest extends AbstractProtocolVersion
+ {
+-    @Test(timeout = 2000)
++    @Test
++    public void testFixIssue524() throws IOException, InterruptedException
++    {
++        for (int idx = 0; idx < REPETITIONS; ++idx) {
++            if (idx % 100 == 0) {
++                System.out.print(idx + " ");
++            }
++            testProtocolVersion1short();
++        }
++        System.out.println();
++    }
++
++    @Test
+     public void testProtocolVersion1short() throws IOException, InterruptedException
+     {
+         List<ByteBuffer> raws = raws(0);
+@@ -25,7 +37,7 @@ public void testProtocolVersion1short() throws IOException, InterruptedException
+         assertProtocolVersion(1, raws, "abcdefg");
+     }
+ 
+-    @Test(timeout = 2000)
++    @Test
+     public void testProtocolVersion1long() throws IOException, InterruptedException
+     {
+         List<ByteBuffer> raws = raws(0);
+diff --git a/src/test/java/zmq/io/V2ProtocolTest.java b/src/test/java/zmq/io/V2ProtocolTest.java
+index d5e64bce..7fda31bc 100644
+--- a/src/test/java/zmq/io/V2ProtocolTest.java
++++ b/src/test/java/zmq/io/V2ProtocolTest.java
+@@ -21,7 +21,19 @@ protected ByteBuffer identity()
+                 .put((byte) 0);
+     }
+ 
+-    @Test(timeout = 2000)
++    @Test
++    public void testFixIssue524() throws IOException, InterruptedException
++    {
++        for (int idx = 0; idx < REPETITIONS; ++idx) {
++            if (idx % 100 == 0) {
++                System.out.print(idx + " ");
++            }
++            testProtocolVersion2short();
++        }
++        System.out.println();
++    }
++
++    @Test
+     public void testProtocolVersion2short() throws IOException, InterruptedException
+     {
+         List<ByteBuffer> raws = raws(1);
+@@ -38,7 +50,7 @@ public void testProtocolVersion2short() throws IOException, InterruptedException
+         assertProtocolVersion(2, raws, "abcdefg");
+     }
+ 
+-    @Test(timeout = 2000)
++    @Test
+     public void testProtocolVersion2long() throws IOException, InterruptedException
+     {
+         List<ByteBuffer> raws = raws(1);
-- 
2.16.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-03-08 11:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-08 20:15 [bug#30030] [PATCH core-updates] gnu: java-jeromq: Update to 0.4.3 Gábor Boskovits
2018-01-23  8:06 ` Chris Marusich
2018-01-23  8:26   ` Gábor Boskovits
2018-03-03 17:52 ` bug#30030: Closing, already upstream Gábor Boskovits
2018-03-08 11:38 ` [bug#30030] [PATCH] gnu: java-jeromq: Fix tests Gábor Boskovits

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).