2 * Copyright (c) 2018-2019 Nokia.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * This source code is part of the near-RT RIC (RAN Intelligent Controller)
19 * platform project (RICP).
23 #include <CppUTest/TestHarness.h>
24 #include <CppUTestExt/MockSupport.h>
32 #include "redismodule.h"
39 int RedisModule_CreateCommand(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc cmdfunc, const char *strflags, int firstkey, int lastkey, int keystep)
48 return REDISMODULE_OK;
52 int RedisModule_WrongArity(RedisModuleCtx *ctx)
55 return REDISMODULE_ERR;
58 int RedisModule_ReplyWithLongLong(RedisModuleCtx *ctx, long long ll)
62 mock().setData("RedisModule_ReplyWithLongLong", (int)ll);
63 return REDISMODULE_OK;
66 void *RedisModule_OpenKey(RedisModuleCtx *ctx, RedisModuleString *keyname, int mode)
72 if (mock().hasData("RedisModule_OpenKey_no"))
77 if (mock().hasData("RedisModule_OpenKey_have"))
79 return (void*)(111111);
86 RedisModuleCallReply *RedisModule_Call(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...)
92 if (!strcmp(cmdname, "GET"))
93 mock().setData("GET", 1);
94 else if (!strcmp(cmdname, "SET"))
95 mock().setData("SET", 1);
96 else if (!strcmp(cmdname, "MSET"))
97 mock().setData("MSET", 1);
98 else if (!strcmp(cmdname, "DEL"))
99 mock().setData("DEL", 1);
100 else if (!strcmp(cmdname, "UNLINK"))
101 mock().setData("UNLINK", 1);
102 else if (!strcmp(cmdname, "PUBLISH"))
103 mock().setData("PUBLISH", mock().getData("PUBLISH").getIntValue() + 1);
104 else if (!strcmp(cmdname, "KEYS"))
105 mock().setData("KEYS", 1);
106 else if (!strcmp(cmdname, "MGET"))
107 mock().setData("MGET", 1);
109 if (mock().hasData("RedisModule_Call_Return_Null"))
112 return (RedisModuleCallReply *)1;
115 void RedisModule_FreeCallReply(RedisModuleCallReply *reply)
118 mock().setData("RedisModule_FreeCallReply", mock().getData("RedisModule_FreeCallReply").getIntValue()+1);
121 int RedisModule_CallReplyType(RedisModuleCallReply *reply)
125 if (mock().hasData("RedisModule_CallReplyType_null"))
127 return REDISMODULE_REPLY_NULL;
130 if (mock().hasData("RedisModule_CallReplyType_inter"))
132 return REDISMODULE_REPLY_INTEGER;
135 if (mock().hasData("RedisModule_CallReplyType_str"))
137 return REDISMODULE_REPLY_STRING;
140 if (mock().hasData("RedisModule_CallReplyType_err"))
142 return REDISMODULE_REPLY_ERROR;
145 return REDISMODULE_REPLY_NULL;;
149 long long RedisModule_CallReplyInteger(RedisModuleCallReply *reply)
153 return mock().getData("RedisModule_CallReplyInteger").getIntValue();
156 const char *RedisModule_StringPtrLen(const RedisModuleString *str, size_t *len)
161 if (mock().hasData("RedisModule_String_same"))
166 if (mock().hasData("RedisModule_String_nosame"))
174 int RedisModule_ReplyWithError(RedisModuleCtx *ctx, const char *err)
178 mock().setData("RedisModule_ReplyWithError", 1);
179 return REDISMODULE_OK;
182 int RedisModule_ReplyWithString(RedisModuleCtx *ctx, RedisModuleString *str)
186 mock().setData("RedisModule_ReplyWithString", mock().getData("RedisModule_ReplyWithString").getIntValue()+1);
187 return REDISMODULE_OK;
190 int RedisModule_ReplyWithNull(RedisModuleCtx *ctx)
194 mock().setData("RedisModule_ReplyWithNull", 1);
195 return REDISMODULE_OK;
198 int RedisModule_ReplyWithCallReply(RedisModuleCtx *ctx, RedisModuleCallReply *reply)
202 mock().setData("RedisModule_ReplyWithCallReply", 1);
203 return REDISMODULE_OK;
206 const char *RedisModule_CallReplyStringPtr(RedisModuleCallReply *reply, size_t *len)
212 if (mock().hasData("RedisModule_String_same"))
218 if (mock().hasData("RedisModule_String_nosame"))
227 RedisModuleString *RedisModule_CreateStringFromCallReply(RedisModuleCallReply *reply)
230 return (RedisModuleString *)1;
234 int RedisModule_KeyType(RedisModuleKey *kp)
239 if (mock().hasData("RedisModule_KeyType_empty"))
241 return REDISMODULE_KEYTYPE_EMPTY;
244 if (mock().hasData("RedisModule_KeyType_str"))
246 return REDISMODULE_KEYTYPE_STRING;
249 if (mock().hasData("RedisModule_KeyType_set"))
252 return REDISMODULE_KEYTYPE_SET;
255 return REDISMODULE_KEYTYPE_EMPTY;
260 void RedisModule_CloseKey(RedisModuleKey *kp)
263 mock().actualCall("RedisModule_CloseKey");
266 /* This is included inline inside each Redis module. */
267 int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver)
273 return REDISMODULE_OK;
276 size_t RedisModule_CallReplyLength(RedisModuleCallReply *reply)
279 return mock().getData("RedisModule_CallReplyLength").getIntValue();
283 RedisModuleCallReply *RedisModule_CallReplyArrayElement(RedisModuleCallReply *reply, size_t idx)
287 return (RedisModuleCallReply *)1;
290 int RedisModule_ReplyWithArray(RedisModuleCtx *ctx, long len)
293 mock().setData("RedisModule_ReplyWithArray", (int)len);
294 return REDISMODULE_OK;
297 int RedisModule_StringToLongLong(const RedisModuleString *str, long long *ll)
300 int call_no = mock().getData("RedisModule_StringToLongLongCallCount").getIntValue();
303 *ll = mock().getData("RedisModule_StringToLongLongCall_1").getIntValue();
306 *ll = mock().getData("RedisModule_StringToLongLongCall_2").getIntValue();
309 *ll = mock().getData("RedisModule_StringToLongLongCallDefault").getIntValue();
311 mock().setData("RedisModule_StringToLongLongCallCount", call_no + 1);
312 return REDISMODULE_OK;