From dd45d6bc7f9726a8cbee2f2456c077d7100ec5f6 Mon Sep 17 00:00:00 2001
From: Konstantin Osipov <kostja@tarantool.org>
Date: Wed, 19 Aug 2015 05:34:33 +0300
Subject: [PATCH] gh-983 (iproto hang/crash): add a test case

---
 test/box/net.box.result   | 27 +++++++++++++++++++++++++++
 test/box/net.box.test.lua | 17 +++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/test/box/net.box.result b/test/box/net.box.result
index 843a02d8f3..f112a388b1 100644
--- a/test/box/net.box.result
+++ b/test/box/net.box.result
@@ -886,6 +886,33 @@ file_log:close()
 ---
 - true
 ...
+-- gh-983 selecting a lot of data crashes the server or hangs the
+-- connection
+-- gh-983 test case: iproto connection selecting a lot of data
+_ = box.schema.space.create('test', { temporary = true })
+---
+...
+_ = box.space.test:create_index('primary', {type = 'TREE', parts = {1,'NUM'}})
+---
+...
+data1k = "aaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhh"
+---
+...
+for i = 0,10000 do box.space.test:insert{i, data1k} end
+---
+...
+net = require('net.box')
+---
+...
+c = net:new(box.cfg.listen)
+---
+...
+r = c.space.test:select(nil, {limit=5000})
+---
+...
+box.space.test:drop()
+---
+...
 box.schema.user.revoke('guest', 'read,write,execute', 'universe')
 ---
 ...
diff --git a/test/box/net.box.test.lua b/test/box/net.box.test.lua
index c5ed905767..62b3566c85 100644
--- a/test/box/net.box.test.lua
+++ b/test/box/net.box.test.lua
@@ -364,4 +364,21 @@ end;
 --# setopt delimiter ''
 
 file_log:close()
+
+-- gh-983 selecting a lot of data crashes the server or hangs the
+-- connection
+
+-- gh-983 test case: iproto connection selecting a lot of data
+_ = box.schema.space.create('test', { temporary = true })
+_ = box.space.test:create_index('primary', {type = 'TREE', parts = {1,'NUM'}})
+
+data1k = "aaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhhaaaabbbbccccddddeeeeffffgggghhhh"
+
+for i = 0,10000 do box.space.test:insert{i, data1k} end
+
+net = require('net.box')
+c = net:new(box.cfg.listen)
+r = c.space.test:select(nil, {limit=5000})
+box.space.test:drop()
+
 box.schema.user.revoke('guest', 'read,write,execute', 'universe')
-- 
GitLab