From bd2a23f06133c1e7604df9bc1e7f60fc91527749 Mon Sep 17 00:00:00 2001
From: GeorgyKirichenko <kirichenkoga@gmail.com>
Date: Wed, 14 Jun 2017 11:13:31 +0300
Subject: [PATCH] alter: add a test case for simultaneous truncates

Tarantool should not crash if one space was truncated simultaneosly from
two fibers.

Closes #928
---
 test/box/ddl.result   | 37 +++++++++++++++++++++++++++++++++++++
 test/box/ddl.test.lua | 17 +++++++++++++++++
 2 files changed, 54 insertions(+)

diff --git a/test/box/ddl.result b/test/box/ddl.result
index 0d20992ee3..01531af5c3 100644
--- a/test/box/ddl.result
+++ b/test/box/ddl.result
@@ -49,3 +49,40 @@ _ = box.space.test:drop()
 ---
 ...
 test_run:cmd('restart server default')
+env = require('test_run')
+---
+...
+test_run = env.new()
+---
+...
+fiber = require'fiber'
+---
+...
+ch = fiber.channel(2)
+---
+...
+--issue #928
+space = box.schema.space.create('test_trunc')
+---
+...
+_ = space:create_index('pk')
+---
+...
+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}})
+---
+...
+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}})
+---
+...
+function test_trunc() space:truncate() ch:put(true) end
+---
+...
+_ = {fiber.create(test_trunc), fiber.create(test_trunc)}
+---
+...
+_ = {ch:get(), ch:get()}
+---
+...
+space:drop()
+---
+...
diff --git a/test/box/ddl.test.lua b/test/box/ddl.test.lua
index 425582a477..237abb36d2 100644
--- a/test/box/ddl.test.lua
+++ b/test/box/ddl.test.lua
@@ -31,3 +31,20 @@ _ = box.space.test:drop()
 
 test_run:cmd('restart server default')
 
+env = require('test_run')
+test_run = env.new()
+fiber = require'fiber'
+
+ch = fiber.channel(2)
+
+--issue #928
+space = box.schema.space.create('test_trunc')
+_ = space:create_index('pk')
+_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}})
+_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}})
+
+function test_trunc() space:truncate() ch:put(true) end
+
+_ = {fiber.create(test_trunc), fiber.create(test_trunc)}
+_ = {ch:get(), ch:get()}
+space:drop()
-- 
GitLab