From fd21ba083c47c766e9c7cc1513f8b21b657abab3 Mon Sep 17 00:00:00 2001 From: Michael Filonenko Date: Fri, 14 May 2021 12:18:04 +0300 Subject: [PATCH 1/7] Quantile fiber test --- test/quantile_fiber_test.lua | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 test/quantile_fiber_test.lua diff --git a/test/quantile_fiber_test.lua b/test/quantile_fiber_test.lua new file mode 100644 index 00000000..60ff1373 --- /dev/null +++ b/test/quantile_fiber_test.lua @@ -0,0 +1,28 @@ +local quantile = require('metrics.quantile') +local fiber = require('fiber') + +local t = require('luatest') +local g = t.group('quantile-fiber') + + +local q = quantile.NewTargeted({[0.5]=0.01, [0.9]=0.01, [0.99]=0.01}) + + +g.test_fiber = function() + for i=1,1e6 do quantile.Insert(q, math.random(1)) end + + local fs = {} + for i=1,200 do + local f = fiber.new(function() + for i=1,1e3 do quantile.Insert(q, math.random(1000)) end + end) + f:set_joinable(true) + table.insert(fs, f) + end + + for i=1,1e3 do quantile.Insert(q, math.random(1000)) end + + for _, f in ipairs(fs) do + f:join() + end +end From a01dfa5cca57fa1157974c5be443e7822f71d90b Mon Sep 17 00:00:00 2001 From: Michael Filonenko Date: Fri, 14 May 2021 12:42:19 +0300 Subject: [PATCH 2/7] Add quantile fiber test --- metrics/quantile.lua | 6 ++++-- test/quantile_fiber_test.lua | 17 +---------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/metrics/quantile.lua b/metrics/quantile.lua index cce24e59..87ae6b30 100644 --- a/metrics/quantile.lua +++ b/metrics/quantile.lua @@ -134,8 +134,8 @@ function stream:merge(samples, len) local i = 1 local r = 0 for z = 1, len do - if i % 1000 == 0 then - fiber.yield() + if i % 1000 == 0 then + fiber.yield() end local sample = samples[z-1] for j = i, s.l_len do @@ -259,6 +259,8 @@ end -- Insert inserts v into the stream. function quantile.Insert(stream_obj, v) + assert(stream_obj.b_len < ffi.sizeof(stream_obj.b)/ffi.sizeof('sample'), 'Array index out of bound ' .. stream_obj.b_len .. ' ' .. ffi.sizeof(stream_obj.b)/ffi.sizeof('sample')) + stream_obj.b[stream_obj.b_len] = v stream_obj.b_len = stream_obj.b_len + 1 stream_obj.compress_cnt = stream_obj.compress_cnt + 1 diff --git a/test/quantile_fiber_test.lua b/test/quantile_fiber_test.lua index 60ff1373..016548c0 100644 --- a/test/quantile_fiber_test.lua +++ b/test/quantile_fiber_test.lua @@ -9,20 +9,5 @@ local q = quantile.NewTargeted({[0.5]=0.01, [0.9]=0.01, [0.99]=0.01}) g.test_fiber = function() - for i=1,1e6 do quantile.Insert(q, math.random(1)) end - - local fs = {} - for i=1,200 do - local f = fiber.new(function() - for i=1,1e3 do quantile.Insert(q, math.random(1000)) end - end) - f:set_joinable(true) - table.insert(fs, f) - end - - for i=1,1e3 do quantile.Insert(q, math.random(1000)) end - - for _, f in ipairs(fs) do - f:join() - end + for i=1,1000 do quantile.Insert(q, math.random(1)) end end From 40f2c193030228a874eb5d43c1b2c38d13949f2f Mon Sep 17 00:00:00 2001 From: Michael Filonenko Date: Fri, 14 May 2021 15:31:44 +0300 Subject: [PATCH 3/7] Fix lint --- test/integration/cartridge_role_test.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/integration/cartridge_role_test.lua b/test/integration/cartridge_role_test.lua index 5c61aa1e..1a1467aa 100644 --- a/test/integration/cartridge_role_test.lua +++ b/test/integration/cartridge_role_test.lua @@ -1,9 +1,7 @@ local fio = require('fio') local t = require('luatest') -local yaml = require('yaml') local g = t.group() -local utils = require('test.utils') local helpers = require('test.helper') local function set_export(export) From d823f253c8fd810ce2c7e4c76026557eff797e6a Mon Sep 17 00:00:00 2001 From: Michael Filonenko Date: Fri, 14 May 2021 15:32:39 +0300 Subject: [PATCH 4/7] Revert "Fix lint" This reverts commit 40f2c193030228a874eb5d43c1b2c38d13949f2f. --- test/integration/cartridge_role_test.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/integration/cartridge_role_test.lua b/test/integration/cartridge_role_test.lua index 1a1467aa..5c61aa1e 100644 --- a/test/integration/cartridge_role_test.lua +++ b/test/integration/cartridge_role_test.lua @@ -1,7 +1,9 @@ local fio = require('fio') local t = require('luatest') +local yaml = require('yaml') local g = t.group() +local utils = require('test.utils') local helpers = require('test.helper') local function set_export(export) From d39063e4f8641fece6b00ba759d4282f4a33734b Mon Sep 17 00:00:00 2001 From: Michael Filonenko Date: Fri, 14 May 2021 16:04:22 +0300 Subject: [PATCH 5/7] Make test better --- metrics/quantile.lua | 4 +++- test/quantile_fiber_test.lua | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/metrics/quantile.lua b/metrics/quantile.lua index 87ae6b30..a527ce6b 100644 --- a/metrics/quantile.lua +++ b/metrics/quantile.lua @@ -137,6 +137,8 @@ function stream:merge(samples, len) if i % 1000 == 0 then fiber.yield() end + assert(z - 1 < ffi.sizeof(samples)/ffi.sizeof('sample'), z - 1 .. ' out of bound ' .. tostring(ffi.sizeof(samples)/ffi.sizeof('sample'))) + local sample = samples[z-1] for j = i, s.l_len do local c = s.l[j] @@ -259,7 +261,7 @@ end -- Insert inserts v into the stream. function quantile.Insert(stream_obj, v) - assert(stream_obj.b_len < ffi.sizeof(stream_obj.b)/ffi.sizeof('sample'), 'Array index out of bound ' .. stream_obj.b_len .. ' ' .. ffi.sizeof(stream_obj.b)/ffi.sizeof('sample')) + assert(stream_obj.b_len < ffi.sizeof(stream_obj.b)/ffi.sizeof('double'), 'Array index out of bound ' .. stream_obj.b_len .. ' ' .. ffi.sizeof(stream_obj.b)/ffi.sizeof('double')) stream_obj.b[stream_obj.b_len] = v stream_obj.b_len = stream_obj.b_len + 1 diff --git a/test/quantile_fiber_test.lua b/test/quantile_fiber_test.lua index 016548c0..b8e88c6b 100644 --- a/test/quantile_fiber_test.lua +++ b/test/quantile_fiber_test.lua @@ -4,10 +4,21 @@ local fiber = require('fiber') local t = require('luatest') local g = t.group('quantile-fiber') - local q = quantile.NewTargeted({[0.5]=0.01, [0.9]=0.01, [0.99]=0.01}) - g.test_fiber = function() - for i=1,1000 do quantile.Insert(q, math.random(1)) end + for i=1,1e6 do quantile.Insert(q, math.random(1)) end + + local fs = {} + for i=1,1 do + local f = fiber.new(function() + for i=1,1e4 do quantile.Insert(q, math.random(1000)) end + end) + f:set_joinable(true) + table.insert(fs, f) + end + + for _, f in ipairs(fs) do + f:join() + end end From e2a603fe402ac781eb6f32ca342521902ebfd942 Mon Sep 17 00:00:00 2001 From: Michael Filonenko Date: Fri, 14 May 2021 17:56:38 +0300 Subject: [PATCH 6/7] Fix lint --- metrics/quantile.lua | 2 +- test/quantile_fiber_test.lua | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/metrics/quantile.lua b/metrics/quantile.lua index a527ce6b..dbd70169 100644 --- a/metrics/quantile.lua +++ b/metrics/quantile.lua @@ -137,7 +137,7 @@ function stream:merge(samples, len) if i % 1000 == 0 then fiber.yield() end - assert(z - 1 < ffi.sizeof(samples)/ffi.sizeof('sample'), z - 1 .. ' out of bound ' .. tostring(ffi.sizeof(samples)/ffi.sizeof('sample'))) + assert(z - 1 < ffi.sizeof(samples)/ffi.sizeof('double'), z - 1 .. ' out of bound ' .. tostring(ffi.sizeof(samples)/ffi.sizeof('double'))) local sample = samples[z-1] for j = i, s.l_len do diff --git a/test/quantile_fiber_test.lua b/test/quantile_fiber_test.lua index b8e88c6b..6085ea97 100644 --- a/test/quantile_fiber_test.lua +++ b/test/quantile_fiber_test.lua @@ -10,7 +10,7 @@ g.test_fiber = function() for i=1,1e6 do quantile.Insert(q, math.random(1)) end local fs = {} - for i=1,1 do + for _=1,200 do local f = fiber.new(function() for i=1,1e4 do quantile.Insert(q, math.random(1000)) end end) @@ -18,6 +18,8 @@ g.test_fiber = function() table.insert(fs, f) end + for i=1,1e6 do quantile.Insert(q, math.random(1000)) end + for _, f in ipairs(fs) do f:join() end From 944ce5f537d72c77eda56a8373e21431ee4e1eed Mon Sep 17 00:00:00 2001 From: Michael Filonenko Date: Fri, 14 May 2021 18:06:13 +0300 Subject: [PATCH 7/7] Fix lint --- test/quantile_fiber_test.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/quantile_fiber_test.lua b/test/quantile_fiber_test.lua index 6085ea97..d4484bba 100644 --- a/test/quantile_fiber_test.lua +++ b/test/quantile_fiber_test.lua @@ -7,18 +7,18 @@ local g = t.group('quantile-fiber') local q = quantile.NewTargeted({[0.5]=0.01, [0.9]=0.01, [0.99]=0.01}) g.test_fiber = function() - for i=1,1e6 do quantile.Insert(q, math.random(1)) end + for _=1,1e6 do quantile.Insert(q, math.random(1)) end local fs = {} for _=1,200 do local f = fiber.new(function() - for i=1,1e4 do quantile.Insert(q, math.random(1000)) end + for _=1,1e3 do quantile.Insert(q, math.random(1000)) end end) f:set_joinable(true) table.insert(fs, f) end - for i=1,1e6 do quantile.Insert(q, math.random(1000)) end + for _=1,1e6 do quantile.Insert(q, math.random(1000)) end for _, f in ipairs(fs) do f:join()