diff --git a/CHANGELOG.md b/CHANGELOG.md index 29b390ea..bcab28ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. * replace * upsert +### Changed + +* `checks` is disabled for internal functions by default + ## [0.1.0] - 2020-09-23 ### Added diff --git a/crud-scm-1.rockspec b/crud-scm-1.rockspec index 15b713d3..39dba507 100644 --- a/crud-scm-1.rockspec +++ b/crud-scm-1.rockspec @@ -8,7 +8,7 @@ source = { dependencies = { 'tarantool', 'lua >= 5.1', - 'checks == 3.0.1-1', + 'checks == 3.1.0-1', 'errors == 2.1.3-1', 'vshard == 0.1.16-1', } diff --git a/crud/common/call.lua b/crud/common/call.lua index 19a95bc7..2c16e51c 100644 --- a/crud/common/call.lua +++ b/crud/common/call.lua @@ -1,8 +1,8 @@ -local checks = require('checks') local fiber = require('fiber') local vshard = require('vshard') local errors = require('errors') +local dev_checks = require('crud.common.dev_checks') local registry = require('crud.common.registry') local utils = require('crud.common.utils') @@ -23,7 +23,7 @@ local DEFAULT_VSHARD_CALL_TIMEOUT = 2 -- function call.init() local function call(opts) - checks({ + dev_checks({ func_name = 'string', func_args = '?table', }) @@ -63,7 +63,7 @@ local function call_on_replicaset(replicaset, channel, vshard_call, func_name, f end local function call_impl(vshard_call, func_name, func_args, opts) - checks('string', 'string', '?table', { + dev_checks('string', 'string', '?table', { timeout = '?number', replicasets = '?table', }) diff --git a/crud/common/checkers.lua b/crud/common/checkers.lua deleted file mode 100644 index 4881a427..00000000 --- a/crud/common/checkers.lua +++ /dev/null @@ -1,46 +0,0 @@ -require('checks') - -function _G.checkers.funcs_map(p) - if type(p) ~= 'table' then - return false - end - - for func_name, func in pairs(p) do - if type(func_name) ~= 'string' then return false end - if type(func) ~= 'function' then return false end - end - - return true -end - -function _G.checkers.strings_array(p) - if type(p) ~= 'table' then - return false - end - - for i, str in pairs(p) do - if type(i) ~= 'number' then return false end - if type(str) ~= 'string' then return false end - end - - return true -end - -function _G.checkers.update_operations(p) - if type(p) ~= 'table' then - return false - end - - for i, operation in pairs(p) do - if type(i) ~= 'number' then return false end - if type(operation) ~= 'table' then return false end - if #operation ~= 3 then return false end - - if type(operation[1]) ~= 'string' then return false end - if type(operation[2]) ~= 'number' and type(operation[2]) ~= 'string' then - return false - end - end - - return true -end diff --git a/crud/common/dev_checks.lua b/crud/common/dev_checks.lua new file mode 100644 index 00000000..334457e8 --- /dev/null +++ b/crud/common/dev_checks.lua @@ -0,0 +1,9 @@ +local checks = require('checks') + +local dev_checks = function() end + +if os.getenv('DEV') == 'ON' then + dev_checks = checks +end + +return dev_checks diff --git a/crud/common/heap.lua b/crud/common/heap.lua index 6ec66047..4427642c 100644 --- a/crud/common/heap.lua +++ b/crud/common/heap.lua @@ -1,12 +1,10 @@ -local checks = require('checks') - -require('crud.common.checkers') +local dev_checks = require('crud.common.dev_checks') local Heap = {} Heap.__index = Heap function Heap.new(opts) - checks({ + dev_checks({ comparator = 'function', }) @@ -45,7 +43,7 @@ function Heap:_ok(child_idx, parent_idx) end function Heap:add(obj, meta) - checks('table', '?', '?') + dev_checks('table', '?', '?') local node = { obj = obj, diff --git a/crud/common/registry.lua b/crud/common/registry.lua index 5301e469..6beb7cbb 100644 --- a/crud/common/registry.lua +++ b/crud/common/registry.lua @@ -1,8 +1,5 @@ -local checks = require('checks') local errors = require('errors') -require('crud.common.checkers') - local registry = {} local registered_funcs = {} @@ -17,8 +14,6 @@ local RegisterError = errors.new_class('Register') -- Should be passed as a {string: function} map. -- function registry.add(funcs) - checks('funcs_map') - for func_name in pairs(funcs) do if registry.is_registered(func_name) then return nil, RegisterError:new("Function %s is already registered", func_name) diff --git a/crud/common/utils.lua b/crud/common/utils.lua index 8c06c8c9..8c94b3a1 100644 --- a/crud/common/utils.lua +++ b/crud/common/utils.lua @@ -1,6 +1,7 @@ -local checks = require('checks') local errors = require('errors') +local dev_checks = require('crud.common.dev_checks') + local FlattenError = errors.new_class("FlattenError", {capture_stack = false}) local UnflattenError = errors.new_class("UnflattenError", {capture_stack = false}) local ParseOperationsError = errors.new_class('ParseOperationsError', {capture_stack = false}) @@ -8,7 +9,7 @@ local ParseOperationsError = errors.new_class('ParseOperationsError', {capture_ local utils = {} function utils.table_count(table) - checks("table") + dev_checks("table") local cnt = 0 for _, _ in pairs(table) do @@ -19,7 +20,7 @@ function utils.table_count(table) end function utils.format_replicaset_error(replicaset_uuid, msg, ...) - checks("string", "string") + dev_checks("string", "string") return string.format( "Failed for %s: %s", diff --git a/crud/delete.lua b/crud/delete.lua index ad353bfc..83df7e7b 100644 --- a/crud/delete.lua +++ b/crud/delete.lua @@ -5,6 +5,7 @@ local vshard = require('vshard') local call = require('crud.common.call') local registry = require('crud.common.registry') local utils = require('crud.common.utils') +local dev_checks = require('crud.common.dev_checks') local DeleteError = errors.new_class('Delete', {capture_stack = false}) @@ -13,7 +14,7 @@ local delete = {} local DELETE_FUNC_NAME = '__delete' local function call_delete_on_storage(space_name, key) - checks('string', '?') + dev_checks('string', '?') local space = box.space[space_name] if space == nil then diff --git a/crud/get.lua b/crud/get.lua index a0311909..d1f43706 100644 --- a/crud/get.lua +++ b/crud/get.lua @@ -5,6 +5,7 @@ local vshard = require('vshard') local call = require('crud.common.call') local registry = require('crud.common.registry') local utils = require('crud.common.utils') +local dev_checks = require('crud.common.dev_checks') local GetError = errors.new_class('Get', {capture_stack = false}) @@ -13,7 +14,7 @@ local get = {} local GET_FUNC_NAME = '__get' local function call_get_on_storage(space_name, key) - checks('string', '?') + dev_checks('string', '?') local space = box.space[space_name] if space == nil then diff --git a/crud/insert.lua b/crud/insert.lua index c79a00bd..ad7b3b5e 100644 --- a/crud/insert.lua +++ b/crud/insert.lua @@ -5,8 +5,7 @@ local vshard = require('vshard') local call = require('crud.common.call') local registry = require('crud.common.registry') local utils = require('crud.common.utils') - -require('crud.common.checkers') +local dev_checks = require('crud.common.dev_checks') local InsertError = errors.new_class('Insert', {capture_stack = false}) @@ -15,7 +14,7 @@ local insert = {} local INSERT_FUNC_NAME = '__insert' local function call_insert_on_storage(space_name, tuple) - checks('string', 'table') + dev_checks('string', 'table') local space = box.space[space_name] if space == nil then diff --git a/crud/replace.lua b/crud/replace.lua index 9f830288..b151e5f1 100644 --- a/crud/replace.lua +++ b/crud/replace.lua @@ -5,8 +5,7 @@ local vshard = require('vshard') local call = require('crud.common.call') local registry = require('crud.common.registry') local utils = require('crud.common.utils') - -require('crud.common.checkers') +local dev_checks = require('crud.common.dev_checks') local ReplaceError = errors.new_class('Replace', { capture_stack = false }) @@ -15,7 +14,7 @@ local replace = {} local REPLACE_FUNC_NAME = '__replace' local function call_replace_on_storage(space_name, tuple) - checks('string', 'table') + dev_checks('string', 'table') local space = box.space[space_name] if space == nil then diff --git a/crud/select.lua b/crud/select.lua index b1cdd4ae..2585b3e5 100644 --- a/crud/select.lua +++ b/crud/select.lua @@ -5,6 +5,7 @@ local vshard = require('vshard') local call = require('crud.common.call') local registry = require('crud.common.registry') local utils = require('crud.common.utils') +local dev_checks = require('crud.common.dev_checks') local select_conditions = require('crud.select.conditions') local select_plan = require('crud.select.plan') @@ -14,8 +15,6 @@ local select_filters = require('crud.select.filters') local Iterator = require('crud.select.iterator') -require('crud.common.checkers') - local SelectError = errors.new_class('SelectError') local GetReplicasetsError = errors.new_class('GetReplicasetsError') @@ -26,7 +25,7 @@ local SELECT_FUNC_NAME = '__select' local DEFAULT_BATCH_SIZE = 100 local function call_select_on_storage(space_name, index_id, conditions, opts) - checks('string', 'number', '?table', { + dev_checks('string', 'number', '?table', { scan_value = 'table', after_tuple = '?table', iter = 'number', @@ -73,7 +72,7 @@ function select_module.init() end local function select_iteration(space_name, plan, opts) - checks('string', '?table', { + dev_checks('string', '?table', { after_tuple = '?table', replicasets = 'table', timeout = '?number', @@ -118,8 +117,8 @@ local function get_replicasets_by_sharding_key(sharding_key) end local function build_select_iterator(space_name, user_conditions, opts) - checks('string', '?table', { - after = '?', + dev_checks('string', '?table', { + after = '?table', limit = '?number', timeout = '?number', batch_size = '?number', @@ -205,7 +204,7 @@ end function select_module.pairs(space_name, user_conditions, opts) checks('string', '?table', { - after = '?', + after = '?table', limit = '?number', timeout = '?number', batch_size = '?number', @@ -242,7 +241,7 @@ end function select_module.call(space_name, user_conditions, opts) checks('string', '?table', { - after = '?', + after = '?table', limit = '?number', timeout = '?number', batch_size = '?number', diff --git a/crud/select/conditions.lua b/crud/select/conditions.lua index 55973355..17396b6c 100644 --- a/crud/select/conditions.lua +++ b/crud/select/conditions.lua @@ -1,6 +1,7 @@ -local checks = require('checks') local errors = require('errors') +local dev_checks = require('crud.common.dev_checks') + local ParseConditionError = errors.new_class('ParseConditionError') local conditions = {} @@ -22,19 +23,10 @@ local tarantool_iter_by_cond_operators = { [conditions.operators.GE] = box.index.GE, } -function _G.checkers.condition_operator(p) - for _, op in pairs(conditions.operators) do - if op == p then - return true - end - end - return false -end - local function new_condition(opts) - checks({ - operator = 'condition_operator', - operand = 'string|strings_array', + dev_checks({ + operator = 'string', + operand = 'string|table', values = '?', }) @@ -67,7 +59,7 @@ local cond_operators_by_func_names = { for func_name, operator in pairs(cond_operators_by_func_names) do assert(operator ~= nil) conditions.funcs[func_name] = function(operand, values) - checks('string|strings_array', '?') + dev_checks('string|table', '?') return new_condition({ operator = operator, operand = operand, diff --git a/crud/select/executor.lua b/crud/select/executor.lua index c7045b38..eaa5008b 100644 --- a/crud/select/executor.lua +++ b/crud/select/executor.lua @@ -1,7 +1,7 @@ -local checks = require('checks') local errors = require('errors') local log = require('log') +local dev_checks = require('crud.common.dev_checks') local select_comparators = require('crud.select.comparators') local utils = require('crud.common.utils') @@ -37,9 +37,9 @@ local function scroll_to_after_tuple(gen, space, scan_index, iter, after_tuple) end function executor.execute(space, index, filter_func, opts) - checks('table', 'table', 'function', { + dev_checks('table', 'table', 'function', { scan_value = 'table', - after_tuple = '?cdata|table', + after_tuple = '?table', iter = 'number', limit = '?number', }) diff --git a/crud/select/filters.lua b/crud/select/filters.lua index 86e517b1..88020baa 100644 --- a/crud/select/filters.lua +++ b/crud/select/filters.lua @@ -1,13 +1,13 @@ -local checks = require('checks') local json = require('json') local errors = require('errors') -local ParseConditionsError = errors.new_class('ParseConditionsError', {capture_stack = false}) -local GenFiltersError = errors.new_class('GenFiltersError', {capture_stack = false}) - +local dev_checks = require('crud.common.dev_checks') local collations = require('crud.common.collations') local select_conditions = require('crud.select.conditions') +local ParseConditionsError = errors.new_class('ParseConditionsError', {capture_stack = false}) +local GenFiltersError = errors.new_class('GenFiltersError', {capture_stack = false}) + local filters = {} --[[ @@ -104,7 +104,7 @@ local function get_index_by_name(space_indexes, index_name) end local function parse(space, conditions, opts) - checks('table', '?table', { + dev_checks('table', '?table', { scan_condition_num = '?number', iter = 'number', }) @@ -585,7 +585,7 @@ local function compile(filter_code) end function filters.gen_func(space, conditions, opts) - checks('table', '?table', { + dev_checks('table', '?table', { iter = 'number', scan_condition_num = '?number', }) diff --git a/crud/select/iterator.lua b/crud/select/iterator.lua index ace0e73f..7fb3309e 100644 --- a/crud/select/iterator.lua +++ b/crud/select/iterator.lua @@ -1,11 +1,9 @@ -local checks = require('checks') local errors = require('errors') local fiber = require('fiber') +local dev_checks = require('crud.common.dev_checks') local utils = require('crud.common.utils') -require('crud.common.checkers') - local UpdateTuplesError = errors.new('UpdateTuplesError') local GetTupleError = errors.new('GetTupleError') @@ -15,7 +13,7 @@ local Iterator = {} Iterator.__index = Iterator function Iterator.new(opts) - checks({ + dev_checks({ space_name = 'string', space_format = 'table', comparator = 'function', diff --git a/crud/select/plan.lua b/crud/select/plan.lua index b0dda67a..6319b623 100644 --- a/crud/select/plan.lua +++ b/crud/select/plan.lua @@ -1,7 +1,7 @@ -local checks = require('checks') local errors = require('errors') local select_conditions = require('crud.select.conditions') +local dev_checks = require('crud.common.dev_checks') local select_plan = {} @@ -85,7 +85,7 @@ local function extract_sharding_key_from_scan_key(scan_key, scan_index, sharding end function select_plan.new(space, conditions, opts) - checks('table', '?table', { + dev_checks('table', '?table', { limit = '?number', }) conditions = conditions ~= nil and conditions or {} diff --git a/crud/update.lua b/crud/update.lua index 9dded443..5810435e 100644 --- a/crud/update.lua +++ b/crud/update.lua @@ -5,8 +5,7 @@ local vshard = require('vshard') local call = require('crud.common.call') local registry = require('crud.common.registry') local utils = require('crud.common.utils') - -require('crud.common.checkers') +local dev_checks = require('crud.common.dev_checks') local UpdateError = errors.new_class('Update', {capture_stack = false}) @@ -15,7 +14,7 @@ local update = {} local UPDATE_FUNC_NAME = '__update' local function call_update_on_storage(space_name, key, operations) - checks('string', '?', 'update_operations') + dev_checks('string', '?', 'table') local space = box.space[space_name] if space == nil then @@ -44,7 +43,7 @@ end -- -- @param table user_operations -- Operations to be performed. --- See `spaceect:update` operations in Tarantool doc +-- See `space:update` operations in Tarantool doc -- -- @tparam ?number opts.timeout -- Function call timeout @@ -54,7 +53,7 @@ end -- @treturn[2] table Error description -- function update.call(space_name, key, user_operations, opts) - checks('string', '?', 'update_operations', { + checks('string', '?', 'table', { timeout = '?number', }) diff --git a/crud/upsert.lua b/crud/upsert.lua index bddaf663..93e45dcc 100644 --- a/crud/upsert.lua +++ b/crud/upsert.lua @@ -5,8 +5,7 @@ local vshard = require('vshard') local call = require('crud.common.call') local registry = require('crud.common.registry') local utils = require('crud.common.utils') - -require('crud.common.checkers') +local dev_checks = require('crud.common.dev_checks') local UpsertError = errors.new_class('UpsertError', { capture_stack = false}) @@ -15,7 +14,7 @@ local upsert = {} local UPSERT_FUNC_NAME = '__upsert' local function call_upsert_on_storage(space_name, tuple, operations) - checks('string', 'table', 'update_operations') + dev_checks('string', 'table', 'table') local space = box.space[space_name] if space == nil then @@ -43,7 +42,7 @@ end -- -- @param table user_operations -- user_operations to be performed. --- See `space_object:update` operations in Tarantool doc +-- See `space:update` operations in Tarantool doc -- -- @tparam ?number opts.timeout -- Function call timeout @@ -53,7 +52,7 @@ end -- @treturn[2] table Error description -- function upsert.call(space_name, obj, user_operations, opts) - checks('string', '?', 'update_operations', { + checks('string', '?', 'table', { timeout = '?number', }) diff --git a/test/helper.lua b/test/helper.lua index ee436dfe..62d2c8ed 100644 --- a/test/helper.lua +++ b/test/helper.lua @@ -3,8 +3,12 @@ require('strict').on() local log = require('log') local checks = require('checks') local digest = require('digest') - local fio = require('fio') + +if os.getenv('DEV') == nil then + os.setenv('DEV', 'ON') +end + local ok, cartridge_helpers = pcall(require, 'cartridge.test-helpers') if not ok then log.error('Please, install cartridge rock to run tests') diff --git a/test/unit/select_executor_test.lua b/test/unit/select_executor_test.lua index 9faef20d..122b50ae 100644 --- a/test/unit/select_executor_test.lua +++ b/test/unit/select_executor_test.lua @@ -108,7 +108,7 @@ g.test_one_condition_no_index = function() t.assert_equals(get_ids(results), {2, 3}) -- after tuple 2 - local after_tuple = space:frommap(customers[2]) + local after_tuple = space:frommap(customers[2]):totable() local results = select_executor.execute(space, index, filter_func, { scan_value = plan.scan_value, @@ -118,7 +118,7 @@ g.test_one_condition_no_index = function() t.assert_equals(get_ids(results), {3}) -- after tuple 3 - local after_tuple = space:frommap(customers[3]) + local after_tuple = space:frommap(customers[3]):totable() local results = select_executor.execute(space, index, filter_func, { scan_value = plan.scan_value, @@ -167,7 +167,7 @@ g.test_one_condition_with_index = function() t.assert_equals(get_ids(results), {3, 2, 4}) -- in age order -- after tuple 3 - local after_tuple = space:frommap(customers[3]) + local after_tuple = space:frommap(customers[3]):totable() local results = select_executor.execute(space, index, filter_func, { scan_value = plan.scan_value, @@ -223,7 +223,7 @@ g.test_multiple_conditions = function() t.assert_equals(get_ids(results), {5, 2}) -- in age order -- after tuple 5 - local after_tuple = space:frommap(customers[5]) + local after_tuple = space:frommap(customers[5]):totable() local results = select_executor.execute(space, index, filter_func, { scan_value = plan.scan_value, @@ -274,7 +274,7 @@ g.test_composite_index = function() t.assert_equals(get_ids(results), {2, 1, 4}) -- in full_name order -- after tuple 2 - local after_tuple = space:frommap(customers[2]) + local after_tuple = space:frommap(customers[2]):totable() local results = select_executor.execute(space, index, filter_func, { scan_value = plan.scan_value,