From 3e6023bf3bdfa2379e7f0bef611469f3bd795bba Mon Sep 17 00:00:00 2001 From: Oleg Jukovec Date: Mon, 9 Oct 2023 11:47:11 +0300 Subject: [PATCH] fixes --- .github/workflows/test_on_push.yaml | 30 +++++------ .../srv_batch_operations/cartridge_init.lua | 54 +++---------------- test/helper.lua | 8 +++ ...oad_test.lua => cartridge_reload_test.lua} | 0 test/integration/cfg_test.lua | 2 +- test/integration/count_test.lua | 9 ++-- test/integration/ddl_sharding_key_test.lua | 7 +-- test/integration/pairs_readview_test.lua | 2 +- test/integration/pairs_test.lua | 2 +- test/integration/select_readview_test.lua | 9 ++-- test/integration/select_test.lua | 9 ++-- test/integration/stats_test.lua | 2 +- test/performance/perf_test.lua | 4 +- test/unit/sharding_metadata_test.lua | 17 +++++- test/unit/stats_test.lua | 2 +- test/vshard_helpers/instances/router.lua | 7 --- test/vshard_helpers/instances/storage.lua | 4 +- 17 files changed, 70 insertions(+), 98 deletions(-) rename test/integration/{reload_test.lua => cartridge_reload_test.lua} (100%) diff --git a/.github/workflows/test_on_push.yaml b/.github/workflows/test_on_push.yaml index 30ee6b0e..0fa35364 100644 --- a/.github/workflows/test_on_push.yaml +++ b/.github/workflows/test_on_push.yaml @@ -13,6 +13,10 @@ jobs: matrix: # We need 1.10.6 here to check that module works with # old Tarantool versions that don't have "tuple-keydef"/"tuple-merger" support. + # We test old metrics with Tarantool 2.10 because since Tarantool 2.11.1 + # it uses its own metrics package. + # We test old metrics with Cartridge 2.7.9 because since 2.8.0 it + # requires metrics 1.0.0. tarantool-version: ["1.10.6", "1.10", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "2.8", "2.10", "2.11"] metrics-version: [""] cartridge-version: ["2.8.0"] @@ -24,12 +28,12 @@ jobs: - tarantool-version: "2.7" remove-merger: true cartridge-version: "2.8.0" - - tarantool-version: "2.11" + - tarantool-version: "2.10" metrics-version: "0.1.8" - cartridge-version: "2.8.0" - - tarantool-version: "2.11" + cartridge-version: "2.7.9" + - tarantool-version: "2.10" metrics-version: "0.10.0" - cartridge-version: "2.8.0" + cartridge-version: "2.7.9" - tarantool-version: "2.11" coveralls: true metrics-version: "1.0.0" @@ -97,13 +101,8 @@ jobs: CARTRIDGE_VERSION: ${{ matrix.cartridge-version }} VSHARD_VERSION: ${{ matrix.vshard-version }} - # There is unable to install metrics with tt for Tarantool 2.11 - - name: Install metrics with tarantoolctl - if: matrix.metrics-version != '' && matrix.tarantool-version == '2.11' - run: tarantoolctl rocks install metrics ${{ matrix.metrics-version }} - - - name: Install metrics with tt - if: matrix.metrics-version != '' && matrix.tarantool-version != '2.11' + - name: Install metrics + if: matrix.metrics-version != '' run: tt rocks install metrics ${{ matrix.metrics-version }} - name: Remove external merger if needed @@ -189,13 +188,8 @@ jobs: CARTRIDGE_VERSION: ${{ matrix.cartridge-version }} VSHARD_VERSION: ${{ matrix.vshard-version }} - # There is unable to install metrics with tt for Tarantool 2.11 - - name: Install metrics with tarantoolctl - if: matrix.metrics-version != '' && matrix.tarantool-version == '2.11' - run: tarantoolctl rocks install metrics ${{ matrix.metrics-version }} - - - name: Install metrics with tt - if: matrix.metrics-version != '' && matrix.tarantool-version != '2.11' + - name: Install metrics + if: matrix.metrics-version != '' run: tt rocks install metrics ${{ matrix.metrics-version }} # This server starts and listen on 8084 port that is used for tests diff --git a/test/entrypoint/srv_batch_operations/cartridge_init.lua b/test/entrypoint/srv_batch_operations/cartridge_init.lua index c95ae749..a5bb8d62 100755 --- a/test/entrypoint/srv_batch_operations/cartridge_init.lua +++ b/test/entrypoint/srv_batch_operations/cartridge_init.lua @@ -7,56 +7,16 @@ local log = require('log') local errors = require('errors') local cartridge = require('cartridge') +if package.setsearchroot ~= nil then + package.setsearchroot() +else + package.path = package.path .. debug.sourcedir() .. "/?.lua;" +end + package.preload['customers-storage'] = function() return { role_name = 'customers-storage', - init = function() - local engine = os.getenv('ENGINE') or 'memtx' - local customers_space = box.schema.space.create('customers', { - format = { - {name = 'id', type = 'unsigned'}, - {name = 'bucket_id', type = 'unsigned'}, - {name = 'name', type = 'string'}, - {name = 'age', type = 'number'}, - }, - if_not_exists = true, - engine = engine, - }) - customers_space:create_index('id', { - parts = { {field = 'id'} }, - if_not_exists = true, - }) - customers_space:create_index('bucket_id', { - parts = { {field = 'bucket_id'} }, - unique = false, - if_not_exists = true, - }) - - local developers_space = box.schema.space.create('developers', { - format = { - {name = 'id', type = 'unsigned'}, - {name = 'bucket_id', type = 'unsigned'}, - {name = 'name', type = 'string'}, - {name = 'login', type = 'string'}, - }, - if_not_exists = true, - engine = engine, - }) - developers_space:create_index('id', { - parts = { {field = 'id'} }, - if_not_exists = true, - }) - developers_space:create_index('bucket_id', { - parts = { {field = 'bucket_id'} }, - unique = false, - if_not_exists = true, - }) - developers_space:create_index('login', { - parts = { {field = 'login'} }, - unique = true, - if_not_exists = true, - }) - end, + init = require('storage_init'), } end diff --git a/test/helper.lua b/test/helper.lua index d7d4d3cf..94a8daed 100644 --- a/test/helper.lua +++ b/test/helper.lua @@ -746,6 +746,14 @@ function helpers.stop_cluster(cluster, backend) end end +function helpers.get_router(cluster, backend) + if backend == helpers.backend.CARTRIDGE then + return cluster:server('router') + elseif backend == helpers.backend.VSHARD then + return cluster.main_server + end +end + function helpers.backend_matrix(base_matrix) base_matrix = base_matrix or {{}} local backends = {helpers.backend.VSHARD, helpers.backend.CARTRIDGE} diff --git a/test/integration/reload_test.lua b/test/integration/cartridge_reload_test.lua similarity index 100% rename from test/integration/reload_test.lua rename to test/integration/cartridge_reload_test.lua diff --git a/test/integration/cfg_test.lua b/test/integration/cfg_test.lua index cf1a40b9..7f6f57e8 100644 --- a/test/integration/cfg_test.lua +++ b/test/integration/cfg_test.lua @@ -8,7 +8,7 @@ local group = t.group('cfg', helpers.backend_matrix()) group.before_all(function(g) helpers.start_default_cluster(g, 'srv_stats') - g.router = g.cluster.main_server + g.router = helpers.get_router(g.cluster, g.params.backend) end) group.after_all(function(g) diff --git a/test/integration/count_test.lua b/test/integration/count_test.lua index 914a42f5..d82367d6 100644 --- a/test/integration/count_test.lua +++ b/test/integration/count_test.lua @@ -12,10 +12,11 @@ local pgroup = t.group('count', helpers.backend_matrix({ pgroup.before_all(function(g) helpers.start_default_cluster(g, 'srv_select') - g.cluster.main_server.net_box:eval([[ + g.router = helpers.get_router(g.cluster, g.params.backend) + g.router.net_box:eval([[ require('crud').cfg{ stats = true } ]]) - g.cluster.main_server.net_box:eval([[ + g.router.net_box:eval([[ require('crud.ratelimit').disable() ]]) end) @@ -138,7 +139,7 @@ for name, case in pairs(count_safety_cases) do pgroup[test_name] = function(g) local uc = case.user_conditions local opts = case.opts - local captured, err = helpers.get_command_log(g.cluster.main_server, + local captured, err = helpers.get_command_log(g.router, g.params.backend, 'crud.count', {space, uc, opts}) t.assert_equals(err, nil) @@ -641,7 +642,7 @@ pgroup.test_count_no_map_reduce = function(g) }, }) - local router = g.cluster.main_server.net_box + local router = g.router.net_box local map_reduces_before = helpers.get_map_reduces_stat(router, 'customers') -- Case: no conditions, just bucket id. diff --git a/test/integration/ddl_sharding_key_test.lua b/test/integration/ddl_sharding_key_test.lua index 91034257..b12833a9 100644 --- a/test/integration/ddl_sharding_key_test.lua +++ b/test/integration/ddl_sharding_key_test.lua @@ -26,7 +26,8 @@ pgroup.before_all(function(g) t.assert_equals(type(result), 'table') t.assert_equals(err, nil) - g.cluster.main_server.net_box:eval([[ + g.router = helpers.get_router(g.cluster, g.params.backend) + g.router.net_box:eval([[ require('crud').cfg{ stats = true } ]]) end) @@ -556,7 +557,7 @@ for name, case in pairs(cases) do pgroup[('test_%s_wont_lead_to_map_reduce'):format(name)] = function(g) case.prepare_data(g, case.space_name) - local router = g.cluster.main_server.net_box + local router = g.router.net_box local map_reduces_before = helpers.get_map_reduces_stat(router, case.space_name) local result, err = router:call('crud.select', { @@ -576,7 +577,7 @@ pgroup.test_select_for_part_of_sharding_key_will_lead_to_map_reduce = function(g local space_name = 'customers_name_age_key_different_indexes' prepare_data_name_age_sharding_key(g, space_name) - local router = g.cluster.main_server.net_box + local router = g.router.net_box local map_reduces_before = helpers.get_map_reduces_stat(router, space_name) local result, err = router:call('crud.select', { diff --git a/test/integration/pairs_readview_test.lua b/test/integration/pairs_readview_test.lua index 8f2a2a4e..f3bb7085 100644 --- a/test/integration/pairs_readview_test.lua +++ b/test/integration/pairs_readview_test.lua @@ -829,7 +829,7 @@ pgroup.test_pairs_no_map_reduce = function(g) table.sort(customers, function(obj1, obj2) return obj1.id < obj2.id end) - local router = g.cluster.main_server.net_box + local router = helpers.get_router(g.cluster, g.params.backend).net_box local map_reduces_before = helpers.get_map_reduces_stat(router, 'customers') -- Case: no conditions, just bucket id. diff --git a/test/integration/pairs_test.lua b/test/integration/pairs_test.lua index 2095a5d0..8585f091 100644 --- a/test/integration/pairs_test.lua +++ b/test/integration/pairs_test.lua @@ -828,7 +828,7 @@ pgroup.test_pairs_no_map_reduce = function(g) table.sort(customers, function(obj1, obj2) return obj1.id < obj2.id end) - local router = g.cluster.main_server.net_box + local router = helpers.get_router(g.cluster, g.params.backend).net_box local map_reduces_before = helpers.get_map_reduces_stat(router, 'customers') -- Case: no conditions, just bucket id. diff --git a/test/integration/select_readview_test.lua b/test/integration/select_readview_test.lua index 7578c9b0..34473409 100644 --- a/test/integration/select_readview_test.lua +++ b/test/integration/select_readview_test.lua @@ -17,10 +17,11 @@ local function init_cluster(g) g.space_format = g.cluster.servers[2].net_box.space.customers:format() - g.cluster.main_server.net_box:eval([[ + g.router = helpers.get_router(g.cluster, g.params.backend) + g.router.net_box:eval([[ require('crud').cfg{ stats = true } ]]) - g.cluster.main_server.net_box:eval([[ + g.router.net_box:eval([[ require('crud.ratelimit').disable() ]]) end @@ -2205,7 +2206,7 @@ pgroup.test_select_no_map_reduce = function(g) table.sort(customers, function(obj1, obj2) return obj1.id < obj2.id end) - local router = g.cluster.main_server.net_box + local router = g.router.net_box local map_reduces_before = helpers.get_map_reduces_stat(router, 'customers') -- Case: no conditions, just bucket id. @@ -2383,6 +2384,7 @@ pgroup.test_select_switch_master = function(g) end +-- TODO: https://github.com/tarantool/crud/issues/383 pgroup.test_select_switch_master_first = function(g) helpers.skip_not_cartridge_backend(g.params.backend) @@ -2438,6 +2440,7 @@ pgroup.test_select_switch_master_first = function(g) end +-- TODO: https://github.com/tarantool/crud/issues/383 pgroup.test_select_closed_readview = function(g) helpers.insert_objects(g, 'customers', { { diff --git a/test/integration/select_test.lua b/test/integration/select_test.lua index 66aa226e..09900b3b 100644 --- a/test/integration/select_test.lua +++ b/test/integration/select_test.lua @@ -15,10 +15,11 @@ pgroup.before_all(function(g) g.space_format = g.cluster.servers[2].net_box.space.customers:format() - g.cluster.main_server.net_box:eval([[ + g.router = helpers.get_router(g.cluster, g.params.backend) + g.router.net_box:eval([[ require('crud').cfg{ stats = true } ]]) - g.cluster.main_server.net_box:eval([[ + g.router.net_box:eval([[ require('crud.ratelimit').disable() ]]) end) @@ -158,7 +159,7 @@ for name, case in pairs(select_safety_cases) do opts.after = crud_utils.flatten(after_tuple, g.space_format) end - local captured, err = helpers.get_command_log(g.cluster.main_server, + local captured, err = helpers.get_command_log(g.router, g.params.backend, 'crud.select', {space, uc, opts}) t.assert_equals(err, nil) @@ -1873,7 +1874,7 @@ pgroup.test_select_no_map_reduce = function(g) table.sort(customers, function(obj1, obj2) return obj1.id < obj2.id end) - local router = g.cluster.main_server.net_box + local router = g.router.net_box local map_reduces_before = helpers.get_map_reduces_stat(router, 'customers') -- Case: no conditions, just bucket id. diff --git a/test/integration/stats_test.lua b/test/integration/stats_test.lua index dab00b52..c54ff47c 100644 --- a/test/integration/stats_test.lua +++ b/test/integration/stats_test.lua @@ -35,7 +35,7 @@ local new_space_name = 'newspace' local function before_all(g) helpers.start_default_cluster(g, 'srv_stats') - g.router = g.cluster.main_server.net_box + g.router = helpers.get_router(g.cluster, g.params.backend).net_box if g.params.args.driver == 'metrics' then local is_metrics_supported = g.router:eval([[ return require('crud.stats.metrics_registry').is_supported() diff --git a/test/performance/perf_test.lua b/test/performance/perf_test.lua index c5e281cd..aa01647f 100644 --- a/test/performance/perf_test.lua +++ b/test/performance/perf_test.lua @@ -109,7 +109,7 @@ g.before_all(function(g) helpers.start_cluster(g, cartridge_cfg_template, vshard_cfg_template) - g.router = g.cluster.main_server.net_box + g.router = helpers.get_router(g.cluster, g.params.backend).net_box g.router:eval([[ rawset(_G, 'crud', require('crud')) @@ -1143,7 +1143,7 @@ for name, case in pairs(cases) do local connections = {} - local router = g.cluster.main_server + local router = helpers.get_router(g.cluster, g.params.backend) for _ = 1, params.connection_count do local c = net_box:connect(router.net_box_uri, router.net_box_credentials) if c == nil then diff --git a/test/unit/sharding_metadata_test.lua b/test/unit/sharding_metadata_test.lua index ad321d1e..be2ce2a3 100644 --- a/test/unit/sharding_metadata_test.lua +++ b/test/unit/sharding_metadata_test.lua @@ -45,14 +45,27 @@ g.before_each(function() box.schema.space.create('fetch_on_storage') end) +-- Since Tarantool 3.0 triggers still live after a space drop. To properly +-- clean up for the unit tests we need to remove all triggers from +-- the space. This is necessary because `crud` adds its own triggers to the +-- `ddl` spaces. +-- +-- In practice `ddl` does not drop this spaces so it is the tests problem. +local function drop_ddl_space(space) + for _, t in pairs(space:on_replace()) do + space:on_replace(nil, t) + end + space:drop() +end + g.after_each(function() -- Cleanup. if box.space._ddl_sharding_key ~= nil then - box.space._ddl_sharding_key:drop() + drop_ddl_space(box.space._ddl_sharding_key) end if box.space._ddl_sharding_func ~= nil then - box.space._ddl_sharding_func:drop() + drop_ddl_space(box.space._ddl_sharding_func) end box.space.fetch_on_storage:drop() diff --git a/test/unit/stats_test.lua b/test/unit/stats_test.lua index e7ec3923..a66bf8ad 100644 --- a/test/unit/stats_test.lua +++ b/test/unit/stats_test.lua @@ -18,7 +18,7 @@ local space_name = 'customers' local function before_all(g) helpers.start_default_cluster(g, 'srv_stats') - g.router = g.cluster.main_server.net_box + g.router = helpers.get_router(g.cluster, g.params.backend).net_box helpers.prepare_simple_functions(g.router) g.router:eval("stats_module = require('crud.stats')") diff --git a/test/vshard_helpers/instances/router.lua b/test/vshard_helpers/instances/router.lua index 8643ca9b..c92c25a7 100755 --- a/test/vshard_helpers/instances/router.lua +++ b/test/vshard_helpers/instances/router.lua @@ -16,13 +16,6 @@ end local utils = require('test.vshard_helpers.instances.utils') --- Do not load entire vshard into the global namespace to catch errors when --- code relies on that. -_G.vshard = { - router = require('vshard.router'), -} -_G.ivshard = _G.vshard - -- Somewhy shutdown hangs on new Tarantools even though the nodes do not seem to -- have any long requests running. if box.ctl.set_on_shutdown_timeout then diff --git a/test/vshard_helpers/instances/storage.lua b/test/vshard_helpers/instances/storage.lua index 8eeec373..175bbda8 100644 --- a/test/vshard_helpers/instances/storage.lua +++ b/test/vshard_helpers/instances/storage.lua @@ -16,12 +16,10 @@ end local utils = require('test.vshard_helpers.instances.utils') --- Do not load entire vshard into the global namespace to catch errors when --- code relies on that. +-- It is not necessary in fact, but simplify `callrw` calls in tests. _G.vshard = { storage = require('vshard.storage'), } -_G.ivshard = _G.vshard -- Somewhy shutdown hangs on new Tarantools even though the nodes do not seem to -- have any long requests running.