summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/tests/modules/keyspecs.c
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 22:52:54 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 22:52:54 +0100
commitdcacc00e3750300617ba6e16eb346713f91a783a (patch)
tree38e2d4fb5ed9d119711d4295c6eda4b014af73fd /examples/redis-unstable/tests/modules/keyspecs.c
parent58dac10aeb8f5a041c46bddbeaf4c7966a99b998 (diff)
downloadcrep-dcacc00e3750300617ba6e16eb346713f91a783a.tar.gz
Remove testing data
Diffstat (limited to 'examples/redis-unstable/tests/modules/keyspecs.c')
-rw-r--r--examples/redis-unstable/tests/modules/keyspecs.c236
1 files changed, 0 insertions, 236 deletions
diff --git a/examples/redis-unstable/tests/modules/keyspecs.c b/examples/redis-unstable/tests/modules/keyspecs.c
deleted file mode 100644
index 0a70de8..0000000
--- a/examples/redis-unstable/tests/modules/keyspecs.c
+++ /dev/null
@@ -1,236 +0,0 @@
-#include "redismodule.h"
-
-#define UNUSED(V) ((void) V)
-
-/* This function implements all commands in this module. All we care about is
- * the COMMAND metadata anyway. */
-int kspec_impl(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
- UNUSED(argv);
- UNUSED(argc);
-
- /* Handle getkeys-api introspection (for "kspec.nonewithgetkeys") */
- if (RedisModule_IsKeysPositionRequest(ctx)) {
- for (int i = 1; i < argc; i += 2)
- RedisModule_KeyAtPosWithFlags(ctx, i, REDISMODULE_CMD_KEY_RO | REDISMODULE_CMD_KEY_ACCESS);
-
- return REDISMODULE_OK;
- }
-
- RedisModule_ReplyWithSimpleString(ctx, "OK");
- return REDISMODULE_OK;
-}
-
-int createKspecNone(RedisModuleCtx *ctx) {
- /* A command without keyspecs; only the legacy (first,last,step) triple (MSET like spec). */
- if (RedisModule_CreateCommand(ctx,"kspec.none",kspec_impl,"",1,-1,2) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
- return REDISMODULE_OK;
-}
-
-int createKspecNoneWithGetkeys(RedisModuleCtx *ctx) {
- /* A command without keyspecs; only the legacy (first,last,step) triple (MSET like spec), but also has a getkeys callback */
- if (RedisModule_CreateCommand(ctx,"kspec.nonewithgetkeys",kspec_impl,"getkeys-api",1,-1,2) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
- return REDISMODULE_OK;
-}
-
-int createKspecTwoRanges(RedisModuleCtx *ctx) {
- /* Test that two position/range-based key specs are combined to produce the
- * legacy (first,last,step) values representing both keys. */
- if (RedisModule_CreateCommand(ctx,"kspec.tworanges",kspec_impl,"",0,0,0) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- RedisModuleCommand *command = RedisModule_GetCommand(ctx,"kspec.tworanges");
- RedisModuleCommandInfo info = {
- .version = REDISMODULE_COMMAND_INFO_VERSION,
- .arity = -2,
- .key_specs = (RedisModuleCommandKeySpec[]){
- {
- .flags = REDISMODULE_CMD_KEY_RO | REDISMODULE_CMD_KEY_ACCESS,
- .begin_search_type = REDISMODULE_KSPEC_BS_INDEX,
- .bs.index.pos = 1,
- .find_keys_type = REDISMODULE_KSPEC_FK_RANGE,
- .fk.range = {0,1,0}
- },
- {
- .flags = REDISMODULE_CMD_KEY_RW | REDISMODULE_CMD_KEY_UPDATE,
- .begin_search_type = REDISMODULE_KSPEC_BS_INDEX,
- .bs.index.pos = 2,
- /* Omitted find_keys_type is shorthand for RANGE {0,1,0} */
- },
- {0}
- }
- };
- if (RedisModule_SetCommandInfo(command, &info) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- return REDISMODULE_OK;
-}
-
-int createKspecTwoRangesWithGap(RedisModuleCtx *ctx) {
- /* Test that two position/range-based key specs are combined to produce the
- * legacy (first,last,step) values representing just one key. */
- if (RedisModule_CreateCommand(ctx,"kspec.tworangeswithgap",kspec_impl,"",0,0,0) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- RedisModuleCommand *command = RedisModule_GetCommand(ctx,"kspec.tworangeswithgap");
- RedisModuleCommandInfo info = {
- .version = REDISMODULE_COMMAND_INFO_VERSION,
- .arity = -2,
- .key_specs = (RedisModuleCommandKeySpec[]){
- {
- .flags = REDISMODULE_CMD_KEY_RO | REDISMODULE_CMD_KEY_ACCESS,
- .begin_search_type = REDISMODULE_KSPEC_BS_INDEX,
- .bs.index.pos = 1,
- .find_keys_type = REDISMODULE_KSPEC_FK_RANGE,
- .fk.range = {0,1,0}
- },
- {
- .flags = REDISMODULE_CMD_KEY_RW | REDISMODULE_CMD_KEY_UPDATE,
- .begin_search_type = REDISMODULE_KSPEC_BS_INDEX,
- .bs.index.pos = 3,
- /* Omitted find_keys_type is shorthand for RANGE {0,1,0} */
- },
- {0}
- }
- };
- if (RedisModule_SetCommandInfo(command, &info) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- return REDISMODULE_OK;
-}
-
-int createKspecKeyword(RedisModuleCtx *ctx) {
- /* Only keyword-based specs. The legacy triple is wiped and set to (0,0,0). */
- if (RedisModule_CreateCommand(ctx,"kspec.keyword",kspec_impl,"",3,-1,1) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- RedisModuleCommand *command = RedisModule_GetCommand(ctx,"kspec.keyword");
- RedisModuleCommandInfo info = {
- .version = REDISMODULE_COMMAND_INFO_VERSION,
- .key_specs = (RedisModuleCommandKeySpec[]){
- {
- .flags = REDISMODULE_CMD_KEY_RO | REDISMODULE_CMD_KEY_ACCESS,
- .begin_search_type = REDISMODULE_KSPEC_BS_KEYWORD,
- .bs.keyword.keyword = "KEYS",
- .bs.keyword.startfrom = 1,
- .find_keys_type = REDISMODULE_KSPEC_FK_RANGE,
- .fk.range = {-1,1,0}
- },
- {0}
- }
- };
- if (RedisModule_SetCommandInfo(command, &info) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- return REDISMODULE_OK;
-}
-
-int createKspecComplex1(RedisModuleCtx *ctx) {
- /* First is a range a single key. The rest are keyword-based specs. */
- if (RedisModule_CreateCommand(ctx,"kspec.complex1",kspec_impl,"",1,1,1) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- RedisModuleCommand *command = RedisModule_GetCommand(ctx,"kspec.complex1");
- RedisModuleCommandInfo info = {
- .version = REDISMODULE_COMMAND_INFO_VERSION,
- .key_specs = (RedisModuleCommandKeySpec[]){
- {
- .flags = REDISMODULE_CMD_KEY_RO,
- .begin_search_type = REDISMODULE_KSPEC_BS_INDEX,
- .bs.index.pos = 1,
- },
- {
- .flags = REDISMODULE_CMD_KEY_RW | REDISMODULE_CMD_KEY_UPDATE,
- .begin_search_type = REDISMODULE_KSPEC_BS_KEYWORD,
- .bs.keyword.keyword = "STORE",
- .bs.keyword.startfrom = 2,
- },
- {
- .flags = REDISMODULE_CMD_KEY_RO | REDISMODULE_CMD_KEY_ACCESS,
- .begin_search_type = REDISMODULE_KSPEC_BS_KEYWORD,
- .bs.keyword.keyword = "KEYS",
- .bs.keyword.startfrom = 2,
- .find_keys_type = REDISMODULE_KSPEC_FK_KEYNUM,
- .fk.keynum = {0,1,1}
- },
- {0}
- }
- };
- if (RedisModule_SetCommandInfo(command, &info) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- return REDISMODULE_OK;
-}
-
-int createKspecComplex2(RedisModuleCtx *ctx) {
- /* First is not legacy, more than STATIC_KEYS_SPECS_NUM specs */
- if (RedisModule_CreateCommand(ctx,"kspec.complex2",kspec_impl,"",0,0,0) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- RedisModuleCommand *command = RedisModule_GetCommand(ctx,"kspec.complex2");
- RedisModuleCommandInfo info = {
- .version = REDISMODULE_COMMAND_INFO_VERSION,
- .key_specs = (RedisModuleCommandKeySpec[]){
- {
- .flags = REDISMODULE_CMD_KEY_RW | REDISMODULE_CMD_KEY_UPDATE,
- .begin_search_type = REDISMODULE_KSPEC_BS_KEYWORD,
- .bs.keyword.keyword = "STORE",
- .bs.keyword.startfrom = 5,
- .find_keys_type = REDISMODULE_KSPEC_FK_RANGE,
- .fk.range = {0,1,0}
- },
- {
- .flags = REDISMODULE_CMD_KEY_RO | REDISMODULE_CMD_KEY_ACCESS,
- .begin_search_type = REDISMODULE_KSPEC_BS_INDEX,
- .bs.index.pos = 1,
- .find_keys_type = REDISMODULE_KSPEC_FK_RANGE,
- .fk.range = {0,1,0}
- },
- {
- .flags = REDISMODULE_CMD_KEY_RO | REDISMODULE_CMD_KEY_ACCESS,
- .begin_search_type = REDISMODULE_KSPEC_BS_INDEX,
- .bs.index.pos = 2,
- .find_keys_type = REDISMODULE_KSPEC_FK_RANGE,
- .fk.range = {0,1,0}
- },
- {
- .flags = REDISMODULE_CMD_KEY_RW | REDISMODULE_CMD_KEY_UPDATE,
- .begin_search_type = REDISMODULE_KSPEC_BS_INDEX,
- .bs.index.pos = 3,
- .find_keys_type = REDISMODULE_KSPEC_FK_KEYNUM,
- .fk.keynum = {0,1,1}
- },
- {
- .flags = REDISMODULE_CMD_KEY_RW | REDISMODULE_CMD_KEY_UPDATE,
- .begin_search_type = REDISMODULE_KSPEC_BS_KEYWORD,
- .bs.keyword.keyword = "MOREKEYS",
- .bs.keyword.startfrom = 5,
- .find_keys_type = REDISMODULE_KSPEC_FK_RANGE,
- .fk.range = {-1,1,0}
- },
- {0}
- }
- };
- if (RedisModule_SetCommandInfo(command, &info) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- return REDISMODULE_OK;
-}
-
-int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
- REDISMODULE_NOT_USED(argv);
- REDISMODULE_NOT_USED(argc);
-
- if (RedisModule_Init(ctx, "keyspecs", 1, REDISMODULE_APIVER_1) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- if (createKspecNone(ctx) == REDISMODULE_ERR) return REDISMODULE_ERR;
- if (createKspecNoneWithGetkeys(ctx) == REDISMODULE_ERR) return REDISMODULE_ERR;
- if (createKspecTwoRanges(ctx) == REDISMODULE_ERR) return REDISMODULE_ERR;
- if (createKspecTwoRangesWithGap(ctx) == REDISMODULE_ERR) return REDISMODULE_ERR;
- if (createKspecKeyword(ctx) == REDISMODULE_ERR) return REDISMODULE_ERR;
- if (createKspecComplex1(ctx) == REDISMODULE_ERR) return REDISMODULE_ERR;
- if (createKspecComplex2(ctx) == REDISMODULE_ERR) return REDISMODULE_ERR;
- return REDISMODULE_OK;
-}