You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2018/03/01 18:54:22 UTC

[3/3] qpid-proton git commit: PROTON-144: Encode zore length lists as LIST0 type - Fix some interop tests to expect this - Fix message overflow test to use an smaller buffer - The previous size no longer overfows

PROTON-144: Encode zore length lists as LIST0 type
- Fix some interop tests to expect this
- Fix message overflow test to use an smaller buffer
  - The previous size no longer overfows


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/1b9c0958
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/1b9c0958
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/1b9c0958

Branch: refs/heads/master
Commit: 1b9c095828a00fb9a2206c8fe455bc88a1fb9490
Parents: edb3aaa
Author: Andrew Stitcher <as...@apache.org>
Authored: Thu Mar 1 10:56:32 2018 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Thu Mar 1 11:36:35 2018 -0500

----------------------------------------------------------------------
 proton-c/src/core/encoder.c          |   8 ++++++++
 proton-c/src/tests/message.c         |   4 ++--
 tests/interop/lists.amqp             | Bin 26 -> 18 bytes
 tests/python/proton_tests/interop.py |   2 ++
 4 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1b9c0958/proton-c/src/core/encoder.c
----------------------------------------------------------------------
diff --git a/proton-c/src/core/encoder.c b/proton-c/src/core/encoder.c
index 26bc613..505db47 100644
--- a/proton-c/src/core/encoder.c
+++ b/proton-c/src/core/encoder.c
@@ -349,6 +349,14 @@ static int pni_encoder_exit(void *ctx, pn_data_t *data, pni_node_t *node)
   pn_encoder_t *encoder = (pn_encoder_t *) ctx;
   char *pos;
 
+  // Special case 0 length list
+  if (node->atom.type==PN_LIST && node->children-encoder->null_count==0) {
+    encoder->position = node->start-1; // position of list opcode
+    pn_encoder_writef8(encoder, PNE_LIST0);
+    encoder->null_count = 0;
+    return 0;
+  }
+
   switch (node->atom.type) {
   case PN_ARRAY:
     if ((node->described && node->children == 1) || (!node->described && node->children == 0)) {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1b9c0958/proton-c/src/tests/message.c
----------------------------------------------------------------------
diff --git a/proton-c/src/tests/message.c b/proton-c/src/tests/message.c
index 272e25f..5362b7d 100644
--- a/proton-c/src/tests/message.c
+++ b/proton-c/src/tests/message.c
@@ -31,8 +31,8 @@
 static void test_overflow_error(void)
 {
   pn_message_t *message = pn_message();
-  char buf[8];
-  size_t size = 8;
+  char buf[6];
+  size_t size = 6;
 
   int err = pn_message_encode(message, buf, &size);
   assert(err == PN_OVERFLOW);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1b9c0958/tests/interop/lists.amqp
----------------------------------------------------------------------
diff --git a/tests/interop/lists.amqp b/tests/interop/lists.amqp
index db12fcf..f32bf4b 100644
Binary files a/tests/interop/lists.amqp and b/tests/interop/lists.amqp differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1b9c0958/tests/python/proton_tests/interop.py
----------------------------------------------------------------------
diff --git a/tests/python/proton_tests/interop.py b/tests/python/proton_tests/interop.py
index b56298b..b330f22 100644
--- a/tests/python/proton_tests/interop.py
+++ b/tests/python/proton_tests/interop.py
@@ -63,6 +63,8 @@ class InteropTest(common.Test):
         # Re-encode and verify pre-computed and actual encoded size match.
         reencoded = self.data.encode()
         assert encoded_size == len(reencoded), "%d != %d" % (encoded_size, len(reencoded))
+        # verify round trip bytes
+        assert reencoded == encoded, "Value mismatch: %s != %s" % (reencoded, encoded)
 
     def decode_message_file(self, name):
         self.message.decode(self.get_data(name))


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org