summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/tests/modules/mallocsize.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/mallocsize.c
parent58dac10aeb8f5a041c46bddbeaf4c7966a99b998 (diff)
downloadcrep-dcacc00e3750300617ba6e16eb346713f91a783a.tar.gz
Remove testing data
Diffstat (limited to 'examples/redis-unstable/tests/modules/mallocsize.c')
-rw-r--r--examples/redis-unstable/tests/modules/mallocsize.c237
1 files changed, 0 insertions, 237 deletions
diff --git a/examples/redis-unstable/tests/modules/mallocsize.c b/examples/redis-unstable/tests/modules/mallocsize.c
deleted file mode 100644
index a1d31c1..0000000
--- a/examples/redis-unstable/tests/modules/mallocsize.c
+++ /dev/null
@@ -1,237 +0,0 @@
-#include "redismodule.h"
-#include <string.h>
-#include <assert.h>
-#include <unistd.h>
-
-#define UNUSED(V) ((void) V)
-
-/* Registered type */
-RedisModuleType *mallocsize_type = NULL;
-
-typedef enum {
- UDT_RAW,
- UDT_STRING,
- UDT_DICT
-} udt_type_t;
-
-typedef struct {
- void *ptr;
- size_t len;
-} raw_t;
-
-typedef struct {
- udt_type_t type;
- union {
- raw_t raw;
- RedisModuleString *str;
- RedisModuleDict *dict;
- } data;
-} udt_t;
-
-void udt_free(void *value) {
- udt_t *udt = value;
- switch (udt->type) {
- case (UDT_RAW): {
- RedisModule_Free(udt->data.raw.ptr);
- break;
- }
- case (UDT_STRING): {
- RedisModule_FreeString(NULL, udt->data.str);
- break;
- }
- case (UDT_DICT): {
- RedisModuleString *dk, *dv;
- RedisModuleDictIter *iter = RedisModule_DictIteratorStartC(udt->data.dict, "^", NULL, 0);
- while((dk = RedisModule_DictNext(NULL, iter, (void **)&dv)) != NULL) {
- RedisModule_FreeString(NULL, dk);
- RedisModule_FreeString(NULL, dv);
- }
- RedisModule_DictIteratorStop(iter);
- RedisModule_FreeDict(NULL, udt->data.dict);
- break;
- }
- }
- RedisModule_Free(udt);
-}
-
-void udt_rdb_save(RedisModuleIO *rdb, void *value) {
- udt_t *udt = value;
- RedisModule_SaveUnsigned(rdb, udt->type);
- switch (udt->type) {
- case (UDT_RAW): {
- RedisModule_SaveStringBuffer(rdb, udt->data.raw.ptr, udt->data.raw.len);
- break;
- }
- case (UDT_STRING): {
- RedisModule_SaveString(rdb, udt->data.str);
- break;
- }
- case (UDT_DICT): {
- RedisModule_SaveUnsigned(rdb, RedisModule_DictSize(udt->data.dict));
- RedisModuleString *dk, *dv;
- RedisModuleDictIter *iter = RedisModule_DictIteratorStartC(udt->data.dict, "^", NULL, 0);
- while((dk = RedisModule_DictNext(NULL, iter, (void **)&dv)) != NULL) {
- RedisModule_SaveString(rdb, dk);
- RedisModule_SaveString(rdb, dv);
- RedisModule_FreeString(NULL, dk); /* Allocated by RedisModule_DictNext */
- }
- RedisModule_DictIteratorStop(iter);
- break;
- }
- }
-}
-
-void *udt_rdb_load(RedisModuleIO *rdb, int encver) {
- if (encver != 0)
- return NULL;
- udt_t *udt = RedisModule_Alloc(sizeof(*udt));
- udt->type = RedisModule_LoadUnsigned(rdb);
- switch (udt->type) {
- case (UDT_RAW): {
- udt->data.raw.ptr = RedisModule_LoadStringBuffer(rdb, &udt->data.raw.len);
- break;
- }
- case (UDT_STRING): {
- udt->data.str = RedisModule_LoadString(rdb);
- break;
- }
- case (UDT_DICT): {
- long long dict_len = RedisModule_LoadUnsigned(rdb);
- udt->data.dict = RedisModule_CreateDict(NULL);
- for (int i = 0; i < dict_len; i += 2) {
- RedisModuleString *key = RedisModule_LoadString(rdb);
- RedisModuleString *val = RedisModule_LoadString(rdb);
- RedisModule_DictSet(udt->data.dict, key, val);
- }
- break;
- }
- }
-
- return udt;
-}
-
-size_t udt_mem_usage(RedisModuleKeyOptCtx *ctx, const void *value, size_t sample_size) {
- UNUSED(ctx);
- UNUSED(sample_size);
-
- const udt_t *udt = value;
- size_t size = sizeof(*udt);
-
- switch (udt->type) {
- case (UDT_RAW): {
- size += RedisModule_MallocSize(udt->data.raw.ptr);
- break;
- }
- case (UDT_STRING): {
- size += RedisModule_MallocSizeString(udt->data.str);
- break;
- }
- case (UDT_DICT): {
- void *dk;
- size_t keylen;
- RedisModuleString *dv;
- RedisModuleDictIter *iter = RedisModule_DictIteratorStartC(udt->data.dict, "^", NULL, 0);
- while((dk = RedisModule_DictNextC(iter, &keylen, (void **)&dv)) != NULL) {
- size += keylen;
- size += RedisModule_MallocSizeString(dv);
- }
- RedisModule_DictIteratorStop(iter);
- break;
- }
- }
-
- return size;
-}
-
-/* MALLOCSIZE.SETRAW key len */
-int cmd_setraw(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
- if (argc != 3)
- return RedisModule_WrongArity(ctx);
-
- RedisModuleKey *key = RedisModule_OpenKey(ctx, argv[1], REDISMODULE_WRITE);
-
- udt_t *udt = RedisModule_Alloc(sizeof(*udt));
- udt->type = UDT_RAW;
-
- long long raw_len;
- RedisModule_StringToLongLong(argv[2], &raw_len);
- udt->data.raw.ptr = RedisModule_Alloc(raw_len);
- udt->data.raw.len = raw_len;
-
- RedisModule_ModuleTypeSetValue(key, mallocsize_type, udt);
- RedisModule_CloseKey(key);
-
- return RedisModule_ReplyWithSimpleString(ctx, "OK");
-}
-
-/* MALLOCSIZE.SETSTR key string */
-int cmd_setstr(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
- if (argc != 3)
- return RedisModule_WrongArity(ctx);
-
- RedisModuleKey *key = RedisModule_OpenKey(ctx, argv[1], REDISMODULE_WRITE);
-
- udt_t *udt = RedisModule_Alloc(sizeof(*udt));
- udt->type = UDT_STRING;
-
- udt->data.str = argv[2];
- RedisModule_RetainString(ctx, argv[2]);
-
- RedisModule_ModuleTypeSetValue(key, mallocsize_type, udt);
- RedisModule_CloseKey(key);
-
- return RedisModule_ReplyWithSimpleString(ctx, "OK");
-}
-
-/* MALLOCSIZE.SETDICT key field value [field value ...] */
-int cmd_setdict(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
- if (argc < 4 || argc % 2)
- return RedisModule_WrongArity(ctx);
-
- RedisModuleKey *key = RedisModule_OpenKey(ctx, argv[1], REDISMODULE_WRITE);
-
- udt_t *udt = RedisModule_Alloc(sizeof(*udt));
- udt->type = UDT_DICT;
-
- udt->data.dict = RedisModule_CreateDict(ctx);
- for (int i = 2; i < argc; i += 2) {
- RedisModule_DictSet(udt->data.dict, argv[i], argv[i+1]);
- /* No need to retain argv[i], it is copied as the rax key */
- RedisModule_RetainString(ctx, argv[i+1]);
- }
-
- RedisModule_ModuleTypeSetValue(key, mallocsize_type, udt);
- RedisModule_CloseKey(key);
-
- return RedisModule_ReplyWithSimpleString(ctx, "OK");
-}
-
-int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
- UNUSED(argv);
- UNUSED(argc);
- if (RedisModule_Init(ctx,"mallocsize",1,REDISMODULE_APIVER_1)== REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- RedisModuleTypeMethods tm = {
- .version = REDISMODULE_TYPE_METHOD_VERSION,
- .rdb_load = udt_rdb_load,
- .rdb_save = udt_rdb_save,
- .free = udt_free,
- .mem_usage2 = udt_mem_usage,
- };
-
- mallocsize_type = RedisModule_CreateDataType(ctx, "allocsize", 0, &tm);
- if (mallocsize_type == NULL)
- return REDISMODULE_ERR;
-
- if (RedisModule_CreateCommand(ctx, "mallocsize.setraw", cmd_setraw, "", 1, 1, 1) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- if (RedisModule_CreateCommand(ctx, "mallocsize.setstr", cmd_setstr, "", 1, 1, 1) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- if (RedisModule_CreateCommand(ctx, "mallocsize.setdict", cmd_setdict, "", 1, 1, 1) == REDISMODULE_ERR)
- return REDISMODULE_ERR;
-
- return REDISMODULE_OK;
-}