From e4c128de611a0402fef96a693ae52e0a60225475 Mon Sep 17 00:00:00 2001 From: Jason Paryani Date: Fri, 17 Jun 2016 13:50:26 -0700 Subject: [PATCH] Test large reads --- test/test_large_read.capnp | 13 ++++++++++++ test/test_large_read.py | 42 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 test/test_large_read.capnp create mode 100644 test/test_large_read.py diff --git a/test/test_large_read.capnp b/test/test_large_read.capnp new file mode 100644 index 0000000..45675ea --- /dev/null +++ b/test/test_large_read.capnp @@ -0,0 +1,13 @@ +@0x86dbb3b256f5d2af; + +struct Row { + values @0 :List(Int32); +} + +struct MultiArray { + rows @0 :List(Row); +} + +struct Msg { + data @0 :List(UInt8); +} diff --git a/test/test_large_read.py b/test/test_large_read.py new file mode 100644 index 0000000..c925d1f --- /dev/null +++ b/test/test_large_read.py @@ -0,0 +1,42 @@ +import pytest +import capnp +import os +import tempfile +import sys + +this_dir = os.path.dirname(__file__) + + +@pytest.fixture +def test_capnp(): + return capnp.load(os.path.join(this_dir, 'test_large_read.capnp')) + + +def test_large_read(test_capnp): + f = tempfile.TemporaryFile() + + array = test_capnp.MultiArray.new_message() + + row = array.init('rows', 1)[0] + values = row.init('values', 10000) + for i in range(len(values)): + values[i] = i + + array.write_packed(f) + f.seek(0) + + array = test_capnp.MultiArray.read_packed(f) + del f + assert array.rows[0].values[9000] == 9000 + +def test_large_read_multiple(test_capnp): + f = tempfile.TemporaryFile() + msg1 = test_capnp.Msg.new_message() + msg1.data = [0x41] * 8192 + msg1.write(f) + msg2 = test_capnp.Msg.new_message() + msg2.write(f) + f.seek(0) + + for m in test_capnp.Msg.read_multiple(f): + pass