mirror of
https://github.com/neovim/neovim.git
synced 2025-12-03 15:33:03 +00:00
test: share implementation of testdir/load.vim
Also, don't compute load factor unless load_adjust() was called, it slows down the test suite. ref #9292
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
" Also used by: test/functional/helpers.lua
|
||||||
|
|
||||||
function! s:load_factor() abort
|
function! s:load_factor() abort
|
||||||
let timeout = 200
|
let timeout = 200
|
||||||
let times = []
|
let times = []
|
||||||
@@ -23,8 +25,8 @@ function! s:load_factor() abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Compute load factor only once.
|
" Compute load factor only once.
|
||||||
let s:load_factor = s:load_factor()
|
let g:test_load_factor = s:load_factor()
|
||||||
|
|
||||||
function! LoadAdjust(num) abort
|
function! LoadAdjust(num) abort
|
||||||
return float2nr(ceil(a:num * s:load_factor))
|
return float2nr(ceil(a:num * g:test_load_factor))
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -15,17 +15,13 @@ func MyHandlerWithLists(lists, timer)
|
|||||||
let x = string(a:lists)
|
let x = string(a:lists)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func s:assert_inrange(lower, upper, actual)
|
|
||||||
return assert_inrange(a:lower, LoadAdjust(a:upper), a:actual)
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
func Test_oneshot()
|
func Test_oneshot()
|
||||||
let g:val = 0
|
let g:val = 0
|
||||||
let timer = timer_start(50, 'MyHandler')
|
let timer = timer_start(50, 'MyHandler')
|
||||||
let slept = WaitFor('g:val == 1')
|
let slept = WaitFor('g:val == 1')
|
||||||
call assert_equal(1, g:val)
|
call assert_equal(1, g:val)
|
||||||
if has('reltime')
|
if has('reltime')
|
||||||
call s:assert_inrange(40, 120, slept)
|
call assert_inrange(40, LoadAdjust(120), slept)
|
||||||
else
|
else
|
||||||
call assert_inrange(20, 120, slept)
|
call assert_inrange(20, 120, slept)
|
||||||
endif
|
endif
|
||||||
@@ -37,7 +33,7 @@ func Test_repeat_three()
|
|||||||
let slept = WaitFor('g:val == 3')
|
let slept = WaitFor('g:val == 3')
|
||||||
call assert_equal(3, g:val)
|
call assert_equal(3, g:val)
|
||||||
if has('reltime')
|
if has('reltime')
|
||||||
call s:assert_inrange(120, 250, slept)
|
call assert_inrange(120, LoadAdjust(250), slept)
|
||||||
else
|
else
|
||||||
call assert_inrange(80, 200, slept)
|
call assert_inrange(80, 200, slept)
|
||||||
endif
|
endif
|
||||||
@@ -52,7 +48,7 @@ func Test_repeat_many()
|
|||||||
endif
|
endif
|
||||||
sleep 200m
|
sleep 200m
|
||||||
call timer_stop(timer)
|
call timer_stop(timer)
|
||||||
call s:assert_inrange((has('mac') ? 1 : 2), 4, g:val)
|
call assert_inrange((has('mac') ? 1 : 2), LoadAdjust(4), g:val)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
func Test_with_partial_callback()
|
func Test_with_partial_callback()
|
||||||
@@ -66,7 +62,7 @@ func Test_with_partial_callback()
|
|||||||
let slept = WaitFor('g:val == 1')
|
let slept = WaitFor('g:val == 1')
|
||||||
call assert_equal(1, g:val)
|
call assert_equal(1, g:val)
|
||||||
if has('reltime')
|
if has('reltime')
|
||||||
call s:assert_inrange(40, 130, slept)
|
call assert_inrange(40, LoadAdjust(130), slept)
|
||||||
else
|
else
|
||||||
call assert_inrange(20, 100, slept)
|
call assert_inrange(20, 100, slept)
|
||||||
endif
|
endif
|
||||||
@@ -129,7 +125,7 @@ func Test_paused()
|
|||||||
let slept = WaitFor('g:val == 1')
|
let slept = WaitFor('g:val == 1')
|
||||||
call assert_equal(1, g:val)
|
call assert_equal(1, g:val)
|
||||||
if has('reltime')
|
if has('reltime')
|
||||||
call s:assert_inrange(0, 140, slept)
|
call assert_inrange(0, LoadAdjust(140), slept)
|
||||||
else
|
else
|
||||||
call assert_inrange(0, 10, slept)
|
call assert_inrange(0, 10, slept)
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -739,41 +739,14 @@ local function alter_slashes(obj)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function compute_load_factor()
|
|
||||||
local timeout = 200
|
|
||||||
local times = {}
|
|
||||||
|
|
||||||
clear()
|
|
||||||
|
|
||||||
for _ = 1, 5 do
|
|
||||||
source([[
|
|
||||||
let g:val = 0
|
|
||||||
call timer_start(200, {-> nvim_set_var('val', 1)})
|
|
||||||
let start = reltime()
|
|
||||||
while 1
|
|
||||||
sleep 10m
|
|
||||||
if g:val == 1
|
|
||||||
let g:waited_in_ms = float2nr(reltimefloat(reltime(start)) * 1000)
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
endwhile
|
|
||||||
]])
|
|
||||||
table.insert(times, nvim_eval('g:waited_in_ms'))
|
|
||||||
end
|
|
||||||
|
|
||||||
session:close()
|
|
||||||
session = nil
|
|
||||||
|
|
||||||
local longest = math.max(unpack(times))
|
|
||||||
local factor = (longest + 50.0) / timeout
|
|
||||||
|
|
||||||
return factor
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Compute load factor only once.
|
|
||||||
local load_factor = compute_load_factor()
|
|
||||||
|
|
||||||
|
local load_factor = nil
|
||||||
local function load_adjust(num)
|
local function load_adjust(num)
|
||||||
|
if load_factor == nil then -- Compute load factor only once.
|
||||||
|
clear()
|
||||||
|
request('nvim_command', 'source src/nvim/testdir/load.vim')
|
||||||
|
load_factor = request('nvim_eval', 'g:test_load_factor')
|
||||||
|
end
|
||||||
return math.ceil(num * load_factor)
|
return math.ceil(num * load_factor)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user