1 #include "iwkv.h"
2 #include "iwlog.h"
3 #include "iwutils.h"
4 #include "iwcfg.h"
5 #include <CUnit/Basic.h>
6
7 #define RND_DATA_SZ (10*1048576)
8 char RND_DATA[RND_DATA_SZ];
9
10
init_suite(void)11 int init_suite(void) {
12 iwrc rc = iwkv_init();
13 return rc;
14 }
15
clean_suite(void)16 int clean_suite(void) {
17 return 0;
18 }
19
iwkv_test2_1(void)20 static void iwkv_test2_1(void) {
21 IWKV_OPTS opts = {
22 .path = "iwkv_test2_1.db",
23 .oflags = IWKV_TRUNC
24 };
25 const uint64_t numrec = 1000000; // 1M
26 // Test open/close
27 IWKV iwkv;
28 IWDB db1;
29 IWKV_val key, val;
30 iwrc rc = iwkv_open(&opts, &iwkv);
31 CU_ASSERT_EQUAL_FATAL(rc, 0);
32
33 rc = iwkv_db(iwkv, 1, IWDB_VNUM64_KEYS, &db1);
34 CU_ASSERT_EQUAL_FATAL(rc, 0);
35 for (uint64_t i = 0; i < numrec; ++i) {
36 key.size = sizeof(uint64_t);
37 key.data = &i;
38 val.size = sizeof(uint64_t);
39 val.data = &i;
40 rc = iwkv_put(db1, &key, &val, 0);
41 CU_ASSERT_EQUAL_FATAL(rc, 0);
42 }
43
44 for (uint64_t v = 0; v < numrec; ++v) {
45 uint64_t llv;
46 key.data = &v;
47 key.size = sizeof(uint64_t);
48 rc = iwkv_get(db1, &key, &val);
49 CU_ASSERT_EQUAL_FATAL(rc, 0);
50 memcpy(&llv, val.data, sizeof(llv));
51 CU_ASSERT_EQUAL_FATAL(llv, v);
52 iwkv_val_dispose(&val);
53 }
54
55 rc = iwkv_close(&iwkv);
56 CU_ASSERT_EQUAL_FATAL(rc, 0);
57 }
58
main()59 int main() {
60 CU_pSuite pSuite = NULL;
61
62 /* Initialize the CUnit test registry */
63 if (CUE_SUCCESS != CU_initialize_registry()) return CU_get_error();
64
65 /* Add a suite to the registry */
66 pSuite = CU_add_suite("iwkv_test2", init_suite, clean_suite);
67
68 if (NULL == pSuite) {
69 CU_cleanup_registry();
70 return CU_get_error();
71 }
72
73 /* Add the tests to the suite */
74 if ((NULL == CU_add_test(pSuite, "iwkv_test2_1", iwkv_test2_1))
75 ) {
76 CU_cleanup_registry();
77 return CU_get_error();
78 }
79
80 /* Run all tests using the CUnit Basic interface */
81 CU_basic_set_mode(CU_BRM_VERBOSE);
82 CU_basic_run_tests();
83 int ret = CU_get_error() || CU_get_number_of_failures();
84 CU_cleanup_registry();
85 return ret;
86 }
87