• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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