Skip to content

Commit 319b51f

Browse files
sergepetrenkogithub-actions[bot]
authored andcommitted
test: stabilize engine/errinj_ddl test
The test relied on fibers finishing execution in particular order and setting/unsetting error injections in time. Of course it was flaky. In all the 3 flaky cases the fiber unsetting the injection could be executed before the fiber which sets the injection, and the rest of the test would run with that injection being set. Fix this properly and remove the test from the fragile list. Closes tarantool/tarantool-qa#20 NO_CHANGELOG=flaky test NO_DOC=flaky test (cherry picked from commit c86a5e1)
1 parent 5c61411 commit 319b51f

File tree

3 files changed

+33
-9
lines changed

3 files changed

+33
-9
lines changed

test/engine/errinj_ddl.result

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,15 @@ for i = 101, 200 do s:replace{i, pad} end
3838
ch = fiber.channel(1)
3939
---
4040
...
41+
ch1 = fiber.channel(1)
42+
---
43+
...
4144
test_run:cmd("setopt delimiter ';'")
4245
---
4346
- true
4447
...
4548
_ = fiber.create(function()
46-
fiber.sleep(0.01)
49+
ch1:get()
4750
for i = 1, 100 do
4851
s:replace{i, box.NULL}
4952
end
@@ -63,6 +66,10 @@ errinj.set("ERRINJ_CHECK_FORMAT_DELAY", true)
6366
---
6467
- ok
6568
...
69+
ch1:put(true)
70+
---
71+
- true
72+
...
6673
s:format(format) -- must fail
6774
---
6875
- error: 'Tuple field 2 (field2) type does not match one required by operation: expected
@@ -262,12 +269,15 @@ for i = 101, 200 do s:replace{i, i, pad} end
262269
ch = fiber.channel(1)
263270
---
264271
...
272+
ch1 = fiber.channel(1)
273+
---
274+
...
265275
test_run:cmd("setopt delimiter ';'")
266276
---
267277
- true
268278
...
269279
_ = fiber.create(function()
270-
fiber.sleep(0.01)
280+
ch1:get()
271281
for i = 1, 100 do
272282
s:replace{i}
273283
end
@@ -284,6 +294,10 @@ errinj.set("ERRINJ_BUILD_INDEX_DELAY", true)
284294
---
285295
- ok
286296
...
297+
ch1:put(true)
298+
---
299+
- true
300+
...
287301
s:create_index('sk', {parts = {2, 'unsigned'}}) -- must fail
288302
---
289303
- error: Tuple field 2 required by space format is missing
@@ -318,12 +332,15 @@ for i = 101, 200 do s:replace{i, i, pad} end
318332
ch = fiber.channel(1)
319333
---
320334
...
335+
ch1 = fiber.channel(1)
336+
---
337+
...
321338
test_run:cmd("setopt delimiter ';'")
322339
---
323340
- true
324341
...
325342
_ = fiber.create(function()
326-
fiber.sleep(0.01)
343+
ch1:get()
327344
for i = 1, 100 do
328345
s:replace{i, i + 1}
329346
end
@@ -340,6 +357,10 @@ errinj.set("ERRINJ_BUILD_INDEX_DELAY", true)
340357
---
341358
- ok
342359
...
360+
ch1:put(true)
361+
---
362+
- true
363+
...
343364
ok, err = pcall(s.create_index, s, 'sk', {parts = {2, 'unsigned'}})
344365
---
345366
...

test/engine/errinj_ddl.test.lua

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ pad = string.rep('x', 16)
1717
for i = 101, 200 do s:replace{i, pad} end
1818

1919
ch = fiber.channel(1)
20+
ch1 = fiber.channel(1)
2021
test_run:cmd("setopt delimiter ';'")
2122
_ = fiber.create(function()
22-
fiber.sleep(0.01)
23+
ch1:get()
2324
for i = 1, 100 do
2425
s:replace{i, box.NULL}
2526
end
@@ -30,6 +31,7 @@ test_run:cmd("setopt delimiter ''");
3031

3132
format[2].is_nullable = false
3233
errinj.set("ERRINJ_CHECK_FORMAT_DELAY", true)
34+
ch1:put(true)
3335
s:format(format) -- must fail
3436
ch:get()
3537

@@ -116,9 +118,10 @@ pad = string.rep('x', 16)
116118
for i = 101, 200 do s:replace{i, i, pad} end
117119

118120
ch = fiber.channel(1)
121+
ch1 = fiber.channel(1)
119122
test_run:cmd("setopt delimiter ';'")
120123
_ = fiber.create(function()
121-
fiber.sleep(0.01)
124+
ch1:get()
122125
for i = 1, 100 do
123126
s:replace{i}
124127
end
@@ -128,6 +131,7 @@ end);
128131
test_run:cmd("setopt delimiter ''");
129132

130133
errinj.set("ERRINJ_BUILD_INDEX_DELAY", true)
134+
ch1:put(true)
131135
s:create_index('sk', {parts = {2, 'unsigned'}}) -- must fail
132136

133137
ch:get()
@@ -146,9 +150,10 @@ pad = string.rep('x', 16)
146150
for i = 101, 200 do s:replace{i, i, pad} end
147151

148152
ch = fiber.channel(1)
153+
ch1 = fiber.channel(1)
149154
test_run:cmd("setopt delimiter ';'")
150155
_ = fiber.create(function()
151-
fiber.sleep(0.01)
156+
ch1:get()
152157
for i = 1, 100 do
153158
s:replace{i, i + 1}
154159
end
@@ -158,6 +163,7 @@ end);
158163
test_run:cmd("setopt delimiter ''");
159164

160165
errinj.set("ERRINJ_BUILD_INDEX_DELAY", true)
166+
ch1:put(true)
161167
ok, err = pcall(s.create_index, s, 'sk', {parts = {2, 'unsigned'}})
162168
assert(not ok)
163169
assert(tostring(err):find('Duplicate key') ~= nil)

test/engine/suite.ini

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ fragile = {
1717
"conflict.test.lua": {
1818
"issues": [ "gh-5516" ]
1919
},
20-
"errinj_ddl.test.lua": {
21-
"issues": [ "gh-5585" ]
22-
},
2320
"replica_join.test.lua": {
2421
"issues": [ "gh-5504" ]
2522
}

0 commit comments

Comments
 (0)