diff options
author | rsiddharth <s@ricketyspace.net> | 2019-11-02 11:05:54 -0400 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2020-04-17 20:56:34 -0400 |
commit | a89b692e370e65b0fb087a2f843faf9ce1d5a6ae (patch) | |
tree | 75f136112c75feefdc729c133d44185c925955d6 /nserver | |
parent | 64ab0153238cd3d06296cd31bd9bc09ba8545f33 (diff) |
nserver: protocol: Define ssdelete.
* nserver/src/protocol.c (ssdelete): New function.
* nserver/tests/protocol_tests.c (test_ssdelete): New test.
(all_tests): Add test_ssdelete.
Diffstat (limited to 'nserver')
-rw-r--r-- | nserver/src/protocol.c | 27 | ||||
-rw-r--r-- | nserver/tests/protocol_tests.c | 17 |
2 files changed, 44 insertions, 0 deletions
diff --git a/nserver/src/protocol.c b/nserver/src/protocol.c index 3c09733..adcfc21 100644 --- a/nserver/src/protocol.c +++ b/nserver/src/protocol.c @@ -37,6 +37,33 @@ int sscreate(char *key) return -1; } +int ssdelete(char *key) +{ + check(hash != NULL, "hash not initialized"); + + // 1. create bstring from 'key'. + bstring k = bfromcstr(key); + check(k != NULL, "key creation failed"); + + // 2. check if key exists. + Stats *st = (Stats *) Hashmap_get(hash, k); + if (st == NULL) { + // key does not exists. + return 0; + } + + // 3. delete key. + st = (Stats *) Hashmap_delete(hash, k); + check(st != NULL, "hash key delete failed"); + + // 4. clean up the stats for this key. + free(st); + + return 0; + error: + return -1; +} + int sssample(char *key, double s) { check(hash != NULL, "hash not initialized"); diff --git a/nserver/tests/protocol_tests.c b/nserver/tests/protocol_tests.c index 6fc2831..bc8a3db 100644 --- a/nserver/tests/protocol_tests.c +++ b/nserver/tests/protocol_tests.c @@ -58,6 +58,22 @@ char *test_ssmean() return NULL; } +char *test_ssdelete() +{ + int rc = 0; + + rc = ssdelete("crimson"); + mu_assert(rc == 0, "delete failed 0"); + + rc = ssdelete("/vermilion"); + mu_assert(rc == 0, "delete failed 1"); + + rc = ssdelete("/ruby"); + mu_assert(rc == 0, "delete failed 2"); + + return NULL; +} + char *all_tests() { mu_suite_start(); @@ -65,6 +81,7 @@ char *all_tests() mu_run_test(test_sscreate); mu_run_test(test_sssample); mu_run_test(test_ssmean); + mu_run_test(test_ssdelete); return NULL; } |