Skip to content

Commit c3138e7

Browse files
committed
Add ebMemUsage function
1 parent 71af8d8 commit c3138e7

File tree

1 file changed

+56
-3
lines changed

1 file changed

+56
-3
lines changed

src/expire.c

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ ebuckets *estoreGetBucket(estore *es, int slot) {
437437
size_t estoreMemUsage(estore *es) {
438438
if (es == NULL) return 0;
439439

440-
size_t mem = sizeof(*es);
440+
size_t mem = sizeof(estore); /* Size of the estore structure */
441441
mem += sizeof(ebuckets) * es->num_buckets; /* Buckets array */
442442
if (!server.cluster_enabled) {
443443
mem += ebMemUsage(es->buckets + 0, es->bucket_type);
@@ -1482,7 +1482,7 @@ int expireTest(int argc, char **argv, int flags) {
14821482
TEST("estoreGetStats returns correct stats in non-clustered mode") {
14831483
server.cluster_enabled = 0;
14841484

1485-
estore *es = estoreCreate(&testEbType, 1); /* only one bucket */
1485+
estore *es = estoreCreate(&testEbType, 0); /* only one bucket */
14861486

14871487
TestKVObj *kv1 = zmalloc(sizeof(TestKVObj));
14881488
estoreAdd(es, (kvobj*)kv1, 0, 1);
@@ -1512,7 +1512,7 @@ int expireTest(int argc, char **argv, int flags) {
15121512
TEST("estoreGetStats returns combined stats in clustered mode") {
15131513
server.cluster_enabled = 1;
15141514

1515-
estore *es = estoreCreate(&testEbType, 2); /* two buckets */
1515+
estore *es = estoreCreate(&testEbType, 1); /* two buckets */
15161516

15171517
/* Add objects to different buckets */
15181518
TestKVObj *kv1 = zmalloc(sizeof(TestKVObj));
@@ -1546,6 +1546,59 @@ int expireTest(int argc, char **argv, int flags) {
15461546
estoreRelease(es);
15471547
}
15481548

1549+
TEST("estoreMemUsage computes memory correctly in non-cluster mode") {
1550+
server.cluster_enabled = 0;
1551+
1552+
estore *es = estoreCreate(&testEbType, 1); /* 2 buckets */
1553+
1554+
TestKVObj *kv1 = zmalloc(sizeof(TestKVObj));
1555+
TestKVObj *kv2 = zmalloc(sizeof(TestKVObj));
1556+
1557+
estoreAdd(es, (kvobj*)kv1, 0, 1);
1558+
estoreAdd(es, (kvobj*)kv2, 0, 2);
1559+
1560+
size_t expected = sizeof(estore) + sizeof(ebuckets) * 2; /* Size of the estore structure + buckets array */
1561+
expected += ebMemUsage(es->buckets + 0, es->bucket_type); /* Only one bucket considered */
1562+
1563+
size_t actual = estoreMemUsage(es);
1564+
assert(actual == expected);
1565+
1566+
zfree(kv1);
1567+
zfree(kv2);
1568+
estoreRelease(es);
1569+
}
1570+
1571+
TEST("estoreMemUsage computes memory correctly in cluster mode") {
1572+
server.cluster_enabled = 1;
1573+
1574+
estore *es = estoreCreate(&testEbType, 2); /* 4 buckets */
1575+
1576+
TestKVObj *kv1 = zmalloc(sizeof(TestKVObj));
1577+
TestKVObj *kv2 = zmalloc(sizeof(TestKVObj));
1578+
TestKVObj *kv3 = zmalloc(sizeof(TestKVObj));
1579+
TestKVObj *kv4 = zmalloc(sizeof(TestKVObj));
1580+
1581+
estoreAdd(es, (kvobj*)kv1, 0, 3);
1582+
estoreAdd(es, (kvobj*)kv2, 1, 4);
1583+
estoreAdd(es, (kvobj*)kv3, 2, 5);
1584+
estoreAdd(es, (kvobj*)kv4, 3, 6);
1585+
1586+
size_t expected = sizeof(estore) + sizeof(ebuckets) * 4;
1587+
for (int i = 0; i < 4; i++) {
1588+
expected += ebMemUsage(es->buckets + i, es->bucket_type);
1589+
}
1590+
1591+
size_t actual = estoreMemUsage(es);
1592+
assert(actual == expected);
1593+
1594+
zfree(kv1);
1595+
zfree(kv2);
1596+
zfree(kv3);
1597+
zfree(kv4);
1598+
estoreRelease(es);
1599+
}
1600+
1601+
15491602
return 0;
15501603
}
15511604
#endif

0 commit comments

Comments
 (0)