Skip to content

Commit

Permalink
Merge pull request #9 from TamarLabs/dehydrator_type
Browse files Browse the repository at this point in the history
some more cleanup, a test for ttn, and valgrind cleared :shipit:
  • Loading branch information
daTokenizer committed Nov 15, 2016
2 parents 8917175 + 3a892cd commit 0665b26
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 28 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ This `(empty list or set)` reply from `DEHYDRATOR.POLL` means that the there are
1) "world"
127.0.0.1:9979> DEHYDRATOR.TEST
PASS
(11.00s)
(15.00s)
127.0.0.1:9979> DEL some_dehy
OK
```
Expand Down
69 changes: 42 additions & 27 deletions module.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,29 +371,6 @@ void deleteDehydrator(Dehydrator* dehydrator)
}


RedisModuleString* pull(Dehydrator* dehydrator, RedisModuleString* element_id, ElementList* timeout_queue)
{
ElementListNode* node = NULL;
khiter_t k = kh_get(32, dehydrator->element_nodes, RedisModule_StringPtrLen(element_id, NULL)); // first have to get iterator
if (k != kh_end(dehydrator->element_nodes)) // k will be equal to kh_end if key not present
{
node = kh_val(dehydrator->element_nodes, k);
}

if (node == NULL) { return NULL; } // no such element in the system

RedisModuleString* element = node->element; // extract element

// delete element_nodes[element_id]
kh_del(32, dehydrator->element_nodes, k);

// free everything else related to the node but not the element
RedisModule_Free(node->element_id);
RedisModule_Free(node);

return element;
}

ElementListNode* _getNodeForID(Dehydrator* dehydrator, RedisModuleString* element_id)
{
// now we know we have a dehydrator get element node from element_nodes
Expand Down Expand Up @@ -607,6 +584,8 @@ int PrintCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
{
return RedisModule_WrongArity(ctx);
}
//RedisModule_AutoMemory(ctx);

// get key dehydrator_name
RedisModuleKey *key = RedisModule_OpenKey(ctx, argv[1], REDISMODULE_READ);
Dehydrator* dehydrator = validateDehydratorKey(ctx, key, NULL);
Expand Down Expand Up @@ -662,8 +641,8 @@ int PushCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
{
return RedisModule_WrongArity(ctx);
}
// RedisModule_AutoMemory(ctx);

//RedisModule_AutoMemory(ctx);
RedisModuleString* dehydrator_name = argv[1];
RedisModuleString * element_id = argv[2];
RedisModuleString * element = argv[3];
Expand Down Expand Up @@ -735,7 +714,7 @@ int PullCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
{
return RedisModule_WrongArity(ctx);
}
RedisModule_AutoMemory(ctx);
//RedisModule_AutoMemory(ctx);

// get key dehydrator_name
RedisModuleKey *key = RedisModule_OpenKey(ctx, argv[1],
Expand Down Expand Up @@ -779,7 +758,7 @@ int PollCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
return RedisModule_WrongArity(ctx);
}

RedisModule_AutoMemory(ctx);
// RedisModule_AutoMemory(ctx);
// get key for dehydrator
RedisModuleKey *key = RedisModule_OpenKey(ctx, argv[1],
REDISMODULE_READ|REDISMODULE_WRITE);
Expand Down Expand Up @@ -861,6 +840,41 @@ int TestLook(RedisModuleCtx *ctx)
}


int TestTimeToNext(RedisModuleCtx *ctx)
{
RedisModule_Call(ctx, "DEL", "c", "TEST_DEHYDRATOR_ttn");
printf("Testing TTN - ");

RedisModuleCallReply *push1 =
RedisModule_Call(ctx, "dehydrator.push", "cccc", "TEST_DEHYDRATOR_ttn", "ttn_test_element", "payload", "3");
RMUtil_Assert(RedisModule_CallReplyType(push1) != REDISMODULE_REPLY_ERROR);

RedisModuleCallReply *check1 =
RedisModule_Call(ctx, "dehydrator.ttn", "c", "TEST_DEHYDRATOR_ttn");
RMUtil_Assert(RedisModule_CallReplyType(check1) != REDISMODULE_REPLY_ERROR);
RMUtil_Assert(RedisModule_CallReplyInteger(check1) == 3);

sleep(2);

RedisModuleCallReply *check2 =
RedisModule_Call(ctx, "dehydrator.ttn", "c", "TEST_DEHYDRATOR_ttn");
RMUtil_Assert(RedisModule_CallReplyType(check2) != REDISMODULE_REPLY_ERROR);
RMUtil_Assert(RedisModule_CallReplyInteger(check2) == 1);

sleep(2);

RedisModuleCallReply *check3 =
RedisModule_Call(ctx, "dehydrator.ttn", "c", "TEST_DEHYDRATOR_ttn");
RMUtil_Assert(RedisModule_CallReplyType(check3) != REDISMODULE_REPLY_ERROR);
RMUtil_Assert(RedisModule_CallReplyInteger(check3) == 0);


RedisModule_Call(ctx, "DEL", "c", "TEST_DEHYDRATOR_ttn");
printf("Passed.\n");
return REDISMODULE_OK;
}


int TestPush(RedisModuleCtx *ctx)
{
RedisModule_Call(ctx, "DEL", "c", "TEST_DEHYDRATOR_push");
Expand Down Expand Up @@ -1042,12 +1056,13 @@ int TestPoll(RedisModuleCtx *ctx)
// Unit test entry point for the module
int TestModule(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
{
RedisModule_AutoMemory(ctx);
//RedisModule_AutoMemory(ctx);

RMUtil_Test(TestLook);
RMUtil_Test(TestPush);
RMUtil_Test(TestPull);
RMUtil_Test(TestPoll);
RMUtil_Test(TestTimeToNext);
printf("All Tests Passed Succesfully!\n");

RedisModule_ReplyWithSimpleString(ctx, "PASS");
Expand Down

0 comments on commit 0665b26

Please sign in to comment.