Commit 3a75ccdf authored by Rich Prohaska's avatar Rich Prohaska Committed by Yoni Fogel

#4173 increase test coverage of the sort functions refs[t:4173]

git-svn-id: file:///svn/toku/tokudb@37481 c7de825b-a66e-492c-adef-691d508d4ae1
parent e9194786
......@@ -11,16 +11,21 @@
const int MAX_NUM = 0x0fffffffL;
int MAGIC_EXTRA = 0xd3adb00f;
static int
int_qsort_cmp(const void *va, const void *vb) {
const int *a = va, *b = vb;
assert(*a < MAX_NUM);
assert(*b < MAX_NUM);
return (*a > *b) - (*a < *b);
}
static int
int_cmp(void *ve, const void *va, const void *vb)
{
int *e = ve;
assert(e);
assert(*e == MAGIC_EXTRA);
const int *a = va, *b = vb;
assert(*a < MAX_NUM);
assert(*b < MAX_NUM);
return (*a > *b) - (*a < *b);
return int_qsort_cmp(va, vb);
}
static void
......@@ -67,12 +72,50 @@ static void
random_array_test(int nelts)
{
int *MALLOC_N(nelts, a);
int *MALLOC_N(nelts, b);
for (int i = 0; i < nelts; ++i) {
a[i] = rand() % MAX_NUM;
b[i] = a[i];
}
mergesort_r(a, nelts, sizeof a[0], &MAGIC_EXTRA, int_cmp);
check_int_array(a, nelts);
qsort(b, nelts, sizeof b[0], int_qsort_cmp);
for (int i = 0; i < nelts; ++i)
assert(a[i] == b[i]);
toku_free(a);
toku_free(b);
}
static int
uint64_qsort_cmp(const void *va, const void *vb) {
const uint64_t *a = va, *b = vb;
return (*a > *b) - (*a < *b);
}
static int
uint64_cmp(void *ve, const void *va, const void *vb)
{
int *e = ve;
assert(e);
assert(*e == MAGIC_EXTRA);
return uint64_qsort_cmp(va, vb);
}
static void
random_array_test_64(int nelts)
{
uint64_t *MALLOC_N(nelts, a);
uint64_t *MALLOC_N(nelts, b);
for (int i = 0; i < nelts; ++i) {
a[i] = ((uint64_t)rand() << 32ULL) | rand();
b[i] = a[i];
}
mergesort_r(a, nelts, sizeof a[0], &MAGIC_EXTRA, uint64_cmp);
qsort(b, nelts, sizeof b[0], uint64_qsort_cmp);
for (int i = 0; i < nelts; ++i)
assert(a[i] == b[i]);
toku_free(a);
toku_free(b);
}
int
......@@ -83,6 +126,7 @@ test_main(int argc __attribute__((__unused__)), const char *argv[] __attribute__
random_array_test(1000);
random_array_test(10001);
random_array_test(10000000);
random_array_test_64(10000000);
dup_array_test(10);
dup_array_test(1000);
dup_array_test(10001);
......
......@@ -162,6 +162,7 @@ static UU() BOOL def_pf_req_callback(void* UU(brtnode_pv), void* UU(read_extraar
static UU() int def_pf_callback(void* UU(brtnode_pv), void* UU(read_extraargs), int UU(fd), PAIR_ATTR* UU(sizep)) {
assert(FALSE);
return 0;
}
static UU() int
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment