1#include <sys/types.h> 2 3#include <assert.h> 4#include <stdlib.h> 5#include <string.h> 6 7#include "db.h" 8 9#define ENV { \ 10 if (dbenv != NULL) \ 11 assert(dbenv->close(dbenv, 0) == 0); \ 12 assert(db_env_create(&dbenv, 0) == 0); \ 13 dbenv->set_errfile(dbenv, stderr); \ 14} 15 16int 17main() 18{ 19 const u_int8_t *lk_conflicts; 20 DB_ENV *dbenv; 21 db_timeout_t timeout; 22 u_int32_t a, b, c, v; 23 int nmodes, lk_modes; 24 u_int8_t conflicts[40]; 25 26 dbenv = NULL; 27 28 /* tx_max: NOT reset at run-time. */ 29 system("rm -rf TESTDIR; mkdir TESTDIR"); 30 ENV 31 assert(dbenv->set_tx_max(dbenv, 37) == 0); 32 assert(dbenv->open(dbenv, 33 "TESTDIR", DB_CREATE | DB_INIT_TXN, 0666) == 0); 34 assert(dbenv->get_tx_max(dbenv, &v) == 0); 35 assert(v == 37); 36 ENV 37 assert(dbenv->set_tx_max(dbenv, 63) == 0); 38 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 39 assert(dbenv->get_tx_max(dbenv, &v) == 0); 40 assert(v == 37); 41 42 /* lg_max: reset at run-time. */ 43 system("rm -rf TESTDIR; mkdir TESTDIR"); 44 ENV 45 assert(dbenv->set_lg_max(dbenv, 37 * 1024 * 1024) == 0); 46 assert(dbenv->open(dbenv, 47 "TESTDIR", DB_CREATE | DB_INIT_LOG, 0666) == 0); 48 assert(dbenv->get_lg_max(dbenv, &v) == 0); 49 assert(v == 37 * 1024 * 1024); 50 ENV 51 assert(dbenv->set_lg_max(dbenv, 63 * 1024 * 1024) == 0); 52 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 53 assert(dbenv->get_lg_max(dbenv, &v) == 0); 54 assert(v == 63 * 1024 * 1024); 55 56 /* lg_bsize: NOT reset at run-time. */ 57 system("rm -rf TESTDIR; mkdir TESTDIR"); 58 ENV 59 assert(dbenv->set_lg_bsize(dbenv, 37 * 1024) == 0); 60 assert(dbenv->open(dbenv, 61 "TESTDIR", DB_CREATE | DB_INIT_LOG, 0666) == 0); 62 assert(dbenv->get_lg_bsize(dbenv, &v) == 0); 63 assert(v == 37 * 1024); 64 ENV 65 assert(dbenv->set_lg_bsize(dbenv, 63 * 1024) == 0); 66 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 67 assert(dbenv->get_lg_bsize(dbenv, &v) == 0); 68 assert(v == 37 * 1024); 69 70 /* lg_regionmax: NOT reset at run-time. */ 71 system("rm -rf TESTDIR; mkdir TESTDIR"); 72 ENV 73 assert(dbenv->set_lg_regionmax(dbenv, 137 * 1024) == 0); 74 assert(dbenv->open(dbenv, 75 "TESTDIR", DB_CREATE | DB_INIT_LOG, 0666) == 0); 76 assert(dbenv->get_lg_regionmax(dbenv, &v) == 0); 77 assert(v == 137 * 1024); 78 ENV 79 assert(dbenv->set_lg_regionmax(dbenv, 163 * 1024) == 0); 80 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 81 assert(dbenv->get_lg_regionmax(dbenv, &v) == 0); 82 assert(v == 137 * 1024); 83 84 /* lk_get_lk_conflicts: NOT reset at run-time. */ 85 system("rm -rf TESTDIR; mkdir TESTDIR"); 86 ENV 87 memset(conflicts, 'a', sizeof(conflicts)); 88 nmodes = 6; 89 assert(dbenv->set_lk_conflicts(dbenv, conflicts, nmodes) == 0); 90 assert(dbenv->open(dbenv, 91 "TESTDIR", DB_CREATE | DB_INIT_LOCK, 0666) == 0); 92 assert(dbenv->get_lk_conflicts(dbenv, &lk_conflicts, &lk_modes) == 0); 93 assert(lk_conflicts[0] == 'a'); 94 assert(lk_modes == 6); 95 ENV 96 memset(conflicts, 'b', sizeof(conflicts)); 97 nmodes = 8; 98 assert(dbenv->set_lk_conflicts(dbenv, conflicts, nmodes) == 0); 99 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 100 assert(dbenv->get_lk_conflicts(dbenv, &lk_conflicts, &lk_modes) == 0); 101 assert(lk_conflicts[0] == 'a'); 102 assert(lk_modes == 6); 103 104 /* lk_detect: NOT reset at run-time. */ 105 system("rm -rf TESTDIR; mkdir TESTDIR"); 106 ENV 107 assert(dbenv->set_lk_detect(dbenv, DB_LOCK_MAXLOCKS) == 0); 108 assert(dbenv->open(dbenv, 109 "TESTDIR", DB_CREATE | DB_INIT_LOCK, 0666) == 0); 110 assert(dbenv->get_lk_detect(dbenv, &v) == 0); 111 assert(v == DB_LOCK_MAXLOCKS); 112 ENV 113 assert(dbenv->set_lk_detect(dbenv, DB_LOCK_DEFAULT) == 0); 114 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 115 assert(dbenv->get_lk_detect(dbenv, &v) == 0); 116 assert(v == DB_LOCK_MAXLOCKS); 117 118 /* lk_max_locks: NOT reset at run-time. */ 119 system("rm -rf TESTDIR; mkdir TESTDIR"); 120 ENV 121 assert(dbenv->set_lk_max_locks(dbenv, 37) == 0); 122 assert(dbenv->open(dbenv, 123 "TESTDIR", DB_CREATE | DB_INIT_LOCK, 0666) == 0); 124 assert(dbenv->get_lk_max_locks(dbenv, &v) == 0); 125 assert(v == 37); 126 ENV 127 assert(dbenv->set_lk_max_locks(dbenv, 63) == 0); 128 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 129 assert(dbenv->get_lk_max_locks(dbenv, &v) == 0); 130 assert(v == 37); 131 132 /* lk_max_lockers: NOT reset at run-time. */ 133 system("rm -rf TESTDIR; mkdir TESTDIR"); 134 ENV 135 assert(dbenv->set_lk_max_lockers(dbenv, 37) == 0); 136 assert(dbenv->open(dbenv, 137 "TESTDIR", DB_CREATE | DB_INIT_LOCK, 0666) == 0); 138 assert(dbenv->get_lk_max_lockers(dbenv, &v) == 0); 139 assert(v == 37); 140 ENV 141 assert(dbenv->set_lk_max_lockers(dbenv, 63) == 0); 142 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 143 assert(dbenv->get_lk_max_lockers(dbenv, &v) == 0); 144 assert(v == 37); 145 146 /* lk_max_objects: NOT reset at run-time. */ 147 system("rm -rf TESTDIR; mkdir TESTDIR"); 148 ENV 149 assert(dbenv->set_lk_max_objects(dbenv, 37) == 0); 150 assert(dbenv->open(dbenv, 151 "TESTDIR", DB_CREATE | DB_INIT_LOCK, 0666) == 0); 152 assert(dbenv->get_lk_max_objects(dbenv, &v) == 0); 153 assert(v == 37); 154 ENV 155 assert(dbenv->set_lk_max_objects(dbenv, 63) == 0); 156 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 157 assert(dbenv->get_lk_max_objects(dbenv, &v) == 0); 158 assert(v == 37); 159 160 /* lock timeout: reset at run-time. */ 161 system("rm -rf TESTDIR; mkdir TESTDIR"); 162 ENV 163 assert(dbenv->set_timeout(dbenv, 37, DB_SET_LOCK_TIMEOUT) == 0); 164 assert(dbenv->open(dbenv, 165 "TESTDIR", DB_CREATE | DB_INIT_LOCK, 0666) == 0); 166 assert(dbenv->get_timeout(dbenv, &timeout, DB_SET_LOCK_TIMEOUT) == 0); 167 assert(timeout == 37); 168 ENV 169 assert(dbenv->set_timeout(dbenv, 63, DB_SET_LOCK_TIMEOUT) == 0); 170 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 171 assert(dbenv->get_timeout(dbenv, &timeout, DB_SET_LOCK_TIMEOUT) == 0); 172 assert(timeout == 63); 173 174 /* txn timeout: reset at run-time. */ 175 system("rm -rf TESTDIR; mkdir TESTDIR"); 176 ENV 177 assert(dbenv->set_timeout(dbenv, 37, DB_SET_TXN_TIMEOUT) == 0); 178 assert(dbenv->open(dbenv, 179 "TESTDIR", DB_CREATE | DB_INIT_LOCK, 0666) == 0); 180 assert(dbenv->get_timeout(dbenv, &timeout, DB_SET_TXN_TIMEOUT) == 0); 181 assert(timeout == 37); 182 ENV 183 assert(dbenv->set_timeout(dbenv, 63, DB_SET_TXN_TIMEOUT) == 0); 184 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 185 assert(dbenv->get_timeout(dbenv, &timeout, DB_SET_TXN_TIMEOUT) == 0); 186 assert(timeout == 63); 187 188 /* cache size: NOT reset at run-time. */ 189 system("rm -rf TESTDIR; mkdir TESTDIR"); 190 ENV 191 assert(dbenv->set_cachesize(dbenv, 1, 37, 3) == 0); 192 assert(dbenv->open(dbenv, 193 "TESTDIR", DB_CREATE | DB_INIT_MPOOL, 0666) == 0); 194 assert(dbenv->get_cachesize(dbenv, &a, &b, &c) == 0); 195 assert(a == 1 && b == 37 && c == 3); 196 ENV 197 assert(dbenv->set_cachesize(dbenv, 2, 63, 1) == 0); 198 assert(dbenv->open(dbenv, "TESTDIR", DB_JOINENV, 0666) == 0); 199 assert(dbenv->get_cachesize(dbenv, &a, &b, &c) == 0); 200 assert(a == 1 && b == 37 && c == 3); 201 202 return (0); 203} 204