refactor(sync): add syncEntryCacheTest
This commit is contained in:
parent
2dd7abd47e
commit
9e1b9fe64c
|
@ -151,19 +151,10 @@ void test4() {
|
||||||
|
|
||||||
static char* keyFn(const void* pData) {
|
static char* keyFn(const void* pData) {
|
||||||
SSyncRaftEntry* pEntry = (SSyncRaftEntry*)pData;
|
SSyncRaftEntry* pEntry = (SSyncRaftEntry*)pData;
|
||||||
return (char*)(pEntry->index);
|
return (char*)(&(pEntry->index));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cmpFn(const void* p1, const void* p2) {
|
static int cmpFn(const void* p1, const void* p2) { return memcmp(p1, p2, sizeof(SyncIndex)); }
|
||||||
SSyncRaftEntry* pEntry1 = (SSyncRaftEntry*)p1;
|
|
||||||
SSyncRaftEntry* pEntry2 = (SSyncRaftEntry*)p2;
|
|
||||||
|
|
||||||
if (pEntry1->index == pEntry2->index) {
|
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void printSkipList(SSkipList* pSkipList) {
|
void printSkipList(SSkipList* pSkipList) {
|
||||||
ASSERT(pSkipList != NULL);
|
ASSERT(pSkipList != NULL);
|
||||||
|
@ -177,25 +168,96 @@ void printSkipList(SSkipList* pSkipList) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void test5() {
|
void delSkipListFirst(SSkipList* pSkipList, int n) {
|
||||||
SSkipList* pSkipList = tSkipListCreate(MAX_SKIP_LIST_LEVEL, TSDB_DATA_TYPE_BINARY, sizeof(SSyncRaftEntry*), cmpFn,
|
|
||||||
SL_DISCARD_DUP_KEY, keyFn);
|
|
||||||
ASSERT(pSkipList != NULL);
|
ASSERT(pSkipList != NULL);
|
||||||
|
|
||||||
for (int i = 0; i <= 4; ++i) {
|
sTrace("delete first %d -------------", n);
|
||||||
SSyncRaftEntry* pEntry = createEntry(i);
|
SSkipListIterator* pIter = tSkipListCreateIter(pSkipList);
|
||||||
SyncIndex index = i;
|
for (int i = 0; i < n; ++i) {
|
||||||
SSkipListNode* pSkipListNode = tSkipListPut(pSkipList, pEntry);
|
tSkipListIterNext(pIter);
|
||||||
|
SSkipListNode* pNode = tSkipListIterGet(pIter);
|
||||||
|
tSkipListRemoveNode(pSkipList, pNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SSyncRaftEntry* getLogEntry2(SSkipList* pSkipList, SyncIndex index) {
|
||||||
|
sTrace("get index: %ld -------------", index);
|
||||||
|
SyncIndex index2 = index;
|
||||||
|
SSyncRaftEntry *pEntry = NULL;
|
||||||
|
|
||||||
|
SArray* nodes = tSkipListGet(pSkipList, (char*)(&index2));
|
||||||
|
if (taosArrayGetSize(nodes) > 0) {
|
||||||
|
|
||||||
|
}
|
||||||
|
taosArrayDestroy(nodes);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SSkipListIterator* pIter = tSkipListCreateIterFromVal(pSkipList, (const char *)&index2, TSDB_DATA_TYPE_BINARY, TSDB_ORDER_ASC);
|
||||||
|
if (tSkipListIterNext(pIter)) {
|
||||||
|
SSkipListNode* pNode = tSkipListIterGet(pIter);
|
||||||
|
ASSERT(pNode != NULL);
|
||||||
|
pEntry = (SSyncRaftEntry*)SL_GET_NODE_DATA(pNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
syncEntryLog2((char*)"", pEntry);
|
||||||
|
return pEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SSyncRaftEntry* getLogEntry(SSkipList* pSkipList, SyncIndex index) {
|
||||||
|
sTrace("get index: %ld -------------", index);
|
||||||
|
SyncIndex index2 = index;
|
||||||
|
SSyncRaftEntry *pEntry = NULL;
|
||||||
|
SSkipListIterator* pIter = tSkipListCreateIterFromVal(pSkipList, (const char *)&index2, TSDB_DATA_TYPE_BINARY, TSDB_ORDER_ASC);
|
||||||
|
if (tSkipListIterNext(pIter)) {
|
||||||
|
SSkipListNode* pNode = tSkipListIterGet(pIter);
|
||||||
|
ASSERT(pNode != NULL);
|
||||||
|
pEntry = (SSyncRaftEntry*)SL_GET_NODE_DATA(pNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
syncEntryLog2((char*)"", pEntry);
|
||||||
|
return pEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
void test5() {
|
||||||
|
SSkipList* pSkipList =
|
||||||
|
tSkipListCreate(MAX_SKIP_LIST_LEVEL, TSDB_DATA_TYPE_BINARY, sizeof(SyncIndex), cmpFn, SL_ALLOW_DUP_KEY, keyFn);
|
||||||
|
ASSERT(pSkipList != NULL);
|
||||||
|
|
||||||
|
sTrace("insert 9 - 5");
|
||||||
for (int i = 9; i >= 5; --i) {
|
for (int i = 9; i >= 5; --i) {
|
||||||
SSyncRaftEntry* pEntry = createEntry(i);
|
SSyncRaftEntry* pEntry = createEntry(i);
|
||||||
SyncIndex index = i;
|
|
||||||
SSkipListNode* pSkipListNode = tSkipListPut(pSkipList, pEntry);
|
SSkipListNode* pSkipListNode = tSkipListPut(pSkipList, pEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sTrace("insert 0 - 4");
|
||||||
|
for (int i = 0; i <= 4; ++i) {
|
||||||
|
SSyncRaftEntry* pEntry = createEntry(i);
|
||||||
|
SSkipListNode* pSkipListNode = tSkipListPut(pSkipList, pEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
sTrace("insert 7 7 7 7 7");
|
||||||
|
for (int i = 0; i <= 4; ++i) {
|
||||||
|
SSyncRaftEntry* pEntry = createEntry(7);
|
||||||
|
SSkipListNode* pSkipListNode = tSkipListPut(pSkipList, pEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
sTrace("print: -------------");
|
||||||
printSkipList(pSkipList);
|
printSkipList(pSkipList);
|
||||||
|
|
||||||
|
delSkipListFirst(pSkipList, 3);
|
||||||
|
|
||||||
|
sTrace("print: -------------");
|
||||||
|
printSkipList(pSkipList);
|
||||||
|
|
||||||
|
getLogEntry(pSkipList, 2);
|
||||||
|
getLogEntry(pSkipList, 5);
|
||||||
|
getLogEntry(pSkipList, 7);
|
||||||
|
getLogEntry(pSkipList, 7);
|
||||||
|
|
||||||
|
|
||||||
tSkipListDestroy(pSkipList);
|
tSkipListDestroy(pSkipList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue