commit 2b23725a385f878276a23699568e72394b5210a4 from: Sergey Bronnikov via: Sergey Bronnikov date: Thu May 30 17:34:48 2024 UTC tarantool/vinyl: update fibers execution commit - f7516de0ac4c53db6e52fbf8377ef637950a5d97 commit + 2b23725a385f878276a23699568e72394b5210a4 blob - 87816eeceb587591d668d44b037f4f9e42f570d2 blob + c528da1ab5c627cbecde83280e9a5a79a1dbdaa9 --- tarantool-tools/vinyl.lua +++ tarantool-tools/vinyl.lua @@ -536,67 +536,97 @@ end local function main() local spaces = {} + local fibers = {} cleanup() setup(spaces) local f for i = 1, NUM_SP do - f = fiber.create(function() + f = fiber.new(function() log.info('START DML ' .. i) - while true do generate_dml(spaces[i]); fiber.yield() end + local start = os.clock() + while os.clock() - start < TEST_DURATION do + generate_dml(spaces[i]) + fiber.sleep(0.1) + end end) + f:set_joinable(true) f:name('DML_' .. i) + table.insert(fibers, f) end for i = 1, NUM_SP do - f = fiber.create(function() + f = fiber.new(function() log.info('START TX ' .. i) - while true do + local start = os.clock() + while os.clock() - start < TEST_DURATION do local ok, err = pcall(generate_tx, spaces[i]) if ok ~= true then log.info('TX: ' .. err) end - fiber.yield() + fiber.sleep(0.1) end end) + f:set_joinable(true) f:name('TX_' .. i) + table.insert(fibers, f) end for i = 1, NUM_SP do - f = fiber.create(function() + f = fiber.new(function() log.info('START DDL ' .. i) - while true do generate_ddl(spaces[i]); fiber.yield() end + local start = os.clock() + while os.clock() - start < TEST_DURATION do + generate_ddl(spaces[i]) + fiber.sleep(0.1) + end end) + f:set_joinable(true) f:name('DDL_' .. i) + table.insert(fibers, f) end - f = fiber.create(function() - while true do + f = fiber.new(function() + local start = os.clock() + while os.clock() - start < TEST_DURATION do local ok, err = pcall(box.snapshot) if ok ~= true then log.info('BOX SNAPSHOT: ' .. err) - end; fiber.sleep(5) + end; + fiber.sleep(math.random(30, 60)) end end) + f:set_joinable(true) f:name('snapshots') + table.insert(fibers, f) - f = fiber.create(function() - while true do set_err_injection(); fiber.sleep(5) end + f = fiber.new(function() + local start = os.clock() + while os.clock() - start < TEST_DURATION do + set_err_injection() + fiber.sleep(math.random(30, 60)) + end end) + f:set_joinable(true) f:name('ERRINJ') + table.insert(fibers, f) - f = fiber.create(function() - while true do print_stat(spaces); fiber.sleep(5) end + f = fiber.new(function() + local start = os.clock() + while os.clock() - start < TEST_DURATION do + print_stat(spaces) + fiber.sleep(60) + end end) + f:set_joinable(true) f:name('STATS') + table.insert(fibers, f) - local start = os.clock() - while os.clock() - start < TEST_DURATION do - local n = math.random(1, NUM_SP) - generate_dml(spaces[n]) - generate_tx(spaces[n]) - generate_ddl(spaces[n]) + for _, fb in ipairs(fibers) do + local ok, errmsg = fiber.join(fb) + assert(errmsg, nil) + assert(ok, true) end teardown(spaces)