summaryrefslogtreecommitdiff
path: root/bdb/test
diff options
context:
space:
mode:
authorunknown <brian@zim.(none)>2005-04-26 18:19:54 -0700
committerunknown <brian@zim.(none)>2005-04-26 18:19:54 -0700
commitb7e422be1b7a8ca3f4e761e67db5e8febc701dfd (patch)
treedf9016f3d70b4657f89dcddca2ec4e188fc7fbdf /bdb/test
parentc0333ecee42a4de499b3377cfa21d7b5af1ddd2b (diff)
downloadmariadb-git-b7e422be1b7a8ca3f4e761e67db5e8febc701dfd.tar.gz
Changes to create storage directory for storage engines.
storage/heap/.cvsignore: mvdir storage/heap/ChangeLog: mvdir storage/heap/Makefile.am: mvdir storage/heap/_check.c: mvdir storage/heap/_rectest.c: mvdir storage/heap/heapdef.h: mvdir storage/heap/hp_block.c: mvdir storage/heap/hp_clear.c: mvdir storage/heap/hp_close.c: mvdir storage/heap/hp_create.c: mvdir storage/heap/hp_delete.c: mvdir storage/heap/hp_extra.c: mvdir storage/heap/hp_hash.c: mvdir storage/heap/hp_info.c: mvdir storage/heap/hp_open.c: mvdir storage/heap/hp_panic.c: mvdir storage/heap/hp_rename.c: mvdir storage/heap/hp_rfirst.c: mvdir storage/heap/hp_rkey.c: mvdir storage/heap/hp_rlast.c: mvdir storage/heap/hp_rnext.c: mvdir storage/heap/hp_rprev.c: mvdir storage/heap/hp_rrnd.c: mvdir storage/heap/hp_rsame.c: mvdir storage/heap/hp_scan.c: mvdir storage/heap/hp_static.c: mvdir storage/heap/hp_test1.c: mvdir storage/heap/hp_test2.c: mvdir storage/heap/hp_update.c: mvdir storage/heap/hp_write.c: mvdir storage/heap/make-ccc: mvdir storage/myisam/.cvsignore: mvdir storage/myisam/ChangeLog: mvdir storage/myisam/Makefile.am: mvdir storage/myisam/NEWS: mvdir storage/myisam/TODO: mvdir storage/myisam/ft_boolean_search.c: mvdir storage/myisam/ft_eval.c: mvdir storage/myisam/ft_eval.h: mvdir storage/myisam/ft_nlq_search.c: mvdir storage/myisam/ft_parser.c: mvdir storage/myisam/ft_static.c: mvdir storage/myisam/ft_stem.c: mvdir storage/myisam/ft_stopwords.c: mvdir storage/myisam/ft_test1.c: mvdir storage/myisam/ft_test1.h: mvdir storage/myisam/ft_update.c: mvdir storage/myisam/ftdefs.h: mvdir storage/myisam/fulltext.h: mvdir storage/myisam/make-ccc: mvdir storage/myisam/mi_cache.c: mvdir storage/myisam/mi_changed.c: mvdir storage/myisam/mi_check.c: mvdir storage/myisam/mi_checksum.c: mvdir storage/myisam/mi_close.c: mvdir storage/myisam/mi_create.c: mvdir storage/myisam/mi_dbug.c: mvdir storage/myisam/mi_delete.c: mvdir storage/myisam/mi_delete_all.c: mvdir storage/myisam/mi_delete_table.c: mvdir storage/myisam/mi_dynrec.c: mvdir storage/myisam/mi_extra.c: mvdir storage/myisam/mi_info.c: mvdir storage/myisam/mi_key.c: mvdir storage/myisam/mi_keycache.c: mvdir storage/myisam/mi_locking.c: mvdir storage/myisam/mi_log.c: mvdir storage/myisam/mi_open.c: mvdir storage/myisam/mi_packrec.c: mvdir storage/myisam/mi_page.c: mvdir storage/myisam/mi_panic.c: mvdir storage/myisam/mi_preload.c: mvdir storage/myisam/mi_range.c: mvdir storage/myisam/mi_rename.c: mvdir storage/myisam/mi_rfirst.c: mvdir storage/myisam/mi_rkey.c: mvdir storage/myisam/mi_rlast.c: mvdir storage/myisam/mi_rnext.c: mvdir storage/myisam/mi_rnext_same.c: mvdir storage/myisam/mi_rprev.c: mvdir storage/myisam/mi_rrnd.c: mvdir storage/myisam/mi_rsame.c: mvdir storage/myisam/ftbench/Ecompare.pl: mvdir storage/myisam/ftbench/Ecreate.pl: mvdir storage/myisam/ftbench/Ereport.pl: mvdir storage/myisam/ftbench/README: mvdir storage/myisam/ftbench/ft-test-run.sh: mvdir storage/myisam/mi_rsamepos.c: mvdir storage/myisam/mi_scan.c: mvdir storage/myisam/mi_search.c: mvdir storage/myisam/mi_static.c: mvdir storage/myisam/mi_statrec.c: mvdir storage/myisam/mi_test1.c: mvdir storage/myisam/mi_test2.c: mvdir storage/myisam/mi_test3.c: mvdir storage/myisam/mi_test_all.res: mvdir storage/myisam/mi_test_all.sh: mvdir storage/myisam/mi_unique.c: mvdir storage/myisam/mi_update.c: mvdir storage/myisam/mi_write.c: mvdir storage/myisam/myisam_ftdump.c: mvdir storage/myisam/myisamchk.c: mvdir storage/myisam/myisamdef.h: mvdir storage/myisam/myisamlog.c: mvdir storage/myisam/myisampack.c: mvdir storage/myisam/rt_index.c: mvdir storage/myisam/rt_index.h: mvdir storage/myisam/rt_key.c: mvdir storage/myisam/rt_key.h: mvdir storage/myisam/rt_mbr.c: mvdir storage/myisam/rt_mbr.h: mvdir storage/myisam/rt_split.c: mvdir storage/myisam/rt_test.c: mvdir storage/myisam/sort.c: mvdir storage/myisam/sp_defs.h: mvdir storage/myisam/sp_key.c: mvdir storage/myisam/sp_test.c: mvdir storage/myisam/test_pack: mvdir storage/myisammrg/.cvsignore: mvdir storage/myisammrg/Makefile.am: mvdir storage/myisammrg/make-ccc: mvdir storage/myisammrg/myrg_close.c: mvdir storage/myisammrg/myrg_create.c: mvdir storage/myisammrg/myrg_def.h: mvdir storage/myisammrg/myrg_delete.c: mvdir storage/myisammrg/myrg_extra.c: mvdir storage/myisammrg/myrg_info.c: mvdir storage/myisammrg/myrg_locking.c: mvdir storage/myisammrg/myrg_open.c: mvdir storage/myisammrg/myrg_panic.c: mvdir storage/myisammrg/myrg_queue.c: mvdir storage/myisammrg/myrg_range.c: mvdir storage/myisammrg/myrg_rfirst.c: mvdir storage/myisammrg/myrg_rkey.c: mvdir storage/myisammrg/myrg_rlast.c: mvdir storage/myisammrg/myrg_rnext.c: mvdir storage/myisammrg/myrg_rnext_same.c: mvdir storage/myisammrg/myrg_rprev.c: mvdir storage/myisammrg/myrg_rrnd.c: mvdir storage/myisammrg/myrg_rsame.c: mvdir storage/myisammrg/myrg_static.c: mvdir storage/myisammrg/myrg_update.c: mvdir storage/myisammrg/myrg_write.c: mvdir storage/innobase/Makefile.am: mvdir storage/innobase/btr/Makefile.am: mvdir storage/innobase/btr/btr0btr.c: mvdir storage/innobase/btr/btr0cur.c: mvdir storage/innobase/btr/btr0pcur.c: mvdir storage/innobase/btr/btr0sea.c: mvdir storage/innobase/btr/makefilewin: mvdir storage/innobase/buf/Makefile.am: mvdir storage/innobase/buf/buf0buf.c: mvdir storage/innobase/buf/buf0flu.c: mvdir storage/innobase/buf/buf0lru.c: mvdir storage/innobase/buf/buf0rea.c: mvdir storage/innobase/buf/makefilewin: mvdir storage/innobase/configure.in: mvdir storage/innobase/data/Makefile.am: mvdir storage/innobase/data/data0data.c: mvdir storage/innobase/data/data0type.c: mvdir storage/innobase/data/makefilewin: mvdir storage/innobase/db/db0err.h: mvdir storage/innobase/dict/Makefile.am: mvdir storage/innobase/dict/dict0boot.c: mvdir storage/innobase/dict/dict0crea.c: mvdir storage/innobase/dict/dict0dict.c: mvdir storage/innobase/dict/dict0load.c: mvdir storage/innobase/makefilewin: mvdir storage/innobase/my_cnf: mvdir storage/innobase/dict/dict0mem.c: mvdir storage/innobase/dict/makefilewin: mvdir storage/innobase/dyn/Makefile.am: mvdir storage/innobase/dyn/dyn0dyn.c: mvdir storage/innobase/dyn/makefilewin: mvdir storage/innobase/eval/Makefile.am: mvdir storage/innobase/eval/eval0eval.c: mvdir storage/innobase/eval/eval0proc.c: mvdir storage/innobase/eval/makefilewin: mvdir storage/innobase/fil/Makefile.am: mvdir storage/innobase/fil/fil0fil.c: mvdir storage/innobase/fil/makefilewin: mvdir storage/innobase/fsp/Makefile.am: mvdir storage/innobase/fsp/fsp0fsp.c: mvdir storage/innobase/fsp/makefilewin: mvdir storage/innobase/fut/Makefile.am: mvdir storage/innobase/fut/fut0fut.c: mvdir storage/innobase/fut/fut0lst.c: mvdir storage/innobase/fut/makefilewin: mvdir storage/innobase/ha/Makefile.am: mvdir storage/innobase/ha/ha0ha.c: mvdir storage/innobase/ha/hash0hash.c: mvdir storage/innobase/ha/makefilewin: mvdir storage/innobase/ibuf/Makefile.am: mvdir storage/innobase/ibuf/ibuf0ibuf.c: mvdir storage/innobase/ibuf/makefilewin: mvdir storage/innobase/include/Makefile.am: mvdir storage/innobase/include/Makefile.i: mvdir storage/innobase/include/btr0btr.h: mvdir storage/innobase/include/btr0btr.ic: mvdir storage/innobase/include/btr0cur.h: mvdir storage/innobase/include/btr0cur.ic: mvdir storage/innobase/include/btr0pcur.h: mvdir storage/innobase/include/btr0pcur.ic: mvdir storage/innobase/include/btr0sea.h: mvdir storage/innobase/include/btr0sea.ic: mvdir storage/innobase/include/btr0types.h: mvdir storage/innobase/include/buf0buf.h: mvdir storage/innobase/include/buf0buf.ic: mvdir storage/innobase/include/buf0flu.h: mvdir storage/innobase/include/buf0flu.ic: mvdir storage/innobase/include/buf0lru.h: mvdir storage/innobase/include/buf0lru.ic: mvdir storage/innobase/include/buf0rea.h: mvdir storage/innobase/include/buf0types.h: mvdir storage/innobase/include/data0data.h: mvdir storage/innobase/include/data0data.ic: mvdir storage/innobase/include/data0type.h: mvdir storage/innobase/include/data0type.ic: mvdir storage/innobase/include/data0types.h: mvdir storage/innobase/include/db0err.h: mvdir storage/innobase/include/dict0boot.h: mvdir storage/innobase/include/dict0boot.ic: mvdir storage/innobase/include/dict0crea.h: mvdir storage/innobase/include/dict0crea.ic: mvdir storage/innobase/include/dict0dict.h: mvdir storage/innobase/include/dict0dict.ic: mvdir storage/innobase/include/dict0load.h: mvdir storage/innobase/include/dict0load.ic: mvdir storage/innobase/include/dict0mem.h: mvdir storage/innobase/include/dict0mem.ic: mvdir storage/innobase/include/dict0types.h: mvdir storage/innobase/include/dyn0dyn.h: mvdir storage/innobase/include/dyn0dyn.ic: mvdir storage/innobase/include/eval0eval.h: mvdir storage/innobase/include/eval0eval.ic: mvdir storage/innobase/include/eval0proc.h: mvdir storage/innobase/include/eval0proc.ic: mvdir storage/innobase/include/fil0fil.h: mvdir storage/innobase/include/fsp0fsp.h: mvdir storage/innobase/include/fsp0fsp.ic: mvdir storage/innobase/include/fut0fut.h: mvdir storage/innobase/include/fut0fut.ic: mvdir storage/innobase/include/fut0lst.h: mvdir storage/innobase/include/fut0lst.ic: mvdir storage/innobase/include/ha0ha.h: mvdir storage/innobase/include/ha0ha.ic: mvdir storage/innobase/include/hash0hash.h: mvdir storage/innobase/include/hash0hash.ic: mvdir storage/innobase/include/ibuf0ibuf.h: mvdir storage/innobase/include/ibuf0ibuf.ic: mvdir storage/innobase/include/ibuf0types.h: mvdir storage/innobase/include/lock0lock.h: mvdir storage/innobase/include/lock0lock.ic: mvdir storage/innobase/include/lock0types.h: mvdir storage/innobase/include/log0log.h: mvdir storage/innobase/include/log0log.ic: mvdir storage/innobase/include/log0recv.h: mvdir storage/innobase/include/log0recv.ic: mvdir storage/innobase/include/mach0data.h: mvdir storage/innobase/include/mach0data.ic: mvdir storage/innobase/include/makefilewin.i: mvdir storage/innobase/include/mem0dbg.h: mvdir storage/innobase/include/mem0dbg.ic: mvdir storage/innobase/include/mem0mem.h: mvdir storage/innobase/include/mem0mem.ic: mvdir storage/innobase/include/mem0pool.h: mvdir storage/innobase/include/mem0pool.ic: mvdir storage/innobase/include/mtr0log.h: mvdir storage/innobase/include/mtr0log.ic: mvdir storage/innobase/include/mtr0mtr.h: mvdir storage/innobase/include/mtr0mtr.ic: mvdir storage/innobase/include/mtr0types.h: mvdir storage/innobase/include/os0file.h: mvdir storage/innobase/include/os0proc.h: mvdir storage/innobase/include/os0proc.ic: mvdir storage/innobase/include/os0sync.h: mvdir storage/innobase/include/os0sync.ic: mvdir storage/innobase/include/os0thread.h: mvdir storage/innobase/include/os0thread.ic: mvdir storage/innobase/include/page0cur.h: mvdir storage/innobase/include/page0cur.ic: mvdir storage/innobase/include/page0page.h: mvdir storage/innobase/include/page0page.ic: mvdir storage/innobase/include/page0types.h: mvdir storage/innobase/include/pars0grm.h: mvdir storage/innobase/include/pars0opt.h: mvdir storage/innobase/include/pars0opt.ic: mvdir storage/innobase/include/pars0pars.h: mvdir storage/innobase/include/pars0pars.ic: mvdir storage/innobase/include/pars0sym.h: mvdir storage/innobase/include/pars0sym.ic: mvdir storage/innobase/include/pars0types.h: mvdir storage/innobase/include/que0que.h: mvdir storage/innobase/include/que0que.ic: mvdir storage/innobase/include/que0types.h: mvdir storage/innobase/include/read0read.h: mvdir storage/innobase/include/read0read.ic: mvdir storage/innobase/include/read0types.h: mvdir storage/innobase/include/rem0cmp.h: mvdir storage/innobase/include/rem0cmp.ic: mvdir storage/innobase/include/rem0rec.h: mvdir storage/innobase/include/rem0rec.ic: mvdir storage/innobase/include/rem0types.h: mvdir storage/innobase/include/row0ins.h: mvdir storage/innobase/include/row0ins.ic: mvdir storage/innobase/include/row0mysql.h: mvdir storage/innobase/include/row0mysql.ic: mvdir storage/innobase/include/row0purge.h: mvdir storage/innobase/include/row0purge.ic: mvdir storage/innobase/include/row0row.h: mvdir storage/innobase/include/row0row.ic: mvdir storage/innobase/include/row0sel.h: mvdir storage/innobase/include/row0sel.ic: mvdir storage/innobase/include/row0types.h: mvdir storage/innobase/include/row0uins.h: mvdir storage/innobase/include/row0uins.ic: mvdir storage/innobase/include/row0umod.h: mvdir storage/innobase/include/row0umod.ic: mvdir storage/innobase/include/row0undo.h: mvdir storage/innobase/include/row0undo.ic: mvdir storage/innobase/include/row0upd.h: mvdir storage/innobase/include/row0upd.ic: mvdir storage/innobase/include/row0vers.h: mvdir storage/innobase/include/row0vers.ic: mvdir storage/innobase/include/srv0que.h: mvdir storage/innobase/include/srv0srv.h: mvdir storage/innobase/include/srv0srv.ic: mvdir storage/innobase/include/srv0start.h: mvdir storage/innobase/include/sync0arr.h: mvdir storage/innobase/include/sync0arr.ic: mvdir storage/innobase/include/sync0rw.h: mvdir storage/innobase/include/sync0rw.ic: mvdir storage/innobase/include/sync0sync.h: mvdir storage/innobase/include/sync0sync.ic: mvdir storage/innobase/include/sync0types.h: mvdir storage/innobase/include/thr0loc.h: mvdir storage/innobase/include/thr0loc.ic: mvdir storage/innobase/include/trx0purge.h: mvdir storage/innobase/include/trx0purge.ic: mvdir storage/innobase/include/trx0rec.h: mvdir storage/innobase/include/trx0rec.ic: mvdir storage/innobase/include/trx0roll.h: mvdir storage/innobase/include/trx0roll.ic: mvdir storage/innobase/include/trx0rseg.h: mvdir storage/innobase/include/trx0rseg.ic: mvdir storage/innobase/include/trx0sys.h: mvdir storage/innobase/include/trx0sys.ic: mvdir storage/innobase/include/trx0trx.h: mvdir storage/innobase/include/trx0trx.ic: mvdir storage/innobase/include/trx0types.h: mvdir storage/innobase/include/trx0undo.h: mvdir storage/innobase/include/trx0undo.ic: mvdir storage/innobase/include/trx0xa.h: mvdir storage/innobase/include/univ.i: mvdir storage/innobase/include/usr0sess.h: mvdir storage/innobase/include/usr0sess.ic: mvdir storage/innobase/include/usr0types.h: mvdir storage/innobase/include/ut0byte.h: mvdir storage/innobase/include/ut0byte.ic: mvdir storage/innobase/include/ut0dbg.h: mvdir storage/innobase/include/ut0lst.h: mvdir storage/innobase/include/ut0mem.h: mvdir storage/innobase/include/ut0mem.ic: mvdir storage/innobase/include/ut0rnd.h: mvdir storage/innobase/include/ut0rnd.ic: mvdir storage/innobase/include/ut0sort.h: mvdir storage/innobase/include/ut0ut.h: mvdir storage/innobase/include/ut0ut.ic: mvdir storage/innobase/lock/Makefile.am: mvdir storage/innobase/lock/lock0lock.c: mvdir storage/innobase/lock/makefilewin: mvdir storage/innobase/log/Makefile.am: mvdir storage/innobase/log/log0log.c: mvdir storage/innobase/log/log0recv.c: mvdir storage/innobase/log/makefilewin: mvdir storage/innobase/mach/Makefile.am: mvdir storage/innobase/mach/mach0data.c: mvdir storage/innobase/mach/makefilewin: mvdir storage/innobase/mem/Makefile.am: mvdir storage/innobase/mem/makefilewin: mvdir storage/innobase/mem/mem0dbg.c: mvdir storage/innobase/mem/mem0mem.c: mvdir storage/innobase/mem/mem0pool.c: mvdir storage/innobase/mtr/Makefile.am: mvdir storage/innobase/mtr/makefilewin: mvdir storage/innobase/mtr/mtr0log.c: mvdir storage/innobase/mtr/mtr0mtr.c: mvdir storage/innobase/os/Makefile.am: mvdir storage/innobase/os/makefilewin: mvdir storage/innobase/os/os0file.c: mvdir storage/innobase/os/os0proc.c: mvdir storage/innobase/os/os0sync.c: mvdir storage/innobase/os/os0thread.c: mvdir storage/innobase/page/Makefile.am: mvdir storage/innobase/page/makefilewin: mvdir storage/innobase/page/page0cur.c: mvdir storage/innobase/page/page0page.c: mvdir storage/innobase/pars/Makefile.am: mvdir storage/innobase/pars/lexyy.c: mvdir storage/innobase/pars/makefilewin: mvdir storage/innobase/pars/pars0grm.c: mvdir storage/innobase/pars/pars0grm.h: mvdir storage/innobase/pars/pars0grm.y: mvdir storage/innobase/pars/pars0lex.l: mvdir storage/innobase/pars/pars0opt.c: mvdir storage/innobase/pars/pars0pars.c: mvdir storage/innobase/pars/pars0sym.c: mvdir storage/innobase/que/Makefile.am: mvdir storage/innobase/que/makefilewin: mvdir storage/innobase/que/que0que.c: mvdir storage/innobase/read/Makefile.am: mvdir storage/innobase/read/makefilewin: mvdir storage/innobase/read/read0read.c: mvdir storage/innobase/rem/Makefile.am: mvdir storage/innobase/rem/makefilewin: mvdir storage/innobase/rem/rem0cmp.c: mvdir storage/innobase/rem/rem0rec.c: mvdir storage/innobase/row/Makefile.am: mvdir storage/innobase/row/makefilewin: mvdir storage/innobase/row/row0ins.c: mvdir storage/innobase/row/row0mysql.c: mvdir storage/innobase/row/row0purge.c: mvdir storage/innobase/row/row0row.c: mvdir storage/innobase/row/row0sel.c: mvdir storage/innobase/row/row0uins.c: mvdir storage/innobase/row/row0umod.c: mvdir storage/innobase/row/row0undo.c: mvdir storage/innobase/row/row0upd.c: mvdir storage/innobase/row/row0vers.c: mvdir storage/innobase/srv/Makefile.am: mvdir storage/innobase/srv/makefilewin: mvdir storage/innobase/srv/srv0que.c: mvdir storage/innobase/srv/srv0srv.c: mvdir storage/innobase/srv/srv0start.c: mvdir storage/innobase/sync/Makefile.am: mvdir storage/innobase/sync/makefilewin: mvdir storage/innobase/sync/sync0arr.c: mvdir storage/innobase/sync/sync0rw.c: mvdir storage/innobase/sync/sync0sync.c: mvdir storage/innobase/thr/Makefile.am: mvdir storage/innobase/thr/makefilewin: mvdir storage/innobase/thr/thr0loc.c: mvdir storage/innobase/trx/Makefile.am: mvdir storage/innobase/trx/makefilewin: mvdir storage/innobase/trx/trx0purge.c: mvdir storage/innobase/trx/trx0rec.c: mvdir storage/innobase/trx/trx0roll.c: mvdir storage/innobase/trx/trx0rseg.c: mvdir storage/innobase/trx/trx0sys.c: mvdir storage/innobase/trx/trx0trx.c: mvdir storage/innobase/trx/trx0undo.c: mvdir storage/innobase/usr/Makefile.am: mvdir storage/innobase/usr/makefilewin: mvdir storage/innobase/usr/usr0sess.c: mvdir storage/innobase/ut/Makefile.am: mvdir storage/innobase/ut/makefilewin: mvdir storage/innobase/ut/ut0byte.c: mvdir storage/innobase/ut/ut0dbg.c: mvdir storage/innobase/ut/ut0mem.c: mvdir storage/innobase/ut/ut0rnd.c: mvdir storage/innobase/ut/ut0ut.c: mvdir storage/ndb/Makefile.am: mvdir storage/ndb/bin/.empty: mvdir storage/ndb/bin/check-regression.sh: mvdir storage/ndb/bin/makeTestPrograms_html.sh: mvdir storage/ndb/config/common.mk.am: mvdir storage/ndb/config/make-win-dsw.sh: mvdir storage/ndb/config/type_kernel.mk.am: mvdir storage/ndb/config/type_mgmapiclient.mk.am: mvdir storage/ndb/config/type_ndbapi.mk.am: mvdir storage/ndb/config/type_ndbapiclient.mk.am: mvdir storage/ndb/config/type_ndbapitest.mk.am: mvdir storage/ndb/config/type_ndbapitools.mk.am: mvdir storage/ndb/config/type_util.mk.am: mvdir storage/ndb/config/win-includes: mvdir storage/ndb/config/win-lib.am: mvdir storage/ndb/config/win-libraries: mvdir storage/ndb/config/win-name: mvdir storage/ndb/config/win-prg.am: mvdir storage/ndb/config/win-sources: mvdir storage/ndb/demos/1-node/1-api-3/Ndb.cfg: mvdir storage/ndb/demos/1-node/1-db-2/Ndb.cfg: mvdir storage/ndb/demos/1-node/1-mgm-1/Ndb.cfg: mvdir storage/ndb/demos/1-node/1-mgm-1/template_config.ini: mvdir storage/ndb/demos/2-node/2-api-4/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-api-5/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-api-6/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-api-7/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-db-2/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-db-3/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-mgm-1/Ndb.cfg: mvdir storage/ndb/demos/2-node/2-mgm-1/template_config.ini: mvdir storage/ndb/demos/config-templates/config_template-1-REP.ini: mvdir storage/ndb/demos/config-templates/config_template-4.ini: mvdir storage/ndb/demos/config-templates/config_template-install.ini: mvdir storage/ndb/demos/run_demo1-PS-SS_common.sh: mvdir storage/ndb/demos/run_demo1-PS.sh: mvdir storage/ndb/demos/run_demo1-SS.sh: mvdir storage/ndb/demos/run_demo1.sh: mvdir storage/ndb/demos/run_demo2.sh: mvdir storage/ndb/docs/Makefile.am: mvdir storage/ndb/docs/README: mvdir storage/ndb/docs/doxygen/Doxyfile.mgmapi: mvdir storage/ndb/docs/doxygen/Doxyfile.ndbapi: mvdir storage/ndb/docs/doxygen/Doxyfile.ndb: mvdir storage/ndb/docs/doxygen/Doxyfile.odbc: mvdir storage/ndb/docs/doxygen/Doxyfile.test: mvdir storage/ndb/docs/doxygen/header.mgmapi.tex: mvdir storage/ndb/docs/doxygen/header.ndbapi.tex: mvdir storage/ndb/docs/doxygen/postdoxy.pl: mvdir storage/ndb/docs/doxygen/predoxy.pl: mvdir storage/ndb/docs/wl2077.txt: mvdir storage/ndb/home/bin/Linuxmkisofs: mvdir storage/ndb/home/bin/Solarismkisofs: mvdir storage/ndb/home/bin/cvs2cl.pl: mvdir storage/ndb/home/bin/fix-cvs-root: mvdir storage/ndb/home/bin/import-from-bk.sh: mvdir storage/ndb/home/bin/ndb_deploy: mvdir storage/ndb/home/bin/ndbdoxy.pl: mvdir storage/ndb/home/bin/ngcalc: mvdir storage/ndb/home/bin/parseConfigFile.awk: mvdir storage/ndb/home/bin/setup-test.sh: mvdir storage/ndb/home/bin/signallog2html.lib/signallog2list.awk: mvdir storage/ndb/home/bin/signallog2html.lib/uniq_blocks.awk: mvdir storage/ndb/home/bin/signallog2html.sh: mvdir storage/ndb/home/bin/stripcr: mvdir storage/ndb/home/lib/funcs.sh: mvdir storage/ndb/include/Makefile.am: mvdir storage/ndb/include/debugger/DebuggerNames.hpp: mvdir storage/ndb/include/debugger/EventLogger.hpp: mvdir storage/ndb/include/debugger/GrepError.hpp: mvdir storage/ndb/include/debugger/SignalLoggerManager.hpp: mvdir storage/ndb/include/editline/editline.h: mvdir storage/ndb/include/kernel/AttributeDescriptor.hpp: mvdir storage/ndb/include/kernel/AttributeHeader.hpp: mvdir storage/ndb/include/kernel/AttributeList.hpp: mvdir storage/ndb/include/kernel/BlockNumbers.h: mvdir storage/ndb/include/kernel/GlobalSignalNumbers.h: mvdir storage/ndb/include/kernel/GrepEvent.hpp: mvdir storage/ndb/include/kernel/Interpreter.hpp: mvdir storage/ndb/include/kernel/LogLevel.hpp: mvdir storage/ndb/include/kernel/NodeBitmask.hpp: mvdir storage/ndb/include/kernel/NodeInfo.hpp: mvdir storage/ndb/include/kernel/NodeState.hpp: mvdir storage/ndb/include/kernel/RefConvert.hpp: mvdir storage/ndb/include/kernel/kernel_config_parameters.h: mvdir storage/ndb/include/kernel/kernel_types.h: mvdir storage/ndb/include/kernel/ndb_limits.h: mvdir storage/ndb/include/kernel/signaldata/AbortAll.hpp: mvdir storage/ndb/include/kernel/signaldata/AccFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/AccLock.hpp: mvdir storage/ndb/include/kernel/signaldata/AccScan.hpp: mvdir storage/ndb/include/kernel/signaldata/AccSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/AlterIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/AlterTab.hpp: mvdir storage/ndb/include/kernel/signaldata/AlterTable.hpp: mvdir storage/ndb/include/kernel/signaldata/AlterTrig.hpp: mvdir storage/ndb/include/kernel/signaldata/ApiRegSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/ApiVersion.hpp: mvdir storage/ndb/include/kernel/signaldata/ArbitSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/AttrInfo.hpp: mvdir storage/ndb/include/kernel/trigger_definitions.h: mvdir storage/ndb/include/ndb_constants.h: mvdir storage/ndb/include/ndb_global.h.in: mvdir storage/ndb/include/ndb_init.h: mvdir storage/ndb/include/ndb_net.h: mvdir storage/ndb/include/ndb_types.h.in: mvdir storage/ndb/include/ndb_version.h.in: mvdir storage/ndb/include/kernel/signaldata/BackupContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/BackupImpl.hpp: mvdir storage/ndb/include/kernel/signaldata/BackupSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/BlockCommitOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/BuildIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/CheckNodeGroups.hpp: mvdir storage/ndb/include/kernel/signaldata/CloseComReqConf.hpp: mvdir storage/ndb/include/kernel/signaldata/CmInit.hpp: mvdir storage/ndb/include/kernel/signaldata/CmRegSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/CmvmiCfgConf.hpp: mvdir storage/ndb/include/kernel/signaldata/CntrMasterConf.hpp: mvdir storage/ndb/include/kernel/signaldata/CntrMasterReq.hpp: mvdir storage/ndb/include/kernel/signaldata/CntrStart.hpp: mvdir storage/ndb/include/kernel/signaldata/ConfigParamId.hpp: mvdir storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp: mvdir storage/ndb/include/kernel/signaldata/CopyActive.hpp: mvdir storage/ndb/include/kernel/signaldata/CopyFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/CopyGCIReq.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateEvnt.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateFragmentation.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateTab.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateTable.hpp: mvdir storage/ndb/include/kernel/signaldata/CreateTrig.hpp: mvdir storage/ndb/include/kernel/signaldata/DiAddTab.hpp: mvdir storage/ndb/include/kernel/signaldata/DiGetNodes.hpp: mvdir storage/ndb/include/kernel/signaldata/DictSchemaInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/DictSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/DictStart.hpp: mvdir storage/ndb/include/kernel/signaldata/DictTabInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/DihAddFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/DihContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/DihSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/DihStartTab.hpp: mvdir storage/ndb/include/kernel/signaldata/DihSwitchReplica.hpp: mvdir storage/ndb/include/kernel/signaldata/DisconnectRep.hpp: mvdir storage/ndb/include/kernel/signaldata/DropIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/DropTab.hpp: mvdir storage/ndb/include/kernel/signaldata/DropTabFile.hpp: mvdir storage/ndb/include/kernel/signaldata/DropTable.hpp: mvdir storage/ndb/include/kernel/signaldata/DropTrig.hpp: mvdir storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/EmptyLcp.hpp: mvdir storage/ndb/include/kernel/signaldata/EndTo.hpp: mvdir storage/ndb/include/kernel/signaldata/EventReport.hpp: mvdir storage/ndb/include/kernel/signaldata/EventSubscribeReq.hpp: mvdir storage/ndb/include/kernel/signaldata/ExecFragReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FailRep.hpp: mvdir storage/ndb/include/kernel/signaldata/FireTrigOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/FsAppendReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FsCloseReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FsConf.hpp: mvdir storage/ndb/include/kernel/signaldata/FsOpenReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp: mvdir storage/ndb/include/kernel/signaldata/FsRef.hpp: mvdir storage/ndb/include/kernel/signaldata/FsRemoveReq.hpp: mvdir storage/ndb/include/kernel/signaldata/GCPSave.hpp: mvdir storage/ndb/include/kernel/signaldata/GetTabInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/GetTableId.hpp: mvdir storage/ndb/include/kernel/signaldata/GrepImpl.hpp: mvdir storage/ndb/include/kernel/signaldata/HotSpareRep.hpp: mvdir storage/ndb/include/kernel/signaldata/IndxAttrInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/IndxKeyInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/InvalidateNodeLCPConf.hpp: mvdir storage/ndb/include/kernel/signaldata/InvalidateNodeLCPReq.hpp: mvdir storage/ndb/include/kernel/signaldata/KeyInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/LCP.hpp: mvdir storage/ndb/include/kernel/signaldata/ListTables.hpp: mvdir storage/ndb/include/kernel/signaldata/LqhFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/LqhKey.hpp: mvdir storage/ndb/include/kernel/signaldata/LqhSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/LqhTransConf.hpp: mvdir storage/ndb/include/kernel/signaldata/ManagementServer.hpp: mvdir storage/ndb/include/kernel/signaldata/MasterGCP.hpp: mvdir storage/ndb/include/kernel/signaldata/MasterLCP.hpp: mvdir storage/ndb/include/kernel/signaldata/NFCompleteRep.hpp: mvdir storage/ndb/include/kernel/signaldata/NdbSttor.hpp: mvdir storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/NextScan.hpp: mvdir storage/ndb/include/kernel/signaldata/NodeFailRep.hpp: mvdir storage/ndb/include/kernel/signaldata/NodeStateSignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/PackedSignal.hpp: mvdir storage/ndb/include/kernel/signaldata/PrepDropTab.hpp: mvdir storage/ndb/include/kernel/signaldata/PrepFailReqRef.hpp: mvdir storage/ndb/include/kernel/signaldata/ReadConfig.hpp: mvdir storage/ndb/include/kernel/signaldata/ReadNodesConf.hpp: mvdir storage/ndb/include/kernel/signaldata/RelTabMem.hpp: mvdir storage/ndb/include/kernel/signaldata/RepImpl.hpp: mvdir storage/ndb/include/kernel/signaldata/ResumeReq.hpp: mvdir storage/ndb/include/kernel/signaldata/ScanFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/ScanTab.hpp: mvdir storage/ndb/include/kernel/signaldata/SetLogLevelOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/SetVarReq.hpp: mvdir storage/ndb/include/kernel/signaldata/SignalData.hpp: mvdir storage/ndb/include/kernel/signaldata/SignalDataPrint.hpp: mvdir storage/ndb/include/kernel/signaldata/SignalDroppedRep.hpp: mvdir storage/ndb/include/kernel/signaldata/SrFragidConf.hpp: mvdir storage/ndb/include/kernel/signaldata/StartFragReq.hpp: mvdir storage/ndb/include/kernel/signaldata/StartInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/StartMe.hpp: mvdir storage/ndb/include/kernel/signaldata/StartOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/StartPerm.hpp: mvdir storage/ndb/include/kernel/signaldata/StartRec.hpp: mvdir storage/ndb/include/kernel/signaldata/StartTo.hpp: mvdir storage/ndb/include/kernel/signaldata/StopMe.hpp: mvdir storage/ndb/include/kernel/signaldata/StopPerm.hpp: mvdir storage/ndb/include/kernel/signaldata/StopReq.hpp: mvdir storage/ndb/include/kernel/signaldata/SumaImpl.hpp: mvdir storage/ndb/include/kernel/signaldata/SystemError.hpp: mvdir storage/ndb/include/kernel/signaldata/TamperOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/TcCommit.hpp: mvdir storage/ndb/include/kernel/signaldata/TcContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/TcHbRep.hpp: mvdir storage/ndb/include/kernel/signaldata/TcIndx.hpp: mvdir storage/ndb/include/kernel/signaldata/TcKeyConf.hpp: mvdir storage/ndb/include/kernel/signaldata/TcKeyFailConf.hpp: mvdir storage/ndb/include/kernel/signaldata/TcKeyRef.hpp: mvdir storage/ndb/include/kernel/signaldata/TcKeyReq.hpp: mvdir storage/ndb/include/kernel/signaldata/TcRollbackRep.hpp: mvdir storage/ndb/include/kernel/signaldata/TcSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/TestOrd.hpp: mvdir storage/ndb/include/kernel/signaldata/TransIdAI.hpp: mvdir storage/ndb/include/kernel/signaldata/TrigAttrInfo.hpp: mvdir storage/ndb/include/kernel/signaldata/TupCommit.hpp: mvdir storage/ndb/include/kernel/signaldata/TupFrag.hpp: mvdir storage/ndb/include/kernel/signaldata/TupKey.hpp: mvdir storage/ndb/include/kernel/signaldata/TupSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/TuxBound.hpp: mvdir storage/ndb/include/kernel/signaldata/TuxContinueB.hpp: mvdir storage/ndb/include/kernel/signaldata/TuxMaint.hpp: mvdir storage/ndb/include/kernel/signaldata/TuxSizeAltReq.hpp: mvdir storage/ndb/include/kernel/signaldata/UpdateTo.hpp: mvdir storage/ndb/include/kernel/signaldata/UpgradeStartup.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilDelete.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilExecute.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilLock.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilPrepare.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilRelease.hpp: mvdir storage/ndb/include/kernel/signaldata/UtilSequence.hpp: mvdir storage/ndb/include/kernel/signaldata/WaitGCP.hpp: mvdir storage/ndb/include/logger/ConsoleLogHandler.hpp: mvdir storage/ndb/include/logger/FileLogHandler.hpp: mvdir storage/ndb/include/logger/LogHandler.hpp: mvdir storage/ndb/include/logger/Logger.hpp: mvdir storage/ndb/include/logger/SysLogHandler.hpp: mvdir storage/ndb/include/mgmapi/mgmapi.h: mvdir storage/ndb/include/mgmapi/mgmapi_config_parameters.h: mvdir storage/ndb/include/mgmapi/mgmapi_config_parameters_debug.h: mvdir storage/ndb/include/mgmapi/mgmapi_debug.h: mvdir storage/ndb/include/mgmapi/ndb_logevent.h: mvdir storage/ndb/include/mgmcommon/ConfigRetriever.hpp: mvdir storage/ndb/include/mgmcommon/IPCConfig.hpp: mvdir storage/ndb/include/mgmcommon/MgmtErrorReporter.hpp: mvdir storage/ndb/include/ndbapi/Ndb.hpp: mvdir storage/ndb/include/ndbapi/NdbApi.hpp: mvdir storage/ndb/include/ndbapi/NdbBlob.hpp: mvdir storage/ndb/include/ndbapi/NdbDictionary.hpp: mvdir storage/ndb/include/ndbapi/NdbError.hpp: mvdir storage/ndb/include/ndbapi/NdbEventOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbIndexOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbPool.hpp: mvdir storage/ndb/include/ndbapi/NdbRecAttr.hpp: mvdir storage/ndb/include/ndbapi/NdbReceiver.hpp: mvdir storage/ndb/include/ndbapi/NdbScanFilter.hpp: mvdir storage/ndb/include/ndbapi/NdbScanOperation.hpp: mvdir storage/ndb/include/ndbapi/NdbTransaction.hpp: mvdir storage/ndb/include/ndbapi/ndb_cluster_connection.hpp: mvdir storage/ndb/include/ndbapi/ndb_opt_defaults.h: mvdir storage/ndb/include/ndbapi/ndbapi_limits.h: mvdir storage/ndb/include/ndbapi/ndberror.h: mvdir storage/ndb/include/newtonapi/dba.h: mvdir storage/ndb/include/newtonapi/defs/pcn_types.h: mvdir storage/ndb/include/portlib/NdbCondition.h: mvdir storage/ndb/include/portlib/NdbConfig.h: mvdir storage/ndb/include/portlib/NdbDaemon.h: mvdir storage/ndb/include/portlib/NdbEnv.h: mvdir storage/ndb/include/portlib/NdbHost.h: mvdir storage/ndb/include/portlib/NdbMain.h: mvdir storage/ndb/include/portlib/NdbMem.h: mvdir storage/ndb/include/portlib/NdbMutex.h: mvdir storage/ndb/include/portlib/NdbSleep.h: mvdir storage/ndb/include/portlib/NdbTCP.h: mvdir storage/ndb/include/portlib/NdbThread.h: mvdir storage/ndb/include/portlib/NdbTick.h: mvdir storage/ndb/include/portlib/PortDefs.h: mvdir storage/ndb/include/portlib/prefetch.h: mvdir storage/ndb/include/transporter/TransporterCallback.hpp: mvdir storage/ndb/include/transporter/TransporterDefinitions.hpp: mvdir storage/ndb/include/transporter/TransporterRegistry.hpp: mvdir storage/ndb/include/util/Base64.hpp: mvdir storage/ndb/include/util/BaseString.hpp: mvdir storage/ndb/include/util/Bitmask.hpp: mvdir storage/ndb/include/util/ConfigValues.hpp: mvdir storage/ndb/include/util/File.hpp: mvdir storage/ndb/include/util/InputStream.hpp: mvdir storage/ndb/include/util/NdbAutoPtr.hpp: mvdir storage/ndb/include/util/NdbOut.hpp: mvdir storage/ndb/include/util/NdbSqlUtil.hpp: mvdir storage/ndb/include/util/OutputStream.hpp: mvdir storage/ndb/include/util/Parser.hpp: mvdir storage/ndb/include/util/Properties.hpp: mvdir storage/ndb/include/util/SimpleProperties.hpp: mvdir storage/ndb/include/util/SocketAuthenticator.hpp: mvdir storage/ndb/include/util/SocketClient.hpp: mvdir storage/ndb/include/util/SocketServer.hpp: mvdir storage/ndb/include/util/UtilBuffer.hpp: mvdir storage/ndb/include/util/Vector.hpp: mvdir storage/ndb/include/util/basestring_vsnprintf.h: mvdir storage/ndb/include/util/md5_hash.hpp: mvdir storage/ndb/include/util/ndb_opts.h: mvdir storage/ndb/include/util/random.h: mvdir storage/ndb/include/util/socket_io.h: mvdir storage/ndb/include/util/uucode.h: mvdir storage/ndb/include/util/version.h: mvdir storage/ndb/lib/.empty: mvdir storage/ndb/ndbapi-examples/Makefile: mvdir storage/ndb/ndbapi-examples/mgmapi_logevent_example/Makefile: mvdir storage/ndb/ndbapi-examples/mgmapi_logevent_example/mgmapi_logevent.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example/ndbapi_async.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example/readme.txt: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example1/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_async_example1/ndbapi_async1.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_event_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_event_example/ndbapi_event.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_retries_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_retries_example/ndbapi_retries.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_scan_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_scan_example/ndbapi_scan.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_scan_example/readme.txt: mvdir storage/ndb/ndbapi-examples/ndbapi_simple_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_simple_example/ndbapi_simple.cpp: mvdir storage/ndb/ndbapi-examples/ndbapi_simple_index_example/Makefile: mvdir storage/ndb/ndbapi-examples/ndbapi_simple_index_example/ndbapi_simple_index.cpp: mvdir storage/ndb/src/Makefile.am: mvdir storage/ndb/src/common/Makefile.am: mvdir storage/ndb/src/common/debugger/BlockNames.cpp: mvdir storage/ndb/src/common/debugger/DebuggerNames.cpp: mvdir storage/ndb/src/common/debugger/EventLogger.cpp: mvdir storage/ndb/src/common/debugger/GrepError.cpp: mvdir storage/ndb/src/common/debugger/Makefile.am: mvdir storage/ndb/src/common/debugger/SignalLoggerManager.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AccLock.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AlterIndx.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AlterTab.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AlterTable.cpp: mvdir storage/ndb/src/common/debugger/signaldata/AlterTrig.cpp: mvdir storage/ndb/src/common/debugger/signaldata/BackupImpl.cpp: mvdir storage/ndb/src/common/debugger/signaldata/BackupSignalData.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CloseComReqConf.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CntrStart.cpp: mvdir storage/ndb/src/common/debugger/signaldata/ContinueB.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CopyGCI.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CreateEvnt.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CreateFragmentation.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CreateIndx.cpp: mvdir storage/ndb/src/common/debugger/signaldata/CreateTrig.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DihContinueB.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DihSwitchReplicaReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DisconnectRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DropIndx.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DropTab.cpp: mvdir storage/ndb/src/common/debugger/signaldata/DropTrig.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FailRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FireTrigOrd.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsAppendReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsCloseReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsConf.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsOpenReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/FsRef.cpp: mvdir storage/ndb/src/common/debugger/signaldata/GCPSave.cpp: mvdir storage/ndb/src/common/debugger/signaldata/IndxAttrInfo.cpp: mvdir storage/ndb/src/common/debugger/signaldata/IndxKeyInfo.cpp: mvdir storage/ndb/src/common/debugger/signaldata/LCP.cpp: mvdir storage/ndb/src/common/debugger/signaldata/LqhFrag.cpp: mvdir storage/ndb/src/common/debugger/signaldata/LqhKey.cpp: mvdir storage/ndb/src/common/debugger/signaldata/LqhTrans.cpp: mvdir storage/ndb/src/common/debugger/signaldata/Makefile.am: mvdir storage/ndb/src/common/debugger/signaldata/MasterLCP.cpp: mvdir storage/ndb/src/common/debugger/signaldata/NFCompleteRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/NdbSttor.cpp: mvdir storage/ndb/src/common/debugger/signaldata/NdbfsContinueB.cpp: mvdir storage/ndb/src/common/debugger/signaldata/PackedSignal.cpp: mvdir storage/ndb/src/common/debugger/signaldata/PrepDropTab.cpp: mvdir storage/ndb/src/common/debugger/signaldata/PrepFailReqRef.cpp: mvdir storage/ndb/src/common/debugger/signaldata/ReadNodesConf.cpp: mvdir storage/ndb/src/common/debugger/signaldata/ScanFrag.cpp: mvdir storage/ndb/src/common/debugger/signaldata/ScanTab.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SignalDataPrint.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SignalDroppedRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SignalNames.cpp: mvdir storage/ndb/src/common/debugger/signaldata/StartRec.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SumaImpl.cpp: mvdir storage/ndb/src/common/debugger/signaldata/SystemError.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcIndx.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcKeyConf.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcKeyRef.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcKeyReq.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TcRollbackRep.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TrigAttrInfo.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TupCommit.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TupKey.cpp: mvdir storage/ndb/src/common/debugger/signaldata/TuxMaint.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilDelete.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilExecute.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilLock.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilPrepare.cpp: mvdir storage/ndb/src/common/debugger/signaldata/UtilSequence.cpp: mvdir storage/ndb/src/common/debugger/signaldata/print.awk: mvdir storage/ndb/src/common/logger/ConsoleLogHandler.cpp: mvdir storage/ndb/src/common/logger/FileLogHandler.cpp: mvdir storage/ndb/src/common/logger/LogHandler.cpp: mvdir storage/ndb/src/common/logger/LogHandlerList.cpp: mvdir storage/ndb/src/common/logger/LogHandlerList.hpp: mvdir storage/ndb/src/common/logger/Logger.cpp: mvdir storage/ndb/src/common/logger/Makefile.am: mvdir storage/ndb/src/common/logger/SysLogHandler.cpp: mvdir storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.cpp: mvdir storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.hpp: mvdir storage/ndb/src/common/logger/listtest/Makefile: mvdir storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp: mvdir storage/ndb/src/common/logger/loggertest/LoggerUnitTest.hpp: mvdir storage/ndb/src/common/logger/loggertest/Makefile: mvdir storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp: mvdir storage/ndb/src/common/mgmcommon/IPCConfig.cpp: mvdir storage/ndb/src/common/mgmcommon/Makefile.am: mvdir storage/ndb/src/common/mgmcommon/printConfig/Makefile: mvdir storage/ndb/src/common/mgmcommon/printConfig/printConfig.cpp: mvdir storage/ndb/src/common/portlib/Makefile.am: mvdir storage/ndb/src/common/portlib/NdbCondition.c: mvdir storage/ndb/src/common/portlib/NdbConfig.c: mvdir storage/ndb/src/common/portlib/NdbDaemon.c: mvdir storage/ndb/src/common/portlib/NdbEnv.c: mvdir storage/ndb/src/common/portlib/NdbHost.c: mvdir storage/ndb/src/common/portlib/NdbMem.c: mvdir storage/ndb/src/common/portlib/NdbMutex.c: mvdir storage/ndb/src/common/portlib/NdbPortLibTest.cpp: mvdir storage/ndb/src/common/portlib/NdbSleep.c: mvdir storage/ndb/src/common/portlib/NdbTCP.cpp: mvdir storage/ndb/src/common/portlib/NdbThread.c: mvdir storage/ndb/src/common/portlib/NdbTick.c: mvdir storage/ndb/src/common/portlib/gcc.cpp: mvdir storage/ndb/src/common/portlib/memtest.c: mvdir storage/ndb/src/common/portlib/mmslist.cpp: mvdir storage/ndb/src/common/portlib/mmstest.cpp: mvdir storage/ndb/src/common/portlib/munmaptest.cpp: mvdir storage/ndb/src/common/portlib/old_dirs/memtest/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/memtest/munmaptest/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/ose/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbCondition.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbConditionOSE.h: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbEnv.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbHost.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbMem.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbMem_SoftOse.cpp: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbMutex.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbOut.cpp: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbSleep.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbTCP.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbThread.c: mvdir storage/ndb/src/common/portlib/old_dirs/ose/NdbTick.c: mvdir storage/ndb/src/common/portlib/old_dirs/test/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/win32/Makefile: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbCondition.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbDaemon.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbEnv.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbHost.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbMem.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbMutex.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbSleep.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbTCP.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbThread.c: mvdir storage/ndb/src/common/portlib/old_dirs/win32/NdbTick.c: mvdir storage/ndb/src/common/portlib/win32/NdbCondition.c: mvdir storage/ndb/src/common/portlib/win32/NdbDaemon.c: mvdir storage/ndb/src/common/portlib/win32/NdbEnv.c: mvdir storage/ndb/src/common/portlib/win32/NdbHost.c: mvdir storage/ndb/src/common/portlib/win32/NdbMem.c: mvdir storage/ndb/src/common/portlib/win32/NdbMutex.c: mvdir storage/ndb/src/common/portlib/win32/NdbSleep.c: mvdir storage/ndb/src/common/portlib/win32/NdbTCP.c: mvdir storage/ndb/src/common/portlib/win32/NdbThread.c: mvdir storage/ndb/src/common/portlib/win32/NdbTick.c: mvdir storage/ndb/src/common/transporter/Makefile.am: mvdir storage/ndb/src/common/transporter/OSE_Receiver.cpp: mvdir storage/ndb/src/common/transporter/OSE_Receiver.hpp: mvdir storage/ndb/src/common/transporter/OSE_Signals.hpp: mvdir storage/ndb/src/common/transporter/OSE_Transporter.cpp: mvdir storage/ndb/src/common/transporter/OSE_Transporter.hpp: mvdir storage/ndb/src/common/transporter/Packer.cpp: mvdir storage/ndb/src/common/transporter/Packer.hpp: mvdir storage/ndb/src/common/transporter/SCI_Transporter.cpp: mvdir storage/ndb/src/common/transporter/SCI_Transporter.hpp: mvdir storage/ndb/src/common/transporter/SHM_Buffer.hpp: mvdir storage/ndb/src/common/transporter/SHM_Transporter.cpp: mvdir storage/ndb/src/common/transporter/SHM_Transporter.hpp: mvdir storage/ndb/src/common/transporter/SHM_Transporter.unix.cpp: mvdir storage/ndb/src/common/transporter/SHM_Transporter.win32.cpp: mvdir storage/ndb/src/common/transporter/SendBuffer.cpp: mvdir storage/ndb/src/common/transporter/SendBuffer.hpp: mvdir storage/ndb/src/common/transporter/TCP_Transporter.cpp: mvdir storage/ndb/src/common/transporter/TCP_Transporter.hpp: mvdir storage/ndb/src/common/transporter/Transporter.cpp: mvdir storage/ndb/src/common/transporter/Transporter.hpp: mvdir storage/ndb/src/common/transporter/TransporterInternalDefinitions.hpp: mvdir storage/ndb/src/common/transporter/TransporterRegistry.cpp: mvdir storage/ndb/src/common/transporter/basictest/Makefile: mvdir storage/ndb/src/common/transporter/basictest/basicTransporterTest.cpp: mvdir storage/ndb/src/common/transporter/buddy.cpp: mvdir storage/ndb/src/common/transporter/buddy.hpp: mvdir storage/ndb/src/common/transporter/failoverSCI/Makefile: mvdir storage/ndb/src/common/transporter/failoverSCI/failoverSCI.cpp: mvdir storage/ndb/src/common/transporter/perftest/Makefile: mvdir storage/ndb/src/common/transporter/perftest/perfTransporterTest.cpp: mvdir storage/ndb/src/common/transporter/priotest/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioOSE/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioSCI/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioSCI/prioSCI.cpp: mvdir storage/ndb/src/common/transporter/priotest/prioSHM/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioSHM/prioSHM.cpp: mvdir storage/ndb/src/common/transporter/priotest/prioTCP/Makefile: mvdir storage/ndb/src/common/transporter/priotest/prioTCP/prioTCP.cpp: mvdir storage/ndb/src/common/transporter/priotest/prioTransporterTest.cpp: mvdir storage/ndb/src/common/transporter/priotest/prioTransporterTest.hpp: mvdir storage/ndb/src/common/util/Base64.cpp: mvdir storage/ndb/src/common/util/BaseString.cpp: mvdir storage/ndb/src/common/util/Bitmask.cpp: mvdir storage/ndb/src/common/util/ConfigValues.cpp: mvdir storage/ndb/src/common/util/File.cpp: mvdir storage/ndb/src/common/util/InputStream.cpp: mvdir storage/ndb/src/common/util/Makefile.am: mvdir storage/ndb/src/common/util/NdbErrHnd.cpp: mvdir storage/ndb/src/common/util/NdbOut.cpp: mvdir storage/ndb/src/common/util/NdbSqlUtil.cpp: mvdir storage/ndb/src/common/util/OutputStream.cpp: mvdir storage/ndb/src/common/util/Parser.cpp: mvdir storage/ndb/src/common/util/Properties.cpp: mvdir storage/ndb/src/common/util/SimpleProperties.cpp: mvdir storage/ndb/src/common/util/SocketAuthenticator.cpp: mvdir storage/ndb/src/common/util/SocketClient.cpp: mvdir storage/ndb/src/common/util/SocketServer.cpp: mvdir storage/ndb/src/common/util/basestring_vsnprintf.c: mvdir storage/ndb/src/common/util/filetest/FileUnitTest.cpp: mvdir storage/ndb/src/common/util/filetest/FileUnitTest.hpp: mvdir storage/ndb/src/common/util/filetest/Makefile: mvdir storage/ndb/src/common/util/getarg.cat3: mvdir storage/ndb/src/common/util/md5_hash.cpp: mvdir storage/ndb/src/common/util/ndb_init.c: mvdir storage/ndb/src/common/util/new.cpp: mvdir storage/ndb/src/common/util/random.c: mvdir storage/ndb/src/common/util/socket_io.cpp: mvdir storage/ndb/src/common/util/strdup.c: mvdir storage/ndb/src/common/util/testConfigValues/Makefile: mvdir storage/ndb/src/common/util/testConfigValues/testConfigValues.cpp: mvdir storage/ndb/src/common/util/uucode.c: mvdir storage/ndb/src/common/util/version.c: mvdir storage/ndb/src/common/util/testProperties/Makefile: mvdir storage/ndb/src/common/util/testProperties/testProperties.cpp: mvdir storage/ndb/src/common/util/testSimpleProperties/Makefile: mvdir storage/ndb/src/common/util/testSimpleProperties/sp_test.cpp: mvdir storage/ndb/src/cw/Makefile.am: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.cpp: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.dsp: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.dsw: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.h: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.ico: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.rc: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.sln: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.suo: mvdir storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.vcproj: mvdir storage/ndb/src/cw/cpcc-win32/C++/Closed.ICO: mvdir storage/ndb/src/cw/cpcc-win32/C++/NdbControls.cpp: mvdir storage/ndb/src/cw/cpcc-win32/C++/Open.ICO: mvdir storage/ndb/src/cw/cpcc-win32/C++/StdAfx.cpp: mvdir storage/ndb/src/cw/cpcc-win32/C++/StdAfx.h: mvdir storage/ndb/src/cw/cpcc-win32/C++/TreeView.cpp: mvdir storage/ndb/src/cw/cpcc-win32/C++/TreeView.h: mvdir storage/ndb/src/cw/cpcc-win32/C++/bmp00001.bmp: mvdir storage/ndb/src/cw/cpcc-win32/C++/resource.h: mvdir storage/ndb/src/cw/cpcc-win32/C++/small.ico: mvdir storage/ndb/src/cw/cpcc-win32/C++/toolbar.bmp: mvdir storage/ndb/src/cw/cpcc-win32/csharp/App.ico: mvdir storage/ndb/src/cw/cpcc-win32/csharp/CPC_Form.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/ComputerAddDialog.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/ComputerRemoveDialog.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/DATABASE.ICO: mvdir storage/ndb/src/cw/cpcc-win32/csharp/Database.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/NDB_CPC.csproj.user: mvdir storage/ndb/src/cw/cpcc-win32/csharp/NDB_CPC.csproj: mvdir storage/ndb/src/cw/cpcc-win32/csharp/NDB_CPC.ncb: mvdir storage/ndb/src/cw/cpcc-win32/csharp/NDB_CPC.sln: mvdir storage/ndb/src/cw/cpcc-win32/csharp/PanelWizard.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/Process.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/ProcessDefineDialog.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/fileaccess/FileMgmt.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/simpleparser/SimpleCPCParser.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/socketcomm/SocketComm.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/socketcomm/myTcpClient.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/startDatabaseDlg.cs: mvdir storage/ndb/src/cw/cpcc-win32/csharp/telnetclient/telnetClient.cs: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Computer.cls: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Database.cls: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 110.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 231.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 237.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 241.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 242.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 270.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 271.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 273.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 31.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 337.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 338.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Icon 339.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/MSSCCPRJ.SCC: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Module1.bas: mvdir storage/ndb/src/cw/cpcc-win32/vb6/NdbCPC.vbp: mvdir storage/ndb/src/cw/cpcc-win32/vb6/NdbCPC.vbw: mvdir storage/ndb/src/cw/cpcc-win32/vb6/Process.cls: mvdir storage/ndb/src/cw/cpcc-win32/vb6/closed folder.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/computer.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmAbout.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmLogin.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmMain.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewComputer.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewComputer.frx: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase.frx: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase1.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase2.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase2.log: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmNewDatabase3.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmOptions.frm: mvdir storage/ndb/src/cw/cpcc-win32/vb6/frmSplash.frx: mvdir storage/ndb/src/cw/cpcc-win32/vb6/networking.ico: mvdir storage/ndb/src/cw/cpcc-win32/vb6/open folder.ico: mvdir storage/ndb/src/cw/cpcd/APIService.cpp: mvdir storage/ndb/src/cw/cpcd/APIService.hpp: mvdir storage/ndb/src/cw/cpcd/CPCD.cpp: mvdir storage/ndb/src/cw/cpcd/CPCD.hpp: mvdir storage/ndb/src/cw/cpcd/Makefile.am: mvdir storage/ndb/src/cw/cpcd/Monitor.cpp: mvdir storage/ndb/src/cw/cpcd/Process.cpp: mvdir storage/ndb/src/cw/cpcd/common.cpp: mvdir storage/ndb/src/cw/cpcd/common.hpp: mvdir storage/ndb/src/cw/cpcd/main.cpp: mvdir storage/ndb/src/cw/test/socketclient/Makefile: mvdir storage/ndb/src/cw/test/socketclient/socketClientTest.cpp: mvdir storage/ndb/src/cw/util/ClientInterface.cpp: mvdir storage/ndb/src/cw/util/ClientInterface.hpp: mvdir storage/ndb/src/cw/util/Makefile: mvdir storage/ndb/src/cw/util/SocketRegistry.cpp: mvdir storage/ndb/src/cw/util/SocketRegistry.hpp: mvdir storage/ndb/src/cw/util/SocketService.cpp: mvdir storage/ndb/src/cw/util/SocketService.hpp: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/SISCI_LIBRARY_WIN32.TXT: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/scilib.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api_md.lib: mvdir storage/ndb/src/external/WIN32.x86/sci/lib/sisci_api_mt.lib: mvdir storage/ndb/src/kernel/Makefile.am: mvdir storage/ndb/src/kernel/SimBlockList.cpp: mvdir storage/ndb/src/kernel/blocks/ERROR_codes.txt: mvdir storage/ndb/src/kernel/blocks/Makefile.am: mvdir storage/ndb/src/kernel/blocks/NodeRestart.new.txt: mvdir storage/ndb/src/kernel/blocks/NodeRestart.txt: mvdir storage/ndb/src/kernel/blocks/Start.txt: mvdir storage/ndb/src/kernel/blocks/SystemRestart.new.txt: mvdir storage/ndb/src/kernel/blocks/SystemRestart.txt: mvdir storage/ndb/src/kernel/blocks/backup/Backup.cpp: mvdir storage/ndb/src/kernel/blocks/backup/Backup.hpp: mvdir storage/ndb/src/kernel/blocks/backup/Backup.txt: mvdir storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp: mvdir storage/ndb/src/kernel/blocks/backup/BackupInit.cpp: mvdir storage/ndb/src/kernel/blocks/backup/FsBuffer.hpp: mvdir storage/ndb/src/kernel/blocks/backup/Makefile.am: mvdir storage/ndb/src/kernel/blocks/backup/read.cpp: mvdir storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp: mvdir storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp: mvdir storage/ndb/src/kernel/blocks/cmvmi/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp: mvdir storage/ndb/src/kernel/blocks/dbacc/DbaccInit.cpp: mvdir storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp: mvdir storage/ndb/src/kernel/blocks/dbacc/Makefile.am: mvdir storage/ndb/src/kernel/blocks/mutexes.hpp: mvdir storage/ndb/src/kernel/blocks/new-block.tar.gz: mvdir storage/ndb/src/kernel/main.cpp: mvdir storage/ndb/src/kernel/blocks/dbdict/CreateIndex.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/CreateTable.new.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/CreateTable.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: mvdir storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp: mvdir storage/ndb/src/kernel/blocks/dbdict/Dbdict.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/DropTable.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/Event.txt: mvdir storage/ndb/src/kernel/blocks/dbdict/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbdict/Master_AddTable.sfl: mvdir storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp: mvdir storage/ndb/src/kernel/blocks/dbdict/Slave_AddTable.sfl: mvdir storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp: mvdir storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp: mvdir storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp: mvdir storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: mvdir storage/ndb/src/kernel/blocks/dbdih/LCP.txt: mvdir storage/ndb/src/kernel/blocks/dbdih/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbdih/Sysfile.hpp: mvdir storage/ndb/src/kernel/blocks/dbdih/printSysfile/Makefile: mvdir storage/ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp: mvdir storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp: mvdir storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp: mvdir storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: mvdir storage/ndb/src/kernel/blocks/dblqh/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dblqh/redoLogReader/Makefile: mvdir storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp: mvdir storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp: mvdir storage/ndb/src/kernel/blocks/dblqh/redoLogReader/redoLogFileReader.cpp: mvdir storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp: mvdir storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp: mvdir storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: mvdir storage/ndb/src/kernel/blocks/dbtc/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbtup/AttributeOffset.hpp: mvdir storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupDebug.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupLCP.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupSystemRestart.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/DbtupUndoLog.cpp: mvdir storage/ndb/src/kernel/blocks/dbtup/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbtup/Notes.txt: mvdir storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp: mvdir storage/ndb/src/kernel/blocks/dbtux/Makefile.am: mvdir storage/ndb/src/kernel/blocks/dbtux/Times.txt: mvdir storage/ndb/src/kernel/blocks/dbtux/tuxstatus.html: mvdir storage/ndb/src/kernel/blocks/dbutil/DbUtil.cpp: mvdir storage/ndb/src/kernel/blocks/dbutil/DbUtil.hpp: mvdir storage/ndb/src/kernel/blocks/dbutil/DbUtil.txt: mvdir storage/ndb/src/kernel/blocks/dbutil/Makefile.am: mvdir storage/ndb/src/kernel/blocks/grep/Grep.cpp: mvdir storage/ndb/src/kernel/blocks/grep/Grep.hpp: mvdir storage/ndb/src/kernel/blocks/grep/GrepInit.cpp: mvdir storage/ndb/src/kernel/blocks/grep/Makefile.am: mvdir storage/ndb/src/kernel/blocks/grep/systab_test/Makefile: mvdir storage/ndb/src/kernel/blocks/grep/systab_test/grep_systab_test.cpp: mvdir storage/ndb/src/kernel/blocks/ndbcntr/Makefile.am: mvdir storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp: mvdir storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp: mvdir storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: mvdir storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrSysTable.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Filename.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Filename.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Makefile.am: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/AsyncFileTest/AsyncFileTest.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/AsyncFileTest/Makefile: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelOSE.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/Makefile: mvdir storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/MemoryChannelTest.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/OpenFiles.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/Pool.hpp: mvdir storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp: mvdir storage/ndb/src/kernel/blocks/qmgr/Makefile.am: mvdir storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp: mvdir storage/ndb/src/kernel/blocks/qmgr/QmgrInit.cpp: mvdir storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: mvdir storage/ndb/src/kernel/blocks/qmgr/timer.hpp: mvdir storage/ndb/src/kernel/blocks/suma/Makefile.am: mvdir storage/ndb/src/kernel/blocks/suma/Suma.cpp: mvdir storage/ndb/src/kernel/blocks/suma/Suma.hpp: mvdir storage/ndb/src/kernel/blocks/suma/Suma.txt: mvdir storage/ndb/src/kernel/blocks/suma/SumaInit.cpp: mvdir storage/ndb/src/kernel/blocks/trix/Makefile.am: mvdir storage/ndb/src/kernel/blocks/trix/Trix.cpp: mvdir storage/ndb/src/kernel/blocks/trix/Trix.hpp: mvdir storage/ndb/src/kernel/error/Error.hpp: mvdir storage/ndb/src/kernel/error/ErrorHandlingMacros.hpp: mvdir storage/ndb/src/kernel/error/ErrorMessages.cpp: mvdir storage/ndb/src/kernel/error/ErrorMessages.hpp: mvdir storage/ndb/src/kernel/error/ErrorReporter.cpp: mvdir storage/ndb/src/kernel/error/ErrorReporter.hpp: mvdir storage/ndb/src/kernel/error/Makefile.am: mvdir storage/ndb/src/kernel/error/TimeModule.cpp: mvdir storage/ndb/src/kernel/error/TimeModule.hpp: mvdir storage/ndb/src/kernel/vm/Array.hpp: mvdir storage/ndb/src/kernel/vm/ArrayFifoList.hpp: mvdir storage/ndb/src/kernel/vm/ArrayList.hpp: mvdir storage/ndb/src/kernel/vm/ArrayPool.hpp: mvdir storage/ndb/src/kernel/vm/CArray.hpp: mvdir storage/ndb/src/kernel/vm/Callback.hpp: mvdir storage/ndb/src/kernel/vm/ClusterConfiguration.cpp: mvdir storage/ndb/src/kernel/vm/ClusterConfiguration.hpp: mvdir storage/ndb/src/kernel/vm/Configuration.cpp: mvdir storage/ndb/src/kernel/vm/Configuration.hpp: mvdir storage/ndb/src/kernel/vm/DLFifoList.hpp: mvdir storage/ndb/src/kernel/vm/DLHashTable.hpp: mvdir storage/ndb/src/kernel/vm/DLHashTable2.hpp: mvdir storage/ndb/src/kernel/vm/DLList.hpp: mvdir storage/ndb/src/kernel/vm/DataBuffer.hpp: mvdir storage/ndb/src/kernel/vm/Emulator.cpp: mvdir storage/ndb/src/kernel/vm/Emulator.hpp: mvdir storage/ndb/src/kernel/vm/FastScheduler.cpp: mvdir storage/ndb/src/kernel/vm/FastScheduler.hpp: mvdir storage/ndb/src/kernel/vm/GlobalData.hpp: mvdir storage/ndb/src/kernel/vm/KeyTable.hpp: mvdir storage/ndb/src/kernel/vm/KeyTable2.hpp: mvdir storage/ndb/src/kernel/vm/LongSignal.hpp: mvdir storage/ndb/src/kernel/vm/Makefile.am: mvdir storage/ndb/src/kernel/vm/MetaData.cpp: mvdir storage/ndb/src/kernel/vm/MetaData.hpp: mvdir storage/ndb/src/kernel/vm/Mutex.cpp: mvdir storage/ndb/src/kernel/vm/Mutex.hpp: mvdir storage/ndb/src/kernel/vm/Prio.hpp: mvdir storage/ndb/src/kernel/vm/RequestTracker.hpp: mvdir storage/ndb/src/kernel/vm/SLList.hpp: mvdir storage/ndb/src/kernel/vm/SafeCounter.cpp: mvdir storage/ndb/src/kernel/vm/SafeCounter.hpp: mvdir storage/ndb/src/kernel/vm/SectionReader.cpp: mvdir storage/ndb/src/kernel/vm/SectionReader.hpp: mvdir storage/ndb/src/kernel/vm/SignalCounter.hpp: mvdir storage/ndb/src/kernel/vm/SimBlockList.hpp: mvdir storage/ndb/src/kernel/vm/SimplePropertiesSection.cpp: mvdir storage/ndb/src/kernel/vm/SimulatedBlock.cpp: mvdir storage/ndb/src/kernel/vm/SimulatedBlock.hpp: mvdir storage/ndb/src/kernel/vm/ThreadConfig.cpp: mvdir storage/ndb/src/kernel/vm/ThreadConfig.hpp: mvdir storage/ndb/src/kernel/vm/TimeQueue.cpp: mvdir storage/ndb/src/kernel/vm/TimeQueue.hpp: mvdir storage/ndb/src/kernel/vm/TransporterCallback.cpp: mvdir storage/ndb/src/kernel/vm/VMSignal.cpp: mvdir storage/ndb/src/kernel/vm/VMSignal.hpp: mvdir storage/ndb/src/kernel/vm/WaitQueue.hpp: mvdir storage/ndb/src/kernel/vm/WatchDog.cpp: mvdir storage/ndb/src/kernel/vm/WatchDog.hpp: mvdir storage/ndb/src/kernel/vm/al_test/Makefile: mvdir storage/ndb/src/kernel/vm/al_test/arrayListTest.cpp: mvdir storage/ndb/src/kernel/vm/al_test/arrayPoolTest.cpp: mvdir storage/ndb/src/kernel/vm/al_test/main.cpp: mvdir storage/ndb/src/kernel/vm/pc.hpp: mvdir storage/ndb/src/kernel/vm/testCopy/Makefile: mvdir storage/ndb/src/kernel/vm/testCopy/rr.cpp: mvdir storage/ndb/src/kernel/vm/testCopy/testCopy.cpp: mvdir storage/ndb/src/kernel/vm/testDataBuffer/Makefile: mvdir storage/ndb/src/kernel/vm/testDataBuffer/testDataBuffer.cpp: mvdir storage/ndb/src/kernel/vm/testLongSig/Makefile: mvdir storage/ndb/src/kernel/vm/testLongSig/testLongSig.cpp: mvdir storage/ndb/src/kernel/vm/testSimplePropertiesSection/Makefile: mvdir storage/ndb/src/kernel/vm/testSimplePropertiesSection/test.cpp: mvdir storage/ndb/src/mgmapi/LocalConfig.cpp: mvdir storage/ndb/src/mgmapi/LocalConfig.hpp: mvdir storage/ndb/src/mgmapi/Makefile.am: mvdir storage/ndb/src/mgmapi/mgmapi.cpp: mvdir storage/ndb/src/mgmapi/mgmapi_configuration.cpp: mvdir storage/ndb/src/mgmapi/mgmapi_configuration.hpp: mvdir storage/ndb/src/mgmapi/mgmapi_internal.h: mvdir storage/ndb/src/mgmapi/ndb_logevent.cpp: mvdir storage/ndb/src/mgmapi/ndb_logevent.hpp: mvdir storage/ndb/src/mgmapi/test/Makefile: mvdir storage/ndb/src/mgmapi/test/keso.c: mvdir storage/ndb/src/mgmapi/test/mgmSrvApi.cpp: mvdir storage/ndb/src/mgmclient/CommandInterpreter.cpp: mvdir storage/ndb/src/mgmclient/Makefile.am: mvdir storage/ndb/src/mgmclient/main.cpp: mvdir storage/ndb/src/mgmclient/ndb_mgmclient.hpp: mvdir storage/ndb/src/mgmclient/ndb_mgmclient.h: mvdir storage/ndb/src/mgmclient/test_cpcd/Makefile: mvdir storage/ndb/src/mgmclient/test_cpcd/test_cpcd.cpp: mvdir storage/ndb/src/mgmsrv/Config.cpp: mvdir storage/ndb/src/mgmsrv/Config.hpp: mvdir storage/ndb/src/mgmsrv/ConfigInfo.cpp: mvdir storage/ndb/src/mgmsrv/ConfigInfo.hpp: mvdir storage/ndb/src/mgmsrv/InitConfigFileParser.cpp: mvdir storage/ndb/src/mgmsrv/InitConfigFileParser.hpp: mvdir storage/ndb/src/mgmsrv/Makefile.am: mvdir storage/ndb/src/mgmsrv/MgmtSrvr.cpp: mvdir storage/ndb/src/mgmsrv/MgmtSrvr.hpp: mvdir storage/ndb/src/mgmsrv/MgmtSrvrConfig.cpp: mvdir storage/ndb/src/mgmsrv/MgmtSrvrGeneralSignalHandling.cpp: mvdir storage/ndb/src/mgmsrv/Services.cpp: mvdir storage/ndb/src/mgmsrv/Services.hpp: mvdir storage/ndb/src/mgmsrv/SignalQueue.cpp: mvdir storage/ndb/src/mgmsrv/SignalQueue.hpp: mvdir storage/ndb/src/mgmsrv/convertStrToInt.cpp: mvdir storage/ndb/src/mgmsrv/convertStrToInt.hpp: mvdir storage/ndb/src/mgmsrv/main.cpp: mvdir storage/ndb/src/mgmsrv/mkconfig/Makefile: mvdir storage/ndb/src/mgmsrv/mkconfig/mkconfig.cpp: mvdir storage/ndb/src/ndbapi/API.hpp: mvdir storage/ndb/src/ndbapi/ClusterMgr.cpp: mvdir storage/ndb/src/ndbapi/ClusterMgr.hpp: mvdir storage/ndb/src/ndbapi/DictCache.cpp: mvdir storage/ndb/src/ndbapi/DictCache.hpp: mvdir storage/ndb/src/ndbapi/Makefile.am: mvdir storage/ndb/src/ndbapi/Ndb.cpp: mvdir storage/ndb/src/ndbapi/NdbApiSignal.cpp: mvdir storage/ndb/src/ndbapi/NdbApiSignal.hpp: mvdir storage/ndb/src/ndbapi/NdbBlob.cpp: mvdir storage/ndb/src/ndbapi/NdbBlobImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbDictionary.cpp: mvdir storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp: mvdir storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbErrorOut.cpp: mvdir storage/ndb/src/ndbapi/NdbEventOperation.cpp: mvdir storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp: mvdir storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbIndexOperation.cpp: mvdir storage/ndb/src/ndbapi/NdbLinHash.hpp: mvdir storage/ndb/src/ndbapi/NdbOperation.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationDefine.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationExec.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationInt.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationScan.cpp: mvdir storage/ndb/src/ndbapi/NdbOperationSearch.cpp: mvdir storage/ndb/src/ndbapi/NdbPool.cpp: mvdir storage/ndb/src/ndbapi/NdbPoolImpl.cpp: mvdir storage/ndb/src/ndbapi/NdbPoolImpl.hpp: mvdir storage/ndb/src/ndbapi/NdbRecAttr.cpp: mvdir storage/ndb/src/ndbapi/NdbReceiver.cpp: mvdir storage/ndb/src/ndbapi/NdbScanFilter.cpp: mvdir storage/ndb/src/ndbapi/NdbScanOperation.cpp: mvdir storage/ndb/src/ndbapi/NdbTransaction.cpp: mvdir storage/ndb/src/ndbapi/NdbTransactionScan.cpp: mvdir storage/ndb/src/ndbapi/NdbUtil.cpp: mvdir storage/ndb/src/ndbapi/NdbUtil.hpp: mvdir storage/ndb/src/ndbapi/NdbWaiter.hpp: mvdir storage/ndb/src/ndbapi/Ndberr.cpp: mvdir storage/ndb/src/ndbapi/Ndbif.cpp: mvdir storage/ndb/src/ndbapi/Ndbinit.cpp: mvdir storage/ndb/src/ndbapi/Ndblist.cpp: mvdir storage/ndb/src/ndbapi/ObjectMap.hpp: mvdir storage/ndb/src/ndbapi/ScanOperation.txt: mvdir storage/ndb/src/ndbapi/TransporterFacade.cpp: mvdir storage/ndb/src/ndbapi/TransporterFacade.hpp: mvdir storage/ndb/src/ndbapi/ndb_cluster_connection.cpp: mvdir storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp: mvdir storage/ndb/src/ndbapi/ndberror.c: mvdir storage/ndb/src/ndbapi/signal-sender/Makefile: mvdir storage/ndb/src/ndbapi/signal-sender/SignalSender.cpp: mvdir storage/ndb/src/ndbapi/signal-sender/SignalSender.hpp: mvdir storage/ndb/src/old_files/client/Makefile: mvdir storage/ndb/src/old_files/client/odbc/Extra.mk: mvdir storage/ndb/src/old_files/client/odbc/Makefile: mvdir storage/ndb/src/old_files/client/odbc/NdbOdbc.cpp: mvdir storage/ndb/src/old_files/client/odbc/NdbOdbc.def: mvdir storage/ndb/src/old_files/client/odbc/codegen/CodeGen.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/CodeGen.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_base.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_base.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_comp_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_comp_op.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_create_table.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_data_type.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_data_type.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_constr.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_constr.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_ddl_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_lookup.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_delete_scan.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_dml_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_drop_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_drop_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_drop_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_drop_table.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_const.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_const.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_conv.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_conv.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_func.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_func.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_op.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_param.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_param.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_expr_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_idx_column.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_idx_column.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_insert.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_insert.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_pred.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_pred.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_pred_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_pred_op.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_count.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_count.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_distinct.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_distinct.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_filter.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_filter.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_group.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_group.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_join.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_join.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_lookup.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_project.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_project.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_range.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_range.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_repeat.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_repeat.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_scan.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_sort.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_sort.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_sys.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_query_sys.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_root.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_root.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_select.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_select.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_set_row.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_set_row.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_stmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_stmt.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_table.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_table_list.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_table_list.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_index.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_lookup.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Code_update_scan.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/Makefile: mvdir storage/ndb/src/old_files/client/odbc/codegen/SimpleGram.ypp: mvdir storage/ndb/src/old_files/client/odbc/codegen/SimpleParser.cpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/SimpleParser.hpp: mvdir storage/ndb/src/old_files/client/odbc/codegen/SimpleScan.lpp: mvdir storage/ndb/src/old_files/client/odbc/common/AttrArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/AttrArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/CodeTree.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/CodeTree.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/ConnArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/ConnArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/Ctx.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/Ctx.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataField.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataField.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataRow.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataRow.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataType.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DataType.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DescArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DescArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/DiagArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/DiagArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/Makefile: mvdir storage/ndb/src/old_files/client/odbc/common/OdbcData.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/OdbcData.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/ResultArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/ResultArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/Sqlstate.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/Sqlstate.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/StmtArea.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/StmtArea.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/StmtInfo.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/StmtInfo.hpp: mvdir storage/ndb/src/old_files/client/odbc/common/common.cpp: mvdir storage/ndb/src/old_files/client/odbc/common/common.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictCatalog.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictCatalog.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictColumn.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictColumn.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictIndex.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictIndex.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictSchema.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictSchema.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictSys.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictSys.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictTable.cpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/DictTable.hpp: mvdir storage/ndb/src/old_files/client/odbc/dictionary/Makefile: mvdir storage/ndb/src/old_files/client/odbc/docs/class.fig: mvdir storage/ndb/src/old_files/client/odbc/docs/descfield.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/diag.txt: mvdir storage/ndb/src/old_files/client/odbc/docs/getinfo.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/gettypeinfo.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/handleattr.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/main.hpp: mvdir storage/ndb/src/old_files/client/odbc/docs/ndbodbc.html: mvdir storage/ndb/src/old_files/client/odbc/docs/select.fig: mvdir storage/ndb/src/old_files/client/odbc/docs/systables.pl: mvdir storage/ndb/src/old_files/client/odbc/docs/type.txt: mvdir storage/ndb/src/old_files/client/odbc/driver/Func.data: mvdir storage/ndb/src/old_files/client/odbc/driver/Func.pl: mvdir storage/ndb/src/old_files/client/odbc/driver/Makefile: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocEnv.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocHandle.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocHandleStd.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLAllocStmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBindCol.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBindParam.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBindParameter.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBrowseConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLBulkOperations.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLCancel.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLCloseCursor.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLColAttribute.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLColAttributes.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLColumnPrivileges.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLColumns.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLCopyDesc.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDataSources.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDescribeCol.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDescribeParam.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDisconnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDriverConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLDrivers.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLEndTran.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLError.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLExecDirect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLExecute.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLExtendedFetch.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFetch.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFetchScroll.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLForeignKeys.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFreeConnect.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFreeEnv.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFreeHandle.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLFreeStmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetConnectAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetConnectOption.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetCursorName.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetData.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetDescField.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetDescRec.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetDiagField.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetDiagRec.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetEnvAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetFunctions.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetInfo.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetStmtAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetStmtOption.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLGetTypeInfo.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLMoreResults.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLNativeSql.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLNumParams.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLNumResultCols.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLParamData.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLParamOptions.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLPrepare.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLPrimaryKeys.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLProcedureColumns.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLProcedures.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLPutData.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLRowCount.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetConnectAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetConnectOption.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetCursorName.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetDescField.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetDescRec.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetEnvAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetParam.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetPos.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetScrollOptions.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetStmtAttr.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSetStmtOption.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLSpecialColumns.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLStatistics.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLTablePrivileges.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLTables.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/SQLTransact.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/driver.cpp: mvdir storage/ndb/src/old_files/client/odbc/driver/driver.hpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_comp_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_create_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_create_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_delete_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_delete_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_delete_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_drop_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_drop_table.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_expr_conv.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_expr_func.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_expr_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_insert.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_pred_op.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_range.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_query_sys.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_update_index.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_update_lookup.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Exec_update_scan.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Executor.cpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Executor.hpp: mvdir storage/ndb/src/old_files/client/odbc/executor/Makefile: mvdir storage/ndb/src/old_files/client/odbc/handles/AttrDbc.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/AttrEnv.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/AttrRoot.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/AttrStmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/DescSpec.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/FuncTab.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleBase.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleBase.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleDbc.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleDbc.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleDesc.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleDesc.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleEnv.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleEnv.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleRoot.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleRoot.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleStmt.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/HandleStmt.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/InfoTab.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/Makefile: mvdir storage/ndb/src/old_files/client/odbc/handles/PoolNdb.cpp: mvdir storage/ndb/src/old_files/client/odbc/handles/PoolNdb.hpp: mvdir storage/ndb/src/old_files/client/odbc/handles/handles.hpp: mvdir storage/ndb/src/old_files/ndbbaseclient/Makefile: mvdir storage/ndb/src/old_files/ndbbaseclient/ndbbaseclient_dummy.cpp: mvdir storage/ndb/src/old_files/ndbclient/Makefile: mvdir storage/ndb/src/old_files/ndbclient/ndbclient_dummy.cpp: mvdir storage/ndb/src/old_files/newtonapi/Makefile: mvdir storage/ndb/src/old_files/newtonapi/dba_binding.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_bulkread.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_config.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_dac.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_error.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_init.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_internal.hpp: mvdir storage/ndb/src/old_files/newtonapi/dba_process.cpp: mvdir storage/ndb/src/old_files/newtonapi/dba_process.hpp: mvdir storage/ndb/src/old_files/newtonapi/dba_schema.cpp: mvdir storage/ndb/src/old_files/rep/ExtSender.cpp: mvdir storage/ndb/src/old_files/rep/ExtSender.hpp: mvdir storage/ndb/src/old_files/rep/Makefile: mvdir storage/ndb/src/old_files/rep/NodeConnectInfo.hpp: mvdir storage/ndb/src/old_files/rep/README: mvdir storage/ndb/src/old_files/rep/RepApiInterpreter.cpp: mvdir storage/ndb/src/old_files/rep/RepApiInterpreter.hpp: mvdir storage/ndb/src/old_files/rep/RepApiService.cpp: mvdir storage/ndb/src/old_files/rep/RepApiService.hpp: mvdir storage/ndb/src/old_files/rep/RepCommandInterpreter.cpp: mvdir storage/ndb/src/old_files/rep/RepCommandInterpreter.hpp: mvdir storage/ndb/src/old_files/rep/RepComponents.cpp: mvdir storage/ndb/src/old_files/rep/RepComponents.hpp: mvdir storage/ndb/src/old_files/rep/RepMain.cpp: mvdir storage/ndb/src/old_files/rep/Requestor.cpp: mvdir storage/ndb/src/old_files/rep/Requestor.hpp: mvdir storage/ndb/src/old_files/rep/RequestorSubscriptions.cpp: mvdir storage/ndb/src/old_files/rep/SignalQueue.cpp: mvdir storage/ndb/src/old_files/rep/SignalQueue.hpp: mvdir storage/ndb/src/old_files/rep/TODO: mvdir storage/ndb/src/old_files/rep/adapters/AppNDB.cpp: mvdir storage/ndb/src/old_files/rep/adapters/AppNDB.hpp: mvdir storage/ndb/src/old_files/rep/adapters/ExtAPI.cpp: mvdir storage/ndb/src/old_files/rep/adapters/ExtAPI.hpp: mvdir storage/ndb/src/old_files/rep/adapters/ExtNDB.cpp: mvdir storage/ndb/src/old_files/rep/adapters/ExtNDB.hpp: mvdir storage/ndb/src/old_files/rep/adapters/Makefile: mvdir storage/ndb/src/old_files/rep/adapters/TableInfoPs.hpp: mvdir storage/ndb/src/old_files/rep/dbug_hack.cpp: mvdir storage/ndb/src/old_files/rep/rep_version.hpp: mvdir storage/ndb/src/old_files/rep/repapi/Makefile: mvdir storage/ndb/src/old_files/rep/repapi/repapi.cpp: mvdir storage/ndb/src/old_files/rep/repapi/repapi.h: mvdir storage/ndb/src/old_files/rep/state/Channel.cpp: mvdir storage/ndb/src/old_files/rep/state/Channel.hpp: mvdir storage/ndb/src/old_files/rep/state/Interval.cpp: mvdir storage/ndb/src/old_files/rep/state/Interval.hpp: mvdir storage/ndb/src/old_files/rep/state/Makefile: mvdir storage/ndb/src/old_files/rep/state/RepState.cpp: mvdir storage/ndb/src/old_files/rep/state/RepState.hpp: mvdir storage/ndb/src/old_files/rep/state/RepStateEvent.cpp: mvdir storage/ndb/src/old_files/rep/state/RepStateRequests.cpp: mvdir storage/ndb/src/old_files/rep/state/testInterval/Makefile: mvdir storage/ndb/src/old_files/rep/state/testInterval/testInterval.cpp: mvdir storage/ndb/src/old_files/rep/state/testRepState/Makefile: mvdir storage/ndb/src/old_files/rep/state/testRepState/testRequestor.cpp: mvdir storage/ndb/src/old_files/rep/state/testRepState/testRequestor.hpp: mvdir storage/ndb/src/old_files/rep/storage/GCIBuffer.cpp: mvdir storage/ndb/src/old_files/rep/storage/GCIBuffer.hpp: mvdir storage/ndb/src/old_files/rep/storage/GCIContainer.cpp: mvdir storage/ndb/src/old_files/rep/storage/GCIContainer.hpp: mvdir storage/ndb/src/old_files/rep/storage/GCIContainerPS.cpp: mvdir storage/ndb/src/old_files/rep/storage/GCIContainerPS.hpp: mvdir storage/ndb/src/old_files/rep/storage/GCIPage.cpp: mvdir storage/ndb/src/old_files/rep/storage/GCIPage.hpp: mvdir storage/ndb/src/old_files/rep/storage/LogRecord.hpp: mvdir storage/ndb/src/old_files/rep/storage/Makefile: mvdir storage/ndb/src/old_files/rep/storage/NodeConnectInfo.hpp: mvdir storage/ndb/src/old_files/rep/storage/NodeGroup.cpp: mvdir storage/ndb/src/old_files/rep/storage/NodeGroup.hpp: mvdir storage/ndb/src/old_files/rep/storage/NodeGroupInfo.cpp: mvdir storage/ndb/src/old_files/rep/storage/NodeGroupInfo.hpp: mvdir storage/ndb/src/old_files/rep/transfer/Makefile: mvdir storage/ndb/src/old_files/rep/transfer/TransPS.cpp: mvdir storage/ndb/src/old_files/rep/transfer/TransPS.hpp: mvdir storage/ndb/src/old_files/rep/transfer/TransSS.cpp: mvdir storage/ndb/src/old_files/rep/transfer/TransSS.hpp: mvdir storage/ndb/src/old_files/rep/transfer/TransSSSubscriptions.cpp: mvdir storage/ndb/test/Makefile.am: mvdir storage/ndb/test/include/CpcClient.hpp: mvdir storage/ndb/test/include/HugoAsynchTransactions.hpp: mvdir storage/ndb/test/include/HugoCalculator.hpp: mvdir storage/ndb/test/include/HugoOperations.hpp: mvdir storage/ndb/test/include/HugoTransactions.hpp: mvdir storage/ndb/test/include/NDBT.hpp: mvdir storage/ndb/test/include/NDBT_DataSet.hpp: mvdir storage/ndb/test/include/NDBT_DataSetTransaction.hpp: mvdir storage/ndb/test/include/NDBT_Error.hpp: mvdir storage/ndb/test/include/NDBT_Output.hpp: mvdir storage/ndb/test/include/NDBT_ResultRow.hpp: mvdir storage/ndb/test/include/NDBT_ReturnCodes.h: mvdir storage/ndb/test/include/NDBT_Stats.hpp: mvdir storage/ndb/test/include/NDBT_Table.hpp: mvdir storage/ndb/test/include/NDBT_Tables.hpp: mvdir storage/ndb/test/include/NDBT_Test.hpp: mvdir storage/ndb/test/include/NdbBackup.hpp: mvdir storage/ndb/test/include/NdbConfig.hpp: mvdir storage/ndb/test/include/NdbGrep.hpp: mvdir storage/ndb/test/include/NdbRestarter.hpp: mvdir storage/ndb/test/include/NdbRestarts.hpp: mvdir storage/ndb/test/include/NdbSchemaCon.hpp: mvdir storage/ndb/test/include/NdbSchemaOp.hpp: mvdir storage/ndb/test/include/NdbTest.hpp: mvdir storage/ndb/test/include/NdbTimer.hpp: mvdir storage/ndb/test/include/TestNdbEventOperation.hpp: mvdir storage/ndb/test/include/UtilTransactions.hpp: mvdir storage/ndb/test/include/getarg.h: mvdir storage/ndb/test/ndbapi/InsertRecs.cpp: mvdir storage/ndb/test/ndbapi/Makefile.am: mvdir storage/ndb/test/ndbapi/ScanFilter.hpp: mvdir storage/ndb/test/ndbapi/ScanFunctions.hpp: mvdir storage/ndb/test/ndbapi/ScanInterpretTest.hpp: mvdir storage/ndb/test/ndbapi/TraceNdbApi.cpp: mvdir storage/ndb/test/ndbapi/VerifyNdbApi.cpp: mvdir storage/ndb/test/ndbapi/acid.cpp: mvdir storage/ndb/test/ndbapi/acid2.cpp: mvdir storage/ndb/test/ndbapi/adoInsertRecs.cpp: mvdir storage/ndb/test/ndbapi/asyncGenerator.cpp: mvdir storage/ndb/test/ndbapi/benchronja.cpp: mvdir storage/ndb/test/ndbapi/bulk_copy.cpp: mvdir storage/ndb/test/ndbapi/cdrserver.cpp: mvdir storage/ndb/test/ndbapi/celloDb.cpp: mvdir storage/ndb/test/ndbapi/create_all_tabs.cpp: mvdir storage/ndb/test/ndbapi/create_tab.cpp: mvdir storage/ndb/test/ndbapi/drop_all_tabs.cpp: mvdir storage/ndb/test/ndbapi/flexAsynch.cpp: mvdir storage/ndb/test/ndbapi/flexBench.cpp: mvdir storage/ndb/test/ndbapi/flexHammer.cpp: mvdir storage/ndb/test/ndbapi/flexScan.cpp: mvdir storage/ndb/test/ndbapi/flexTT.cpp: mvdir storage/ndb/test/ndbapi/flexTimedAsynch.cpp: mvdir storage/ndb/test/ndbapi/flex_bench_mysql.cpp: mvdir storage/ndb/test/ndbapi/index.cpp: mvdir storage/ndb/test/ndbapi/index2.cpp: mvdir storage/ndb/test/ndbapi/initronja.cpp: mvdir storage/ndb/test/ndbapi/interpreterInTup.cpp: mvdir storage/ndb/test/ndbapi/mainAsyncGenerator.cpp: mvdir storage/ndb/test/ndbapi/msa.cpp: mvdir storage/ndb/test/ndbapi/ndb_async1.cpp: mvdir storage/ndb/test/ndbapi/ndb_async2.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_populate.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction2.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction3.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction4.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction5.cpp: mvdir storage/ndb/test/ndbapi/ndb_user_transaction6.cpp: mvdir storage/ndb/test/ndbapi/restarter.cpp: mvdir storage/ndb/test/ndbapi/restarter2.cpp: mvdir storage/ndb/test/ndbapi/restarts.cpp: mvdir storage/ndb/test/ndbapi/size.cpp: mvdir storage/ndb/test/ndbapi/slow_select.cpp: mvdir storage/ndb/test/ndbapi/testBackup.cpp: mvdir storage/ndb/test/ndbapi/testBasic.cpp: mvdir storage/ndb/test/ndbapi/testBasicAsynch.cpp: mvdir storage/ndb/test/ndbapi/testBitfield.cpp: mvdir storage/ndb/test/ndbapi/testBlobs.cpp: mvdir storage/ndb/test/ndbapi/testDataBuffers.cpp: mvdir storage/ndb/test/ndbapi/testDeadlock.cpp: mvdir storage/ndb/test/ndbapi/testDict.cpp: mvdir storage/ndb/test/ndbapi/testGrep.cpp: mvdir storage/ndb/test/ndbapi/testGrepVerify.cpp: mvdir storage/ndb/test/ndbapi/testIndex.cpp: mvdir storage/ndb/test/ndbapi/testInterpreter.cpp: mvdir storage/ndb/test/ndbapi/testLcp.cpp: mvdir storage/ndb/test/ndbapi/testMgm.cpp: mvdir storage/ndb/test/ndbapi/testNdbApi.cpp: mvdir storage/ndb/test/ndbapi/testNodeRestart.cpp: mvdir storage/ndb/test/ndbapi/testOIBasic.cpp: mvdir storage/ndb/test/ndbapi/testOperations.cpp: mvdir storage/ndb/test/ndbapi/testOrderedIndex.cpp: mvdir storage/ndb/test/ndbapi/testPartitioning.cpp: mvdir storage/ndb/test/ndbapi/testReadPerf.cpp: mvdir storage/ndb/test/ndbapi/testRestartGci.cpp: mvdir storage/ndb/test/ndbapi/bank/Bank.cpp: mvdir storage/ndb/test/ndbapi/bank/Bank.hpp: mvdir storage/ndb/test/ndbapi/bank/BankLoad.cpp: mvdir storage/ndb/test/ndbapi/bank/Makefile.am: mvdir storage/ndb/test/ndbapi/bank/bankCreator.cpp: mvdir storage/ndb/test/ndbapi/bank/bankMakeGL.cpp: mvdir storage/ndb/test/ndbapi/bank/bankSumAccounts.cpp: mvdir storage/ndb/test/ndbapi/bank/bankTimer.cpp: mvdir storage/ndb/test/ndbapi/bank/bankTransactionMaker.cpp: mvdir storage/ndb/test/ndbapi/bank/bankValidateAllGLs.cpp: mvdir storage/ndb/test/ndbapi/bank/testBank.cpp: mvdir storage/ndb/test/ndbapi/bench/asyncGenerator.cpp: mvdir storage/ndb/test/ndbapi/bench/dbGenerator.h: mvdir storage/ndb/test/ndbapi/bench/dbPopulate.cpp: mvdir storage/ndb/test/ndbapi/bench/dbPopulate.h: mvdir storage/ndb/test/ndbapi/bench/macros.h: mvdir storage/ndb/test/ndbapi/bench/mainAsyncGenerator.cpp: mvdir storage/ndb/test/ndbapi/bench/mainPopulate.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_async1.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_async2.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_error.hpp: mvdir storage/ndb/test/ndbapi/bench/ndb_schema.hpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction2.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction3.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction4.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction5.cpp: mvdir storage/ndb/test/ndbapi/testScan.cpp: mvdir storage/ndb/test/ndbapi/testScanInterpreter.cpp: mvdir storage/ndb/test/ndbapi/testScanPerf.cpp: mvdir storage/ndb/test/ndbapi/testSystemRestart.cpp: mvdir storage/ndb/test/ndbapi/testTimeout.cpp: mvdir storage/ndb/test/ndbapi/testTransactions.cpp: mvdir storage/ndb/test/ndbapi/test_event.cpp: mvdir storage/ndb/test/ndbapi/test_event_multi_table.cpp: mvdir storage/ndb/test/ndbapi/userInterface.cpp: mvdir storage/ndb/test/ndbapi/bench/ndb_user_transaction6.cpp: mvdir storage/ndb/test/ndbapi/bench/testData.h: mvdir storage/ndb/test/ndbapi/bench/testDefinitions.h: mvdir storage/ndb/test/ndbapi/bench/userInterface.cpp: mvdir storage/ndb/test/ndbapi/bench/userInterface.h: mvdir storage/ndb/test/ndbapi/old_dirs/acid/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/acid2/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/acid2/TraceNdbApi.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/acid2/VerifyNdbApi.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/basicAsynch/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/bulk_copy/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/create_all_tabs/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/create_tab/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/drop_all_tabs/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexAsynch/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexBench/Makefile.am: mvdir storage/ndb/test/ndbapi/old_dirs/flexBench/ndbplot.pl: mvdir storage/ndb/test/ndbapi/old_dirs/flexHammer/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexHammer/README: mvdir storage/ndb/test/ndbapi/old_dirs/flexScan/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexScan/README: mvdir storage/ndb/test/ndbapi/old_dirs/flexTT/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flexTimedAsynch/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/flex_bench_mysql/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/indexTest/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/indexTest2/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/interpreterInTup/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/generator/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/dbGenerator.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/testData.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/include/userInterface.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/macros.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/async-src/user/ndb_error.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/bin/.empty: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/include/ndb_schema.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/include/testDefinitions.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/lib/.empty: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-l-p10.sh: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-l.sh: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench-p10.sh: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/script/async-lmc-bench.sh: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/README: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/dbGenerator.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/generator/mainGenerator.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/include/testData.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/include/userInterface.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/makevars.linux: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/makevars.sparc: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/dbPopulate.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/populator/mainPopulate.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/localDbPrepare.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/macros.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/ndb_error.hpp: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userHandle.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userInterface.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userHandle.h: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userInterface.cpp: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/userTransaction.c: mvdir storage/ndb/test/ndbapi/old_dirs/lmc-bench/src/user/old/userTransaction.c: mvdir storage/ndb/test/ndbapi/old_dirs/restarter/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/restarter2/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/restarts/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/ronja/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/ronja/benchronja/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/ronja/initronja/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/telco/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/telco/readme: mvdir storage/ndb/test/ndbapi/old_dirs/testBackup/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testBasic/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testBlobs/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testDataBuffers/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testDict/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testGrep/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testGrep/verify/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testIndex/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testInterpreter/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testMgm/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testNdbApi/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testNodeRestart/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testOIBasic/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testOIBasic/times.txt: mvdir storage/ndb/test/ndbapi/old_dirs/testOperations/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testOrderedIndex/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testRestartGci/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testScan/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testScanInterpreter/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testSystemRestart/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testTimeout/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/testTransactions/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/test_event/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/Makefile: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/bcd.h: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/script/client_start: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/utv.h: mvdir storage/ndb/test/ndbapi/old_dirs/vw_test/vcdrfunc.h: mvdir storage/ndb/test/ndbnet/test.run: mvdir storage/ndb/test/ndbnet/testError.run: mvdir storage/ndb/test/ndbnet/testMNF.run: mvdir storage/ndb/test/ndbnet/testNR.run: mvdir storage/ndb/test/ndbnet/testNR1.run: mvdir storage/ndb/test/ndbnet/testNR4.run: mvdir storage/ndb/test/ndbnet/testSRhang.run: mvdir storage/ndb/test/ndbnet/testTR295.run: mvdir storage/ndb/test/newtonapi/basic_test/Makefile: mvdir storage/ndb/test/newtonapi/basic_test/basic/Makefile: mvdir storage/ndb/test/newtonapi/basic_test/basic/basic.cpp: mvdir storage/ndb/test/newtonapi/basic_test/bulk_read/Makefile: mvdir storage/ndb/test/newtonapi/basic_test/bulk_read/br_test.cpp: mvdir storage/ndb/test/newtonapi/basic_test/common.cpp: mvdir storage/ndb/test/newtonapi/basic_test/common.hpp: mvdir storage/ndb/test/newtonapi/basic_test/ptr_binding/Makefile: mvdir storage/ndb/test/newtonapi/basic_test/ptr_binding/ptr_binding_test.cpp: mvdir storage/ndb/test/newtonapi/basic_test/too_basic.cpp: mvdir storage/ndb/test/newtonapi/perf_test/Makefile: mvdir storage/ndb/test/newtonapi/perf_test/perf.cpp: mvdir storage/ndb/test/odbc/SQL99_test/Makefile: mvdir storage/ndb/test/odbc/SQL99_test/SQL99_test.cpp: mvdir storage/ndb/test/odbc/SQL99_test/SQL99_test.h: mvdir storage/ndb/test/odbc/client/Makefile: mvdir storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp: mvdir storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp: mvdir storage/ndb/test/odbc/client/NDBT_SQLConnect.cpp: mvdir storage/ndb/test/odbc/client/NDBT_SQLPrepare.cpp: mvdir storage/ndb/test/odbc/client/SQLAllocEnvTest.cpp: mvdir storage/ndb/test/odbc/client/SQLAllocHandleTest.cpp: mvdir storage/ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp: mvdir storage/ndb/test/odbc/client/SQLBindColTest.cpp: mvdir storage/ndb/test/odbc/client/SQLBindParameterTest.cpp: mvdir storage/ndb/test/odbc/client/SQLCancelTest.cpp: mvdir storage/ndb/test/odbc/client/SQLCloseCursorTest.cpp: mvdir storage/ndb/test/odbc/client/SQLColAttributeTest.cpp: mvdir storage/ndb/test/odbc/client/SQLColAttributeTest1.cpp: mvdir storage/ndb/test/odbc/client/SQLColAttributeTest2.cpp: mvdir storage/ndb/test/odbc/client/SQLColAttributeTest3.cpp: mvdir storage/ndb/test/odbc/client/SQLConnectTest.cpp: mvdir storage/ndb/test/odbc/client/SQLCopyDescTest.cpp: mvdir storage/ndb/test/odbc/client/SQLDescribeColTest.cpp: mvdir storage/ndb/test/odbc/client/SQLDisconnectTest.cpp: mvdir storage/ndb/test/odbc/client/SQLDriverConnectTest.cpp: mvdir storage/ndb/test/odbc/client/SQLEndTranTest.cpp: mvdir storage/ndb/test/odbc/client/SQLErrorTest.cpp: mvdir storage/ndb/test/odbc/client/SQLExecDirectTest.cpp: mvdir storage/ndb/test/odbc/client/SQLExecuteTest.cpp: mvdir storage/ndb/test/odbc/client/SQLFetchScrollTest.cpp: mvdir storage/ndb/test/odbc/client/SQLFetchTest.cpp: mvdir storage/ndb/test/odbc/client/SQLFreeHandleTest.cpp: mvdir storage/ndb/test/odbc/client/SQLFreeStmtTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetConnectAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetCursorNameTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDataTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDescFieldTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDescRecTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDiagFieldTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetDiagRecTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetEnvAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetFunctionsTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetInfoTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetStmtAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLGetTypeInfoTest.cpp: mvdir storage/ndb/test/odbc/client/SQLMoreResultsTest.cpp: mvdir storage/ndb/test/odbc/client/SQLNumResultColsTest.cpp: mvdir storage/ndb/test/odbc/client/SQLParamDataTest.cpp: mvdir storage/ndb/test/odbc/client/SQLPrepareTest.cpp: mvdir storage/ndb/test/odbc/client/SQLPutDataTest.cpp: mvdir storage/ndb/test/odbc/client/SQLRowCountTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetConnectAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetCursorNameTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetDescFieldTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetDescRecTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetEnvAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLSetStmtAttrTest.cpp: mvdir storage/ndb/test/odbc/client/SQLTablesTest.cpp: mvdir storage/ndb/test/odbc/client/SQLTransactTest.cpp: mvdir storage/ndb/test/odbc/client/common.hpp: mvdir storage/ndb/test/odbc/client/main.cpp: mvdir storage/ndb/test/odbc/dm-iodbc/Makefile: mvdir storage/ndb/test/odbc/dm-unixodbc/Makefile: mvdir storage/ndb/test/odbc/driver/Makefile: mvdir storage/ndb/test/odbc/driver/testOdbcDriver.cpp: mvdir storage/ndb/test/odbc/test_compiler/Makefile: mvdir storage/ndb/test/odbc/test_compiler/test_compiler.cpp: mvdir storage/ndb/test/run-test/16node-tests.txt: mvdir storage/ndb/test/run-test/Makefile.am: mvdir storage/ndb/test/run-test/README.ATRT: mvdir storage/ndb/test/run-test/README: mvdir storage/ndb/test/run-test/atrt-analyze-result.sh: mvdir storage/ndb/test/run-test/atrt-clear-result.sh: mvdir storage/ndb/test/run-test/atrt-example.tgz: mvdir storage/ndb/test/run-test/atrt-gather-result.sh: mvdir storage/ndb/test/run-test/atrt-mysql-test-run: mvdir storage/ndb/test/run-test/atrt-setup.sh: mvdir storage/ndb/test/run-test/atrt-testBackup: mvdir storage/ndb/test/run-test/basic.txt: mvdir storage/ndb/test/run-test/daily-basic-tests.txt: mvdir storage/ndb/test/run-test/daily-devel-tests.txt: mvdir storage/ndb/test/run-test/example.conf: mvdir storage/ndb/test/run-test/main.cpp: mvdir storage/ndb/test/run-test/make-config.sh: mvdir storage/ndb/test/run-test/make-html-reports.sh: mvdir storage/ndb/test/run-test/make-index.sh: mvdir storage/ndb/test/run-test/ndb-autotest.sh: mvdir storage/ndb/test/run-test/run-test.hpp: mvdir storage/ndb/test/src/CpcClient.cpp: mvdir storage/ndb/test/src/HugoAsynchTransactions.cpp: mvdir storage/ndb/test/src/HugoCalculator.cpp: mvdir storage/ndb/test/src/HugoOperations.cpp: mvdir storage/ndb/test/src/HugoTransactions.cpp: mvdir storage/ndb/test/src/Makefile.am: mvdir storage/ndb/test/src/NDBT_Error.cpp: mvdir storage/ndb/test/src/NDBT_Output.cpp: mvdir storage/ndb/test/src/NDBT_ResultRow.cpp: mvdir storage/ndb/test/src/NDBT_ReturnCodes.cpp: mvdir storage/ndb/test/src/NDBT_Table.cpp: mvdir storage/ndb/test/src/NDBT_Tables.cpp: mvdir storage/ndb/test/src/NDBT_Test.cpp: mvdir storage/ndb/test/src/NdbBackup.cpp: mvdir storage/ndb/test/src/NdbConfig.cpp: mvdir storage/ndb/test/src/NdbGrep.cpp: mvdir storage/ndb/test/src/NdbRestarter.cpp: mvdir storage/ndb/test/src/NdbRestarts.cpp: mvdir storage/ndb/test/src/NdbSchemaCon.cpp: mvdir storage/ndb/test/src/NdbSchemaOp.cpp: mvdir storage/ndb/test/src/UtilTransactions.cpp: mvdir storage/ndb/test/src/getarg.c: mvdir storage/ndb/test/tools/Makefile.am: mvdir storage/ndb/test/tools/copy_tab.cpp: mvdir storage/ndb/test/tools/cpcc.cpp: mvdir storage/ndb/test/tools/create_index.cpp: mvdir storage/ndb/test/tools/hugoCalculator.cpp: mvdir storage/ndb/test/tools/hugoFill.cpp: mvdir storage/ndb/test/tools/hugoLoad.cpp: mvdir storage/ndb/test/tools/hugoLockRecords.cpp: mvdir storage/ndb/test/tools/hugoPkDelete.cpp: mvdir storage/ndb/test/tools/hugoPkRead.cpp: mvdir storage/ndb/test/tools/hugoPkReadRecord.cpp: mvdir storage/ndb/test/tools/hugoPkUpdate.cpp: mvdir storage/ndb/test/tools/hugoScanRead.cpp: mvdir storage/ndb/test/tools/hugoScanUpdate.cpp: mvdir storage/ndb/test/tools/old_dirs/hugoCalculator/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoFill/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoLoad/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoLockRecords/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoPkDelete/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoPkRead/Makefile: mvdir storage/ndb/test/tools/restart.cpp: mvdir storage/ndb/test/tools/transproxy.cpp: mvdir storage/ndb/test/tools/verify_index.cpp: mvdir storage/ndb/test/tools/old_dirs/hugoPkReadRecord/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoPkUpdate/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoScanRead/Makefile: mvdir storage/ndb/test/tools/old_dirs/hugoScanUpdate/Makefile: mvdir storage/ndb/test/tools/old_dirs/restart/Makefile: mvdir storage/ndb/test/tools/old_dirs/transproxy/Makefile: mvdir storage/ndb/test/tools/old_dirs/verify_index/Makefile: mvdir storage/ndb/test/tools/old_dirs/waiter/waiter.cpp: mvdir storage/ndb/tools/Makefile.am: mvdir storage/ndb/tools/clean-links.sh: mvdir storage/ndb/tools/delete_all.cpp: mvdir storage/ndb/tools/desc.cpp: mvdir storage/ndb/tools/drop_index.cpp: mvdir storage/ndb/tools/drop_tab.cpp: mvdir storage/ndb/tools/listTables.cpp: mvdir storage/ndb/tools/make-errors.pl: mvdir storage/ndb/tools/make-links.sh: mvdir storage/ndb/tools/ndb_test_platform.cpp: mvdir storage/ndb/tools/ndbsql.cpp: mvdir storage/ndb/tools/old_dirs/copy_tab/Makefile: mvdir storage/ndb/tools/old_dirs/cpcc/Makefile: mvdir storage/ndb/tools/old_dirs/create_index/Makefile: mvdir storage/ndb/tools/old_dirs/delete_all/Makefile: mvdir storage/ndb/tools/old_dirs/desc/Makefile: mvdir storage/ndb/tools/old_dirs/drop_index/Makefile: mvdir storage/ndb/tools/old_dirs/drop_tab/Makefile: mvdir storage/ndb/tools/old_dirs/list_tables/Makefile: mvdir storage/ndb/tools/old_dirs/ndbnet/Makefile.PL: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/ndbnet.pl: mvdir storage/ndb/tools/old_dirs/ndbnet/ndbnetd.pl: mvdir storage/ndb/tools/old_dirs/ndbnet/ndbrun: mvdir storage/ndb/tools/rgrep: mvdir storage/ndb/tools/select_all.cpp: mvdir storage/ndb/tools/select_count.cpp: mvdir storage/ndb/tools/waiter.cpp: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Base.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Client.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Command.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Config.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Database.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Env.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Node.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeApi.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeDb.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/NodeMgmt.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/Server.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerINET.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Net/ServerUNIX.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Base.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Database.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Env.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Run/Node.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Base.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Dir.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Event.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/File.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/IO.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Lock.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Log.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/Socket.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketINET.pm: mvdir storage/ndb/tools/old_dirs/ndbnet/lib/NDB/Util/SocketUNIX.pm: mvdir storage/ndb/tools/old_dirs/ndbsql/Makefile: mvdir storage/ndb/tools/old_dirs/select_all/Makefile: mvdir storage/ndb/tools/old_dirs/select_count/Makefile: mvdir storage/ndb/tools/old_dirs/src/counterviewer/CounterViewer.java: mvdir storage/ndb/tools/restore/Restore.cpp: mvdir storage/ndb/tools/restore/Restore.hpp: mvdir storage/ndb/tools/restore/consumer.cpp: mvdir storage/ndb/tools/restore/consumer.hpp: mvdir storage/ndb/tools/restore/consumer_printer.cpp: mvdir storage/ndb/tools/restore/consumer_printer.hpp: mvdir storage/ndb/tools/restore/consumer_restore.cpp: mvdir storage/ndb/tools/restore/consumer_restore.hpp: mvdir storage/ndb/tools/restore/consumer_restorem.cpp: mvdir storage/ndb/tools/restore/restore_main.cpp: mvdir storage/bdb/LICENSE: mvdir storage/bdb/Makefile.in: mvdir storage/bdb/btree/bt_compare.c: mvdir storage/bdb/btree/bt_conv.c: mvdir storage/bdb/btree/bt_curadj.c: mvdir storage/bdb/btree/bt_cursor.c: mvdir storage/bdb/btree/bt_delete.c: mvdir storage/bdb/btree/bt_method.c: mvdir storage/bdb/btree/bt_open.c: mvdir storage/bdb/btree/bt_put.c: mvdir storage/bdb/btree/bt_rec.c: mvdir storage/bdb/btree/bt_reclaim.c: mvdir storage/bdb/btree/bt_recno.c: mvdir storage/bdb/btree/bt_rsearch.c: mvdir storage/bdb/btree/bt_search.c: mvdir storage/bdb/btree/bt_split.c: mvdir storage/bdb/btree/bt_stat.c: mvdir storage/bdb/btree/bt_upgrade.c: mvdir storage/bdb/btree/bt_verify.c: mvdir storage/bdb/btree/btree.src: mvdir storage/bdb/build_unix/.IGNORE_ME: mvdir storage/bdb/build_vxworks/BerkeleyDB.wsp: mvdir storage/bdb/build_vxworks/dbdemo/README: mvdir storage/bdb/build_win32/Berkeley_DB.dsw: mvdir storage/bdb/build_win32/app_dsp.src: mvdir storage/bdb/build_win32/build_all.dsp: mvdir storage/bdb/build_win32/db_java_xa.dsp: mvdir storage/bdb/build_win32/db_java_xaj.mak: mvdir storage/bdb/build_win32/db_lib.dsp: mvdir storage/bdb/build_win32/db_test.src: mvdir storage/bdb/build_win32/dbkill.cpp: mvdir storage/bdb/build_win32/dllmain.c: mvdir storage/bdb/build_win32/dynamic_dsp.src: mvdir storage/bdb/build_win32/java_dsp.src: mvdir storage/bdb/build_win32/libdb_tcl.def: mvdir storage/bdb/build_win32/libdbrc.src: mvdir storage/bdb/build_win32/srcfile_dsp.src: mvdir storage/bdb/build_win32/static_dsp.src: mvdir storage/bdb/build_win32/tcl_dsp.src: mvdir storage/bdb/clib/getcwd.c: mvdir storage/bdb/clib/getopt.c: mvdir storage/bdb/clib/memcmp.c: mvdir storage/bdb/clib/memmove.c: mvdir storage/bdb/clib/raise.c: mvdir storage/bdb/clib/snprintf.c: mvdir storage/bdb/clib/strcasecmp.c: mvdir storage/bdb/clib/strdup.c: mvdir storage/bdb/clib/strerror.c: mvdir storage/bdb/clib/vsnprintf.c: mvdir storage/bdb/common/db_byteorder.c: mvdir storage/bdb/common/db_err.c: mvdir storage/bdb/common/db_getlong.c: mvdir storage/bdb/common/db_idspace.c: mvdir storage/bdb/common/db_log2.c: mvdir storage/bdb/common/util_arg.c: mvdir storage/bdb/common/util_cache.c: mvdir storage/bdb/common/util_log.c: mvdir storage/bdb/common/util_sig.c: mvdir storage/bdb/cxx/cxx_db.cpp: mvdir storage/bdb/cxx/cxx_dbc.cpp: mvdir storage/bdb/cxx/cxx_dbt.cpp: mvdir storage/bdb/cxx/cxx_env.cpp: mvdir storage/bdb/cxx/cxx_except.cpp: mvdir storage/bdb/cxx/cxx_lock.cpp: mvdir storage/bdb/cxx/cxx_logc.cpp: mvdir storage/bdb/cxx/cxx_mpool.cpp: mvdir storage/bdb/cxx/cxx_txn.cpp: mvdir storage/bdb/db/crdel.src: mvdir storage/bdb/db/crdel_rec.c: mvdir storage/bdb/db/db.c: mvdir storage/bdb/db/db.src: mvdir storage/bdb/db/db_am.c: mvdir storage/bdb/db/db_cam.c: mvdir storage/bdb/db/db_conv.c: mvdir storage/bdb/db/db_dispatch.c: mvdir storage/bdb/db/db_dup.c: mvdir storage/bdb/db/db_iface.c: mvdir storage/bdb/db/db_join.c: mvdir storage/bdb/db/db_meta.c: mvdir storage/bdb/db/db_method.c: mvdir storage/bdb/db/db_open.c: mvdir storage/bdb/db/db_overflow.c: mvdir storage/bdb/db/db_pr.c: mvdir storage/bdb/db/db_rec.c: mvdir storage/bdb/db/db_reclaim.c: mvdir storage/bdb/db/db_remove.c: mvdir storage/bdb/db/db_rename.c: mvdir storage/bdb/db/db_ret.c: mvdir storage/bdb/db/db_truncate.c: mvdir storage/bdb/db/db_upg.c: mvdir storage/bdb/db/db_upg_opd.c: mvdir storage/bdb/db/db_vrfy.c: mvdir storage/bdb/db/db_vrfyutil.c: mvdir storage/bdb/db185/db185.c: mvdir storage/bdb/db185/db185_int.in: mvdir storage/bdb/db_archive/db_archive.c: mvdir storage/bdb/db_checkpoint/db_checkpoint.c: mvdir storage/bdb/db_deadlock/db_deadlock.c: mvdir storage/bdb/db_dump/db_dump.c: mvdir storage/bdb/db_dump185/db_dump185.c: mvdir storage/bdb/db_load/db_load.c: mvdir storage/bdb/db_printlog/README: mvdir storage/bdb/db_printlog/commit.awk: mvdir storage/bdb/db_printlog/count.awk: mvdir storage/bdb/db_printlog/db_printlog.c: mvdir storage/bdb/db_printlog/dbname.awk: mvdir storage/bdb/db_printlog/fileid.awk: mvdir storage/bdb/db_printlog/logstat.awk: mvdir storage/bdb/db_printlog/pgno.awk: mvdir storage/bdb/db_printlog/range.awk: mvdir storage/bdb/db_printlog/rectype.awk: mvdir storage/bdb/db_printlog/status.awk: mvdir storage/bdb/db_printlog/txn.awk: mvdir storage/bdb/db_recover/db_recover.c: mvdir storage/bdb/db_stat/db_stat.c: mvdir storage/bdb/db_upgrade/db_upgrade.c: mvdir storage/bdb/db_verify/db_verify.c: mvdir storage/bdb/dbinc/btree.h: mvdir storage/bdb/dbinc/crypto.h: mvdir storage/bdb/dbinc/cxx_common.h: mvdir storage/bdb/dbinc/cxx_except.h: mvdir storage/bdb/dbinc/cxx_int.h: mvdir storage/bdb/dbinc/db.in: mvdir storage/bdb/dbinc/db_185.in: mvdir storage/bdb/dbinc/db_am.h: mvdir storage/bdb/dbinc/db_cxx.in: mvdir storage/bdb/dbinc/db_dispatch.h: mvdir storage/bdb/dbinc/db_int.in: mvdir storage/bdb/dbinc/db_join.h: mvdir storage/bdb/dbinc/db_page.h: mvdir storage/bdb/dbinc/db_server_int.h: mvdir storage/bdb/dbinc/db_shash.h: mvdir storage/bdb/dbinc/db_swap.h: mvdir storage/bdb/dbinc/db_upgrade.h: mvdir storage/bdb/dbinc/db_verify.h: mvdir storage/bdb/dbinc/debug.h: mvdir storage/bdb/dbinc/fop.h: mvdir storage/bdb/dbinc/globals.h: mvdir storage/bdb/dbinc/hash.h: mvdir storage/bdb/dbinc/hmac.h: mvdir storage/bdb/dbinc/lock.h: mvdir storage/bdb/dbinc/log.h: mvdir storage/bdb/dbinc/mp.h: mvdir storage/bdb/dbinc/mutex.h: mvdir storage/bdb/dbinc/os.h: mvdir storage/bdb/dbinc/qam.h: mvdir storage/bdb/dbinc/queue.h: mvdir storage/bdb/dbinc/region.h: mvdir storage/bdb/dbinc/rep.h: mvdir storage/bdb/dbinc/shqueue.h: mvdir storage/bdb/dbinc/tcl_db.h: mvdir storage/bdb/dbinc/txn.h: mvdir storage/bdb/dbinc/xa.h: mvdir storage/bdb/dbm/dbm.c: mvdir storage/bdb/dbreg/dbreg.c: mvdir storage/bdb/dbreg/dbreg.src: mvdir storage/bdb/dbreg/dbreg_rec.c: mvdir storage/bdb/dbreg/dbreg_util.c: mvdir storage/bdb/dist/Makefile.in: mvdir storage/bdb/dist/RELEASE: mvdir storage/bdb/dist/buildrel: mvdir storage/bdb/dist/config.guess: mvdir storage/bdb/dist/config.sub: mvdir storage/bdb/dist/configure.ac: mvdir storage/bdb/dist/db.ecd.in: mvdir storage/bdb/dist/db.spec.in: mvdir storage/bdb/dist/gen_inc.awk: mvdir storage/bdb/dist/gen_rec.awk: mvdir storage/bdb/dist/gen_rpc.awk: mvdir storage/bdb/dist/install-sh: mvdir storage/bdb/dist/ltmain.sh: mvdir storage/bdb/dist/pubdef.in: mvdir storage/bdb/dist/s_all: mvdir storage/bdb/dist/s_config: mvdir storage/bdb/dist/aclocal/config.ac: mvdir storage/bdb/dist/aclocal/cxx.ac: mvdir storage/bdb/dist/aclocal/gcc.ac: mvdir storage/bdb/dist/aclocal/libtool.ac: mvdir storage/bdb/dist/s_crypto: mvdir storage/bdb/dist/s_dir: mvdir storage/bdb/dist/s_include: mvdir storage/bdb/dist/s_javah: mvdir storage/bdb/dist/s_java: mvdir storage/bdb/dist/s_perm: mvdir storage/bdb/dist/s_readme: mvdir storage/bdb/dist/s_recover: mvdir storage/bdb/dist/s_rpc: mvdir storage/bdb/dist/s_symlink: mvdir storage/bdb/dist/s_tags: mvdir storage/bdb/dist/s_test: mvdir storage/bdb/dist/s_vxworks: mvdir storage/bdb/dist/s_win32_dsp: mvdir storage/bdb/dist/s_win32: mvdir storage/bdb/dist/srcfiles.in: mvdir storage/bdb/dist/vx_buildcd: mvdir storage/bdb/dist/vx_config.in: mvdir storage/bdb/dist/win_config.in: mvdir storage/bdb/dist/win_exports.in: mvdir storage/bdb/dist/aclocal/mutex.ac: mvdir storage/bdb/dist/aclocal/options.ac: mvdir storage/bdb/dist/aclocal/programs.ac: mvdir storage/bdb/dist/aclocal/sosuffix.ac: mvdir storage/bdb/dist/aclocal/tcl.ac: mvdir storage/bdb/dist/aclocal/types.ac: mvdir storage/bdb/dist/aclocal_java/ac_check_class.ac: mvdir storage/bdb/dist/aclocal_java/ac_check_classpath.ac: mvdir storage/bdb/dist/aclocal_java/ac_check_junit.ac: mvdir storage/bdb/dist/aclocal_java/ac_check_rqrd_class.ac: mvdir storage/bdb/dist/aclocal_java/ac_java_options.ac: mvdir storage/bdb/dist/aclocal_java/ac_jni_include_dirs.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_jar.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_java.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_java_works.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_javac.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_javac_works.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_javadoc.ac: mvdir storage/bdb/dist/aclocal_java/ac_prog_javah.ac: mvdir storage/bdb/dist/aclocal_java/ac_try_compile_java.ac: mvdir storage/bdb/dist/aclocal_java/ac_try_run_javac.ac: mvdir storage/bdb/dist/template/rec_ctemp: mvdir storage/bdb/dist/vx_2.0/BerkeleyDB.wpj: mvdir storage/bdb/dist/vx_2.0/wpj.in: mvdir storage/bdb/dist/vx_3.1/Makefile.custom: mvdir storage/bdb/dist/vx_3.1/cdf.1: mvdir storage/bdb/dist/vx_3.1/cdf.2: mvdir storage/bdb/dist/vx_3.1/cdf.3: mvdir storage/bdb/dist/vx_3.1/component.cdf: mvdir storage/bdb/dist/vx_3.1/component.wpj: mvdir storage/bdb/dist/vx_3.1/wpj.1: mvdir storage/bdb/dist/vx_3.1/wpj.2: mvdir storage/bdb/dist/vx_3.1/wpj.3: mvdir storage/bdb/dist/vx_3.1/wpj.4: mvdir storage/bdb/dist/vx_3.1/wpj.5: mvdir storage/bdb/dist/vx_setup/CONFIG.in: mvdir storage/bdb/dist/vx_setup/LICENSE.TXT: mvdir storage/bdb/dist/vx_setup/MESSAGES.TCL: mvdir storage/bdb/dist/vx_setup/README.in: mvdir storage/bdb/dist/vx_setup/SETUP.BMP: mvdir storage/bdb/dist/vx_setup/vx_allfile.in: mvdir storage/bdb/dist/vx_setup/vx_demofile.in: mvdir storage/bdb/dist/vx_setup/vx_setup.in: mvdir storage/bdb/env/db_salloc.c: mvdir storage/bdb/env/db_shash.c: mvdir storage/bdb/env/env_file.c: mvdir storage/bdb/env/env_method.c.b: mvdir storage/bdb/env/env_method.c: mvdir storage/bdb/env/env_open.c: mvdir storage/bdb/env/env_recover.c: mvdir storage/bdb/env/env_region.c: mvdir storage/bdb/fileops/fileops.src: mvdir storage/bdb/fileops/fop_basic.c: mvdir storage/bdb/fileops/fop_rec.c: mvdir storage/bdb/fileops/fop_util.c: mvdir storage/bdb/hash/hash.c: mvdir storage/bdb/hash/hash.src: mvdir storage/bdb/hash/hash_conv.c: mvdir storage/bdb/hash/hash_dup.c: mvdir storage/bdb/hash/hash_func.c: mvdir storage/bdb/hash/hash_meta.c: mvdir storage/bdb/hash/hash_method.c: mvdir storage/bdb/hash/hash_open.c: mvdir storage/bdb/hash/hash_page.c: mvdir storage/bdb/hash/hash_rec.c: mvdir storage/bdb/hash/hash_reclaim.c: mvdir storage/bdb/hash/hash_stat.c: mvdir storage/bdb/hash/hash_upgrade.c: mvdir storage/bdb/hash/hash_verify.c: mvdir storage/bdb/hmac/hmac.c: mvdir storage/bdb/hmac/sha1.c: mvdir storage/bdb/hsearch/hsearch.c: mvdir storage/bdb/libdb_java/checkapi.prl: mvdir storage/bdb/libdb_java/com_sleepycat_db_Db.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbEnv.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbLock.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbLogc.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbLsn.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbTxn.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_DbUtil.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_Dbc.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_Dbt.h: mvdir storage/bdb/libdb_java/com_sleepycat_db_xa_DbXAResource.h: mvdir storage/bdb/libdb_java/java_Db.c: mvdir storage/bdb/libdb_java/java_DbEnv.c: mvdir storage/bdb/libdb_java/java_DbLock.c: mvdir storage/bdb/libdb_java/java_DbLogc.c: mvdir storage/bdb/libdb_java/java_DbLsn.c: mvdir storage/bdb/libdb_java/java_DbTxn.c: mvdir storage/bdb/libdb_java/java_DbUtil.c: mvdir storage/bdb/libdb_java/java_DbXAResource.c: mvdir storage/bdb/libdb_java/java_Dbc.c: mvdir storage/bdb/libdb_java/java_Dbt.c: mvdir storage/bdb/libdb_java/java_info.c: mvdir storage/bdb/libdb_java/java_info.h: mvdir storage/bdb/libdb_java/java_locked.c: mvdir storage/bdb/libdb_java/java_locked.h: mvdir storage/bdb/libdb_java/java_util.c: mvdir storage/bdb/libdb_java/java_util.h: mvdir storage/bdb/lock/Design: mvdir storage/bdb/lock/lock.c: mvdir storage/bdb/lock/lock_deadlock.c: mvdir storage/bdb/lock/lock_method.c: mvdir storage/bdb/lock/lock_region.c: mvdir storage/bdb/lock/lock_stat.c: mvdir storage/bdb/lock/lock_util.c: mvdir storage/bdb/log/log.c: mvdir storage/bdb/log/log_archive.c: mvdir storage/bdb/log/log_compare.c: mvdir storage/bdb/log/log_get.c: mvdir storage/bdb/log/log_method.c: mvdir storage/bdb/log/log_put.c: mvdir storage/bdb/mp/mp_alloc.c: mvdir storage/bdb/mp/mp_bh.c: mvdir storage/bdb/mp/mp_fget.c: mvdir storage/bdb/mp/mp_fopen.c: mvdir storage/bdb/mp/mp_fput.c: mvdir storage/bdb/mp/mp_fset.c: mvdir storage/bdb/mp/mp_method.c: mvdir storage/bdb/mp/mp_region.c: mvdir storage/bdb/mp/mp_register.c: mvdir storage/bdb/mp/mp_stat.c: mvdir storage/bdb/mp/mp_sync.c: mvdir storage/bdb/mp/mp_trickle.c: mvdir storage/bdb/mutex/README: mvdir storage/bdb/mutex/mut_fcntl.c: mvdir storage/bdb/mutex/mut_pthread.c: mvdir storage/bdb/mutex/mut_tas.c: mvdir storage/bdb/mutex/mut_win32.c: mvdir storage/bdb/mutex/mutex.c: mvdir storage/bdb/mutex/tm.c: mvdir storage/bdb/mutex/uts4_cc.s: mvdir storage/bdb/os/os_abs.c: mvdir storage/bdb/os/os_alloc.c: mvdir storage/bdb/os/os_clock.c: mvdir storage/bdb/os/os_config.c: mvdir storage/bdb/os/os_dir.c: mvdir storage/bdb/os/os_errno.c: mvdir storage/bdb/os/os_fid.c: mvdir storage/bdb/os/os_fsync.c: mvdir storage/bdb/os/os_handle.c: mvdir storage/bdb/os/os_id.c: mvdir storage/bdb/os/os_map.c: mvdir storage/bdb/os/os_method.c: mvdir storage/bdb/os/os_oflags.c: mvdir storage/bdb/os/os_open.c: mvdir storage/bdb/os/os_region.c: mvdir storage/bdb/os/os_rename.c: mvdir storage/bdb/os/os_root.c: mvdir storage/bdb/os/os_rpath.c: mvdir storage/bdb/os/os_rw.c: mvdir storage/bdb/os/os_seek.c: mvdir storage/bdb/os/os_sleep.c: mvdir storage/bdb/os/os_spin.c: mvdir storage/bdb/os/os_stat.c: mvdir storage/bdb/os/os_tmpdir.c: mvdir storage/bdb/os/os_unlink.c: mvdir storage/bdb/os_vxworks/os_vx_abs.c: mvdir storage/bdb/os_vxworks/os_vx_config.c: mvdir storage/bdb/os_vxworks/os_vx_map.c: mvdir storage/bdb/os_win32/os_abs.c: mvdir storage/bdb/os_win32/os_clock.c: mvdir storage/bdb/os_win32/os_config.c: mvdir storage/bdb/os_win32/os_dir.c: mvdir storage/bdb/os_win32/os_errno.c: mvdir storage/bdb/os_win32/os_fid.c: mvdir storage/bdb/os_win32/os_fsync.c: mvdir storage/bdb/os_win32/os_handle.c: mvdir storage/bdb/os_win32/os_map.c: mvdir storage/bdb/os_win32/os_open.c: mvdir storage/bdb/os_win32/os_rename.c: mvdir storage/bdb/os_win32/os_rw.c: mvdir storage/bdb/os_win32/os_seek.c: mvdir storage/bdb/os_win32/os_sleep.c: mvdir storage/bdb/os_win32/os_spin.c: mvdir storage/bdb/os_win32/os_stat.c: mvdir storage/bdb/os_win32/os_type.c: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB.pm: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB.pod.P: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB.pod: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB.xs: mvdir storage/bdb/perl/BerkeleyDB/Changes: mvdir storage/bdb/perl/BerkeleyDB/MANIFEST: mvdir storage/bdb/perl/BerkeleyDB/Makefile.PL: mvdir storage/bdb/perl/BerkeleyDB/README: mvdir storage/bdb/perl/BerkeleyDB/Todo: mvdir storage/bdb/perl/BerkeleyDB/config.in: mvdir storage/bdb/perl/BerkeleyDB/constants.h: mvdir storage/bdb/perl/BerkeleyDB/constants.xs: mvdir storage/bdb/perl/BerkeleyDB/dbinfo: mvdir storage/bdb/perl/BerkeleyDB/mkconsts: mvdir storage/bdb/perl/BerkeleyDB/mkpod: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB/Btree.pm: mvdir storage/bdb/perl/BerkeleyDB/BerkeleyDB/Hash.pm: mvdir storage/bdb/perl/BerkeleyDB/hints/dec_osf.pl: mvdir storage/bdb/perl/BerkeleyDB/hints/irix_6_5.pl: mvdir storage/bdb/perl/BerkeleyDB/hints/solaris.pl: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_01: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_02: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_03: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_04: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004_05: mvdir storage/bdb/perl/BerkeleyDB/patches/5.004: mvdir storage/bdb/perl/BerkeleyDB/patches/5.005_01: mvdir storage/bdb/perl/BerkeleyDB/patches/5.005_02: mvdir storage/bdb/perl/BerkeleyDB/patches/5.005_03: mvdir storage/bdb/perl/BerkeleyDB/patches/5.005: mvdir storage/bdb/perl/BerkeleyDB/patches/5.6.0: mvdir storage/bdb/perl/BerkeleyDB/ppport.h: mvdir storage/bdb/perl/BerkeleyDB/scan: mvdir storage/bdb/perl/BerkeleyDB/t/btree.t: mvdir storage/bdb/perl/BerkeleyDB/t/destroy.t: mvdir storage/bdb/perl/BerkeleyDB/t/env.t: mvdir storage/bdb/perl/BerkeleyDB/t/examples.t.T: mvdir storage/bdb/perl/BerkeleyDB/t/examples.t: mvdir storage/bdb/perl/BerkeleyDB/t/examples3.t.T: mvdir storage/bdb/perl/BerkeleyDB/t/examples3.t: mvdir storage/bdb/perl/BerkeleyDB/t/filter.t: mvdir storage/bdb/perl/BerkeleyDB/t/hash.t: mvdir storage/bdb/perl/BerkeleyDB/t/join.t: mvdir storage/bdb/perl/BerkeleyDB/t/mldbm.t: mvdir storage/bdb/perl/BerkeleyDB/t/queue.t: mvdir storage/bdb/perl/BerkeleyDB/t/recno.t: mvdir storage/bdb/perl/BerkeleyDB/t/strict.t: mvdir storage/bdb/perl/BerkeleyDB/t/subdb.t: mvdir storage/bdb/perl/BerkeleyDB/t/txn.t: mvdir storage/bdb/perl/BerkeleyDB/typemap: mvdir storage/bdb/perl/BerkeleyDB/t/unknown.t: mvdir storage/bdb/perl/BerkeleyDB/t/util.pm: mvdir storage/bdb/perl/DB_File/Changes: mvdir storage/bdb/perl/DB_File/DB_File.pm: mvdir storage/bdb/perl/DB_File/DB_File.xs: mvdir storage/bdb/perl/DB_File/DB_File_BS: mvdir storage/bdb/perl/DB_File/MANIFEST: mvdir storage/bdb/perl/DB_File/Makefile.PL: mvdir storage/bdb/perl/DB_File/README: mvdir storage/bdb/perl/DB_File/config.in: mvdir storage/bdb/perl/DB_File/dbinfo: mvdir storage/bdb/perl/DB_File/fallback.h: mvdir storage/bdb/perl/DB_File/fallback.xs: mvdir storage/bdb/perl/DB_File/hints/dynixptx.pl: mvdir storage/bdb/perl/DB_File/hints/sco.pl: mvdir storage/bdb/perl/DB_File/patches/5.004_01: mvdir storage/bdb/perl/DB_File/patches/5.004_02: mvdir storage/bdb/perl/DB_File/patches/5.004_03: mvdir storage/bdb/perl/DB_File/patches/5.004_04: mvdir storage/bdb/perl/DB_File/patches/5.004_05: mvdir storage/bdb/perl/DB_File/patches/5.004: mvdir storage/bdb/perl/DB_File/patches/5.005_01: mvdir storage/bdb/perl/DB_File/patches/5.005_02: mvdir storage/bdb/perl/DB_File/patches/5.005_03: mvdir storage/bdb/perl/DB_File/patches/5.005: mvdir storage/bdb/perl/DB_File/patches/5.6.0: mvdir storage/bdb/perl/DB_File/ppport.h: mvdir storage/bdb/perl/DB_File/t/db-btree.t: mvdir storage/bdb/perl/DB_File/t/db-hash.t: mvdir storage/bdb/perl/DB_File/t/db-recno.t: mvdir storage/bdb/perl/DB_File/typemap: mvdir storage/bdb/perl/DB_File/version.c: mvdir storage/bdb/qam/qam.c: mvdir storage/bdb/qam/qam.src: mvdir storage/bdb/qam/qam_conv.c: mvdir storage/bdb/qam/qam_files.c: mvdir storage/bdb/qam/qam_method.c: mvdir storage/bdb/qam/qam_open.c: mvdir storage/bdb/qam/qam_rec.c: mvdir storage/bdb/qam/qam_stat.c: mvdir storage/bdb/qam/qam_upgrade.c: mvdir storage/bdb/qam/qam_verify.c: mvdir storage/bdb/rep/rep_method.c: mvdir storage/bdb/rep/rep_record.c: mvdir storage/bdb/rep/rep_region.c: mvdir storage/bdb/rep/rep_util.c: mvdir storage/bdb/rpc_client/client.c: mvdir storage/bdb/rpc_client/gen_client_ret.c: mvdir storage/bdb/rpc_server/c/db_server_proc.c.in: mvdir storage/bdb/rpc_server/c/db_server_util.c: mvdir storage/bdb/rpc_server/clsrv.html: mvdir storage/bdb/rpc_server/cxx/db_server_cxxproc.cpp: mvdir storage/bdb/rpc_server/cxx/db_server_cxxutil.cpp: mvdir storage/bdb/rpc_server/java/DbDispatcher.java: mvdir storage/bdb/rpc_server/java/DbServer.java: mvdir storage/bdb/rpc_server/java/FreeList.java: mvdir storage/bdb/rpc_server/java/LocalIterator.java: mvdir storage/bdb/rpc_server/java/README: mvdir storage/bdb/rpc_server/java/RpcDb.java: mvdir storage/bdb/rpc_server/java/RpcDbEnv.java: mvdir storage/bdb/rpc_server/java/RpcDbTxn.java: mvdir storage/bdb/rpc_server/java/RpcDbc.java: mvdir storage/bdb/rpc_server/java/Timer.java: mvdir storage/bdb/rpc_server/java/jrpcgen.jar: mvdir storage/bdb/rpc_server/java/oncrpc.jar: mvdir storage/bdb/rpc_server/rpc.src: mvdir storage/bdb/rpc_server/java/gen/DbServerStub.java: mvdir storage/bdb/rpc_server/java/gen/__db_associate_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_associate_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_bt_maxkey_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_bt_maxkey_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_bt_minkey_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_bt_minkey_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_close_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_close_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_create_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_create_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_cursor_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_cursor_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_del_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_del_reply.java: mvdir storage/bdb/rpc_server/java/s_jrpcgen: mvdir storage/bdb/rpc_server/java/gen/__db_encrypt_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_encrypt_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_extentsize_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_extentsize_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_flags_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_flags_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_get_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_get_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_h_ffactor_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_h_ffactor_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_h_nelem_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_h_nelem_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_join_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_join_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_key_range_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_key_range_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_lorder_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_lorder_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_open_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_open_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_pagesize_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_pagesize_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_pget_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_pget_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_put_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_put_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_delim_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_delim_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_len_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_len_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_pad_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_re_pad_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_remove_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_remove_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_rename_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_rename_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_stat_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_stat_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_sync_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_sync_reply.java: mvdir storage/bdb/rpc_server/java/gen/__db_truncate_msg.java: mvdir storage/bdb/rpc_server/java/gen/__db_truncate_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_close_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_close_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_count_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_count_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_del_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_del_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_dup_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_dup_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_get_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_get_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_pget_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_pget_reply.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_put_msg.java: mvdir storage/bdb/rpc_server/java/gen/__dbc_put_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_cachesize_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_cachesize_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_close_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_close_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_create_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_create_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_dbremove_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_dbremove_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_dbrename_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_dbrename_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_encrypt_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_encrypt_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_flags_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_flags_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_open_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_open_reply.java: mvdir storage/bdb/rpc_server/java/gen/__env_remove_msg.java: mvdir storage/bdb/rpc_server/java/gen/__env_remove_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_abort_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_abort_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_begin_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_begin_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_commit_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_commit_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_discard_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_discard_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_prepare_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_prepare_reply.java: mvdir storage/bdb/rpc_server/java/gen/__txn_recover_msg.java: mvdir storage/bdb/rpc_server/java/gen/__txn_recover_reply.java: mvdir storage/bdb/rpc_server/java/gen/db_server.java: mvdir storage/bdb/tcl/tcl_compat.c: mvdir storage/bdb/tcl/tcl_db.c: mvdir storage/bdb/tcl/tcl_db_pkg.c: mvdir storage/bdb/tcl/docs/db.html: mvdir storage/bdb/tcl/docs/env.html: mvdir storage/bdb/tcl/docs/historic.html: mvdir storage/bdb/tcl/docs/index.html: mvdir storage/bdb/tcl/docs/library.html: mvdir storage/bdb/tcl/docs/lock.html: mvdir storage/bdb/tcl/docs/log.html: mvdir storage/bdb/tcl/docs/mpool.html: mvdir storage/bdb/tcl/docs/rep.html: mvdir storage/bdb/tcl/docs/test.html: mvdir storage/bdb/tcl/docs/txn.html: mvdir storage/bdb/tcl/tcl_dbcursor.c: mvdir storage/bdb/tcl/tcl_env.c: mvdir storage/bdb/tcl/tcl_internal.c: mvdir storage/bdb/tcl/tcl_lock.c: mvdir storage/bdb/tcl/tcl_log.c: mvdir storage/bdb/tcl/tcl_mp.c: mvdir storage/bdb/tcl/tcl_rep.c: mvdir storage/bdb/tcl/tcl_txn.c: mvdir storage/bdb/tcl/tcl_util.c: mvdir storage/bdb/test/archive.tcl: mvdir storage/bdb/test/bigfile001.tcl: mvdir storage/bdb/test/bigfile002.tcl: mvdir storage/bdb/test/byteorder.tcl: mvdir storage/bdb/test/conscript.tcl: mvdir storage/bdb/test/dbm.tcl: mvdir storage/bdb/test/dbscript.tcl: mvdir storage/bdb/test/ddoyscript.tcl: mvdir storage/bdb/test/ddscript.tcl: mvdir storage/bdb/test/dead001.tcl: mvdir storage/bdb/test/dead002.tcl: mvdir storage/bdb/test/dead003.tcl: mvdir storage/bdb/test/dead004.tcl: mvdir storage/bdb/test/dead005.tcl: mvdir storage/bdb/test/dead006.tcl: mvdir storage/bdb/test/dead007.tcl: mvdir storage/bdb/test/env001.tcl: mvdir storage/bdb/test/env002.tcl: mvdir storage/bdb/test/env003.tcl: mvdir storage/bdb/test/env004.tcl: mvdir storage/bdb/test/env005.tcl: mvdir storage/bdb/test/env006.tcl: mvdir storage/bdb/test/env007.tcl: mvdir storage/bdb/test/env008.tcl: mvdir storage/bdb/test/env009.tcl: mvdir storage/bdb/test/env010.tcl: mvdir storage/bdb/test/env011.tcl: mvdir storage/bdb/test/hsearch.tcl: mvdir storage/bdb/test/join.tcl: mvdir storage/bdb/test/lock001.tcl: mvdir storage/bdb/test/lock002.tcl: mvdir storage/bdb/test/lock003.tcl: mvdir storage/bdb/test/lock004.tcl: mvdir storage/bdb/test/lock005.tcl: mvdir storage/bdb/test/lockscript.tcl: mvdir storage/bdb/test/log001.tcl: mvdir storage/bdb/test/log002.tcl: mvdir storage/bdb/test/log003.tcl: mvdir storage/bdb/test/log004.tcl: mvdir storage/bdb/test/log005.tcl: mvdir storage/bdb/test/logtrack.tcl: mvdir storage/bdb/test/mdbscript.tcl: mvdir storage/bdb/test/memp001.tcl: mvdir storage/bdb/test/memp002.tcl: mvdir storage/bdb/test/memp003.tcl: mvdir storage/bdb/test/mpoolscript.tcl: mvdir storage/bdb/test/mutex001.tcl: mvdir storage/bdb/test/mutex002.tcl: mvdir storage/bdb/test/mutex003.tcl: mvdir storage/bdb/test/mutexscript.tcl: mvdir storage/bdb/test/ndbm.tcl: mvdir storage/bdb/test/parallel.tcl: mvdir storage/bdb/test/recd001.tcl: mvdir storage/bdb/test/recd002.tcl: mvdir storage/bdb/test/recd003.tcl: mvdir storage/bdb/test/recd004.tcl: mvdir storage/bdb/test/recd005.tcl: mvdir storage/bdb/test/recd006.tcl: mvdir storage/bdb/test/recd007.tcl: mvdir storage/bdb/test/recd008.tcl: mvdir storage/bdb/test/recd009.tcl: mvdir storage/bdb/test/recd010.tcl: mvdir storage/bdb/test/recd011.tcl: mvdir storage/bdb/test/recd012.tcl: mvdir storage/bdb/test/recd013.tcl: mvdir storage/bdb/test/recd014.tcl: mvdir storage/bdb/test/recd015.tcl: mvdir storage/bdb/test/recd016.tcl: mvdir storage/bdb/test/recd017.tcl: mvdir storage/bdb/test/recd018.tcl: mvdir storage/bdb/test/recd019.tcl: mvdir storage/bdb/test/recd020.tcl: mvdir storage/bdb/test/recd15scr.tcl: mvdir storage/bdb/test/recdscript.tcl: mvdir storage/bdb/test/rep001.tcl: mvdir storage/bdb/test/rep002.tcl: mvdir storage/bdb/test/rep003.tcl: mvdir storage/bdb/test/rep004.tcl: mvdir storage/bdb/test/rep005.tcl: mvdir storage/bdb/test/reputils.tcl: mvdir storage/bdb/test/rpc001.tcl: mvdir storage/bdb/test/rpc002.tcl: mvdir storage/bdb/test/rpc003.tcl: mvdir storage/bdb/test/rpc004.tcl: mvdir storage/bdb/test/rpc005.tcl: mvdir storage/bdb/test/rsrc001.tcl: mvdir storage/bdb/test/rsrc002.tcl: mvdir storage/bdb/test/rsrc003.tcl: mvdir storage/bdb/test/rsrc004.tcl: mvdir storage/bdb/test/sdb001.tcl: mvdir storage/bdb/test/sdb002.tcl: mvdir storage/bdb/test/sdb003.tcl: mvdir storage/bdb/test/sdb004.tcl: mvdir storage/bdb/test/sdb005.tcl: mvdir storage/bdb/test/sdb006.tcl: mvdir storage/bdb/test/sdb007.tcl: mvdir storage/bdb/test/sdb008.tcl: mvdir storage/bdb/test/sdb009.tcl: mvdir storage/bdb/test/sdb010.tcl: mvdir storage/bdb/test/sdb011.tcl: mvdir storage/bdb/test/sdb012.tcl: mvdir storage/bdb/test/sdbscript.tcl: mvdir storage/bdb/test/sdbtest001.tcl: mvdir storage/bdb/test/sdbtest002.tcl: mvdir storage/bdb/test/sdbutils.tcl: mvdir storage/bdb/test/sec001.tcl: mvdir storage/bdb/test/sec002.tcl: mvdir storage/bdb/test/shelltest.tcl: mvdir storage/bdb/test/si001.tcl: mvdir storage/bdb/test/si002.tcl: mvdir storage/bdb/test/si003.tcl: mvdir storage/bdb/test/si004.tcl: mvdir storage/bdb/test/si005.tcl: mvdir storage/bdb/test/si006.tcl: mvdir storage/bdb/test/sindex.tcl: mvdir storage/bdb/test/sysscript.tcl: mvdir storage/bdb/test/test.tcl: mvdir storage/bdb/test/test001.tcl: mvdir storage/bdb/test/test002.tcl: mvdir storage/bdb/test/test003.tcl: mvdir storage/bdb/test/test004.tcl: mvdir storage/bdb/test/test005.tcl: mvdir storage/bdb/test/test006.tcl: mvdir storage/bdb/test/test007.tcl: mvdir storage/bdb/test/test008.tcl: mvdir storage/bdb/test/test009.tcl: mvdir storage/bdb/test/test010.tcl: mvdir storage/bdb/test/test011.tcl: mvdir storage/bdb/test/test012.tcl: mvdir storage/bdb/test/test013.tcl: mvdir storage/bdb/test/test014.tcl: mvdir storage/bdb/test/test015.tcl: mvdir storage/bdb/test/test016.tcl: mvdir storage/bdb/test/test017.tcl: mvdir storage/bdb/test/test018.tcl: mvdir storage/bdb/test/test019.tcl: mvdir storage/bdb/test/test020.tcl: mvdir storage/bdb/test/test021.tcl: mvdir storage/bdb/test/test022.tcl: mvdir storage/bdb/test/test023.tcl: mvdir storage/bdb/test/test024.tcl: mvdir storage/bdb/test/test025.tcl: mvdir storage/bdb/test/test026.tcl: mvdir storage/bdb/test/test027.tcl: mvdir storage/bdb/test/test028.tcl: mvdir storage/bdb/test/test029.tcl: mvdir storage/bdb/test/test030.tcl: mvdir storage/bdb/test/test031.tcl: mvdir storage/bdb/test/test032.tcl: mvdir storage/bdb/test/test033.tcl: mvdir storage/bdb/test/test034.tcl: mvdir storage/bdb/test/test035.tcl: mvdir storage/bdb/test/test036.tcl: mvdir storage/bdb/test/test037.tcl: mvdir storage/bdb/test/test038.tcl: mvdir storage/bdb/test/test039.tcl: mvdir storage/bdb/test/test040.tcl: mvdir storage/bdb/test/test041.tcl: mvdir storage/bdb/test/test042.tcl: mvdir storage/bdb/test/test043.tcl: mvdir storage/bdb/test/test044.tcl: mvdir storage/bdb/test/test045.tcl: mvdir storage/bdb/test/test046.tcl: mvdir storage/bdb/test/test047.tcl: mvdir storage/bdb/test/test048.tcl: mvdir storage/bdb/test/test049.tcl: mvdir storage/bdb/test/test050.tcl: mvdir storage/bdb/test/test051.tcl: mvdir storage/bdb/test/test052.tcl: mvdir storage/bdb/test/test053.tcl: mvdir storage/bdb/test/test054.tcl: mvdir storage/bdb/test/test055.tcl: mvdir storage/bdb/test/test056.tcl: mvdir storage/bdb/test/test057.tcl: mvdir storage/bdb/test/test058.tcl: mvdir storage/bdb/test/test059.tcl: mvdir storage/bdb/test/test060.tcl: mvdir storage/bdb/test/test061.tcl: mvdir storage/bdb/test/test062.tcl: mvdir storage/bdb/test/test063.tcl: mvdir storage/bdb/test/test064.tcl: mvdir storage/bdb/test/test065.tcl: mvdir storage/bdb/test/test066.tcl: mvdir storage/bdb/test/test067.tcl: mvdir storage/bdb/test/test068.tcl: mvdir storage/bdb/test/test069.tcl: mvdir storage/bdb/test/test070.tcl: mvdir storage/bdb/test/test071.tcl: mvdir storage/bdb/test/test072.tcl: mvdir storage/bdb/test/test073.tcl: mvdir storage/bdb/test/test074.tcl: mvdir storage/bdb/test/test075.tcl: mvdir storage/bdb/test/test076.tcl: mvdir storage/bdb/test/test077.tcl: mvdir storage/bdb/test/test078.tcl: mvdir storage/bdb/test/test079.tcl: mvdir storage/bdb/test/test080.tcl: mvdir storage/bdb/test/test081.tcl: mvdir storage/bdb/test/test082.tcl: mvdir storage/bdb/test/test083.tcl: mvdir storage/bdb/test/test084.tcl: mvdir storage/bdb/test/test085.tcl: mvdir storage/bdb/test/test086.tcl: mvdir storage/bdb/test/test087.tcl: mvdir storage/bdb/test/test088.tcl: mvdir storage/bdb/test/test089.tcl: mvdir storage/bdb/test/test090.tcl: mvdir storage/bdb/test/test091.tcl: mvdir storage/bdb/test/test092.tcl: mvdir storage/bdb/test/test093.tcl: mvdir storage/bdb/test/test094.tcl: mvdir storage/bdb/test/test095.tcl: mvdir storage/bdb/test/test096.tcl: mvdir storage/bdb/test/test097.tcl: mvdir storage/bdb/test/test098.tcl: mvdir storage/bdb/test/test099.tcl: mvdir storage/bdb/test/test100.tcl: mvdir storage/bdb/test/test101.tcl: mvdir storage/bdb/test/testparams.tcl: mvdir storage/bdb/test/testutils.tcl: mvdir storage/bdb/test/txn001.tcl: mvdir storage/bdb/test/txn002.tcl: mvdir storage/bdb/test/txn003.tcl: mvdir storage/bdb/test/txn004.tcl: mvdir storage/bdb/test/txn005.tcl: mvdir storage/bdb/test/txn006.tcl: mvdir storage/bdb/test/txn007.tcl: mvdir storage/bdb/test/txn008.tcl: mvdir storage/bdb/test/txn009.tcl: mvdir storage/bdb/test/txnscript.tcl: mvdir storage/bdb/test/update.tcl: mvdir storage/bdb/test/scr001/chk.code: mvdir storage/bdb/test/scr002/chk.def: mvdir storage/bdb/test/scr003/chk.define: mvdir storage/bdb/test/scr004/chk.javafiles: mvdir storage/bdb/test/scr005/chk.nl: mvdir storage/bdb/test/scr006/chk.offt: mvdir storage/bdb/test/scr007/chk.proto: mvdir storage/bdb/test/scr008/chk.pubdef: mvdir storage/bdb/test/scr009/chk.srcfiles: mvdir storage/bdb/test/scr010/chk.str: mvdir storage/bdb/test/scr010/spell.ok: mvdir storage/bdb/test/scr011/chk.tags: mvdir storage/bdb/test/scr012/chk.vx_code: mvdir storage/bdb/test/scr013/chk.stats: mvdir storage/bdb/test/scr014/chk.err: mvdir storage/bdb/test/scr015/README: mvdir storage/bdb/test/scr015/TestConstruct01.cpp: mvdir storage/bdb/test/scr015/TestConstruct01.testerr: mvdir storage/bdb/test/scr015/TestConstruct01.testout: mvdir storage/bdb/test/scr015/TestExceptInclude.cpp: mvdir storage/bdb/test/scr015/TestGetSetMethods.cpp: mvdir storage/bdb/test/scr015/TestKeyRange.cpp: mvdir storage/bdb/test/scr015/TestKeyRange.testin: mvdir storage/bdb/test/scr015/TestKeyRange.testout: mvdir storage/bdb/test/upgrade.tcl: mvdir storage/bdb/test/wordlist: mvdir storage/bdb/test/wrap.tcl: mvdir storage/bdb/test/scr015/TestLogc.cpp: mvdir storage/bdb/test/scr015/TestLogc.testout: mvdir storage/bdb/test/scr015/TestSimpleAccess.cpp: mvdir storage/bdb/test/scr015/TestSimpleAccess.testout: mvdir storage/bdb/test/scr015/TestTruncate.cpp: mvdir storage/bdb/test/scr015/TestTruncate.testout: mvdir storage/bdb/test/scr015/chk.cxxtests: mvdir storage/bdb/test/scr015/ignore: mvdir storage/bdb/test/scr015/testall: mvdir storage/bdb/test/scr015/testone: mvdir storage/bdb/test/scr016/CallbackTest.java: mvdir storage/bdb/test/scr016/CallbackTest.testout: mvdir storage/bdb/test/scr016/README: mvdir storage/bdb/test/scr016/TestAppendRecno.java: mvdir storage/bdb/test/scr016/TestAppendRecno.testout: mvdir storage/bdb/test/scr016/TestAssociate.java: mvdir storage/bdb/test/scr016/TestAssociate.testout: mvdir storage/bdb/test/scr016/TestClosedDb.java: mvdir storage/bdb/test/scr016/TestClosedDb.testout: mvdir storage/bdb/test/scr016/TestConstruct01.java: mvdir storage/bdb/test/scr016/TestConstruct01.testerr: mvdir storage/bdb/test/scr016/TestConstruct01.testout: mvdir storage/bdb/test/scr016/TestConstruct02.java: mvdir storage/bdb/test/scr016/TestConstruct02.testout: mvdir storage/bdb/test/scr016/TestDbtFlags.java: mvdir storage/bdb/test/scr016/TestDbtFlags.testerr: mvdir storage/bdb/test/scr016/TestDbtFlags.testout: mvdir storage/bdb/test/scr016/TestGetSetMethods.java: mvdir storage/bdb/test/scr016/TestKeyRange.java: mvdir storage/bdb/test/scr016/TestKeyRange.testout: mvdir storage/bdb/test/scr016/TestLockVec.java: mvdir storage/bdb/test/scr016/TestLockVec.testout: mvdir storage/bdb/test/scr016/TestLogc.java: mvdir storage/bdb/test/scr016/TestLogc.testout: mvdir storage/bdb/test/scr016/TestOpenEmpty.java: mvdir storage/bdb/test/scr016/TestOpenEmpty.testerr: mvdir storage/bdb/test/scr016/TestReplication.java: mvdir storage/bdb/test/scr016/TestRpcServer.java: mvdir storage/bdb/test/scr016/TestSameDbt.java: mvdir storage/bdb/test/scr016/TestSameDbt.testout: mvdir storage/bdb/test/scr016/TestSimpleAccess.java: mvdir storage/bdb/test/scr016/TestSimpleAccess.testout: mvdir storage/bdb/test/scr016/TestStat.java: mvdir storage/bdb/test/scr016/TestStat.testout: mvdir storage/bdb/test/scr016/TestTruncate.java: mvdir storage/bdb/test/scr016/TestTruncate.testout: mvdir storage/bdb/test/scr016/TestUtil.java: mvdir storage/bdb/test/scr016/TestXAServlet.java: mvdir storage/bdb/test/scr016/chk.javatests: mvdir storage/bdb/test/scr016/ignore: mvdir storage/bdb/test/scr016/testall: mvdir storage/bdb/test/scr016/testone: mvdir storage/bdb/test/scr017/O.BH: mvdir storage/bdb/test/scr017/O.R: mvdir storage/bdb/test/scr017/chk.db185: mvdir storage/bdb/test/scr017/t.c: mvdir storage/bdb/test/scr018/chk.comma: mvdir storage/bdb/test/scr018/t.c: mvdir storage/bdb/test/scr019/chk.include: mvdir storage/bdb/test/scr020/chk.inc: mvdir storage/bdb/test/scr021/chk.flags: mvdir storage/bdb/test/scr022/chk.rr: mvdir storage/bdb/txn/txn.c: mvdir storage/bdb/txn/txn.src: mvdir storage/bdb/txn/txn_method.c: mvdir storage/bdb/txn/txn_rec.c: mvdir storage/bdb/txn/txn_recover.c: mvdir storage/bdb/txn/txn_region.c: mvdir storage/bdb/txn/txn_stat.c: mvdir storage/bdb/txn/txn_util.c: mvdir storage/bdb/xa/xa.c: mvdir storage/bdb/xa/xa_db.c: mvdir storage/bdb/xa/xa_map.c: mvdir
Diffstat (limited to 'bdb/test')
-rw-r--r--bdb/test/archive.tcl230
-rw-r--r--bdb/test/bigfile001.tcl85
-rw-r--r--bdb/test/bigfile002.tcl45
-rw-r--r--bdb/test/byteorder.tcl34
-rw-r--r--bdb/test/conscript.tcl123
-rw-r--r--bdb/test/dbm.tcl128
-rw-r--r--bdb/test/dbscript.tcl357
-rw-r--r--bdb/test/ddoyscript.tcl172
-rw-r--r--bdb/test/ddscript.tcl44
-rw-r--r--bdb/test/dead001.tcl88
-rw-r--r--bdb/test/dead002.tcl75
-rw-r--r--bdb/test/dead003.tcl98
-rw-r--r--bdb/test/dead004.tcl108
-rw-r--r--bdb/test/dead005.tcl87
-rw-r--r--bdb/test/dead006.tcl16
-rw-r--r--bdb/test/dead007.tcl34
-rw-r--r--bdb/test/env001.tcl154
-rw-r--r--bdb/test/env002.tcl156
-rw-r--r--bdb/test/env003.tcl149
-rw-r--r--bdb/test/env004.tcl103
-rw-r--r--bdb/test/env005.tcl53
-rw-r--r--bdb/test/env006.tcl42
-rw-r--r--bdb/test/env007.tcl223
-rw-r--r--bdb/test/env008.tcl73
-rw-r--r--bdb/test/env009.tcl57
-rw-r--r--bdb/test/env010.tcl49
-rw-r--r--bdb/test/env011.tcl39
-rw-r--r--bdb/test/hsearch.tcl51
-rw-r--r--bdb/test/join.tcl455
-rw-r--r--bdb/test/lock001.tcl122
-rw-r--r--bdb/test/lock002.tcl157
-rw-r--r--bdb/test/lock003.tcl99
-rw-r--r--bdb/test/lock004.tcl29
-rw-r--r--bdb/test/lock005.tcl177
-rw-r--r--bdb/test/lockscript.tcl117
-rw-r--r--bdb/test/log001.tcl120
-rw-r--r--bdb/test/log002.tcl85
-rw-r--r--bdb/test/log003.tcl118
-rw-r--r--bdb/test/log004.tcl46
-rw-r--r--bdb/test/log005.tcl89
-rw-r--r--bdb/test/logtrack.tcl137
-rw-r--r--bdb/test/mdbscript.tcl384
-rw-r--r--bdb/test/memp001.tcl199
-rw-r--r--bdb/test/memp002.tcl62
-rw-r--r--bdb/test/memp003.tcl153
-rw-r--r--bdb/test/mpoolscript.tcl171
-rw-r--r--bdb/test/mutex001.tcl51
-rw-r--r--bdb/test/mutex002.tcl94
-rw-r--r--bdb/test/mutex003.tcl52
-rw-r--r--bdb/test/mutexscript.tcl91
-rw-r--r--bdb/test/ndbm.tcl144
-rw-r--r--bdb/test/parallel.tcl295
-rw-r--r--bdb/test/recd001.tcl242
-rw-r--r--bdb/test/recd002.tcl103
-rw-r--r--bdb/test/recd003.tcl119
-rw-r--r--bdb/test/recd004.tcl95
-rw-r--r--bdb/test/recd005.tcl230
-rw-r--r--bdb/test/recd006.tcl262
-rw-r--r--bdb/test/recd007.tcl886
-rw-r--r--bdb/test/recd008.tcl227
-rw-r--r--bdb/test/recd009.tcl180
-rw-r--r--bdb/test/recd010.tcl257
-rw-r--r--bdb/test/recd011.tcl116
-rw-r--r--bdb/test/recd012.tcl432
-rw-r--r--bdb/test/recd013.tcl287
-rw-r--r--bdb/test/recd014.tcl445
-rw-r--r--bdb/test/recd015.tcl160
-rw-r--r--bdb/test/recd016.tcl183
-rw-r--r--bdb/test/recd017.tcl151
-rw-r--r--bdb/test/recd018.tcl110
-rw-r--r--bdb/test/recd019.tcl121
-rw-r--r--bdb/test/recd020.tcl180
-rw-r--r--bdb/test/recd15scr.tcl74
-rw-r--r--bdb/test/recdscript.tcl37
-rw-r--r--bdb/test/rep001.tcl249
-rw-r--r--bdb/test/rep002.tcl278
-rw-r--r--bdb/test/rep003.tcl221
-rw-r--r--bdb/test/rep004.tcl198
-rw-r--r--bdb/test/rep005.tcl225
-rw-r--r--bdb/test/reputils.tcl659
-rw-r--r--bdb/test/rpc001.tcl449
-rw-r--r--bdb/test/rpc002.tcl143
-rw-r--r--bdb/test/rpc003.tcl166
-rw-r--r--bdb/test/rpc004.tcl76
-rw-r--r--bdb/test/rpc005.tcl137
-rw-r--r--bdb/test/rsrc001.tcl221
-rw-r--r--bdb/test/rsrc002.tcl66
-rw-r--r--bdb/test/rsrc003.tcl173
-rw-r--r--bdb/test/rsrc004.tcl52
-rw-r--r--bdb/test/scr001/chk.code37
-rw-r--r--bdb/test/scr002/chk.def64
-rw-r--r--bdb/test/scr003/chk.define77
-rw-r--r--bdb/test/scr004/chk.javafiles31
-rw-r--r--bdb/test/scr005/chk.nl112
-rw-r--r--bdb/test/scr006/chk.offt36
-rw-r--r--bdb/test/scr007/chk.proto45
-rw-r--r--bdb/test/scr008/chk.pubdef179
-rw-r--r--bdb/test/scr009/chk.srcfiles39
-rw-r--r--bdb/test/scr010/chk.str31
-rw-r--r--bdb/test/scr010/spell.ok825
-rw-r--r--bdb/test/scr011/chk.tags41
-rw-r--r--bdb/test/scr012/chk.vx_code68
-rw-r--r--bdb/test/scr013/chk.stats114
-rw-r--r--bdb/test/scr014/chk.err34
-rw-r--r--bdb/test/scr015/README36
-rw-r--r--bdb/test/scr015/TestConstruct01.cpp330
-rw-r--r--bdb/test/scr015/TestConstruct01.testerr4
-rw-r--r--bdb/test/scr015/TestConstruct01.testout27
-rw-r--r--bdb/test/scr015/TestExceptInclude.cpp27
-rw-r--r--bdb/test/scr015/TestGetSetMethods.cpp91
-rw-r--r--bdb/test/scr015/TestKeyRange.cpp171
-rw-r--r--bdb/test/scr015/TestKeyRange.testin8
-rw-r--r--bdb/test/scr015/TestKeyRange.testout19
-rw-r--r--bdb/test/scr015/TestLogc.cpp101
-rw-r--r--bdb/test/scr015/TestLogc.testout1
-rw-r--r--bdb/test/scr015/TestSimpleAccess.cpp67
-rw-r--r--bdb/test/scr015/TestSimpleAccess.testout3
-rw-r--r--bdb/test/scr015/TestTruncate.cpp84
-rw-r--r--bdb/test/scr015/TestTruncate.testout6
-rw-r--r--bdb/test/scr015/chk.cxxtests71
-rw-r--r--bdb/test/scr015/ignore4
-rw-r--r--bdb/test/scr015/testall32
-rw-r--r--bdb/test/scr015/testone122
-rw-r--r--bdb/test/scr016/CallbackTest.java83
-rw-r--r--bdb/test/scr016/CallbackTest.testout60
-rw-r--r--bdb/test/scr016/README37
-rw-r--r--bdb/test/scr016/TestAppendRecno.java258
-rw-r--r--bdb/test/scr016/TestAppendRecno.testout82
-rw-r--r--bdb/test/scr016/TestAssociate.java333
-rw-r--r--bdb/test/scr016/TestAssociate.testout30
-rw-r--r--bdb/test/scr016/TestClosedDb.java62
-rw-r--r--bdb/test/scr016/TestClosedDb.testout2
-rw-r--r--bdb/test/scr016/TestConstruct01.java474
-rw-r--r--bdb/test/scr016/TestConstruct01.testerr0
-rw-r--r--bdb/test/scr016/TestConstruct01.testout3
-rw-r--r--bdb/test/scr016/TestConstruct02.java326
-rw-r--r--bdb/test/scr016/TestConstruct02.testout3
-rw-r--r--bdb/test/scr016/TestDbtFlags.java241
-rw-r--r--bdb/test/scr016/TestDbtFlags.testerr54
-rw-r--r--bdb/test/scr016/TestDbtFlags.testout78
-rw-r--r--bdb/test/scr016/TestGetSetMethods.java99
-rw-r--r--bdb/test/scr016/TestKeyRange.java203
-rw-r--r--bdb/test/scr016/TestKeyRange.testout27
-rw-r--r--bdb/test/scr016/TestLockVec.java249
-rw-r--r--bdb/test/scr016/TestLockVec.testout8
-rw-r--r--bdb/test/scr016/TestLogc.java100
-rw-r--r--bdb/test/scr016/TestLogc.testout1
-rw-r--r--bdb/test/scr016/TestOpenEmpty.java189
-rw-r--r--bdb/test/scr016/TestOpenEmpty.testerr2
-rw-r--r--bdb/test/scr016/TestReplication.java289
-rw-r--r--bdb/test/scr016/TestRpcServer.java193
-rw-r--r--bdb/test/scr016/TestSameDbt.java56
-rw-r--r--bdb/test/scr016/TestSameDbt.testout2
-rw-r--r--bdb/test/scr016/TestSimpleAccess.java37
-rw-r--r--bdb/test/scr016/TestSimpleAccess.testout3
-rw-r--r--bdb/test/scr016/TestStat.java57
-rw-r--r--bdb/test/scr016/TestStat.testout11
-rw-r--r--bdb/test/scr016/TestTruncate.java87
-rw-r--r--bdb/test/scr016/TestTruncate.testout6
-rw-r--r--bdb/test/scr016/TestUtil.java57
-rw-r--r--bdb/test/scr016/TestXAServlet.java313
-rw-r--r--bdb/test/scr016/chk.javatests79
-rw-r--r--bdb/test/scr016/ignore22
-rw-r--r--bdb/test/scr016/testall32
-rw-r--r--bdb/test/scr016/testone122
-rw-r--r--bdb/test/scr017/O.BH196
-rw-r--r--bdb/test/scr017/O.R196
-rw-r--r--bdb/test/scr017/chk.db18526
-rw-r--r--bdb/test/scr017/t.c188
-rw-r--r--bdb/test/scr018/chk.comma30
-rw-r--r--bdb/test/scr018/t.c46
-rw-r--r--bdb/test/scr019/chk.include40
-rw-r--r--bdb/test/scr020/chk.inc43
-rw-r--r--bdb/test/scr021/chk.flags97
-rw-r--r--bdb/test/scr022/chk.rr22
-rw-r--r--bdb/test/sdb001.tcl156
-rw-r--r--bdb/test/sdb002.tcl221
-rw-r--r--bdb/test/sdb003.tcl179
-rw-r--r--bdb/test/sdb004.tcl241
-rw-r--r--bdb/test/sdb005.tcl146
-rw-r--r--bdb/test/sdb006.tcl169
-rw-r--r--bdb/test/sdb007.tcl132
-rw-r--r--bdb/test/sdb008.tcl121
-rw-r--r--bdb/test/sdb009.tcl108
-rw-r--r--bdb/test/sdb010.tcl166
-rw-r--r--bdb/test/sdb011.tcl143
-rw-r--r--bdb/test/sdb012.tcl428
-rw-r--r--bdb/test/sdbscript.tcl47
-rw-r--r--bdb/test/sdbtest001.tcl150
-rw-r--r--bdb/test/sdbtest002.tcl174
-rw-r--r--bdb/test/sdbutils.tcl197
-rw-r--r--bdb/test/sec001.tcl205
-rw-r--r--bdb/test/sec002.tcl143
-rw-r--r--bdb/test/shelltest.tcl88
-rw-r--r--bdb/test/si001.tcl116
-rw-r--r--bdb/test/si002.tcl167
-rw-r--r--bdb/test/si003.tcl142
-rw-r--r--bdb/test/si004.tcl194
-rw-r--r--bdb/test/si005.tcl179
-rw-r--r--bdb/test/si006.tcl129
-rw-r--r--bdb/test/sindex.tcl259
-rw-r--r--bdb/test/sysscript.tcl282
-rw-r--r--bdb/test/test.tcl1863
-rw-r--r--bdb/test/test001.tcl247
-rw-r--r--bdb/test/test002.tcl161
-rw-r--r--bdb/test/test003.tcl210
-rw-r--r--bdb/test/test004.tcl169
-rw-r--r--bdb/test/test005.tcl19
-rw-r--r--bdb/test/test006.tcl150
-rw-r--r--bdb/test/test007.tcl19
-rw-r--r--bdb/test/test008.tcl200
-rw-r--r--bdb/test/test009.tcl18
-rw-r--r--bdb/test/test010.tcl176
-rw-r--r--bdb/test/test011.tcl470
-rw-r--r--bdb/test/test012.tcl139
-rw-r--r--bdb/test/test013.tcl241
-rw-r--r--bdb/test/test014.tcl253
-rw-r--r--bdb/test/test015.tcl276
-rw-r--r--bdb/test/test016.tcl207
-rw-r--r--bdb/test/test017.tcl306
-rw-r--r--bdb/test/test018.tcl16
-rw-r--r--bdb/test/test019.tcl131
-rw-r--r--bdb/test/test020.tcl137
-rw-r--r--bdb/test/test021.tcl162
-rw-r--r--bdb/test/test022.tcl62
-rw-r--r--bdb/test/test023.tcl221
-rw-r--r--bdb/test/test024.tcl268
-rw-r--r--bdb/test/test025.tcl146
-rw-r--r--bdb/test/test026.tcl155
-rw-r--r--bdb/test/test027.tcl17
-rw-r--r--bdb/test/test028.tcl222
-rw-r--r--bdb/test/test029.tcl245
-rw-r--r--bdb/test/test030.tcl231
-rw-r--r--bdb/test/test031.tcl230
-rw-r--r--bdb/test/test032.tcl231
-rw-r--r--bdb/test/test033.tcl176
-rw-r--r--bdb/test/test034.tcl17
-rw-r--r--bdb/test/test035.tcl16
-rw-r--r--bdb/test/test036.tcl173
-rw-r--r--bdb/test/test037.tcl196
-rw-r--r--bdb/test/test038.tcl227
-rw-r--r--bdb/test/test039.tcl211
-rw-r--r--bdb/test/test040.tcl17
-rw-r--r--bdb/test/test041.tcl17
-rw-r--r--bdb/test/test042.tcl181
-rw-r--r--bdb/test/test043.tcl192
-rw-r--r--bdb/test/test044.tcl250
-rw-r--r--bdb/test/test045.tcl123
-rw-r--r--bdb/test/test046.tcl813
-rw-r--r--bdb/test/test047.tcl258
-rw-r--r--bdb/test/test048.tcl170
-rw-r--r--bdb/test/test049.tcl184
-rw-r--r--bdb/test/test050.tcl221
-rw-r--r--bdb/test/test051.tcl219
-rw-r--r--bdb/test/test052.tcl276
-rw-r--r--bdb/test/test053.tcl225
-rw-r--r--bdb/test/test054.tcl461
-rw-r--r--bdb/test/test055.tcl141
-rw-r--r--bdb/test/test056.tcl169
-rw-r--r--bdb/test/test057.tcl248
-rw-r--r--bdb/test/test058.tcl103
-rw-r--r--bdb/test/test059.tcl150
-rw-r--r--bdb/test/test060.tcl60
-rw-r--r--bdb/test/test061.tcl226
-rw-r--r--bdb/test/test062.tcl153
-rw-r--r--bdb/test/test063.tcl174
-rw-r--r--bdb/test/test064.tcl69
-rw-r--r--bdb/test/test065.tcl199
-rw-r--r--bdb/test/test066.tcl99
-rw-r--r--bdb/test/test067.tcl155
-rw-r--r--bdb/test/test068.tcl226
-rw-r--r--bdb/test/test069.tcl14
-rw-r--r--bdb/test/test070.tcl142
-rw-r--r--bdb/test/test071.tcl16
-rw-r--r--bdb/test/test072.tcl252
-rw-r--r--bdb/test/test073.tcl290
-rw-r--r--bdb/test/test074.tcl271
-rw-r--r--bdb/test/test075.tcl205
-rw-r--r--bdb/test/test076.tcl80
-rw-r--r--bdb/test/test077.tcl93
-rw-r--r--bdb/test/test078.tcl130
-rw-r--r--bdb/test/test079.tcl20
-rw-r--r--bdb/test/test080.tcl126
-rw-r--r--bdb/test/test081.tcl15
-rw-r--r--bdb/test/test082.tcl14
-rw-r--r--bdb/test/test083.tcl162
-rw-r--r--bdb/test/test084.tcl53
-rw-r--r--bdb/test/test085.tcl332
-rw-r--r--bdb/test/test086.tcl166
-rw-r--r--bdb/test/test087.tcl290
-rw-r--r--bdb/test/test088.tcl172
-rw-r--r--bdb/test/test089.tcl180
-rw-r--r--bdb/test/test090.tcl16
-rw-r--r--bdb/test/test091.tcl20
-rw-r--r--bdb/test/test092.tcl241
-rw-r--r--bdb/test/test093.tcl393
-rw-r--r--bdb/test/test094.tcl251
-rw-r--r--bdb/test/test095.tcl296
-rw-r--r--bdb/test/test096.tcl202
-rw-r--r--bdb/test/test097.tcl188
-rw-r--r--bdb/test/test098.tcl91
-rw-r--r--bdb/test/test099.tcl177
-rw-r--r--bdb/test/test100.tcl17
-rw-r--r--bdb/test/test101.tcl17
-rw-r--r--bdb/test/testparams.tcl194
-rw-r--r--bdb/test/testutils.tcl3209
-rw-r--r--bdb/test/txn001.tcl116
-rw-r--r--bdb/test/txn002.tcl91
-rw-r--r--bdb/test/txn003.tcl238
-rw-r--r--bdb/test/txn004.tcl62
-rw-r--r--bdb/test/txn005.tcl75
-rw-r--r--bdb/test/txn006.tcl47
-rw-r--r--bdb/test/txn007.tcl57
-rw-r--r--bdb/test/txn008.tcl32
-rw-r--r--bdb/test/txn009.tcl32
-rw-r--r--bdb/test/txnscript.tcl67
-rw-r--r--bdb/test/update.tcl93
-rw-r--r--bdb/test/upgrade.tcl294
-rw-r--r--bdb/test/wordlist10001
-rw-r--r--bdb/test/wrap.tcl71
320 files changed, 0 insertions, 61407 deletions
diff --git a/bdb/test/archive.tcl b/bdb/test/archive.tcl
deleted file mode 100644
index 9b5e764b2b4..00000000000
--- a/bdb/test/archive.tcl
+++ /dev/null
@@ -1,230 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: archive.tcl,v 11.20 2002/04/30 19:21:21 sue Exp $
-#
-# Options are:
-# -checkrec <checkpoint frequency"
-# -dir <dbhome directory>
-# -maxfilesize <maxsize of log file>
-proc archive { args } {
- global alphabet
- source ./include.tcl
-
- # Set defaults
- set maxbsize [expr 8 * 1024]
- set maxfile [expr 32 * 1024]
- set checkrec 500
- for { set i 0 } { $i < [llength $args] } {incr i} {
- switch -regexp -- [lindex $args $i] {
- -c.* { incr i; set checkrec [lindex $args $i] }
- -d.* { incr i; set testdir [lindex $args $i] }
- -m.* { incr i; set maxfile [lindex $args $i] }
- default {
- puts "FAIL:[timestamp] archive usage"
- puts "usage: archive -checkrec <checkpt freq> \
- -dir <directory> -maxfilesize <max size of log files>"
- return
- }
-
- }
- }
-
- # Clean out old log if it existed
- puts "Archive: Log archive test"
- puts "Unlinking log: error message OK"
- env_cleanup $testdir
-
- # Now run the various functionality tests
- set eflags "-create -txn -home $testdir \
- -log_buffer $maxbsize -log_max $maxfile"
- set dbenv [eval {berkdb_env} $eflags]
- error_check_bad dbenv $dbenv NULL
- error_check_good dbenv [is_substr $dbenv env] 1
-
- set logc [$dbenv log_cursor]
- error_check_good log_cursor [is_valid_logc $logc $dbenv] TRUE
-
- # The basic test structure here is that we write a lot of log
- # records (enough to fill up 100 log files; each log file it
- # small). We take periodic checkpoints. Between each pair
- # of checkpoints, we refer to 2 files, overlapping them each
- # checkpoint. We also start transactions and let them overlap
- # checkpoints as well. The pattern that we try to create is:
- # ---- write log records----|||||--- write log records ---
- # -T1 T2 T3 --- D1 D2 ------CHECK--- CT1 --- D2 D3 CD1 ----CHECK
- # where TX is begin transaction, CTx is commit transaction, DX is
- # open data file and CDx is close datafile.
-
- set baserec "1:$alphabet:2:$alphabet:3:$alphabet:4:$alphabet"
- puts "\tArchive.a: Writing log records; checkpoint every $checkrec records"
- set nrecs $maxfile
- set rec 0:$baserec
-
- # Begin transaction and write a log record
- set t1 [$dbenv txn]
- error_check_good t1:txn_begin [is_substr $t1 "txn"] 1
-
- set l1 [$dbenv log_put $rec]
- error_check_bad l1:log_put [llength $l1] 0
-
- set lsnlist [list [lindex $l1 0]]
-
- set t2 [$dbenv txn]
- error_check_good t2:txn_begin [is_substr $t2 "txn"] 1
-
- set l1 [$dbenv log_put $rec]
- lappend lsnlist [lindex $l1 0]
-
- set t3 [$dbenv txn]
- set l1 [$dbenv log_put $rec]
- lappend lsnlist [lindex $l1 0]
-
- set txnlist [list $t1 $t2 $t3]
- set db1 [eval {berkdb_open} "-create -mode 0644 -hash -env $dbenv ar1"]
- set db2 [eval {berkdb_open} "-create -mode 0644 -btree -env $dbenv ar2"]
- set dbcount 3
- set dblist [list $db1 $db2]
-
- for { set i 1 } { $i <= $nrecs } { incr i } {
- set rec $i:$baserec
- set lsn [$dbenv log_put $rec]
- error_check_bad log_put [llength $lsn] 0
- if { [expr $i % $checkrec] == 0 } {
- # Take a checkpoint
- $dbenv txn_checkpoint
- set ckp_file [lindex [lindex [$logc get -last] 0] 0]
- catch { archive_command -h $testdir -a } res_log_full
- if { [string first db_archive $res_log_full] == 0 } {
- set res_log_full ""
- }
- catch { archive_command -h $testdir } res_log
- if { [string first db_archive $res_log] == 0 } {
- set res_log ""
- }
- catch { archive_command -h $testdir -l } res_alllog
- catch { archive_command -h $testdir -a -s } \
- res_data_full
- catch { archive_command -h $testdir -s } res_data
- error_check_good nlogfiles [llength $res_alllog] \
- [lindex [lindex [$logc get -last] 0] 0]
- error_check_good logs_match [llength $res_log_full] \
- [llength $res_log]
- error_check_good data_match [llength $res_data_full] \
- [llength $res_data]
-
- # Check right number of log files
- error_check_good nlogs [llength $res_log] \
- [expr [lindex $lsnlist 0] - 1]
-
- # Check that the relative names are a subset of the
- # full names
- set n 0
- foreach x $res_log {
- error_check_bad log_name_match:$res_log \
- [string first $x \
- [lindex $res_log_full $n]] -1
- incr n
- }
-
- set n 0
- foreach x $res_data {
- error_check_bad log_name_match:$res_data \
- [string first $x \
- [lindex $res_data_full $n]] -1
- incr n
- }
-
- # Begin/commit any transactions
- set t [lindex $txnlist 0]
- if { [string length $t] != 0 } {
- error_check_good txn_commit:$t [$t commit] 0
- set txnlist [lrange $txnlist 1 end]
- }
- set lsnlist [lrange $lsnlist 1 end]
-
- if { [llength $txnlist] == 0 } {
- set t1 [$dbenv txn]
- error_check_bad tx_begin $t1 NULL
- error_check_good \
- tx_begin [is_substr $t1 $dbenv] 1
- set l1 [lindex [$dbenv log_put $rec] 0]
- lappend lsnlist [min $l1 $ckp_file]
-
- set t2 [$dbenv txn]
- error_check_bad tx_begin $t2 NULL
- error_check_good \
- tx_begin [is_substr $t2 $dbenv] 1
- set l1 [lindex [$dbenv log_put $rec] 0]
- lappend lsnlist [min $l1 $ckp_file]
-
- set t3 [$dbenv txn]
- error_check_bad tx_begin $t3 NULL
- error_check_good \
- tx_begin [is_substr $t3 $dbenv] 1
- set l1 [lindex [$dbenv log_put $rec] 0]
- lappend lsnlist [min $l1 $ckp_file]
-
- set txnlist [list $t1 $t2 $t3]
- }
-
- # Open/close some DB files
- if { [expr $dbcount % 2] == 0 } {
- set type "-hash"
- } else {
- set type "-btree"
- }
- set db [eval {berkdb_open} \
- "-create -mode 0644 $type -env $dbenv ar$dbcount"]
- error_check_bad db_open:$dbcount $db NULL
- error_check_good db_open:$dbcount [is_substr $db db] 1
- incr dbcount
-
- lappend dblist $db
- set db [lindex $dblist 0]
- error_check_good db_close:$db [$db close] 0
- set dblist [lrange $dblist 1 end]
-
- }
- }
- # Commit any transactions still running.
- puts "\tArchive.b: Commit any transactions still running."
- foreach t $txnlist {
- error_check_good txn_commit:$t [$t commit] 0
- }
-
- # Close any files that are still open.
- puts "\tArchive.c: Close open files."
- foreach d $dblist {
- error_check_good db_close:$db [$d close] 0
- }
-
- # Close and unlink the file
- error_check_good log_cursor_close [$logc close] 0
- reset_env $dbenv
-}
-
-proc archive_command { args } {
- source ./include.tcl
-
- # Catch a list of files output by db_archive.
- catch { eval exec $util_path/db_archive $args } output
-
- if { $is_windows_test == 1 || 1 } {
- # On Windows, convert all filenames to use forward slashes.
- regsub -all {[\\]} $output / output
- }
-
- # Output the [possibly-transformed] list.
- return $output
-}
-
-proc min { a b } {
- if {$a < $b} {
- return $a
- } else {
- return $b
- }
-}
diff --git a/bdb/test/bigfile001.tcl b/bdb/test/bigfile001.tcl
deleted file mode 100644
index 78dcd940f5e..00000000000
--- a/bdb/test/bigfile001.tcl
+++ /dev/null
@@ -1,85 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: bigfile001.tcl,v 11.7 2002/08/10 13:39:26 bostic Exp $
-#
-# TEST bigfile001
-# TEST Create a database greater than 4 GB in size. Close, verify.
-# TEST Grow the database somewhat. Close, reverify. Lather, rinse,
-# TEST repeat. Since it will not work on all systems, this test is
-# TEST not run by default.
-proc bigfile001 { method \
- { itemsize 4096 } { nitems 1048576 } { growby 5000 } { growtms 2 } args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Bigfile: $method ($args) $nitems * $itemsize bytes of data"
-
- env_cleanup $testdir
-
- # Create the database. Use 64K pages; we want a good fill
- # factor, and page size doesn't matter much. Use a 50MB
- # cache; that should be manageable, and will help
- # performance.
- set dbname $testdir/big.db
-
- set db [eval {berkdb_open -create} {-pagesize 65536 \
- -cachesize {0 50000000 0}} $omethod $args $dbname]
- error_check_good db_open [is_valid_db $db] TRUE
-
- puts -nonewline "\tBigfile.a: Creating database...0%..."
- flush stdout
-
- set data [string repeat z $itemsize]
-
- set more_than_ten_already 0
- for { set i 0 } { $i < $nitems } { incr i } {
- set key key[format %08u $i]
-
- error_check_good db_put($i) [$db put $key $data] 0
-
- if { $i % 5000 == 0 } {
- set pct [expr 100 * $i / $nitems]
- puts -nonewline "\b\b\b\b\b"
- if { $pct >= 10 } {
- if { $more_than_ten_already } {
- puts -nonewline "\b"
- } else {
- set more_than_ten_already 1
- }
- }
-
- puts -nonewline "$pct%..."
- flush stdout
- }
- }
- puts "\b\b\b\b\b\b100%..."
- error_check_good db_close [$db close] 0
-
- puts "\tBigfile.b: Verifying database..."
- error_check_good verify \
- [verify_dir $testdir "\t\t" 0 0 1 50000000] 0
-
- puts "\tBigfile.c: Grow database $growtms times by $growby items"
-
- for { set j 0 } { $j < $growtms } { incr j } {
- set db [eval {berkdb_open} {-cachesize {0 50000000 0}} $dbname]
- error_check_good db_open [is_valid_db $db] TRUE
- puts -nonewline "\t\tBigfile.c.1: Adding $growby items..."
- flush stdout
- for { set i 0 } { $i < $growby } { incr i } {
- set key key[format %08u $i].$j
- error_check_good db_put($j.$i) [$db put $key $data] 0
- }
- error_check_good db_close [$db close] 0
- puts "done."
-
- puts "\t\tBigfile.c.2: Verifying database..."
- error_check_good verify($j) \
- [verify_dir $testdir "\t\t\t" 0 0 1 50000000] 0
- }
-}
diff --git a/bdb/test/bigfile002.tcl b/bdb/test/bigfile002.tcl
deleted file mode 100644
index f3e6defeaba..00000000000
--- a/bdb/test/bigfile002.tcl
+++ /dev/null
@@ -1,45 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: bigfile002.tcl,v 11.7 2002/08/10 13:39:26 bostic Exp $
-#
-# TEST bigfile002
-# TEST This one should be faster and not require so much disk space,
-# TEST although it doesn't test as extensively. Create an mpool file
-# TEST with 1K pages. Dirty page 6000000. Sync.
-proc bigfile002 { args } {
- source ./include.tcl
-
- puts -nonewline \
- "Bigfile002: Creating large, sparse file through mpool..."
- flush stdout
-
- env_cleanup $testdir
-
- # Create env.
- set env [berkdb_env -create -home $testdir]
- error_check_good valid_env [is_valid_env $env] TRUE
-
- # Create the file.
- set name big002.file
- set file [$env mpool -create -pagesize 1024 $name]
-
- # Dirty page 6000000
- set pg [$file get -create 6000000]
- error_check_good pg_init [$pg init A] 0
- error_check_good pg_set [$pg is_setto A] 1
-
- # Put page back.
- error_check_good pg_put [$pg put -dirty] 0
-
- # Fsync.
- error_check_good fsync [$file fsync] 0
-
- puts "succeeded."
-
- # Close.
- error_check_good fclose [$file close] 0
- error_check_good env_close [$env close] 0
-}
diff --git a/bdb/test/byteorder.tcl b/bdb/test/byteorder.tcl
deleted file mode 100644
index 823ca46270d..00000000000
--- a/bdb/test/byteorder.tcl
+++ /dev/null
@@ -1,34 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: byteorder.tcl,v 11.12 2002/07/29 18:09:25 sue Exp $
-#
-# Byte Order Test
-# Use existing tests and run with both byte orders.
-proc byteorder { method {nentries 1000} } {
- source ./include.tcl
- puts "Byteorder: $method $nentries"
-
- eval {test001 $method $nentries 0 "01" 0 -lorder 1234}
- eval {verify_dir $testdir}
- eval {test001 $method $nentries 0 "01" 0 -lorder 4321}
- eval {verify_dir $testdir}
- eval {test003 $method -lorder 1234}
- eval {verify_dir $testdir}
- eval {test003 $method -lorder 4321}
- eval {verify_dir $testdir}
- eval {test010 $method $nentries 5 10 -lorder 1234}
- eval {verify_dir $testdir}
- eval {test010 $method $nentries 5 10 -lorder 4321}
- eval {verify_dir $testdir}
- eval {test011 $method $nentries 5 11 -lorder 1234}
- eval {verify_dir $testdir}
- eval {test011 $method $nentries 5 11 -lorder 4321}
- eval {verify_dir $testdir}
- eval {test018 $method $nentries -lorder 1234}
- eval {verify_dir $testdir}
- eval {test018 $method $nentries -lorder 4321}
- eval {verify_dir $testdir}
-}
diff --git a/bdb/test/conscript.tcl b/bdb/test/conscript.tcl
deleted file mode 100644
index fd12c6e51a0..00000000000
--- a/bdb/test/conscript.tcl
+++ /dev/null
@@ -1,123 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: conscript.tcl,v 11.17 2002/03/22 21:43:06 krinsky Exp $
-#
-# Script for DB_CONSUME test (test070.tcl).
-# Usage: conscript dir file runtype nitems outputfile tnum args
-# dir: DBHOME directory
-# file: db file on which to operate
-# runtype: PRODUCE or CONSUME--which am I?
-# nitems: number of items to put or get
-# outputfile: where to log consumer results
-# tnum: test number
-
-proc consumescript_produce { db_cmd nitems tnum args } {
- source ./include.tcl
- global mydata
-
- set pid [pid]
- puts "\tTest0$tnum: Producer $pid starting, producing $nitems items."
-
- set db [eval $db_cmd]
- error_check_good db_open:$pid [is_valid_db $db] TRUE
-
- set oret -1
- set ret 0
- for { set ndx 0 } { $ndx < $nitems } { incr ndx } {
- set oret $ret
- if { 0xffffffff > 0 && $oret > 0x7fffffff } {
- incr oret [expr 0 - 0x100000000]
- }
- set ret [$db put -append [chop_data q $mydata]]
- error_check_good db_put \
- [expr $ret > 0 ? $oret < $ret : \
- $oret < 0 ? $oret < $ret : $oret > $ret] 1
-
- }
-
- set ret [catch {$db close} res]
- error_check_good db_close:$pid $ret 0
- puts "\t\tTest0$tnum: Producer $pid finished."
-}
-
-proc consumescript_consume { db_cmd nitems tnum outputfile mode args } {
- source ./include.tcl
- global mydata
- set pid [pid]
- puts "\tTest0$tnum: Consumer $pid starting, seeking $nitems items."
-
- set db [eval $db_cmd]
- error_check_good db_open:$pid [is_valid_db $db] TRUE
-
- set oid [open $outputfile w]
-
- for { set ndx 0 } { $ndx < $nitems } { } {
- set ret [$db get $mode]
- if { [llength $ret] > 0 } {
- error_check_good correct_data:$pid \
- [lindex [lindex $ret 0] 1] [pad_data q $mydata]
- set rno [lindex [lindex $ret 0] 0]
- puts $oid $rno
- incr ndx
- } else {
- # No data to consume; wait.
- }
- }
-
- error_check_good output_close:$pid [close $oid] ""
-
- set ret [catch {$db close} res]
- error_check_good db_close:$pid $ret 0
- puts "\t\tTest0$tnum: Consumer $pid finished."
-}
-
-source ./include.tcl
-source $test_path/test.tcl
-
-# Verify usage
-if { $argc < 6 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-set usage "conscript.tcl dir file runtype nitems outputfile tnum"
-
-# Initialize arguments
-set dir [lindex $argv 0]
-set file [lindex $argv 1]
-set runtype [lindex $argv 2]
-set nitems [lindex $argv 3]
-set outputfile [lindex $argv 4]
-set tnum [lindex $argv 5]
-# args is the string "{ -len 20 -pad 0}", so we need to extract the
-# " -len 20 -pad 0" part.
-set args [lindex [lrange $argv 6 end] 0]
-
-set mydata "consumer data"
-
-# Open env
-set dbenv [berkdb_env -home $dir ]
-error_check_good db_env_create [is_valid_env $dbenv] TRUE
-
-# Figure out db opening command.
-set db_cmd [concat {berkdb_open -create -mode 0644 -queue -env}\
- $dbenv $args $file]
-
-# Invoke consumescript_produce or consumescript_consume based on $runtype
-if { $runtype == "PRODUCE" } {
- # Producers have nothing to log; make sure outputfile is null.
- error_check_good no_producer_outputfile $outputfile ""
- consumescript_produce $db_cmd $nitems $tnum $args
-} elseif { $runtype == "CONSUME" } {
- consumescript_consume $db_cmd $nitems $tnum $outputfile -consume $args
-} elseif { $runtype == "WAIT" } {
- consumescript_consume $db_cmd $nitems $tnum $outputfile -consume_wait \
- $args
-} else {
- error_check_good bad_args $runtype "either PRODUCE, CONSUME or WAIT"
-}
-error_check_good env_close [$dbenv close] 0
-exit
diff --git a/bdb/test/dbm.tcl b/bdb/test/dbm.tcl
deleted file mode 100644
index a392c7a9f3a..00000000000
--- a/bdb/test/dbm.tcl
+++ /dev/null
@@ -1,128 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dbm.tcl,v 11.15 2002/01/11 15:53:19 bostic Exp $
-#
-# TEST dbm
-# TEST Historic DBM interface test. Use the first 1000 entries from the
-# TEST dictionary. Insert each with self as key and data; retrieve each.
-# TEST After all are entered, retrieve all; compare output to original.
-# TEST Then reopen the file, re-retrieve everything. Finally, delete
-# TEST everything.
-proc dbm { { nentries 1000 } } {
- source ./include.tcl
-
- puts "DBM interfaces test: $nentries"
-
- # Create the database and open the dictionary
- set testfile $testdir/dbmtest
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir NULL
-
- error_check_good dbminit [berkdb dbminit $testfile] 0
- set did [open $dict]
-
- set flags ""
- set txn ""
- set count 0
- set skippednullkey 0
-
- puts "\tDBM.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- # DBM can't handle zero-length keys
- if { [string length $str] == 0 } {
- set skippednullkey 1
- continue
- }
-
- set ret [berkdb store $str $str]
- error_check_good dbm_store $ret 0
-
- set d [berkdb fetch $str]
- error_check_good dbm_fetch $d $str
- incr count
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tDBM.b: dump file"
- set oid [open $t1 w]
- for { set key [berkdb firstkey] } { $key != -1 } {\
- set key [berkdb nextkey $key] } {
- puts $oid $key
- set d [berkdb fetch $key]
- error_check_good dbm_refetch $d $key
- }
-
- # If we had to skip a zero-length key, juggle things to cover up
- # this fact in the dump.
- if { $skippednullkey == 1 } {
- puts $oid ""
- incr nentries 1
- }
-
- close $oid
-
- # Now compare the keys to see if they match the dictionary (or ints)
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
-
- error_check_good DBM:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tDBM.c: close, open, and dump file"
-
- # Now, reopen the file and run the last test again.
- error_check_good dbminit2 [berkdb dbminit $testfile] 0
- set oid [open $t1 w]
-
- for { set key [berkdb firstkey] } { $key != -1 } {\
- set key [berkdb nextkey $key] } {
- puts $oid $key
- set d [berkdb fetch $key]
- error_check_good dbm_refetch $d $key
- }
- if { $skippednullkey == 1 } {
- puts $oid ""
- }
- close $oid
-
- # Now compare the keys to see if they match the dictionary (or ints)
- filesort $t1 $t3
-
- error_check_good DBM:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-
- # Now, reopen the file and delete each entry
- puts "\tDBM.d: sequential scan and delete"
-
- error_check_good dbminit3 [berkdb dbminit $testfile] 0
- set oid [open $t1 w]
-
- for { set key [berkdb firstkey] } { $key != -1 } {\
- set key [berkdb nextkey $key] } {
- puts $oid $key
- set ret [berkdb delete $key]
- error_check_good dbm_delete $ret 0
- }
- if { $skippednullkey == 1 } {
- puts $oid ""
- }
- close $oid
-
- # Now compare the keys to see if they match the dictionary (or ints)
- filesort $t1 $t3
-
- error_check_good DBM:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-
- error_check_good "dbm_close" [berkdb dbmclose] 0
-}
diff --git a/bdb/test/dbscript.tcl b/bdb/test/dbscript.tcl
deleted file mode 100644
index 5decc493e9e..00000000000
--- a/bdb/test/dbscript.tcl
+++ /dev/null
@@ -1,357 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dbscript.tcl,v 11.14 2002/04/01 16:28:16 bostic Exp $
-#
-# Random db tester.
-# Usage: dbscript file numops min_del max_add key_avg data_avgdups
-# method: method (we pass this in so that fixed-length records work)
-# file: db file on which to operate
-# numops: number of operations to do
-# ncurs: number of cursors
-# min_del: minimum number of keys before you disable deletes.
-# max_add: maximum number of keys before you disable adds.
-# key_avg: average key size
-# data_avg: average data size
-# dups: 1 indicates dups allowed, 0 indicates no dups
-# errpct: What percent of operations should generate errors
-# seed: Random number generator seed (-1 means use pid)
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage "dbscript file numops ncurs min_del max_add key_avg data_avg dups errpcnt"
-
-# Verify usage
-if { $argc != 10 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set method [lindex $argv 0]
-set file [lindex $argv 1]
-set numops [ lindex $argv 2 ]
-set ncurs [ lindex $argv 3 ]
-set min_del [ lindex $argv 4 ]
-set max_add [ lindex $argv 5 ]
-set key_avg [ lindex $argv 6 ]
-set data_avg [ lindex $argv 7 ]
-set dups [ lindex $argv 8 ]
-set errpct [ lindex $argv 9 ]
-
-berkdb srand $rand_init
-
-puts "Beginning execution for [pid]"
-puts "$file database"
-puts "$numops Operations"
-puts "$ncurs cursors"
-puts "$min_del keys before deletes allowed"
-puts "$max_add or fewer keys to add"
-puts "$key_avg average key length"
-puts "$data_avg average data length"
-if { $dups != 1 } {
- puts "No dups"
-} else {
- puts "Dups allowed"
-}
-puts "$errpct % Errors"
-
-flush stdout
-
-set db [berkdb_open $file]
-set cerr [catch {error_check_good dbopen [is_substr $db db] 1} cret]
-if {$cerr != 0} {
- puts $cret
- return
-}
-# set method [$db get_type]
-set record_based [is_record_based $method]
-
-# Initialize globals including data
-global nkeys
-global l_keys
-global a_keys
-
-set nkeys [db_init $db 1]
-puts "Initial number of keys: $nkeys"
-
-set pflags ""
-set gflags ""
-set txn ""
-
-# Open the cursors
-set curslist {}
-for { set i 0 } { $i < $ncurs } { incr i } {
- set dbc [$db cursor]
- set cerr [catch {error_check_good dbopen [is_substr $dbc $db.c] 1} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- set cerr [catch {error_check_bad cursor_create $dbc NULL} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- lappend curslist $dbc
-
-}
-
-# On each iteration we're going to generate random keys and
-# data. We'll select either a get/put/delete operation unless
-# we have fewer than min_del keys in which case, delete is not
-# an option or more than max_add in which case, add is not
-# an option. The tcl global arrays a_keys and l_keys keep track
-# of key-data pairs indexed by key and a list of keys, accessed
-# by integer.
-set adds 0
-set puts 0
-set gets 0
-set dels 0
-set bad_adds 0
-set bad_puts 0
-set bad_gets 0
-set bad_dels 0
-
-for { set iter 0 } { $iter < $numops } { incr iter } {
- set op [pick_op $min_del $max_add $nkeys]
- set err [is_err $errpct]
-
- # The op0's indicate that there aren't any duplicates, so we
- # exercise regular operations. If dups is 1, then we'll use
- # cursor ops.
- switch $op$dups$err {
- add00 {
- incr adds
-
- set k [random_data $key_avg 1 a_keys $record_based]
- set data [random_data $data_avg 0 0]
- set data [chop_data $method $data]
- set ret [eval {$db put} $txn $pflags \
- {-nooverwrite $k $data}]
- set cerr [catch {error_check_good put $ret 0} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- newpair $k [pad_data $method $data]
- }
- add01 {
- incr bad_adds
- set k [random_key]
- set data [random_data $data_avg 0 0]
- set data [chop_data $method $data]
- set ret [eval {$db put} $txn $pflags \
- {-nooverwrite $k $data}]
- set cerr [catch {error_check_good put $ret 0} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- # Error case so no change to data state
- }
- add10 {
- incr adds
- set dbcinfo [random_cursor $curslist]
- set dbc [lindex $dbcinfo 0]
- if { [berkdb random_int 1 2] == 1 } {
- # Add a new key
- set k [random_data $key_avg 1 a_keys \
- $record_based]
- set data [random_data $data_avg 0 0]
- set data [chop_data $method $data]
- set ret [eval {$dbc put} $txn \
- {-keyfirst $k $data}]
- newpair $k [pad_data $method $data]
- } else {
- # Add a new duplicate
- set dbc [lindex $dbcinfo 0]
- set k [lindex $dbcinfo 1]
- set data [random_data $data_avg 0 0]
-
- set op [pick_cursput]
- set data [chop_data $method $data]
- set ret [eval {$dbc put} $txn {$op $k $data}]
- adddup $k [lindex $dbcinfo 2] $data
- }
- }
- add11 {
- # TODO
- incr bad_adds
- set ret 1
- }
- put00 {
- incr puts
- set k [random_key]
- set data [random_data $data_avg 0 0]
- set data [chop_data $method $data]
- set ret [eval {$db put} $txn {$k $data}]
- changepair $k [pad_data $method $data]
- }
- put01 {
- incr bad_puts
- set k [random_key]
- set data [random_data $data_avg 0 0]
- set data [chop_data $method $data]
- set ret [eval {$db put} $txn $pflags \
- {-nooverwrite $k $data}]
- set cerr [catch {error_check_good put $ret 0} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- # Error case so no change to data state
- }
- put10 {
- incr puts
- set dbcinfo [random_cursor $curslist]
- set dbc [lindex $dbcinfo 0]
- set k [lindex $dbcinfo 1]
- set data [random_data $data_avg 0 0]
- set data [chop_data $method $data]
-
- set ret [eval {$dbc put} $txn {-current $data}]
- changedup $k [lindex $dbcinfo 2] $data
- }
- put11 {
- incr bad_puts
- set k [random_key]
- set data [random_data $data_avg 0 0]
- set data [chop_data $method $data]
- set dbc [$db cursor]
- set ret [eval {$dbc put} $txn {-current $data}]
- set cerr [catch {error_check_good curs_close \
- [$dbc close] 0} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- # Error case so no change to data state
- }
- get00 {
- incr gets
- set k [random_key]
- set val [eval {$db get} $txn {$k}]
- set data [pad_data $method [lindex [lindex $val 0] 1]]
- if { $data == $a_keys($k) } {
- set ret 0
- } else {
- set ret "FAIL: Error got |$data| expected |$a_keys($k)|"
- }
- # Get command requires no state change
- }
- get01 {
- incr bad_gets
- set k [random_data $key_avg 1 a_keys $record_based]
- set ret [eval {$db get} $txn {$k}]
- # Error case so no change to data state
- }
- get10 {
- incr gets
- set dbcinfo [random_cursor $curslist]
- if { [llength $dbcinfo] == 3 } {
- set ret 0
- else
- set ret 0
- }
- # Get command requires no state change
- }
- get11 {
- incr bad_gets
- set k [random_key]
- set dbc [$db cursor]
- if { [berkdb random_int 1 2] == 1 } {
- set dir -next
- } else {
- set dir -prev
- }
- set ret [eval {$dbc get} $txn {-next $k}]
- set cerr [catch {error_check_good curs_close \
- [$dbc close] 0} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- # Error and get case so no change to data state
- }
- del00 {
- incr dels
- set k [random_key]
- set ret [eval {$db del} $txn {$k}]
- rempair $k
- }
- del01 {
- incr bad_dels
- set k [random_data $key_avg 1 a_keys $record_based]
- set ret [eval {$db del} $txn {$k}]
- # Error case so no change to data state
- }
- del10 {
- incr dels
- set dbcinfo [random_cursor $curslist]
- set dbc [lindex $dbcinfo 0]
- set ret [eval {$dbc del} $txn]
- remdup [lindex dbcinfo 1] [lindex dbcinfo 2]
- }
- del11 {
- incr bad_dels
- set c [$db cursor]
- set ret [eval {$c del} $txn]
- set cerr [catch {error_check_good curs_close \
- [$c close] 0} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- # Error case so no change to data state
- }
- }
- if { $err == 1 } {
- # Verify failure.
- set cerr [catch {error_check_good $op$dups$err:$k \
- [is_substr Error $ret] 1} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- } else {
- # Verify success
- set cerr [catch {error_check_good $op$dups$err:$k $ret 0} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
- }
-
- flush stdout
-}
-
-# Close cursors and file
-foreach i $curslist {
- set r [$i close]
- set cerr [catch {error_check_good cursor_close:$i $r 0} cret]
- if {$cerr != 0} {
- puts $cret
- return
- }
-}
-
-set r [$db close]
-set cerr [catch {error_check_good db_close:$db $r 0} cret]
-if {$cerr != 0} {
- puts $cret
- return
-}
-
-puts "[timestamp] [pid] Complete"
-puts "Successful ops: $adds adds $gets gets $puts puts $dels dels"
-puts "Error ops: $bad_adds adds $bad_gets gets $bad_puts puts $bad_dels dels"
-flush stdout
-
-filecheck $file $txn
-
-exit
diff --git a/bdb/test/ddoyscript.tcl b/bdb/test/ddoyscript.tcl
deleted file mode 100644
index 5478a1a98e0..00000000000
--- a/bdb/test/ddoyscript.tcl
+++ /dev/null
@@ -1,172 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: ddoyscript.tcl,v 11.6 2002/02/20 16:35:18 sandstro Exp $
-#
-# Deadlock detector script tester.
-# Usage: ddoyscript dir lockerid numprocs
-# dir: DBHOME directory
-# lockerid: Lock id for this locker
-# numprocs: Total number of processes running
-# myid: id of this process --
-# the order that the processes are created is the same
-# in which their lockerid's were allocated so we know
-# that there is a locker age relationship that is isomorphic
-# with the order releationship of myid's.
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage "ddoyscript dir lockerid numprocs oldoryoung"
-
-# Verify usage
-if { $argc != 5 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set dir [lindex $argv 0]
-set lockerid [ lindex $argv 1 ]
-set numprocs [ lindex $argv 2 ]
-set old_or_young [lindex $argv 3]
-set myid [lindex $argv 4]
-
-set myenv [berkdb_env -lock -home $dir -create -mode 0644]
-error_check_bad lock_open $myenv NULL
-error_check_good lock_open [is_substr $myenv "env"] 1
-
-# There are two cases here -- oldest/youngest or a ring locker.
-
-if { $myid == 0 || $myid == [expr $numprocs - 1] } {
- set waitobj NULL
- set ret 0
-
- if { $myid == 0 } {
- set objid 2
- if { $old_or_young == "o" } {
- set waitobj [expr $numprocs - 1]
- }
- } else {
- if { $old_or_young == "y" } {
- set waitobj 0
- }
- set objid 4
- }
-
- # Acquire own read lock
- if {[catch {$myenv lock_get read $lockerid $myid} selflock] != 0} {
- puts $errorInfo
- } else {
- error_check_good selfget:$objid [is_substr $selflock $myenv] 1
- }
-
- # Acquire read lock
- if {[catch {$myenv lock_get read $lockerid $objid} lock1] != 0} {
- puts $errorInfo
- } else {
- error_check_good lockget:$objid [is_substr $lock1 $myenv] 1
- }
-
- tclsleep 10
-
- if { $waitobj == "NULL" } {
- # Sleep for a good long while
- tclsleep 90
- } else {
- # Acquire write lock
- if {[catch {$myenv lock_get write $lockerid $waitobj} lock2]
- != 0} {
- puts $errorInfo
- set ret ERROR
- } else {
- error_check_good lockget:$waitobj \
- [is_substr $lock2 $myenv] 1
-
- # Now release it
- if {[catch {$lock2 put} err] != 0} {
- puts $errorInfo
- set ret ERROR
- } else {
- error_check_good lockput:oy:$objid $err 0
- }
- }
-
- }
-
- # Release self lock
- if {[catch {$selflock put} err] != 0} {
- puts $errorInfo
- if { $ret == 0 } {
- set ret ERROR
- }
- } else {
- error_check_good selfput:oy:$myid $err 0
- if { $ret == 0 } {
- set ret 1
- }
- }
-
- # Release first lock
- if {[catch {$lock1 put} err] != 0} {
- puts $errorInfo
- if { $ret == 0 } {
- set ret ERROR
- }
- } else {
- error_check_good lockput:oy:$objid $err 0
- if { $ret == 0 } {
- set ret 1
- }
- }
-
-} else {
- # Make sure that we succeed if we're locking the same object as
- # oldest or youngest.
- if { [expr $myid % 2] == 0 } {
- set mode read
- } else {
- set mode write
- }
- # Obtain first lock (should always succeed).
- if {[catch {$myenv lock_get $mode $lockerid $myid} lock1] != 0} {
- puts $errorInfo
- } else {
- error_check_good lockget:$myid [is_substr $lock1 $myenv] 1
- }
-
- tclsleep 30
-
- set nextobj [expr $myid + 1]
- if { $nextobj == [expr $numprocs - 1] } {
- set nextobj 1
- }
-
- set ret 1
- if {[catch {$myenv lock_get write $lockerid $nextobj} lock2] != 0} {
- if {[string match "*DEADLOCK*" $lock2] == 1} {
- set ret DEADLOCK
- } else {
- set ret ERROR
- }
- } else {
- error_check_good lockget:$nextobj [is_substr $lock2 $myenv] 1
- }
-
- # Now release the first lock
- error_check_good lockput:$lock1 [$lock1 put] 0
-
- if {$ret == 1} {
- error_check_bad lockget:$nextobj $lock2 NULL
- error_check_good lockget:$nextobj [is_substr $lock2 $myenv] 1
- error_check_good lockput:$lock2 [$lock2 put] 0
- }
-}
-
-puts $ret
-error_check_good lock_id_free [$myenv lock_id_free $lockerid] 0
-error_check_good envclose [$myenv close] 0
-exit
diff --git a/bdb/test/ddscript.tcl b/bdb/test/ddscript.tcl
deleted file mode 100644
index 621906233a9..00000000000
--- a/bdb/test/ddscript.tcl
+++ /dev/null
@@ -1,44 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: ddscript.tcl,v 11.12 2002/02/20 16:35:18 sandstro Exp $
-#
-# Deadlock detector script tester.
-# Usage: ddscript dir test lockerid objid numprocs
-# dir: DBHOME directory
-# test: Which test to run
-# lockerid: Lock id for this locker
-# objid: Object id to lock.
-# numprocs: Total number of processes running
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage "ddscript dir test lockerid objid numprocs"
-
-# Verify usage
-if { $argc != 5 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set dir [lindex $argv 0]
-set tnum [ lindex $argv 1 ]
-set lockerid [ lindex $argv 2 ]
-set objid [ lindex $argv 3 ]
-set numprocs [ lindex $argv 4 ]
-
-set myenv [berkdb_env -lock -home $dir -create -mode 0644 ]
-error_check_bad lock_open $myenv NULL
-error_check_good lock_open [is_substr $myenv "env"] 1
-
-puts [eval $tnum $myenv $lockerid $objid $numprocs]
-
-error_check_good lock_id_free [$myenv lock_id_free $lockerid] 0
-error_check_good envclose [$myenv close] 0
-
-exit
diff --git a/bdb/test/dead001.tcl b/bdb/test/dead001.tcl
deleted file mode 100644
index e9853a87e53..00000000000
--- a/bdb/test/dead001.tcl
+++ /dev/null
@@ -1,88 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dead001.tcl,v 11.33 2002/09/05 17:23:05 sandstro Exp $
-#
-# TEST dead001
-# TEST Use two different configurations to test deadlock detection among a
-# TEST variable number of processes. One configuration has the processes
-# TEST deadlocked in a ring. The other has the processes all deadlocked on
-# TEST a single resource.
-proc dead001 { { procs "2 4 10" } {tests "ring clump" } \
- {timeout 0} {tnum "001"} } {
- source ./include.tcl
- global lock_curid
- global lock_maxid
-
- puts "Dead$tnum: Deadlock detector tests"
-
- env_cleanup $testdir
-
- # Create the environment.
- puts "\tDead$tnum.a: creating environment"
- set env [berkdb_env -create \
- -mode 0644 -lock -txn_timeout $timeout -home $testdir]
- error_check_good lock_env:open [is_valid_env $env] TRUE
-
- foreach t $tests {
- foreach n $procs {
- if {$timeout == 0 } {
- set dpid [exec $util_path/db_deadlock -vw \
- -h $testdir >& $testdir/dd.out &]
- } else {
- set dpid [exec $util_path/db_deadlock -vw \
- -ae -h $testdir >& $testdir/dd.out &]
- }
-
- sentinel_init
- set pidlist ""
- set ret [$env lock_id_set $lock_curid $lock_maxid]
- error_check_good lock_id_set $ret 0
-
- # Fire off the tests
- puts "\tDead$tnum: $n procs of test $t"
- for { set i 0 } { $i < $n } { incr i } {
- set locker [$env lock_id]
- puts "$tclsh_path $test_path/wrap.tcl \
- $testdir/dead$tnum.log.$i \
- ddscript.tcl $testdir $t $locker $i $n"
- set p [exec $tclsh_path \
- $test_path/wrap.tcl \
- ddscript.tcl $testdir/dead$tnum.log.$i \
- $testdir $t $locker $i $n &]
- lappend pidlist $p
- }
- watch_procs $pidlist 5
-
- # Now check output
- set dead 0
- set clean 0
- set other 0
- for { set i 0 } { $i < $n } { incr i } {
- set did [open $testdir/dead$tnum.log.$i]
- while { [gets $did val] != -1 } {
- switch $val {
- DEADLOCK { incr dead }
- 1 { incr clean }
- default { incr other }
- }
- }
- close $did
- }
- tclkill $dpid
- puts "dead check..."
- dead_check $t $n $timeout $dead $clean $other
- }
- }
-
- # Windows needs files closed before deleting files, so pause a little
- tclsleep 3
- fileremove -f $testdir/dd.out
- # Remove log files
- for { set i 0 } { $i < $n } { incr i } {
- fileremove -f $testdir/dead$tnum.log.$i
- }
- error_check_good lock_env:close [$env close] 0
-}
diff --git a/bdb/test/dead002.tcl b/bdb/test/dead002.tcl
deleted file mode 100644
index bc19e7127e5..00000000000
--- a/bdb/test/dead002.tcl
+++ /dev/null
@@ -1,75 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dead002.tcl,v 11.23 2002/09/05 17:23:05 sandstro Exp $
-#
-# TEST dead002
-# TEST Same test as dead001, but use "detect on every collision" instead
-# TEST of separate deadlock detector.
-proc dead002 { { procs "2 4 10" } {tests "ring clump" } \
- {timeout 0} {tnum 002} } {
- source ./include.tcl
-
- puts "Dead$tnum: Deadlock detector tests"
-
- env_cleanup $testdir
-
- # Create the environment.
- puts "\tDead$tnum.a: creating environment"
- set lmode "default"
- if { $timeout != 0 } {
- set lmode "expire"
- }
- set env [berkdb_env \
- -create -mode 0644 -home $testdir \
- -lock -txn_timeout $timeout -lock_detect $lmode]
- error_check_good lock_env:open [is_valid_env $env] TRUE
-
- foreach t $tests {
- foreach n $procs {
- set pidlist ""
- sentinel_init
-
- # Fire off the tests
- puts "\tDead$tnum: $n procs of test $t"
- for { set i 0 } { $i < $n } { incr i } {
- set locker [$env lock_id]
- puts "$tclsh_path $test_path/wrap.tcl \
- $testdir/dead$tnum.log.$i \
- ddscript.tcl $testdir $t $locker $i $n"
- set p [exec $tclsh_path \
- $test_path/wrap.tcl \
- ddscript.tcl $testdir/dead$tnum.log.$i \
- $testdir $t $locker $i $n &]
- lappend pidlist $p
- }
- watch_procs $pidlist 5
-
- # Now check output
- set dead 0
- set clean 0
- set other 0
- for { set i 0 } { $i < $n } { incr i } {
- set did [open $testdir/dead$tnum.log.$i]
- while { [gets $did val] != -1 } {
- switch $val {
- DEADLOCK { incr dead }
- 1 { incr clean }
- default { incr other }
- }
- }
- close $did
- }
- dead_check $t $n $timeout $dead $clean $other
- }
- }
-
- fileremove -f $testdir/dd.out
- # Remove log files
- for { set i 0 } { $i < $n } { incr i } {
- fileremove -f $testdir/dead$tnum.log.$i
- }
- error_check_good lock_env:close [$env close] 0
-}
diff --git a/bdb/test/dead003.tcl b/bdb/test/dead003.tcl
deleted file mode 100644
index 48088e1427c..00000000000
--- a/bdb/test/dead003.tcl
+++ /dev/null
@@ -1,98 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dead003.tcl,v 1.17 2002/09/05 17:23:05 sandstro Exp $
-#
-# TEST dead003
-# TEST
-# TEST Same test as dead002, but explicitly specify DB_LOCK_OLDEST and
-# TEST DB_LOCK_YOUNGEST. Verify the correct lock was aborted/granted.
-proc dead003 { { procs "2 4 10" } {tests "ring clump" } } {
- source ./include.tcl
- global lock_curid
- global lock_maxid
-
- set detects { oldest youngest }
- puts "Dead003: Deadlock detector tests: $detects"
-
- # Create the environment.
- foreach d $detects {
- env_cleanup $testdir
- puts "\tDead003.a: creating environment for $d"
- set env [berkdb_env \
- -create -mode 0644 -home $testdir -lock -lock_detect $d]
- error_check_good lock_env:open [is_valid_env $env] TRUE
-
- foreach t $tests {
- foreach n $procs {
- set pidlist ""
- sentinel_init
- set ret [$env lock_id_set \
- $lock_curid $lock_maxid]
- error_check_good lock_id_set $ret 0
-
- # Fire off the tests
- puts "\tDead003: $n procs of test $t"
- for { set i 0 } { $i < $n } { incr i } {
- set locker [$env lock_id]
- puts "$tclsh_path\
- test_path/ddscript.tcl $testdir \
- $t $locker $i $n >& \
- $testdir/dead003.log.$i"
- set p [exec $tclsh_path \
- $test_path/wrap.tcl \
- ddscript.tcl \
- $testdir/dead003.log.$i $testdir \
- $t $locker $i $n &]
- lappend pidlist $p
- }
- watch_procs $pidlist 5
-
- # Now check output
- set dead 0
- set clean 0
- set other 0
- for { set i 0 } { $i < $n } { incr i } {
- set did [open $testdir/dead003.log.$i]
- while { [gets $did val] != -1 } {
- switch $val {
- DEADLOCK { incr dead }
- 1 { incr clean }
- default { incr other }
- }
- }
- close $did
- }
- dead_check $t $n 0 $dead $clean $other
- #
- # If we get here we know we have the
- # correct number of dead/clean procs, as
- # checked by dead_check above. Now verify
- # that the right process was the one.
- puts "\tDead003: Verify $d locks were aborted"
- set l ""
- if { $d == "oldest" } {
- set l [expr $n - 1]
- }
- if { $d == "youngest" } {
- set l 0
- }
- set did [open $testdir/dead003.log.$l]
- while { [gets $did val] != -1 } {
- error_check_good check_abort \
- $val 1
- }
- close $did
- }
- }
-
- fileremove -f $testdir/dd.out
- # Remove log files
- for { set i 0 } { $i < $n } { incr i } {
- fileremove -f $testdir/dead003.log.$i
- }
- error_check_good lock_env:close [$env close] 0
- }
-}
diff --git a/bdb/test/dead004.tcl b/bdb/test/dead004.tcl
deleted file mode 100644
index f5306a0d892..00000000000
--- a/bdb/test/dead004.tcl
+++ /dev/null
@@ -1,108 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dead004.tcl,v 11.11 2002/09/05 17:23:05 sandstro Exp $
-#
-# Deadlock Test 4.
-# This test is designed to make sure that we handle youngest and oldest
-# deadlock detection even when the youngest and oldest transactions in the
-# system are not involved in the deadlock (that is, we want to abort the
-# youngest/oldest which is actually involved in the deadlock, not simply
-# the youngest/oldest in the system).
-# Since this is used for transaction systems, the locker ID is what we
-# use to identify age (smaller number is older).
-#
-# The set up is that we have a total of 6 processes. The oldest (locker 0)
-# and the youngest (locker 5) simply acquire a lock, hold it for a long time
-# and then release it. The rest form a ring, obtaining lock N and requesting
-# a lock on (N+1) mod 4. The deadlock detector ought to pick locker 1 or 4
-# to abort and not 0 or 5.
-
-proc dead004 { } {
- source ./include.tcl
- global lock_curid
- global lock_maxid
-
- foreach a { o y } {
- puts "Dead004: Deadlock detector test -a $a"
- env_cleanup $testdir
-
- # Create the environment.
- puts "\tDead004.a: creating environment"
- set env [berkdb_env -create -mode 0644 -lock -home $testdir]
- error_check_good lock_env:open [is_valid_env $env] TRUE
-
- set dpid [exec $util_path/db_deadlock -v -t 5 -a $a \
- -h $testdir >& $testdir/dd.out &]
-
- set procs 6
-
- foreach n $procs {
-
- sentinel_init
- set pidlist ""
- set ret [$env lock_id_set $lock_curid $lock_maxid]
- error_check_good lock_id_set $ret 0
-
- # Fire off the tests
- puts "\tDead004: $n procs"
- for { set i 0 } { $i < $n } { incr i } {
- set locker [$env lock_id]
- puts "$tclsh_path $test_path/wrap.tcl \
- $testdir/dead004.log.$i \
- ddoyscript.tcl $testdir $locker $n $a $i"
- set p [exec $tclsh_path \
- $test_path/wrap.tcl \
- ddoyscript.tcl $testdir/dead004.log.$i \
- $testdir $locker $n $a $i &]
- lappend pidlist $p
- }
- watch_procs $pidlist 5
-
- }
- # Now check output
- set dead 0
- set clean 0
- set other 0
- for { set i 0 } { $i < $n } { incr i } {
- set did [open $testdir/dead004.log.$i]
- while { [gets $did val] != -1 } {
- switch $val {
- DEADLOCK { incr dead }
- 1 { incr clean }
- default { incr other }
- }
- }
- close $did
- }
- tclkill $dpid
-
- puts "dead check..."
- dead_check oldyoung $n 0 $dead $clean $other
-
- # Now verify that neither the oldest nor the
- # youngest were the deadlock.
- set did [open $testdir/dead004.log.0]
- error_check_bad file:young [gets $did val] -1
- error_check_good read:young $val 1
- close $did
-
- set did [open $testdir/dead004.log.[expr $procs - 1]]
- error_check_bad file:old [gets $did val] -1
- error_check_good read:old $val 1
- close $did
-
- # Windows needs files closed before deleting files,
- # so pause a little
- tclsleep 2
- fileremove -f $testdir/dd.out
-
- # Remove log files
- for { set i 0 } { $i < $n } { incr i } {
- fileremove -f $testdir/dead004.log.$i
- }
- error_check_good lock_env:close [$env close] 0
- }
-}
diff --git a/bdb/test/dead005.tcl b/bdb/test/dead005.tcl
deleted file mode 100644
index 71be8b1713f..00000000000
--- a/bdb/test/dead005.tcl
+++ /dev/null
@@ -1,87 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dead005.tcl,v 11.10 2002/09/05 17:23:05 sandstro Exp $
-#
-# Deadlock Test 5.
-# Test out the minlocks, maxlocks, and minwrites options
-# to the deadlock detector.
-proc dead005 { { procs "4 6 10" } {tests "maxlocks minwrites minlocks" } } {
- source ./include.tcl
-
- puts "Dead005: minlocks, maxlocks, and minwrites deadlock detection tests"
- foreach t $tests {
- puts "Dead005.$t: creating environment"
- env_cleanup $testdir
-
- # Create the environment.
- set env [berkdb_env -create -mode 0644 -lock -home $testdir]
- error_check_good lock_env:open [is_valid_env $env] TRUE
- case $t {
- minlocks { set to n }
- maxlocks { set to m }
- minwrites { set to w }
- }
- foreach n $procs {
- set dpid [exec $util_path/db_deadlock -vw -h $testdir \
- -a $to >& $testdir/dd.out &]
- sentinel_init
- set pidlist ""
-
- # Fire off the tests
- puts "\tDead005: $t test with $n procs"
- for { set i 0 } { $i < $n } { incr i } {
- set locker [$env lock_id]
- puts "$tclsh_path $test_path/wrap.tcl \
- $testdir/dead005.log.$i \
- ddscript.tcl $testdir $t $locker $i $n"
- set p [exec $tclsh_path \
- $test_path/wrap.tcl \
- ddscript.tcl $testdir/dead005.log.$i \
- $testdir $t $locker $i $n &]
- lappend pidlist $p
- }
- watch_procs $pidlist 5
-
- # Now check output
- set dead 0
- set clean 0
- set other 0
- for { set i 0 } { $i < $n } { incr i } {
- set did [open $testdir/dead005.log.$i]
- while { [gets $did val] != -1 } {
- switch $val {
- DEADLOCK { incr dead }
- 1 { incr clean }
- default { incr other }
- }
- }
- close $did
- }
- tclkill $dpid
- puts "dead check..."
- dead_check $t $n 0 $dead $clean $other
- # Now verify that the correct participant
- # got deadlocked.
- switch $t {
- minlocks {set f 0}
- minwrites {set f 1}
- maxlocks {set f [expr $n - 1]}
- }
- set did [open $testdir/dead005.log.$f]
- error_check_bad file:$t [gets $did val] -1
- error_check_good read($f):$t $val DEADLOCK
- close $did
- }
- error_check_good lock_env:close [$env close] 0
- # Windows needs files closed before deleting them, so pause
- tclsleep 2
- fileremove -f $testdir/dd.out
- # Remove log files
- for { set i 0 } { $i < $n } { incr i } {
- fileremove -f $testdir/dead001.log.$i
- }
- }
-}
diff --git a/bdb/test/dead006.tcl b/bdb/test/dead006.tcl
deleted file mode 100644
index b70e011fb74..00000000000
--- a/bdb/test/dead006.tcl
+++ /dev/null
@@ -1,16 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dead006.tcl,v 1.4 2002/01/11 15:53:21 bostic Exp $
-#
-# TEST dead006
-# TEST use timeouts rather than the normal dd algorithm.
-proc dead006 { { procs "2 4 10" } {tests "ring clump" } \
- {timeout 1000} {tnum 006} } {
- source ./include.tcl
-
- dead001 $procs $tests $timeout $tnum
- dead002 $procs $tests $timeout $tnum
-}
diff --git a/bdb/test/dead007.tcl b/bdb/test/dead007.tcl
deleted file mode 100644
index 2b6a78cb4b9..00000000000
--- a/bdb/test/dead007.tcl
+++ /dev/null
@@ -1,34 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: dead007.tcl,v 1.3 2002/01/11 15:53:22 bostic Exp $
-#
-# TEST dead007
-# TEST use timeouts rather than the normal dd algorithm.
-proc dead007 { } {
- source ./include.tcl
- global lock_curid
- global lock_maxid
-
- set save_curid $lock_curid
- set save_maxid $lock_maxid
- puts "Dead007.a -- wrap around"
- set lock_curid [expr $lock_maxid - 2]
- dead001 "2 10"
- ## Oldest/youngest breaks when the id wraps
- # dead003 "4 10"
- dead004
-
- puts "Dead007.b -- extend space"
- set lock_maxid [expr $lock_maxid - 3]
- set lock_curid [expr $lock_maxid - 1]
- dead001 "4 10"
- ## Oldest/youngest breaks when the id wraps
- # dead003 "10"
- dead004
-
- set lock_curid $save_curid
- set lock_maxid $save_maxid
-}
diff --git a/bdb/test/env001.tcl b/bdb/test/env001.tcl
deleted file mode 100644
index 781029f6a5c..00000000000
--- a/bdb/test/env001.tcl
+++ /dev/null
@@ -1,154 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env001.tcl,v 11.26 2002/05/08 19:01:43 margo Exp $
-#
-# TEST env001
-# TEST Test of env remove interface (formerly env_remove).
-proc env001 { } {
- global errorInfo
- global errorCode
-
- source ./include.tcl
-
- set testfile $testdir/env.db
- set t1 $testdir/t1
-
- puts "Env001: Test of environment remove interface."
- env_cleanup $testdir
-
- # Try opening without Create flag should error
- puts "\tEnv001.a: Open without create (should fail)."
- catch {set env [berkdb_env_noerr -home $testdir]} ret
- error_check_good env:fail [is_substr $ret "no such file"] 1
-
- # Now try opening with create
- puts "\tEnv001.b: Open with create."
- set env [berkdb_env -create -mode 0644 -home $testdir]
- error_check_bad env:$testdir $env NULL
- error_check_good env:$testdir [is_substr $env "env"] 1
-
- # Make sure that close works.
- puts "\tEnv001.c: Verify close."
- error_check_good env:close:$env [$env close] 0
-
- # Make sure we can reopen -- this doesn't work on Windows
- # because if there is only one opener, the region disappears
- # when it is closed. We can't do a second opener, because
- # that will fail on HP-UX.
- puts "\tEnv001.d: Remove on closed environments."
- if { $is_windows_test != 1 } {
- puts "\t\tEnv001.d.1: Verify re-open."
- set env [berkdb_env -home $testdir]
- error_check_bad env:$testdir $env NULL
- error_check_good env:$testdir [is_substr $env "env"] 1
-
- # remove environment
- puts "\t\tEnv001.d.2: Close environment."
- error_check_good env:close [$env close] 0
- puts "\t\tEnv001.d.3: Try remove with force (should succeed)."
- error_check_good \
- envremove [berkdb envremove -force -home $testdir] 0
- }
-
- if { $is_windows_test != 1 && $is_hp_test != 1 } {
- puts "\tEnv001.e: Remove on open environments."
- puts "\t\tEnv001.e.1: Env is open by single proc,\
- remove no force."
- set env [berkdb_env -create -mode 0644 -home $testdir]
- error_check_bad env:$testdir $env NULL
- error_check_good env:$testdir [is_substr $env "env"] 1
- set stat [catch {berkdb envremove -home $testdir} ret]
- error_check_good env:remove $stat 1
- error_check_good env:close [$env close] 0
- }
-
- puts \
- "\t\tEnv001.e.2: Env is open by single proc, remove with force."
- # Now that envremove doesn't do a close, this won't work on Windows.
- if { $is_windows_test != 1 && $is_hp_test != 1} {
- set env [berkdb_env_noerr -create -mode 0644 -home $testdir]
- error_check_bad env:$testdir $env NULL
- error_check_good env:$testdir [is_substr $env "env"] 1
- set stat [catch {berkdb envremove -force -home $testdir} ret]
- error_check_good env:remove(force) $ret 0
- #
- # Even though the underlying env is gone, we need to close
- # the handle.
- #
- set stat [catch {$env close} ret]
- error_check_bad env:close_after_remove $stat 0
- error_check_good env:close_after_remove \
- [is_substr $ret "recovery"] 1
- }
-
- puts "\t\tEnv001.e.3: Env is open by 2 procs, remove no force."
- # should fail
- set env [berkdb_env -create -mode 0644 -home $testdir]
- error_check_bad env:$testdir $env NULL
- error_check_good env:$testdir [is_substr $env "env"] 1
-
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
-
- set remote_env [send_cmd $f1 "berkdb_env_noerr -home $testdir"]
- error_check_good remote:env_open [is_valid_env $remote_env] TRUE
- # First close our env, but leave remote open
- error_check_good env:close [$env close] 0
- catch {berkdb envremove -home $testdir} ret
- error_check_good envremove:2procs:noforce [is_substr $errorCode EBUSY] 1
- #
- # even though it failed, $env is no longer valid, so remove it in
- # the remote process
- set remote_close [send_cmd $f1 "$remote_env close"]
- error_check_good remote_close $remote_close 0
-
- # exit remote process
- set err [catch { close $f1 } result]
- error_check_good close_remote_process $err 0
-
- puts "\t\tEnv001.e.4: Env is open by 2 procs, remove with force."
- # You cannot do this on windows because you can't remove files that
- # are open, so we skip this test for Windows. On UNIX, it should
- # succeed
- if { $is_windows_test != 1 && $is_hp_test != 1 } {
- set env [berkdb_env_noerr -create -mode 0644 -home $testdir]
- error_check_bad env:$testdir $env NULL
- error_check_good env:$testdir [is_substr $env "env"] 1
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
-
- set remote_env [send_cmd $f1 "berkdb_env -home $testdir"]
- error_check_good remote:env_open [is_valid_env $remote_env] TRUE
-
- catch {berkdb envremove -force -home $testdir} ret
- error_check_good envremove:2procs:force $ret 0
- #
- # We still need to close our handle.
- #
- set stat [catch {$env close} ret]
- error_check_bad env:close_after_error $stat 0
- error_check_good env:close_after_error \
- [is_substr $ret recovery] 1
-
- # Close down remote process
- set err [catch { close $f1 } result]
- error_check_good close_remote_process $err 0
- }
-
- # Try opening in a different dir
- puts "\tEnv001.f: Try opening env in another directory."
- if { [file exists $testdir/NEWDIR] != 1 } {
- file mkdir $testdir/NEWDIR
- }
- set eflags "-create -home $testdir/NEWDIR -mode 0644"
- set env [eval {berkdb_env} $eflags]
- error_check_bad env:open $env NULL
- error_check_good env:close [$env close] 0
- error_check_good berkdb:envremove \
- [berkdb envremove -home $testdir/NEWDIR] 0
-
- puts "\tEnv001 complete."
-}
diff --git a/bdb/test/env002.tcl b/bdb/test/env002.tcl
deleted file mode 100644
index 89c44f63a12..00000000000
--- a/bdb/test/env002.tcl
+++ /dev/null
@@ -1,156 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env002.tcl,v 11.15 2002/02/20 16:35:20 sandstro Exp $
-#
-# TEST env002
-# TEST Test of DB_LOG_DIR and env name resolution.
-# TEST With an environment path specified using -home, and then again
-# TEST with it specified by the environment variable DB_HOME:
-# TEST 1) Make sure that the set_lg_dir option is respected
-# TEST a) as a relative pathname.
-# TEST b) as an absolute pathname.
-# TEST 2) Make sure that the DB_LOG_DIR db_config argument is respected,
-# TEST again as relative and absolute pathnames.
-# TEST 3) Make sure that if -both- db_config and a file are present,
-# TEST only the file is respected (see doc/env/naming.html).
-proc env002 { } {
- # env002 is essentially just a small driver that runs
- # env002_body--formerly the entire test--twice; once, it
- # supplies a "home" argument to use with environment opens,
- # and the second time it sets DB_HOME instead.
- # Note that env002_body itself calls env002_run_test to run
- # the body of the actual test and check for the presence
- # of logs. The nesting, I hope, makes this test's structure simpler.
-
- global env
- source ./include.tcl
-
- puts "Env002: set_lg_dir test."
-
- puts "\tEnv002: Running with -home argument to berkdb_env."
- env002_body "-home $testdir"
-
- puts "\tEnv002: Running with environment variable DB_HOME set."
- set env(DB_HOME) $testdir
- env002_body "-use_environ"
-
- unset env(DB_HOME)
-
- puts "\tEnv002: Running with both DB_HOME and -home set."
- # Should respect -only- -home, so we give it a bogus
- # environment variable setting.
- set env(DB_HOME) $testdir/bogus_home
- env002_body "-use_environ -home $testdir"
- unset env(DB_HOME)
-
-}
-
-proc env002_body { home_arg } {
- source ./include.tcl
-
- env_cleanup $testdir
- set logdir "logs_in_here"
-
- file mkdir $testdir/$logdir
-
- # Set up full path to $logdir for when we test absolute paths.
- set curdir [pwd]
- cd $testdir/$logdir
- set fulllogdir [pwd]
- cd $curdir
-
- env002_make_config $logdir
-
- # Run the meat of the test.
- env002_run_test a 1 "relative path, config file" $home_arg \
- $testdir/$logdir
-
- env_cleanup $testdir
-
- file mkdir $fulllogdir
- env002_make_config $fulllogdir
-
- # Run the test again
- env002_run_test a 2 "absolute path, config file" $home_arg \
- $fulllogdir
-
- env_cleanup $testdir
-
- # Now we try without a config file, but instead with db_config
- # relative paths
- file mkdir $testdir/$logdir
- env002_run_test b 1 "relative path, db_config" "$home_arg \
- -log_dir $logdir -data_dir ." \
- $testdir/$logdir
-
- env_cleanup $testdir
-
- # absolute
- file mkdir $fulllogdir
- env002_run_test b 2 "absolute path, db_config" "$home_arg \
- -log_dir $fulllogdir -data_dir ." \
- $fulllogdir
-
- env_cleanup $testdir
-
- # Now, set db_config -and- have a # DB_CONFIG file, and make
- # sure only the latter is honored.
-
- file mkdir $testdir/$logdir
- env002_make_config $logdir
-
- # note that we supply a -nonexistent- log dir to db_config
- env002_run_test c 1 "relative path, both db_config and file" \
- "$home_arg -log_dir $testdir/bogus \
- -data_dir ." $testdir/$logdir
- env_cleanup $testdir
-
- file mkdir $fulllogdir
- env002_make_config $fulllogdir
-
- # note that we supply a -nonexistent- log dir to db_config
- env002_run_test c 2 "relative path, both db_config and file" \
- "$home_arg -log_dir $fulllogdir/bogus \
- -data_dir ." $fulllogdir
-}
-
-proc env002_run_test { major minor msg env_args log_path} {
- global testdir
- set testfile "env002.db"
-
- puts "\t\tEnv002.$major.$minor: $msg"
-
- # Create an environment, with logging, and scribble some
- # stuff in a [btree] database in it.
- # puts [concat {berkdb_env -create -log -private} $env_args]
- set dbenv [eval {berkdb_env -create -log -private} $env_args]
- error_check_good env_open [is_valid_env $dbenv] TRUE
- set db [berkdb_open -env $dbenv -create -btree -mode 0644 $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
-
- set key "some_key"
- set data "some_data"
-
- error_check_good db_put \
- [$db put $key [chop_data btree $data]] 0
-
- error_check_good db_close [$db close] 0
- error_check_good env_close [$dbenv close] 0
-
- # Now make sure the log file is where we want it to be.
- error_check_good db_exists [file exists $testdir/$testfile] 1
- error_check_good log_exists \
- [file exists $log_path/log.0000000001] 1
-}
-
-proc env002_make_config { logdir } {
- global testdir
-
- set cid [open $testdir/DB_CONFIG w]
- puts $cid "set_data_dir ."
- puts $cid "set_lg_dir $logdir"
- close $cid
-}
diff --git a/bdb/test/env003.tcl b/bdb/test/env003.tcl
deleted file mode 100644
index c16b54dd5e0..00000000000
--- a/bdb/test/env003.tcl
+++ /dev/null
@@ -1,149 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env003.tcl,v 11.21 2002/08/08 15:38:06 bostic Exp $
-#
-# TEST env003
-# TEST Test DB_TMP_DIR and env name resolution
-# TEST With an environment path specified using -home, and then again
-# TEST with it specified by the environment variable DB_HOME:
-# TEST 1) Make sure that the DB_TMP_DIR config file option is respected
-# TEST a) as a relative pathname.
-# TEST b) as an absolute pathname.
-# TEST 2) Make sure that the -tmp_dir config option is respected,
-# TEST again as relative and absolute pathnames.
-# TEST 3) Make sure that if -both- -tmp_dir and a file are present,
-# TEST only the file is respected (see doc/env/naming.html).
-proc env003 { } {
- # env003 is essentially just a small driver that runs
- # env003_body twice. First, it supplies a "home" argument
- # to use with environment opens, and the second time it sets
- # DB_HOME instead.
- # Note that env003_body itself calls env003_run_test to run
- # the body of the actual test.
-
- global env
- source ./include.tcl
-
- puts "Env003: DB_TMP_DIR test."
-
- puts "\tEnv003: Running with -home argument to berkdb_env."
- env003_body "-home $testdir"
-
- puts "\tEnv003: Running with environment variable DB_HOME set."
- set env(DB_HOME) $testdir
- env003_body "-use_environ"
-
- unset env(DB_HOME)
-
- puts "\tEnv003: Running with both DB_HOME and -home set."
- # Should respect -only- -home, so we give it a bogus
- # environment variable setting.
- set env(DB_HOME) $testdir/bogus_home
- env003_body "-use_environ -home $testdir"
- unset env(DB_HOME)
-}
-
-proc env003_body { home_arg } {
- source ./include.tcl
-
- env_cleanup $testdir
- set tmpdir "tmpfiles_in_here"
- file mkdir $testdir/$tmpdir
-
- # Set up full path to $tmpdir for when we test absolute paths.
- set curdir [pwd]
- cd $testdir/$tmpdir
- set fulltmpdir [pwd]
- cd $curdir
-
- # Create DB_CONFIG
- env003_make_config $tmpdir
-
- # Run the meat of the test.
- env003_run_test a 1 "relative path, config file" $home_arg \
- $testdir/$tmpdir
-
- env003_make_config $fulltmpdir
-
- # Run the test again
- env003_run_test a 2 "absolute path, config file" $home_arg \
- $fulltmpdir
-
- # Now we try without a config file, but instead with db_config
- # relative paths
- env003_run_test b 1 "relative path, db_config" "$home_arg \
- -tmp_dir $tmpdir -data_dir ." \
- $testdir/$tmpdir
-
- # absolute paths
- env003_run_test b 2 "absolute path, db_config" "$home_arg \
- -tmp_dir $fulltmpdir -data_dir ." \
- $fulltmpdir
-
- # Now, set db_config -and- have a # DB_CONFIG file, and make
- # sure only the latter is honored.
-
- file mkdir $testdir/bogus
- env003_make_config $tmpdir
-
- env003_run_test c 1 "relative path, both db_config and file" \
- "$home_arg -tmp_dir $testdir/bogus -data_dir ." \
- $testdir/$tmpdir
-
- file mkdir $fulltmpdir/bogus
- env003_make_config $fulltmpdir
-
- env003_run_test c 2 "absolute path, both db_config and file" \
- "$home_arg -tmp_dir $fulltmpdir/bogus -data_dir ." \
- $fulltmpdir
-}
-
-proc env003_run_test { major minor msg env_args tmp_path} {
- global testdir
- global alphabet
- global errorCode
-
- puts "\t\tEnv003.$major.$minor: $msg"
-
- # Create an environment and small-cached in-memory database to
- # use.
- set dbenv [eval {berkdb_env -create -home $testdir} $env_args \
- {-cachesize {0 50000 1}}]
- error_check_good env_open [is_valid_env $dbenv] TRUE
-
- set db [berkdb_open -env $dbenv -create -btree]
- error_check_good db_open [is_valid_db $db] TRUE
-
- # Fill the database with more than its cache can fit.
- #
- # When CONFIG_TEST is defined, the tempfile is left linked so
- # we can check for its existence. Size the data to overfill
- # the cache--the temp file is created lazily, so it is created
- # when the cache overflows.
- #
- set key "key"
- set data [repeat $alphabet 2000]
- error_check_good db_put [$db put $key $data] 0
-
- # Check for exactly one temp file.
- set ret [glob -nocomplain $tmp_path/BDB*]
- error_check_good temp_file_exists [llength $ret] 1
-
- # Can't remove temp file until db is closed on Windows.
- error_check_good db_close [$db close] 0
- fileremove -f $ret
- error_check_good env_close [$dbenv close] 0
-
-}
-
-proc env003_make_config { tmpdir } {
- global testdir
-
- set cid [open $testdir/DB_CONFIG w]
- puts $cid "set_data_dir ."
- puts $cid "set_tmp_dir $tmpdir"
- close $cid
-}
diff --git a/bdb/test/env004.tcl b/bdb/test/env004.tcl
deleted file mode 100644
index e93a0d95308..00000000000
--- a/bdb/test/env004.tcl
+++ /dev/null
@@ -1,103 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env004.tcl,v 11.18 2002/02/20 17:08:21 sandstro Exp $
-#
-# TEST env004
-# TEST Test multiple data directories. Do a bunch of different opens
-# TEST to make sure that the files are detected in different directories.
-proc env004 { } {
- source ./include.tcl
-
- set method "hash"
- set omethod [convert_method $method]
- set args [convert_args $method ""]
-
- puts "Env004: Multiple data directory test."
-
- env_cleanup $testdir
- file mkdir $testdir/data1
- file mkdir $testdir/data2
- file mkdir $testdir/data3
-
- puts "\tEnv004.a: Multiple data directories in DB_CONFIG file"
-
- # Create a config file
- set cid [open $testdir/DB_CONFIG w]
- puts $cid "set_data_dir ."
- puts $cid "set_data_dir data1"
- puts $cid "set_data_dir data2"
- puts $cid "set_data_dir data3"
- close $cid
-
- # Now get pathnames
- set curdir [pwd]
- cd $testdir
- set fulldir [pwd]
- cd $curdir
-
- set e [berkdb_env -create -private -home $testdir]
- error_check_good dbenv [is_valid_env $e] TRUE
- ddir_test $fulldir $method $e $args
- error_check_good env_close [$e close] 0
-
- puts "\tEnv004.b: Multiple data directories in berkdb_env call."
- env_cleanup $testdir
- file mkdir $testdir/data1
- file mkdir $testdir/data2
- file mkdir $testdir/data3
-
- # Now call dbenv with config specified
- set e [berkdb_env -create -private \
- -data_dir . -data_dir data1 -data_dir data2 \
- -data_dir data3 -home $testdir]
- error_check_good dbenv [is_valid_env $e] TRUE
- ddir_test $fulldir $method $e $args
- error_check_good env_close [$e close] 0
-
- env_cleanup $testdir
-}
-
-proc ddir_test { fulldir method e args } {
- source ./include.tcl
-
- set args [convert_args $args]
- set omethod [convert_method $method]
-
- # Now create one file in each directory
- set db1 [eval {berkdb_open -create \
- -truncate -mode 0644 $omethod -env $e} $args {data1/datafile1.db}]
- error_check_good dbopen1 [is_valid_db $db1] TRUE
-
- set db2 [eval {berkdb_open -create \
- -truncate -mode 0644 $omethod -env $e} $args {data2/datafile2.db}]
- error_check_good dbopen2 [is_valid_db $db2] TRUE
-
- set db3 [eval {berkdb_open -create \
- -truncate -mode 0644 $omethod -env $e} $args {data3/datafile3.db}]
- error_check_good dbopen3 [is_valid_db $db3] TRUE
-
- # Close the files
- error_check_good db_close1 [$db1 close] 0
- error_check_good db_close2 [$db2 close] 0
- error_check_good db_close3 [$db3 close] 0
-
- # Now, reopen the files without complete pathnames and make
- # sure that we find them.
-
- set db1 [berkdb_open -env $e $fulldir/data1/datafile1.db]
- error_check_good dbopen1 [is_valid_db $db1] TRUE
-
- set db2 [berkdb_open -env $e $fulldir/data2/datafile2.db]
- error_check_good dbopen2 [is_valid_db $db2] TRUE
-
- set db3 [berkdb_open -env $e $fulldir/data3/datafile3.db]
- error_check_good dbopen3 [is_valid_db $db3] TRUE
-
- # Finally close all the files
- error_check_good db_close1 [$db1 close] 0
- error_check_good db_close2 [$db2 close] 0
- error_check_good db_close3 [$db3 close] 0
-}
diff --git a/bdb/test/env005.tcl b/bdb/test/env005.tcl
deleted file mode 100644
index 03bb1b40b34..00000000000
--- a/bdb/test/env005.tcl
+++ /dev/null
@@ -1,53 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env005.tcl,v 11.15 2002/02/22 14:28:37 sandstro Exp $
-#
-# TEST env005
-# TEST Test that using subsystems without initializing them correctly
-# TEST returns an error. Cannot test mpool, because it is assumed in
-# TEST the Tcl code.
-proc env005 { } {
- source ./include.tcl
-
- puts "Env005: Uninitialized env subsystems test."
-
- env_cleanup $testdir
- puts "\tEnv005.a: Creating env with no subsystems."
-
- set e [berkdb_env_noerr -create -home $testdir]
- error_check_good dbenv [is_valid_env $e] TRUE
- set db [berkdb_open -create -btree $testdir/env005.db]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set rlist {
- { "lock_detect" "Env005.b0"}
- { "lock_get read 1 1" "Env005.b1"}
- { "lock_id" "Env005.b2"}
- { "lock_stat" "Env005.b3"}
- { "lock_timeout 100" "Env005.b4"}
- { "log_archive" "Env005.c0"}
- { "log_cursor" "Env005.c1"}
- { "log_file {1 1}" "Env005.c2"}
- { "log_flush" "Env005.c3"}
- { "log_put record" "Env005.c4"}
- { "log_stat" "Env005.c5"}
- { "txn" "Env005.d0"}
- { "txn_checkpoint" "Env005.d1"}
- { "txn_stat" "Env005.d2"}
- { "txn_timeout 100" "Env005.d3"}
- }
-
- foreach pair $rlist {
- set cmd [lindex $pair 0]
- set msg [lindex $pair 1]
- puts "\t$msg: $cmd"
- set stat [catch {eval $e $cmd} ret]
- error_check_good $cmd $stat 1
- error_check_good $cmd.err [is_substr $ret invalid] 1
- }
- error_check_good dbclose [$db close] 0
- error_check_good envclose [$e close] 0
-}
diff --git a/bdb/test/env006.tcl b/bdb/test/env006.tcl
deleted file mode 100644
index 48fc6982772..00000000000
--- a/bdb/test/env006.tcl
+++ /dev/null
@@ -1,42 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env006.tcl,v 11.8 2002/01/11 15:53:23 bostic Exp $
-#
-# TEST env006
-# TEST Make sure that all the utilities exist and run.
-proc env006 { } {
- source ./include.tcl
-
- puts "Env006: Run underlying utilities."
-
- set rlist {
- { "db_archive" "Env006.a"}
- { "db_checkpoint" "Env006.b"}
- { "db_deadlock" "Env006.c"}
- { "db_dump" "Env006.d"}
- { "db_load" "Env006.e"}
- { "db_printlog" "Env006.f"}
- { "db_recover" "Env006.g"}
- { "db_stat" "Env006.h"}
- { "db_upgrade" "Env006.h"}
- { "db_verify" "Env006.h"}
- }
- foreach pair $rlist {
- set cmd [lindex $pair 0]
- set msg [lindex $pair 1]
-
- puts "\t$msg: $cmd"
-
- set stat [catch {exec $util_path/$cmd -?} ret]
- error_check_good $cmd $stat 1
-
- #
- # Check for "usage", but only check "sage" so that
- # we can handle either Usage or usage.
- #
- error_check_good $cmd.err [is_substr $ret sage] 1
- }
-}
diff --git a/bdb/test/env007.tcl b/bdb/test/env007.tcl
deleted file mode 100644
index 5748d2dbc89..00000000000
--- a/bdb/test/env007.tcl
+++ /dev/null
@@ -1,223 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env007.tcl,v 11.21 2002/08/12 20:49:36 sandstro Exp $
-#
-# TEST env007
-# TEST Test various DB_CONFIG config file options.
-# TEST 1) Make sure command line option is respected
-# TEST 2) Make sure that config file option is respected
-# TEST 3) Make sure that if -both- DB_CONFIG and the set_<whatever>
-# TEST method is used, only the file is respected.
-# TEST Then test all known config options.
-proc env007 { } {
- global errorInfo
-
- # env007 is essentially just a small driver that runs
- # env007_body twice. First, it supplies a "set" argument
- # to use with environment opens, and the second time it sets
- # DB_CONFIG instead.
- # Note that env007_body itself calls env007_run_test to run
- # the body of the actual test.
-
- source ./include.tcl
-
- puts "Env007: DB_CONFIG test."
-
- #
- # Test only those options we can easily check via stat
- #
- set rlist {
- { " -txn_max " "set_tx_max" "19" "31" "Env007.a: Txn Max"
- "txn_stat" "Max Txns"}
- { " -lock_max_locks " "set_lk_max_locks" "17" "29" "Env007.b: Lock Max"
- "lock_stat" "Maximum locks"}
- { " -lock_max_lockers " "set_lk_max_lockers" "1500" "2000"
- "Env007.c: Max Lockers" "lock_stat" "Maximum lockers"}
- { " -lock_max_objects " "set_lk_max_objects" "1500" "2000"
- "Env007.d: Max Objects" "lock_stat" "Maximum objects"}
- { " -log_buffer " "set_lg_bsize" "65536" "131072" "Env007.e: Log Bsize"
- "log_stat" "Log record cache size"}
- { " -log_max " "set_lg_max" "8388608" "9437184" "Env007.f: Log Max"
- "log_stat" "Current log file size"}
- }
-
- set e "berkdb_env -create -mode 0644 -home $testdir -log -lock -txn "
- foreach item $rlist {
- set envarg [lindex $item 0]
- set configarg [lindex $item 1]
- set envval [lindex $item 2]
- set configval [lindex $item 3]
- set msg [lindex $item 4]
- set statcmd [lindex $item 5]
- set statstr [lindex $item 6]
-
- env_cleanup $testdir
- # First verify using just env args
- puts "\t$msg Environment argument only"
- set env [eval $e $envarg $envval]
- error_check_good envopen:0 [is_valid_env $env] TRUE
- env007_check $env $statcmd $statstr $envval
- error_check_good envclose:0 [$env close] 0
-
- env_cleanup $testdir
- env007_make_config $configarg $configval
-
- # verify using just config file
- puts "\t$msg Config file only"
- set env [eval $e]
- error_check_good envopen:1 [is_valid_env $env] TRUE
- env007_check $env $statcmd $statstr $configval
- error_check_good envclose:1 [$env close] 0
-
- # First verify using just env args
- puts "\t$msg Environment arg and config file"
- set env [eval $e $envarg $envval]
- error_check_good envopen:2 [is_valid_env $env] TRUE
- env007_check $env $statcmd $statstr $configval
- error_check_good envclose:2 [$env close] 0
- }
-
- #
- # Test all options. For all config options, write it out
- # to the file and make sure we can open the env. We cannot
- # necessarily check via stat that it worked but this execs
- # the config file code itself.
- #
- set cfglist {
- { "set_cachesize" "0 1048576 0" }
- { "set_data_dir" "." }
- { "set_flags" "db_cdb_alldb" }
- { "set_flags" "db_direct_db" }
- { "set_flags" "db_direct_log" }
- { "set_flags" "db_nolocking" }
- { "set_flags" "db_nommap" }
- { "set_flags" "db_nopanic" }
- { "set_flags" "db_overwrite" }
- { "set_flags" "db_region_init" }
- { "set_flags" "db_txn_nosync" }
- { "set_flags" "db_txn_write_nosync" }
- { "set_flags" "db_yieldcpu" }
- { "set_lg_bsize" "65536" }
- { "set_lg_dir" "." }
- { "set_lg_max" "8388608" }
- { "set_lg_regionmax" "65536" }
- { "set_lk_detect" "db_lock_default" }
- { "set_lk_detect" "db_lock_expire" }
- { "set_lk_detect" "db_lock_maxlocks" }
- { "set_lk_detect" "db_lock_minlocks" }
- { "set_lk_detect" "db_lock_minwrite" }
- { "set_lk_detect" "db_lock_oldest" }
- { "set_lk_detect" "db_lock_random" }
- { "set_lk_detect" "db_lock_youngest" }
- { "set_lk_max" "50" }
- { "set_lk_max_lockers" "1500" }
- { "set_lk_max_locks" "29" }
- { "set_lk_max_objects" "1500" }
- { "set_lock_timeout" "100" }
- { "set_mp_mmapsize" "12582912" }
- { "set_region_init" "1" }
- { "set_shm_key" "15" }
- { "set_tas_spins" "15" }
- { "set_tmp_dir" "." }
- { "set_tx_max" "31" }
- { "set_txn_timeout" "100" }
- { "set_verbose" "db_verb_chkpoint" }
- { "set_verbose" "db_verb_deadlock" }
- { "set_verbose" "db_verb_recovery" }
- { "set_verbose" "db_verb_waitsfor" }
- }
-
- puts "\tEnv007.g: Config file settings"
- set e "berkdb_env -create -mode 0644 -home $testdir -log -lock -txn "
- foreach item $cfglist {
- env_cleanup $testdir
- set configarg [lindex $item 0]
- set configval [lindex $item 1]
-
- env007_make_config $configarg $configval
-
- # verify using just config file
- puts "\t\t $configarg $configval"
- set env [eval $e]
- error_check_good envvalid:1 [is_valid_env $env] TRUE
- error_check_good envclose:1 [$env close] 0
- }
-
- set cfglist {
- { "set_cachesize" "1048576" }
- { "set_flags" "db_xxx" }
- { "set_flags" "1" }
- { "set_flags" "db_txn_nosync x" }
- { "set_lg_bsize" "db_xxx" }
- { "set_lg_max" "db_xxx" }
- { "set_lg_regionmax" "db_xxx" }
- { "set_lk_detect" "db_xxx" }
- { "set_lk_detect" "1" }
- { "set_lk_detect" "db_lock_youngest x" }
- { "set_lk_max" "db_xxx" }
- { "set_lk_max_locks" "db_xxx" }
- { "set_lk_max_lockers" "db_xxx" }
- { "set_lk_max_objects" "db_xxx" }
- { "set_mp_mmapsize" "db_xxx" }
- { "set_region_init" "db_xxx" }
- { "set_shm_key" "db_xxx" }
- { "set_tas_spins" "db_xxx" }
- { "set_tx_max" "db_xxx" }
- { "set_verbose" "db_xxx" }
- { "set_verbose" "1" }
- { "set_verbose" "db_verb_recovery x" }
- }
- puts "\tEnv007.h: Config value errors"
- set e "berkdb_env_noerr -create -mode 0644 \
- -home $testdir -log -lock -txn "
- foreach item $cfglist {
- set configarg [lindex $item 0]
- set configval [lindex $item 1]
-
- env007_make_config $configarg $configval
-
- # verify using just config file
- puts "\t\t $configarg $configval"
- set stat [catch {eval $e} ret]
- error_check_good envopen $stat 1
- error_check_good error [is_substr $errorInfo \
- "incorrect arguments for name-value pair"] 1
- }
-
- puts "\tEnv007.i: Config name error set_xxx"
- set e "berkdb_env_noerr -create -mode 0644 \
- -home $testdir -log -lock -txn "
- env007_make_config "set_xxx" 1
- set stat [catch {eval $e} ret]
- error_check_good envopen $stat 1
- error_check_good error [is_substr $errorInfo \
- "unrecognized name-value pair"] 1
-}
-
-proc env007_check { env statcmd statstr testval } {
- set stat [$env $statcmd]
- set checked 0
- foreach statpair $stat {
- if {$checked == 1} {
- break
- }
- set statmsg [lindex $statpair 0]
- set statval [lindex $statpair 1]
- if {[is_substr $statmsg $statstr] != 0} {
- set checked 1
- error_check_good $statstr:ck $statval $testval
- }
- }
- error_check_good $statstr:test $checked 1
-}
-
-proc env007_make_config { carg cval } {
- global testdir
-
- set cid [open $testdir/DB_CONFIG w]
- puts $cid "$carg $cval"
- close $cid
-}
diff --git a/bdb/test/env008.tcl b/bdb/test/env008.tcl
deleted file mode 100644
index dccdb41f612..00000000000
--- a/bdb/test/env008.tcl
+++ /dev/null
@@ -1,73 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env008.tcl,v 11.6 2002/02/22 14:29:34 sandstro Exp $
-#
-# TEST env008
-# TEST Test environments and subdirectories.
-proc env008 { } {
- global errorInfo
- global errorCode
-
- source ./include.tcl
-
- env_cleanup $testdir
-
- set subdir 1/1
- set subdir1 1/2
- file mkdir $testdir/$subdir $testdir/$subdir1
- set testfile $subdir/env.db
-
- puts "Env008: Test of environments and subdirectories."
-
- puts "\tEnv008.a: Create env and db."
- set env [berkdb_env -create -mode 0644 -home $testdir -txn]
- error_check_good env [is_valid_env $env] TRUE
-
- puts "\tEnv008.b: Remove db in subdir."
- env008_db $env $testfile
- error_check_good dbremove:$testfile \
- [berkdb dbremove -env $env $testfile] 0
-
- #
- # Rather than remaking the db every time for the renames
- # just move around the new file name to another new file
- # name.
- #
- puts "\tEnv008.c: Rename db in subdir."
- env008_db $env $testfile
- set newfile $subdir/new.db
- error_check_good dbrename:$testfile/.. \
- [berkdb dbrename -env $env $testfile $newfile] 0
- set testfile $newfile
-
- puts "\tEnv008.d: Rename db to parent dir."
- set newfile $subdir/../new.db
- error_check_good dbrename:$testfile/.. \
- [berkdb dbrename -env $env $testfile $newfile] 0
- set testfile $newfile
-
- puts "\tEnv008.e: Rename db to child dir."
- set newfile $subdir/env.db
- error_check_good dbrename:$testfile/.. \
- [berkdb dbrename -env $env $testfile $newfile] 0
- set testfile $newfile
-
- puts "\tEnv008.f: Rename db to another dir."
- set newfile $subdir1/env.db
- error_check_good dbrename:$testfile/.. \
- [berkdb dbrename -env $env $testfile $newfile] 0
-
- error_check_good envclose [$env close] 0
- puts "\tEnv008 complete."
-}
-
-proc env008_db { env testfile } {
- set db [berkdb_open -env $env -create -btree $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set ret [$db put key data]
- error_check_good dbput $ret 0
- error_check_good dbclose [$db close] 0
-}
diff --git a/bdb/test/env009.tcl b/bdb/test/env009.tcl
deleted file mode 100644
index 264d5e2dfec..00000000000
--- a/bdb/test/env009.tcl
+++ /dev/null
@@ -1,57 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env009.tcl,v 11.5 2002/08/12 20:40:36 sandstro Exp $
-#
-# TEST env009
-# TEST Test calls to all the various stat functions. We have several
-# TEST sprinkled throughout the test suite, but this will ensure that
-# TEST we run all of them at least once.
-proc env009 { } {
- source ./include.tcl
-
- puts "Env009: Various stat function test."
-
- env_cleanup $testdir
- puts "\tEnv009.a: Setting up env and a database."
-
- set e [berkdb_env -create -home $testdir -txn]
- error_check_good dbenv [is_valid_env $e] TRUE
- set dbbt [berkdb_open -create -btree $testdir/env009bt.db]
- error_check_good dbopen [is_valid_db $dbbt] TRUE
- set dbh [berkdb_open -create -hash $testdir/env009h.db]
- error_check_good dbopen [is_valid_db $dbh] TRUE
- set dbq [berkdb_open -create -btree $testdir/env009q.db]
- error_check_good dbopen [is_valid_db $dbq] TRUE
-
- set rlist {
- { "lock_stat" "Maximum locks" "Env009.b"}
- { "log_stat" "Magic" "Env009.c"}
- { "mpool_stat" "Number of caches" "Env009.d"}
- { "txn_stat" "Max Txns" "Env009.e"}
- }
-
- foreach pair $rlist {
- set cmd [lindex $pair 0]
- set str [lindex $pair 1]
- set msg [lindex $pair 2]
- puts "\t$msg: $cmd"
- set ret [$e $cmd]
- error_check_good $cmd [is_substr $ret $str] 1
- }
- puts "\tEnv009.f: btree stats"
- set ret [$dbbt stat]
- error_check_good $cmd [is_substr $ret "Magic"] 1
- puts "\tEnv009.g: hash stats"
- set ret [$dbh stat]
- error_check_good $cmd [is_substr $ret "Magic"] 1
- puts "\tEnv009.f: queue stats"
- set ret [$dbq stat]
- error_check_good $cmd [is_substr $ret "Magic"] 1
- error_check_good dbclose [$dbbt close] 0
- error_check_good dbclose [$dbh close] 0
- error_check_good dbclose [$dbq close] 0
- error_check_good envclose [$e close] 0
-}
diff --git a/bdb/test/env010.tcl b/bdb/test/env010.tcl
deleted file mode 100644
index 4444e34e439..00000000000
--- a/bdb/test/env010.tcl
+++ /dev/null
@@ -1,49 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env010.tcl,v 1.4 2002/02/20 17:08:21 sandstro Exp $
-#
-# TEST env010
-# TEST Run recovery in an empty directory, and then make sure we can still
-# TEST create a database in that directory.
-proc env010 { } {
- source ./include.tcl
-
- puts "Env010: Test of recovery in an empty directory."
-
- # Create a new directory used only for this test
-
- if { [file exists $testdir/EMPTYDIR] != 1 } {
- file mkdir $testdir/EMPTYDIR
- } else {
- puts "\nDirectory already exists."
- }
-
- # Do the test twice, for regular recovery and catastrophic
- # Open environment and recover, but don't create a database
-
- foreach rmethod {recover recover_fatal} {
-
- puts "\tEnv010: Creating env for $rmethod test."
- env_cleanup $testdir/EMPTYDIR
- set e [berkdb_env -create -home $testdir/EMPTYDIR -$rmethod]
- error_check_good dbenv [is_valid_env $e] TRUE
-
- # Open and close a database
- # The method doesn't matter, so picked btree arbitrarily
-
- set db [eval {berkdb_open -env $e \
- -btree -create -mode 0644} ]
- error_check_good dbopen [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- # Close environment
-
- error_check_good envclose [$e close] 0
- error_check_good berkdb:envremove \
- [berkdb envremove -home $testdir/EMPTYDIR] 0
- }
- puts "\tEnv010 complete."
-}
diff --git a/bdb/test/env011.tcl b/bdb/test/env011.tcl
deleted file mode 100644
index 4061bb3fe51..00000000000
--- a/bdb/test/env011.tcl
+++ /dev/null
@@ -1,39 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: env011.tcl,v 1.2 2002/02/20 17:08:21 sandstro Exp $
-#
-# TEST env011
-# TEST Run with region overwrite flag.
-proc env011 { } {
- source ./include.tcl
-
- puts "Env011: Test of region overwriting."
- env_cleanup $testdir
-
- puts "\tEnv011: Creating/closing env for open test."
- set e [berkdb_env -create -overwrite -home $testdir -txn]
- error_check_good dbenv [is_valid_env $e] TRUE
- set db [eval \
- {berkdb_open -auto_commit -env $e -btree -create -mode 0644} ]
- error_check_good dbopen [is_valid_db $db] TRUE
- set ret [eval {$db put} -auto_commit "aaa" "data"]
- error_check_good put $ret 0
- set ret [eval {$db put} -auto_commit "bbb" "data"]
- error_check_good put $ret 0
- error_check_good db_close [$db close] 0
- error_check_good envclose [$e close] 0
-
- puts "\tEnv011: Opening the environment with overwrite set."
- set e [berkdb_env -create -overwrite -home $testdir -txn -recover]
- error_check_good dbenv [is_valid_env $e] TRUE
- error_check_good envclose [$e close] 0
-
- puts "\tEnv011: Removing the environment with overwrite set."
- error_check_good berkdb:envremove \
- [berkdb envremove -home $testdir -overwrite] 0
-
- puts "\tEnv011 complete."
-}
diff --git a/bdb/test/hsearch.tcl b/bdb/test/hsearch.tcl
deleted file mode 100644
index afeed93f74e..00000000000
--- a/bdb/test/hsearch.tcl
+++ /dev/null
@@ -1,51 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: hsearch.tcl,v 11.9 2002/01/11 15:53:24 bostic Exp $
-#
-# Historic Hsearch interface test.
-# Use the first 1000 entries from the dictionary.
-# Insert each with self as key and data; retrieve each.
-# After all are entered, retrieve all; compare output to original.
-# Then reopen the file, re-retrieve everything.
-# Finally, delete everything.
-proc hsearch { { nentries 1000 } } {
- source ./include.tcl
-
- puts "HSEARCH interfaces test: $nentries"
-
- # Create the database and open the dictionary
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir NULL
-
- error_check_good hcreate [berkdb hcreate $nentries] 0
- set did [open $dict]
- set count 0
-
- puts "\tHSEARCH.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- set ret [berkdb hsearch $str $str enter]
- error_check_good hsearch:enter $ret 0
-
- set d [berkdb hsearch $str 0 find]
- error_check_good hsearch:find $d $str
- incr count
- }
- close $did
-
- puts "\tHSEARCH.b: re-get loop"
- set did [open $dict]
- # Here is the loop where we retrieve each key
- while { [gets $did str] != -1 && $count < $nentries } {
- set d [berkdb hsearch $str 0 find]
- error_check_good hsearch:find $d $str
- incr count
- }
- close $did
- error_check_good hdestroy [berkdb hdestroy] 0
-}
diff --git a/bdb/test/join.tcl b/bdb/test/join.tcl
deleted file mode 100644
index 87b0d1fae58..00000000000
--- a/bdb/test/join.tcl
+++ /dev/null
@@ -1,455 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: join.tcl,v 11.21 2002/02/20 17:08:22 sandstro Exp $
-#
-# TEST jointest
-# TEST Test duplicate assisted joins. Executes 1, 2, 3 and 4-way joins
-# TEST with differing index orders and selectivity.
-# TEST
-# TEST We'll test 2-way, 3-way, and 4-way joins and figure that if those
-# TEST work, everything else does as well. We'll create test databases
-# TEST called join1.db, join2.db, join3.db, and join4.db. The number on
-# TEST the database describes the duplication -- duplicates are of the
-# TEST form 0, N, 2N, 3N, ... where N is the number of the database.
-# TEST Primary.db is the primary database, and null.db is the database
-# TEST that has no matching duplicates.
-# TEST
-# TEST We should test this on all btrees, all hash, and a combination thereof
-proc jointest { {psize 8192} {with_dup_dups 0} {flags 0} } {
- global testdir
- global rand_init
- source ./include.tcl
-
- env_cleanup $testdir
- berkdb srand $rand_init
-
- # Use one environment for all database opens so we don't
- # need oodles of regions.
- set env [berkdb_env -create -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- # With the new offpage duplicate code, we don't support
- # duplicate duplicates in sorted dup sets. Thus, if with_dup_dups
- # is greater than one, run only with "-dup".
- if { $with_dup_dups > 1 } {
- set doptarray {"-dup"}
- } else {
- set doptarray {"-dup -dupsort" "-dup" RANDOMMIX RANDOMMIX }
- }
-
- # NB: these flags are internal only, ok
- foreach m "DB_BTREE DB_HASH DB_BOTH" {
- # run with two different random mixes.
- foreach dopt $doptarray {
- set opt [list "-env" $env $dopt]
-
- puts "Join test: ($m $dopt) psize $psize,\
- $with_dup_dups dup\
- dups, flags $flags."
-
- build_all $m $psize $opt oa $with_dup_dups
-
- # null.db is db_built fifth but is referenced by
- # zero; set up the option array appropriately.
- set oa(0) $oa(5)
-
- # Build the primary
- puts "\tBuilding the primary database $m"
- set oflags "-create -truncate -mode 0644 -env $env\
- [conv $m [berkdb random_int 1 2]]"
- set db [eval {berkdb_open} $oflags primary.db]
- error_check_good dbopen [is_valid_db $db] TRUE
- for { set i 0 } { $i < 1000 } { incr i } {
- set key [format "%04d" $i]
- set ret [$db put $key stub]
- error_check_good "primary put" $ret 0
- }
- error_check_good "primary close" [$db close] 0
- set did [open $dict]
- gets $did str
- do_join primary.db "1 0" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "2 0" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "3 0" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "4 0" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "1" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "2" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "3" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "4" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "1 2" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "1 2 3" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "1 2 3 4" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "2 1" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "3 2 1" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "4 3 2 1" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "1 3" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "3 1" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "1 4" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "4 1" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "2 3" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "3 2" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "2 4" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "4 2" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "3 4" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "4 3" $str oa $flags $with_dup_dups
- gets $did str
- do_join primary.db "2 3 4" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "3 4 1" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "4 2 1" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "0 2 1" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "3 2 0" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "4 3 2 1" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "4 3 0 1" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "3 3 3" $str oa $flags\
- $with_dup_dups
- gets $did str
- do_join primary.db "2 2 3 3" $str oa $flags\
- $with_dup_dups
- gets $did str2
- gets $did str
- do_join primary.db "1 2" $str oa $flags\
- $with_dup_dups "3" $str2
-
- # You really don't want to run this section
- # with $with_dup_dups > 2.
- if { $with_dup_dups <= 2 } {
- gets $did str2
- gets $did str
- do_join primary.db "1 2 3" $str\
- oa $flags $with_dup_dups "3 3 1" $str2
- gets $did str2
- gets $did str
- do_join primary.db "4 0 2" $str\
- oa $flags $with_dup_dups "4 3 3" $str2
- gets $did str2
- gets $did str
- do_join primary.db "3 2 1" $str\
- oa $flags $with_dup_dups "0 2" $str2
- gets $did str2
- gets $did str
- do_join primary.db "2 2 3 3" $str\
- oa $flags $with_dup_dups "1 4 4" $str2
- gets $did str2
- gets $did str
- do_join primary.db "2 2 3 3" $str\
- oa $flags $with_dup_dups "0 0 4 4" $str2
- gets $did str2
- gets $did str
- do_join primary.db "2 2 3 3" $str2\
- oa $flags $with_dup_dups "2 4 4" $str
- gets $did str2
- gets $did str
- do_join primary.db "2 2 3 3" $str2\
- oa $flags $with_dup_dups "0 0 4 4" $str
- }
- close $did
- }
- }
-
- error_check_good env_close [$env close] 0
-}
-
-proc build_all { method psize opt oaname with_dup_dups {nentries 100} } {
- global testdir
- db_build join1.db $nentries 50 1 [conv $method 1]\
- $psize $opt $oaname $with_dup_dups
- db_build join2.db $nentries 25 2 [conv $method 2]\
- $psize $opt $oaname $with_dup_dups
- db_build join3.db $nentries 16 3 [conv $method 3]\
- $psize $opt $oaname $with_dup_dups
- db_build join4.db $nentries 12 4 [conv $method 4]\
- $psize $opt $oaname $with_dup_dups
- db_build null.db $nentries 0 5 [conv $method 5]\
- $psize $opt $oaname $with_dup_dups
-}
-
-proc conv { m i } {
- switch -- $m {
- DB_HASH { return "-hash"}
- "-hash" { return "-hash"}
- DB_BTREE { return "-btree"}
- "-btree" { return "-btree"}
- DB_BOTH {
- if { [expr $i % 2] == 0 } {
- return "-hash";
- } else {
- return "-btree";
- }
- }
- }
-}
-
-proc random_opts { } {
- set j [berkdb random_int 0 1]
- if { $j == 0 } {
- return " -dup"
- } else {
- return " -dup -dupsort"
- }
-}
-
-proc db_build { name nkeys ndups dup_interval method psize lopt oaname \
- with_dup_dups } {
- source ./include.tcl
-
- # Get array of arg names (from two levels up the call stack)
- upvar 2 $oaname oa
-
- # Search for "RANDOMMIX" in $opt, and if present, replace
- # with " -dup" or " -dup -dupsort" at random.
- set i [lsearch $lopt RANDOMMIX]
- if { $i != -1 } {
- set lopt [lreplace $lopt $i $i [random_opts]]
- }
-
- # Save off db_open arguments for this database.
- set opt [eval concat $lopt]
- set oa($dup_interval) $opt
-
- # Create the database and open the dictionary
- set oflags "-create -truncate -mode 0644 $method\
- -pagesize $psize"
- set db [eval {berkdb_open} $oflags $opt $name]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
- set count 0
- puts -nonewline "\tBuilding $name: $nkeys keys "
- puts -nonewline "with $ndups duplicates at interval of $dup_interval"
- if { $with_dup_dups > 0 } {
- puts ""
- puts "\t\tand $with_dup_dups duplicate duplicates."
- } else {
- puts "."
- }
- for { set count 0 } { [gets $did str] != -1 && $count < $nkeys } {
- incr count} {
- set str $str$name
- # We need to make sure that the dups are inserted in a
- # random, or near random, order. Do this by generating
- # them and putting each in a list, then sorting the list
- # at random.
- set duplist {}
- for { set i 0 } { $i < $ndups } { incr i } {
- set data [format "%04d" [expr $i * $dup_interval]]
- lappend duplist $data
- }
- # randomize the list
- for { set i 0 } { $i < $ndups } {incr i } {
- # set j [berkdb random_int $i [expr $ndups - 1]]
- set j [expr ($i % 2) + $i]
- if { $j >= $ndups } { set j $i }
- set dupi [lindex $duplist $i]
- set dupj [lindex $duplist $j]
- set duplist [lreplace $duplist $i $i $dupj]
- set duplist [lreplace $duplist $j $j $dupi]
- }
- foreach data $duplist {
- if { $with_dup_dups != 0 } {
- for { set j 0 }\
- { $j < $with_dup_dups }\
- {incr j} {
- set ret [$db put $str $data]
- error_check_good put$j $ret 0
- }
- } else {
- set ret [$db put $str $data]
- error_check_good put $ret 0
- }
- }
-
- if { $ndups == 0 } {
- set ret [$db put $str NODUP]
- error_check_good put $ret 0
- }
- }
- close $did
- error_check_good close:$name [$db close] 0
-}
-
-proc do_join { primary dbs key oanm flags with_dup_dups {dbs2 ""} {key2 ""} } {
- global testdir
- source ./include.tcl
-
- upvar $oanm oa
-
- puts -nonewline "\tJoining: $dbs on $key"
- if { $dbs2 == "" } {
- puts ""
- } else {
- puts " with $dbs2 on $key2"
- }
-
- # Open all the databases
- set p [berkdb_open -unknown $testdir/$primary]
- error_check_good "primary open" [is_valid_db $p] TRUE
-
- set dblist ""
- set curslist ""
-
- set ndx [llength $dbs]
-
- foreach i [concat $dbs $dbs2] {
- set opt $oa($i)
- set db [eval {berkdb_open -unknown} $opt [n_to_name $i]]
- error_check_good "[n_to_name $i] open" [is_valid_db $db] TRUE
- set curs [$db cursor]
- error_check_good "$db cursor" \
- [is_substr $curs "$db.c"] 1
- lappend dblist $db
- lappend curslist $curs
-
- if { $ndx > 0 } {
- set realkey [concat $key[n_to_name $i]]
- } else {
- set realkey [concat $key2[n_to_name $i]]
- }
-
- set pair [$curs get -set $realkey]
- error_check_good cursor_set:$realkey:$pair \
- [llength [lindex $pair 0]] 2
-
- incr ndx -1
- }
-
- set join_curs [eval {$p join} $curslist]
- error_check_good join_cursor \
- [is_substr $join_curs "$p.c"] 1
-
- # Calculate how many dups we expect.
- # We go through the list of indices. If we find a 0, then we
- # expect 0 dups. For everything else, we look at pairs of numbers,
- # if the are relatively prime, multiply them and figure out how
- # many times that goes into 50. If they aren't relatively prime,
- # take the number of times the larger goes into 50.
- set expected 50
- set last 1
- foreach n [concat $dbs $dbs2] {
- if { $n == 0 } {
- set expected 0
- break
- }
- if { $last == $n } {
- continue
- }
-
- if { [expr $last % $n] == 0 || [expr $n % $last] == 0 } {
- if { $n > $last } {
- set last $n
- set expected [expr 50 / $last]
- }
- } else {
- set last [expr $n * $last / [gcd $n $last]]
- set expected [expr 50 / $last]
- }
- }
-
- # If $with_dup_dups is greater than zero, each datum has
- # been inserted $with_dup_dups times. So we expect the number
- # of dups to go up by a factor of ($with_dup_dups)^(number of databases)
-
- if { $with_dup_dups > 0 } {
- foreach n [concat $dbs $dbs2] {
- set expected [expr $expected * $with_dup_dups]
- }
- }
-
- set ndups 0
- if { $flags == " -join_item"} {
- set l 1
- } else {
- set flags ""
- set l 2
- }
- for { set pair [eval {$join_curs get} $flags] } { \
- [llength [lindex $pair 0]] == $l } {
- set pair [eval {$join_curs get} $flags] } {
- set k [lindex [lindex $pair 0] 0]
- foreach i $dbs {
- error_check_bad valid_dup:$i:$dbs $i 0
- set kval [string trimleft $k 0]
- if { [string length $kval] == 0 } {
- set kval 0
- }
- error_check_good valid_dup:$i:$dbs [expr $kval % $i] 0
- }
- incr ndups
- }
- error_check_good number_of_dups:$dbs $ndups $expected
-
- error_check_good close_primary [$p close] 0
- foreach i $curslist {
- error_check_good close_cursor:$i [$i close] 0
- }
- foreach i $dblist {
- error_check_good close_index:$i [$i close] 0
- }
-}
-
-proc n_to_name { n } {
-global testdir
- if { $n == 0 } {
- return null.db;
- } else {
- return join$n.db;
- }
-}
-
-proc gcd { a b } {
- set g 1
-
- for { set i 2 } { $i <= $a } { incr i } {
- if { [expr $a % $i] == 0 && [expr $b % $i] == 0 } {
- set g $i
- }
- }
- return $g
-}
diff --git a/bdb/test/lock001.tcl b/bdb/test/lock001.tcl
deleted file mode 100644
index 1afcc471fc1..00000000000
--- a/bdb/test/lock001.tcl
+++ /dev/null
@@ -1,122 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: lock001.tcl,v 11.19 2002/04/25 19:30:28 sue Exp $
-#
-
-# TEST lock001
-# TEST Make sure that the basic lock tests work. Do some simple gets
-# TEST and puts for a single locker.
-proc lock001 { {iterations 1000} {maxlocks 1000} } {
- source ./include.tcl
- global lock_curid
- global lock_maxid
-
- set save_curid $lock_curid
- set save_maxid $lock_maxid
-
- # Set defaults
- # Adjusted to make exact match of isqrt
- #set conflicts { 3 0 0 0 0 0 1 0 1 1}
- #set conflicts { 3 0 0 0 0 1 0 1 1}
-
- set conflicts { 0 0 0 0 0 1 0 1 1}
- set nmodes [isqrt [llength $conflicts]]
-
- # Cleanup
- env_cleanup $testdir
-
- # Open the region we'll use for testing.
- set eflags "-create -lock -home $testdir -mode 0644 \
- -lock_max $maxlocks -lock_conflict {$nmodes {$conflicts}}"
- set env [eval {berkdb_env} $eflags]
- error_check_good env [is_valid_env $env] TRUE
- error_check_good lock_id_set \
- [$env lock_id_set $lock_curid $lock_maxid] 0
-
- puts "Lock001: test basic lock operations"
- set locker [$env lock_id]
- # Get and release each type of lock
- puts "\tLock001.a: get and release each type of lock"
- foreach m {ng write read} {
- set obj obj$m
- set lockp [$env lock_get $m $locker $obj]
- error_check_good lock_get:a [is_blocked $lockp] 0
- error_check_good lock_get:a [is_substr $lockp $env] 1
- set ret [ $lockp put ]
- error_check_good lock_put $ret 0
- }
-
- # Get a bunch of locks for the same locker; these should work
- set obj OBJECT
- puts "\tLock001.b: Get a bunch of locks for the same locker"
- foreach m {ng write read} {
- set lockp [$env lock_get $m $locker $obj ]
- lappend locklist $lockp
- error_check_good lock_get:b [is_blocked $lockp] 0
- error_check_good lock_get:b [is_substr $lockp $env] 1
- }
- release_list $locklist
-
- set locklist {}
- # Check that reference counted locks work
- puts "\tLock001.c: reference counted locks."
- for {set i 0} { $i < 10 } {incr i} {
- set lockp [$env lock_get -nowait write $locker $obj]
- error_check_good lock_get:c [is_blocked $lockp] 0
- error_check_good lock_get:c [is_substr $lockp $env] 1
- lappend locklist $lockp
- }
- release_list $locklist
-
- # Finally try some failing locks
- set locklist {}
- foreach i {ng write read} {
- set lockp [$env lock_get $i $locker $obj]
- lappend locklist $lockp
- error_check_good lock_get:d [is_blocked $lockp] 0
- error_check_good lock_get:d [is_substr $lockp $env] 1
- }
-
- # Change the locker
- set locker [$env lock_id]
- set blocklist {}
- # Skip NO_LOCK lock.
- puts "\tLock001.d: Change the locker, acquire read and write."
- foreach i {write read} {
- catch {$env lock_get -nowait $i $locker $obj} ret
- error_check_good lock_get:e [is_substr $ret "not granted"] 1
- #error_check_good lock_get:e [is_substr $lockp $env] 1
- #error_check_good lock_get:e [is_blocked $lockp] 0
- }
- # Now release original locks
- release_list $locklist
-
- # Now re-acquire blocking locks
- set locklist {}
- puts "\tLock001.e: Re-acquire blocking locks."
- foreach i {write read} {
- set lockp [$env lock_get -nowait $i $locker $obj ]
- error_check_good lock_get:f [is_substr $lockp $env] 1
- error_check_good lock_get:f [is_blocked $lockp] 0
- lappend locklist $lockp
- }
-
- # Now release new locks
- release_list $locklist
- error_check_good free_id [$env lock_id_free $locker] 0
-
- error_check_good envclose [$env close] 0
-
-}
-
-# Blocked locks appear as lockmgrN.lockM\nBLOCKED
-proc is_blocked { l } {
- if { [string compare $l BLOCKED ] == 0 } {
- return 1
- } else {
- return 0
- }
-}
diff --git a/bdb/test/lock002.tcl b/bdb/test/lock002.tcl
deleted file mode 100644
index a1ad8760c9d..00000000000
--- a/bdb/test/lock002.tcl
+++ /dev/null
@@ -1,157 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: lock002.tcl,v 11.19 2002/04/25 19:30:29 sue Exp $
-#
-# TEST lock002
-# TEST Exercise basic multi-process aspects of lock.
-proc lock002 { {maxlocks 1000} {conflicts {0 0 0 0 0 1 0 1 1} } } {
- source ./include.tcl
-
- puts "Lock002: Basic multi-process lock tests."
-
- env_cleanup $testdir
-
- set nmodes [isqrt [llength $conflicts]]
-
- # Open the lock
- mlock_open $maxlocks $nmodes $conflicts
- mlock_wait
-}
-
-# Make sure that we can create a region; destroy it, attach to it,
-# detach from it, etc.
-proc mlock_open { maxl nmodes conflicts } {
- source ./include.tcl
- global lock_curid
- global lock_maxid
-
- puts "\tLock002.a multi-process open/close test"
-
- # Open/Create region here. Then close it and try to open from
- # other test process.
- set env_cmd [concat "berkdb_env -create -mode 0644 \
- -lock -lock_max $maxl -lock_conflict" \
- [list [list $nmodes $conflicts]] "-home $testdir"]
- set local_env [eval $env_cmd]
- $local_env lock_id_set $lock_curid $lock_maxid
- error_check_good env_open [is_valid_env $local_env] TRUE
-
- set ret [$local_env close]
- error_check_good env_close $ret 0
-
- # Open from other test process
- set env_cmd "berkdb_env -mode 0644 -home $testdir"
-
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
-
- set remote_env [send_cmd $f1 $env_cmd]
- error_check_good remote:env_open [is_valid_env $remote_env] TRUE
-
- # Now make sure that we can reopen the region.
- set local_env [eval $env_cmd]
- error_check_good env_open [is_valid_env $local_env] TRUE
- set ret [$local_env close]
- error_check_good env_close $ret 0
-
- # Try closing the remote region
- set ret [send_cmd $f1 "$remote_env close"]
- error_check_good remote:lock_close $ret 0
-
- # Try opening for create. Will succeed because region exists.
- set env_cmd [concat "berkdb_env -create -mode 0644 \
- -lock -lock_max $maxl -lock_conflict" \
- [list [list $nmodes $conflicts]] "-home $testdir"]
- set local_env [eval $env_cmd]
- error_check_good remote:env_open [is_valid_env $local_env] TRUE
-
- # close locally
- reset_env $local_env
-
- # Close and exit remote
- set ret [send_cmd $f1 "reset_env $remote_env"]
-
- catch { close $f1 } result
-}
-
-proc mlock_wait { } {
- source ./include.tcl
-
- puts "\tLock002.b multi-process get/put wait test"
-
- # Open region locally
- set env_cmd "berkdb_env -lock -home $testdir"
- set local_env [eval $env_cmd]
- error_check_good env_open [is_valid_env $local_env] TRUE
-
- # Open region remotely
- set f1 [open |$tclsh_path r+]
-
- puts $f1 "source $test_path/test.tcl"
-
- set remote_env [send_cmd $f1 $env_cmd]
- error_check_good remote:env_open [is_valid_env $remote_env] TRUE
-
- # Get a write lock locally; try for the read lock
- # remotely. We hold the locks for several seconds
- # so that we can use timestamps to figure out if the
- # other process waited.
- set locker1 [$local_env lock_id]
- set local_lock [$local_env lock_get write $locker1 object1]
- error_check_good lock_get [is_valid_lock $local_lock $local_env] TRUE
-
- # Now request a lock that we expect to hang; generate
- # timestamps so we can tell if it actually hangs.
- set locker2 [send_cmd $f1 "$remote_env lock_id"]
- set remote_lock [send_timed_cmd $f1 1 \
- "set lock \[$remote_env lock_get write $locker2 object1\]"]
-
- # Now sleep before releasing lock
- tclsleep 5
- set result [$local_lock put]
- error_check_good lock_put $result 0
-
- # Now get the result from the other script
- set result [rcv_result $f1]
- error_check_good lock_get:remote_time [expr $result > 4] 1
-
- # Now get the remote lock
- set remote_lock [send_cmd $f1 "puts \$lock"]
- error_check_good remote:lock_get \
- [is_valid_lock $remote_lock $remote_env] TRUE
-
- # Now make the other guy wait 5 second and then release his
- # lock while we try to get a write lock on it
- set start [timestamp -r]
-
- set ret [send_cmd $f1 "tclsleep 5"]
-
- set ret [send_cmd $f1 "$remote_lock put"]
-
- set local_lock [$local_env lock_get write $locker1 object1]
- error_check_good lock_get:time \
- [expr [expr [timestamp -r] - $start] > 2] 1
- error_check_good lock_get:local \
- [is_valid_lock $local_lock $local_env] TRUE
-
- # Now check remote's result
- set result [rcv_result $f1]
- error_check_good lock_put:remote $result 0
-
- # Clean up remote
- set result [send_cmd $f1 "$remote_env lock_id_free $locker2" ]
- error_check_good remote_free_id $result 0
- set ret [send_cmd $f1 "reset_env $remote_env"]
-
- close $f1
-
- # Now close up locally
- set ret [$local_lock put]
- error_check_good lock_put $ret 0
- error_check_good lock_id_free [$local_env lock_id_free $locker1] 0
-
- reset_env $local_env
-}
diff --git a/bdb/test/lock003.tcl b/bdb/test/lock003.tcl
deleted file mode 100644
index 91a8a2e90f6..00000000000
--- a/bdb/test/lock003.tcl
+++ /dev/null
@@ -1,99 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: lock003.tcl,v 11.25 2002/09/05 17:23:06 sandstro Exp $
-#
-# TEST lock003
-# TEST Exercise multi-process aspects of lock. Generate a bunch of parallel
-# TEST testers that try to randomly obtain locks; make sure that the locks
-# TEST correctly protect corresponding objects.
-proc lock003 { {iter 500} {max 1000} {procs 5} } {
- source ./include.tcl
- global lock_curid
- global lock_maxid
-
- set ldegree 5
- set objs 75
- set reads 65
- set wait 1
- set conflicts { 0 0 0 0 0 1 0 1 1}
- set seeds {}
-
- puts "Lock003: Multi-process random lock test"
-
- # Clean up after previous runs
- env_cleanup $testdir
-
- # Open/create the lock region
- puts "\tLock003.a: Create environment"
- set e [berkdb_env -create -lock -home $testdir]
- error_check_good env_open [is_substr $e env] 1
- $e lock_id_set $lock_curid $lock_maxid
-
- error_check_good env_close [$e close] 0
-
- # Now spawn off processes
- set pidlist {}
-
- for { set i 0 } {$i < $procs} {incr i} {
- if { [llength $seeds] == $procs } {
- set s [lindex $seeds $i]
- }
-# puts "$tclsh_path\
-# $test_path/wrap.tcl \
-# lockscript.tcl $testdir/$i.lockout\
-# $testdir $iter $objs $wait $ldegree $reads &"
- set p [exec $tclsh_path $test_path/wrap.tcl \
- lockscript.tcl $testdir/lock003.$i.out \
- $testdir $iter $objs $wait $ldegree $reads &]
- lappend pidlist $p
- }
-
- puts "\tLock003.b: $procs independent processes now running"
- watch_procs $pidlist 30 10800
-
- # Check for test failure
- set e [eval findfail [glob $testdir/lock003.*.out]]
- error_check_good "FAIL: error message(s) in log files" $e 0
-
- # Remove log files
- for { set i 0 } {$i < $procs} {incr i} {
- fileremove -f $testdir/lock003.$i.out
- }
-}
-
-# Create and destroy flag files to show we have an object locked, and
-# verify that the correct files exist or don't exist given that we've
-# just read or write locked a file.
-proc lock003_create { rw obj } {
- source ./include.tcl
-
- set pref $testdir/L3FLAG
- set f [open $pref.$rw.[pid].$obj w]
- close $f
-}
-
-proc lock003_destroy { obj } {
- source ./include.tcl
-
- set pref $testdir/L3FLAG
- set f [glob -nocomplain $pref.*.[pid].$obj]
- error_check_good l3_destroy [llength $f] 1
- fileremove $f
-}
-
-proc lock003_vrfy { rw obj } {
- source ./include.tcl
-
- set pref $testdir/L3FLAG
- if { [string compare $rw "write"] == 0 } {
- set fs [glob -nocomplain $pref.*.*.$obj]
- error_check_good "number of other locks on $obj" [llength $fs] 0
- } else {
- set fs [glob -nocomplain $pref.write.*.$obj]
- error_check_good "number of write locks on $obj" [llength $fs] 0
- }
-}
-
diff --git a/bdb/test/lock004.tcl b/bdb/test/lock004.tcl
deleted file mode 100644
index 7fd51ee42f2..00000000000
--- a/bdb/test/lock004.tcl
+++ /dev/null
@@ -1,29 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: lock004.tcl,v 11.5 2002/04/25 19:30:30 sue Exp $
-#
-# TEST lock004
-# TEST Test locker ids wraping around.
-
-proc lock004 {} {
- source ./include.tcl
- global lock_curid
- global lock_maxid
-
- set save_curid $lock_curid
- set save_maxid $lock_maxid
-
- set lock_curid [expr $lock_maxid - 1]
- puts "Lock004: Locker id wraparound test"
- puts "\tLock004.a: repeat lock001-lock003 with wraparound lockids"
-
- lock001
- lock002
- lock003
-
- set lock_curid $save_curid
- set lock_maxid $save_maxid
-}
diff --git a/bdb/test/lock005.tcl b/bdb/test/lock005.tcl
deleted file mode 100644
index 5afe7344d36..00000000000
--- a/bdb/test/lock005.tcl
+++ /dev/null
@@ -1,177 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2001
-# Sleepycat Software. All rights reserved.
-#
-# $Id: lock005.tcl,v 1.7 2002/08/08 15:38:07 bostic Exp $
-#
-# TEST lock005
-# TEST Check that page locks are being released properly.
-
-proc lock005 { } {
- source ./include.tcl
-
- puts "Lock005: Page lock release test"
-
- # Clean up after previous runs
- env_cleanup $testdir
-
- # Open/create the lock region
- set e [berkdb_env -create -lock -home $testdir -txn -log]
- error_check_good env_open [is_valid_env $e] TRUE
-
- # Open/create the database
- set db [berkdb open -create -auto_commit -env $e -len 10 -queue q.db]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Check that records are locking by trying to
- # fetch a record on the wrong transaction.
- puts "\tLock005.a: Verify that we are locking"
-
- # Start the first transaction
- set txn1 [$e txn -nowait]
- error_check_good txn_begin [is_valid_txn $txn1 $e] TRUE
- set ret [catch {$db put -txn $txn1 -append record1} recno1]
- error_check_good dbput_txn1 $ret 0
-
- # Start second txn while the first is still running ...
- set txn2 [$e txn -nowait]
- error_check_good txn_begin [is_valid_txn $txn2 $e] TRUE
-
- # ... and try to get a record from the first txn (should fail)
- set ret [catch {$db get -txn $txn2 $recno1} res]
- error_check_good dbget_wrong_record \
- [is_substr $res "Lock not granted"] 1
-
- # End transactions
- error_check_good txn1commit [$txn1 commit] 0
- how_many_locks 1 $e
- error_check_good txn2commit [$txn2 commit] 0
- # The number of locks stays the same here because the first
- # lock is released and the second lock was never granted.
- how_many_locks 1 $e
-
- # Test lock behavior for both abort and commit
- puts "\tLock005.b: Verify locks after abort or commit"
- foreach endorder {forward reverse} {
- end_order_test $db $e commit abort $endorder
- end_order_test $db $e abort commit $endorder
- end_order_test $db $e commit commit $endorder
- end_order_test $db $e abort abort $endorder
- }
-
- # Clean up
- error_check_good db_close [$db close] 0
- error_check_good env_close [$e close] 0
-}
-
-proc end_order_test { db e txn1end txn2end endorder } {
- # Start one transaction
- set txn1 [$e txn -nowait]
- error_check_good txn_begin [is_valid_txn $txn1 $e] TRUE
- set ret [catch {$db put -txn $txn1 -append record1} recno1]
- error_check_good dbput_txn1 $ret 0
-
- # Check number of locks
- how_many_locks 2 $e
-
- # Start a second transaction while first is still running
- set txn2 [$e txn -nowait]
- error_check_good txn_begin [is_valid_txn $txn2 $e] TRUE
- set ret [catch {$db put -txn $txn2 -append record2} recno2]
- error_check_good dbput_txn2 $ret 0
- how_many_locks 3 $e
-
- # Now commit or abort one txn and make sure the other is okay
- if {$endorder == "forward"} {
- # End transaction 1 first
- puts "\tLock005.b.1: $txn1end txn1 then $txn2end txn2"
- error_check_good txn_$txn1end [$txn1 $txn1end] 0
- how_many_locks 2 $e
-
- # txn1 is now ended, but txn2 is still running
- set ret1 [catch {$db get -txn $txn2 $recno1} res1]
- set ret2 [catch {$db get -txn $txn2 $recno2} res2]
- if { $txn1end == "commit" } {
- error_check_good txn2_sees_txn1 $ret1 0
- error_check_good txn2_sees_txn2 $ret2 0
- } else {
- # transaction 1 was aborted
- error_check_good txn2_cantsee_txn1 [llength $res1] 0
- }
-
- # End transaction 2 second
- error_check_good txn_$txn2end [$txn2 $txn2end] 0
- how_many_locks 1 $e
-
- # txn1 and txn2 should both now be invalid
- # The get no longer needs to be transactional
- set ret3 [catch {$db get $recno1} res3]
- set ret4 [catch {$db get $recno2} res4]
-
- if { $txn2end == "commit" } {
- error_check_good txn2_sees_txn1 $ret3 0
- error_check_good txn2_sees_txn2 $ret4 0
- error_check_good txn2_has_record2 \
- [is_substr $res4 "record2"] 1
- } else {
- # transaction 2 was aborted
- error_check_good txn2_cantsee_txn1 $ret3 0
- error_check_good txn2_aborted [llength $res4] 0
- }
-
- } elseif { $endorder == "reverse" } {
- # End transaction 2 first
- puts "\tLock005.b.2: $txn2end txn2 then $txn1end txn1"
- error_check_good txn_$txn2end [$txn2 $txn2end] 0
- how_many_locks 2 $e
-
- # txn2 is ended, but txn1 is still running
- set ret1 [catch {$db get -txn $txn1 $recno1} res1]
- set ret2 [catch {$db get -txn $txn1 $recno2} res2]
- if { $txn2end == "commit" } {
- error_check_good txn1_sees_txn1 $ret1 0
- error_check_good txn1_sees_txn2 $ret2 0
- } else {
- # transaction 2 was aborted
- error_check_good txn1_cantsee_txn2 [llength $res2] 0
- }
-
- # End transaction 1 second
- error_check_good txn_$txn1end [$txn1 $txn1end] 0
- how_many_locks 1 $e
-
- # txn1 and txn2 should both now be invalid
- # The get no longer needs to be transactional
- set ret3 [catch {$db get $recno1} res3]
- set ret4 [catch {$db get $recno2} res4]
-
- if { $txn1end == "commit" } {
- error_check_good txn1_sees_txn1 $ret3 0
- error_check_good txn1_sees_txn2 $ret4 0
- error_check_good txn1_has_record1 \
- [is_substr $res3 "record1"] 1
- } else {
- # transaction 1 was aborted
- error_check_good txn1_cantsee_txn2 $ret4 0
- error_check_good txn1_aborted [llength $res3] 0
- }
- }
-}
-
-proc how_many_locks { expected env } {
- set stat [$env lock_stat]
- set str "Current number of locks"
- set checked 0
- foreach statpair $stat {
- if { $checked == 1 } {
- break
- }
- if { [is_substr [lindex $statpair 0] $str] != 0} {
- set checked 1
- set nlocks [lindex $statpair 1]
- error_check_good expected_nlocks $nlocks $expected
- }
- }
- error_check_good checked $checked 1
-}
diff --git a/bdb/test/lockscript.tcl b/bdb/test/lockscript.tcl
deleted file mode 100644
index 812339a4a70..00000000000
--- a/bdb/test/lockscript.tcl
+++ /dev/null
@@ -1,117 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: lockscript.tcl,v 11.17 2002/02/20 17:08:23 sandstro Exp $
-#
-# Random lock tester.
-# Usage: lockscript dir numiters numobjs sleepint degree readratio
-# dir: lock directory.
-# numiters: Total number of iterations.
-# numobjs: Number of objects on which to lock.
-# sleepint: Maximum sleep interval.
-# degree: Maximum number of locks to acquire at once
-# readratio: Percent of locks that should be reads.
-
-source ./include.tcl
-source $test_path/test.tcl
-
-set usage "lockscript dir numiters numobjs sleepint degree readratio"
-
-# Verify usage
-if { $argc != 6 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set dir [lindex $argv 0]
-set numiters [ lindex $argv 1 ]
-set numobjs [ lindex $argv 2 ]
-set sleepint [ lindex $argv 3 ]
-set degree [ lindex $argv 4 ]
-set readratio [ lindex $argv 5 ]
-
-# Initialize random number generator
-global rand_init
-berkdb srand $rand_init
-
-
-catch { berkdb_env -create -lock -home $dir } e
-error_check_good env_open [is_substr $e env] 1
-catch { $e lock_id } locker
-error_check_good locker [is_valid_locker $locker] TRUE
-
-puts -nonewline "Beginning execution for $locker: $numiters $numobjs "
-puts "$sleepint $degree $readratio"
-flush stdout
-
-for { set iter 0 } { $iter < $numiters } { incr iter } {
- set nlocks [berkdb random_int 1 $degree]
- # We will always lock objects in ascending order to avoid
- # deadlocks.
- set lastobj 1
- set locklist {}
- set objlist {}
- for { set lnum 0 } { $lnum < $nlocks } { incr lnum } {
- # Pick lock parameters
- set obj [berkdb random_int $lastobj $numobjs]
- set lastobj [expr $obj + 1]
- set x [berkdb random_int 1 100 ]
- if { $x <= $readratio } {
- set rw read
- } else {
- set rw write
- }
- puts "[timestamp -c] $locker $lnum: $rw $obj"
-
- # Do get; add to list
- catch {$e lock_get $rw $locker $obj} lockp
- error_check_good lock_get [is_valid_lock $lockp $e] TRUE
-
- # Create a file to flag that we've a lock of the given
- # type, after making sure only other read locks exist
- # (if we're read locking) or no other locks exist (if
- # we're writing).
- lock003_vrfy $rw $obj
- lock003_create $rw $obj
- lappend objlist [list $obj $rw]
-
- lappend locklist $lockp
- if {$lastobj > $numobjs} {
- break
- }
- }
- # Pick sleep interval
- puts "[timestamp -c] $locker sleeping"
- # We used to sleep 1 to $sleepint seconds. This makes the test
- # run for hours. Instead, make it sleep for 10 to $sleepint * 100
- # milliseconds, for a maximum sleep time of 0.5 s.
- after [berkdb random_int 10 [expr $sleepint * 100]]
- puts "[timestamp -c] $locker awake"
-
- # Now release locks
- puts "[timestamp -c] $locker released locks"
-
- # Delete our locking flag files, then reverify. (Note that the
- # locking flag verification function assumes that our own lock
- # is not currently flagged.)
- foreach pair $objlist {
- set obj [lindex $pair 0]
- set rw [lindex $pair 1]
- lock003_destroy $obj
- lock003_vrfy $rw $obj
- }
-
- release_list $locklist
- flush stdout
-}
-
-set ret [$e close]
-error_check_good env_close $ret 0
-
-puts "[timestamp -c] $locker Complete"
-flush stdout
-
-exit
diff --git a/bdb/test/log001.tcl b/bdb/test/log001.tcl
deleted file mode 100644
index 87df780cb5a..00000000000
--- a/bdb/test/log001.tcl
+++ /dev/null
@@ -1,120 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: log001.tcl,v 11.29 2002/04/30 20:27:56 sue Exp $
-#
-
-# TEST log001
-# TEST Read/write log records.
-proc log001 { } {
- global passwd
- global rand_init
-
- berkdb srand $rand_init
- set iter 1000
- set max [expr 1024 * 128]
- log001_body $max $iter 1
- log001_body $max $iter 0
- log001_body $max $iter 1 "-encryptaes $passwd"
- log001_body $max $iter 0 "-encryptaes $passwd"
- log001_body $max [expr $iter * 15] 1
- log001_body $max [expr $iter * 15] 0
- log001_body $max [expr $iter * 15] 1 "-encryptaes $passwd"
- log001_body $max [expr $iter * 15] 0 "-encryptaes $passwd"
-}
-
-proc log001_body { max nrecs fixedlength {encargs ""} } {
- source ./include.tcl
-
- puts -nonewline "Log001: Basic put/get log records "
- if { $fixedlength == 1 } {
- puts "(fixed-length $encargs)"
- } else {
- puts "(variable-length $encargs)"
- }
-
- env_cleanup $testdir
-
- set env [eval {berkdb_env -log -create -home $testdir -mode 0644} \
- $encargs -log_max $max]
- error_check_good envopen [is_valid_env $env] TRUE
-
- # We will write records to the log and make sure we can
- # read them back correctly. We'll use a standard pattern
- # repeated some number of times for each record.
- set lsn_list {}
- set rec_list {}
- puts "\tLog001.a: Writing $nrecs log records"
- for { set i 0 } { $i < $nrecs } { incr i } {
- set rec ""
- for { set j 0 } { $j < [expr $i % 10 + 1] } {incr j} {
- set rec $rec$i:logrec:$i
- }
- if { $fixedlength != 1 } {
- set rec $rec:[random_data 237 0 0]
- }
- set lsn [$env log_put $rec]
- error_check_bad log_put [is_substr $lsn log_cmd] 1
- lappend lsn_list $lsn
- lappend rec_list $rec
- }
-
- # Open a log cursor.
- set logc [$env log_cursor]
- error_check_good logc [is_valid_logc $logc $env] TRUE
-
- puts "\tLog001.b: Retrieving log records sequentially (forward)"
- set i 0
- for { set grec [$logc get -first] } { [llength $grec] != 0 } {
- set grec [$logc get -next]} {
- error_check_good log_get:seq [lindex $grec 1] \
- [lindex $rec_list $i]
- incr i
- }
-
- puts "\tLog001.c: Retrieving log records sequentially (backward)"
- set i [llength $rec_list]
- for { set grec [$logc get -last] } { [llength $grec] != 0 } {
- set grec [$logc get -prev] } {
- incr i -1
- error_check_good \
- log_get:seq [lindex $grec 1] [lindex $rec_list $i]
- }
-
- puts "\tLog001.d: Retrieving log records sequentially by LSN"
- set i 0
- foreach lsn $lsn_list {
- set grec [$logc get -set $lsn]
- error_check_good \
- log_get:seq [lindex $grec 1] [lindex $rec_list $i]
- incr i
- }
-
- puts "\tLog001.e: Retrieving log records randomly by LSN"
- set m [expr [llength $lsn_list] - 1]
- for { set i 0 } { $i < $nrecs } { incr i } {
- set recno [berkdb random_int 0 $m ]
- set lsn [lindex $lsn_list $recno]
- set grec [$logc get -set $lsn]
- error_check_good \
- log_get:seq [lindex $grec 1] [lindex $rec_list $recno]
- }
-
- puts "\tLog001.f: Retrieving first/current, last/current log record"
- set grec [$logc get -first]
- error_check_good log_get:seq [lindex $grec 1] [lindex $rec_list 0]
- set grec [$logc get -current]
- error_check_good log_get:seq [lindex $grec 1] [lindex $rec_list 0]
- set i [expr [llength $rec_list] - 1]
- set grec [$logc get -last]
- error_check_good log_get:seq [lindex $grec 1] [lindex $rec_list $i]
- set grec [$logc get -current]
- error_check_good log_get:seq [lindex $grec 1] [lindex $rec_list $i]
-
- # Close and unlink the file
- error_check_good log_cursor:close:$logc [$logc close] 0
- error_check_good env:close [$env close] 0
- error_check_good envremove [berkdb envremove -home $testdir] 0
-}
diff --git a/bdb/test/log002.tcl b/bdb/test/log002.tcl
deleted file mode 100644
index 6e91f55398f..00000000000
--- a/bdb/test/log002.tcl
+++ /dev/null
@@ -1,85 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: log002.tcl,v 11.28 2002/04/29 20:07:54 sue Exp $
-#
-
-# TEST log002
-# TEST Tests multiple logs
-# TEST Log truncation
-# TEST LSN comparison and file functionality.
-proc log002 { } {
- source ./include.tcl
-
- puts "Log002: Multiple log test w/trunc, file, compare functionality"
-
- env_cleanup $testdir
-
- set max [expr 1024 * 128]
- set env [berkdb_env -create -home $testdir -mode 0644 \
- -log -log_max $max]
- error_check_good envopen [is_valid_env $env] TRUE
-
- # We'll record every hundred'th record for later use
- set info_list {}
-
- puts "\tLog002.a: Writing log records"
- set i 0
- for {set s 0} { $s < [expr 3 * $max] } { incr s $len } {
- set rec [random_data 120 0 0]
- set len [string length $rec]
- set lsn [$env log_put $rec]
-
- if { [expr $i % 100 ] == 0 } {
- lappend info_list [list $lsn $rec]
- }
- incr i
- }
-
- puts "\tLog002.b: Checking log_compare"
- set last {0 0}
- foreach p $info_list {
- set l [lindex $p 0]
- if { [llength $last] != 0 } {
- error_check_good \
- log_compare [$env log_compare $l $last] 1
- error_check_good \
- log_compare [$env log_compare $last $l] -1
- error_check_good \
- log_compare [$env log_compare $l $l] 0
- }
- set last $l
- }
-
- puts "\tLog002.c: Checking log_file"
- set flist [glob $testdir/log*]
- foreach p $info_list {
-
- set lsn [lindex $p 0]
- set f [$env log_file $lsn]
-
- # Change all backslash separators on Windows to forward slash
- # separators, which is what the rest of the test suite expects.
- regsub -all {\\} $f {/} f
-
- error_check_bad log_file:$f [lsearch $flist $f] -1
- }
-
- puts "\tLog002.d: Verifying records"
-
- set logc [$env log_cursor]
- error_check_good log_cursor [is_valid_logc $logc $env] TRUE
-
- for {set i [expr [llength $info_list] - 1] } { $i >= 0 } { incr i -1} {
- set p [lindex $info_list $i]
- set grec [$logc get -set [lindex $p 0]]
- error_check_good log_get:$env [lindex $grec 1] [lindex $p 1]
- }
-
- # Close and unlink the file
- error_check_good log_cursor:close:$logc [$logc close] 0
- error_check_good env:close [$env close] 0
- error_check_good envremove [berkdb envremove -home $testdir] 0
-}
diff --git a/bdb/test/log003.tcl b/bdb/test/log003.tcl
deleted file mode 100644
index 11297b59d50..00000000000
--- a/bdb/test/log003.tcl
+++ /dev/null
@@ -1,118 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: log003.tcl,v 11.28 2002/04/29 20:07:54 sue Exp $
-#
-
-# TEST log003
-# TEST Verify that log_flush is flushing records correctly.
-proc log003 { } {
- source ./include.tcl
-
- puts "Log003: Verify log_flush behavior"
-
- set max [expr 1024 * 128]
- env_cleanup $testdir
- set short_rec "abcdefghijklmnopqrstuvwxyz"
- set long_rec [repeat $short_rec 200]
- set very_long_rec [repeat $long_rec 4]
-
- foreach rec "$short_rec $long_rec $very_long_rec" {
- puts "\tLog003.a: Verify flush on [string length $rec] byte rec"
-
- set env [berkdb_env -log -home $testdir \
- -create -mode 0644 -log_max $max]
- error_check_good envopen [is_valid_env $env] TRUE
-
- set lsn [$env log_put $rec]
- error_check_bad log_put [lindex $lsn 0] "ERROR:"
- set ret [$env log_flush $lsn]
- error_check_good log_flush $ret 0
-
- # Now, we want to crash the region and recheck. Closing the
- # log does not flush any records, so we'll use a close to
- # do the "crash"
- set ret [$env close]
- error_check_good log_env:close $ret 0
-
- # Now, remove the log region
- #set ret [berkdb envremove -home $testdir]
- #error_check_good env:remove $ret 0
-
- # Re-open the log and try to read the record.
- set env [berkdb_env -create -home $testdir \
- -log -mode 0644 -log_max $max]
- error_check_good envopen [is_valid_env $env] TRUE
-
- set logc [$env log_cursor]
- error_check_good log_cursor [is_valid_logc $logc $env] TRUE
-
- set gotrec [$logc get -first]
- error_check_good lp_get [lindex $gotrec 1] $rec
-
- # Close and unlink the file
- error_check_good log_cursor:close:$logc [$logc close] 0
- error_check_good env:close:$env [$env close] 0
- error_check_good envremove [berkdb envremove -home $testdir] 0
- log_cleanup $testdir
- }
-
- foreach rec "$short_rec $long_rec $very_long_rec" {
- puts "\tLog003.b: \
- Verify flush on non-last record [string length $rec]"
- set env [berkdb_env \
- -create -log -home $testdir -mode 0644 -log_max $max]
- error_check_good envopen [is_valid_env $env] TRUE
-
- # Put 10 random records
- for { set i 0 } { $i < 10 } { incr i} {
- set r [random_data 450 0 0]
- set lsn [$env log_put $r]
- error_check_bad log_put [lindex $lsn 0] "ERROR:"
- }
-
- # Put the record we are interested in
- set save_lsn [$env log_put $rec]
- error_check_bad log_put [lindex $save_lsn 0] "ERROR:"
-
- # Put 10 more random records
- for { set i 0 } { $i < 10 } { incr i} {
- set r [random_data 450 0 0]
- set lsn [$env log_put $r]
- error_check_bad log_put [lindex $lsn 0] "ERROR:"
- }
-
- # Now check the flush
- set ret [$env log_flush $save_lsn]
- error_check_good log_flush $ret 0
-
- # Now, we want to crash the region and recheck. Closing the
- # log does not flush any records, so we'll use a close to
- # do the "crash"
-
- #
- # Now, close and remove the log region
- error_check_good env:close:$env [$env close] 0
- set ret [berkdb envremove -home $testdir]
- error_check_good env:remove $ret 0
-
- # Re-open the log and try to read the record.
- set env [berkdb_env \
- -home $testdir -create -log -mode 0644 -log_max $max]
- error_check_good envopen [is_valid_env $env] TRUE
-
- set logc [$env log_cursor]
- error_check_good log_cursor [is_valid_logc $logc $env] TRUE
-
- set gotrec [$logc get -set $save_lsn]
- error_check_good lp_get [lindex $gotrec 1] $rec
-
- # Close and unlink the file
- error_check_good log_cursor:close:$logc [$logc close] 0
- error_check_good env:close:$env [$env close] 0
- error_check_good envremove [berkdb envremove -home $testdir] 0
- log_cleanup $testdir
- }
-}
diff --git a/bdb/test/log004.tcl b/bdb/test/log004.tcl
deleted file mode 100644
index 66968a8c1b4..00000000000
--- a/bdb/test/log004.tcl
+++ /dev/null
@@ -1,46 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: log004.tcl,v 11.28 2002/04/29 20:07:54 sue Exp $
-#
-
-# TEST log004
-# TEST Make sure that if we do PREVs on a log, but the beginning of the
-# TEST log has been truncated, we do the right thing.
-proc log004 { } {
- source ./include.tcl
-
- puts "Log004: Prev on log when beginning of log has been truncated."
- # Use archive test to populate log
- env_cleanup $testdir
- puts "\tLog004.a: Call archive to populate log."
- archive
-
- # Delete all log files under 100
- puts "\tLog004.b: Delete all log files under 100."
- set ret [catch { glob $testdir/log.00000000* } result]
- if { $ret == 0 } {
- eval fileremove -f $result
- }
-
- # Now open the log and get the first record and try a prev
- puts "\tLog004.c: Open truncated log, attempt to access missing portion."
- set env [berkdb_env -create -log -home $testdir]
- error_check_good envopen [is_valid_env $env] TRUE
-
- set logc [$env log_cursor]
- error_check_good log_cursor [is_valid_logc $logc $env] TRUE
-
- set ret [$logc get -first]
- error_check_bad log_get [llength $ret] 0
-
- # This should give DB_NOTFOUND which is a ret of length 0
- catch {$logc get -prev} ret
- error_check_good log_get_prev [string length $ret] 0
-
- puts "\tLog004.d: Close log and environment."
- error_check_good log_cursor_close [$logc close] 0
- error_check_good log_close [$env close] 0
-}
diff --git a/bdb/test/log005.tcl b/bdb/test/log005.tcl
deleted file mode 100644
index ab2ad703c55..00000000000
--- a/bdb/test/log005.tcl
+++ /dev/null
@@ -1,89 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: log005.tcl,v 11.1 2002/05/30 22:16:49 bostic Exp $
-#
-# TEST log005
-# TEST Check that log file sizes can change on the fly.
-proc log005 { } {
- source ./include.tcl
-
- puts "Log005: Check that log file sizes can change."
- env_cleanup $testdir
-
- # Open the environment, set and check the log file size.
- puts "\tLog005.a: open, set and check the log file size."
- set env [berkdb_env \
- -create -home $testdir -log_buffer 10000 -log_max 1000000 -txn]
- error_check_good envopen [is_valid_env $env] TRUE
- set db [berkdb_open \
- -env $env -create -mode 0644 -btree -auto_commit a.db]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Get the current log file maximum.
- set max [log005_stat $env "Current log file size"]
- error_check_good max_set $max 1000000
-
- # Reset the log file size using a second open, and make sure
- # it changes.
- puts "\tLog005.b: reset during open, check the log file size."
- set envtmp [berkdb_env -home $testdir -log_max 900000 -txn]
- error_check_good envtmp_open [is_valid_env $envtmp] TRUE
- error_check_good envtmp_close [$envtmp close] 0
-
- set tmp [log005_stat $env "Current log file size"]
- error_check_good max_changed 900000 $tmp
-
- puts "\tLog005.c: fill in the current log file size."
- # Fill in the current log file.
- set new_lsn 0
- set data [repeat "a" 1024]
- for { set i 1 } \
- { [log005_stat $env "Current log file number"] != 2 } \
- { incr i } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set ret [$db put -txn $t $i $data]
- error_check_good put $ret 0
- error_check_good txn [$t commit] 0
-
- set last_lsn $new_lsn
- set new_lsn [log005_stat $env "Current log file offset"]
- }
-
- # The last LSN in the first file should be more than our new
- # file size.
- error_check_good "lsn check < 900000" [expr 900000 < $last_lsn] 1
-
- # Close down the environment.
- error_check_good db_close [$db close] 0
- error_check_good env_close [$env close] 0
-
- puts "\tLog005.d: check the log file size is unchanged after recovery."
- # Open again, running recovery. Verify the log file size is as we
- # left it.
- set env [berkdb_env -create -home $testdir -recover -txn]
- error_check_good env_open [is_valid_env $env] TRUE
-
- set tmp [log005_stat $env "Current log file size"]
- error_check_good after_recovery 900000 $tmp
-
- error_check_good env_close [$env close] 0
-}
-
-# log005_stat --
-# Return the current log statistics.
-proc log005_stat { env s } {
- set stat [$env log_stat]
- foreach statpair $stat {
- set statmsg [lindex $statpair 0]
- set statval [lindex $statpair 1]
- if {[is_substr $statmsg $s] != 0} {
- return $statval
- }
- }
- puts "FAIL: log005: stat string $s not found"
- return 0
-}
diff --git a/bdb/test/logtrack.tcl b/bdb/test/logtrack.tcl
deleted file mode 100644
index ad6b480b4e3..00000000000
--- a/bdb/test/logtrack.tcl
+++ /dev/null
@@ -1,137 +0,0 @@
-# See the file LICENSE for redistribution information
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: logtrack.tcl,v 11.11 2002/09/03 16:44:37 sue Exp $
-#
-# logtrack.tcl: A collection of routines, formerly implemented in Perl
-# as log.pl, to track which log record types the test suite hits.
-
-set ltsname "logtrack_seen.db"
-set ltlist $test_path/logtrack.list
-set tmpname "logtrack_tmp"
-
-proc logtrack_clean { } {
- global ltsname
-
- file delete -force $ltsname
-
- return
-}
-
-proc logtrack_init { } {
- global ltsname
-
- logtrack_clean
-
- # Create an empty tracking database.
- [berkdb_open -create -truncate -btree $ltsname] close
-
- return
-}
-
-# Dump the logs for directory dirname and record which log
-# records were seen.
-proc logtrack_read { dirname } {
- global ltsname tmpname util_path
- global encrypt passwd
-
- set seendb [berkdb_open $ltsname]
- error_check_good seendb_open [is_valid_db $seendb] TRUE
-
- file delete -force $tmpname
- set pargs " -N -h $dirname "
- if { $encrypt > 0 } {
- append pargs " -P $passwd "
- }
- set ret [catch {eval exec $util_path/db_printlog $pargs > $tmpname} res]
- error_check_good printlog $ret 0
- error_check_good tmpfile_exists [file exists $tmpname] 1
-
- set f [open $tmpname r]
- while { [gets $f record] >= 0 } {
- set r [regexp {\[[^\]]*\]\[[^\]]*\]([^\:]*)\:} $record whl name]
- if { $r == 1 } {
- error_check_good seendb_put [$seendb put $name ""] 0
- }
- }
- close $f
- file delete -force $tmpname
-
- error_check_good seendb_close [$seendb close] 0
-}
-
-# Print the log record types that were seen but should not have been
-# seen and the log record types that were not seen but should have been seen.
-proc logtrack_summary { } {
- global ltsname ltlist testdir
-
- set seendb [berkdb_open $ltsname]
- error_check_good seendb_open [is_valid_db $seendb] TRUE
- set existdb [berkdb_open -create -btree]
- error_check_good existdb_open [is_valid_db $existdb] TRUE
- set deprecdb [berkdb_open -create -btree]
- error_check_good deprecdb_open [is_valid_db $deprecdb] TRUE
-
- error_check_good ltlist_exists [file exists $ltlist] 1
- set f [open $ltlist r]
- set pref ""
- while { [gets $f line] >= 0 } {
- # Get the keyword, the first thing on the line:
- # BEGIN/DEPRECATED/IGNORED/PREFIX
- set keyword [lindex $line 0]
-
- if { [string compare $keyword PREFIX] == 0 } {
- # New prefix.
- set pref [lindex $line 1]
- } elseif { [string compare $keyword BEGIN] == 0 } {
- # A log type we care about; put it on our list.
-
- # Skip noop and debug.
- if { [string compare [lindex $line 1] noop] == 0 } {
- continue
- }
- if { [string compare [lindex $line 1] debug] == 0 } {
- continue
- }
-
- error_check_good exist_put [$existdb put \
- ${pref}_[lindex $line 1] ""] 0
- } elseif { [string compare $keyword DEPRECATED] == 0 ||
- [string compare $keyword IGNORED] == 0 } {
- error_check_good deprec_put [$deprecdb put \
- ${pref}_[lindex $line 1] ""] 0
- }
- }
-
- error_check_good exist_curs \
- [is_valid_cursor [set ec [$existdb cursor]] $existdb] TRUE
- while { [llength [set dbt [$ec get -next]]] != 0 } {
- set rec [lindex [lindex $dbt 0] 0]
- if { [$seendb count $rec] == 0 } {
- puts "FAIL: log record type $rec not seen"
- }
- }
- error_check_good exist_curs_close [$ec close] 0
-
- error_check_good seen_curs \
- [is_valid_cursor [set sc [$existdb cursor]] $existdb] TRUE
- while { [llength [set dbt [$sc get -next]]] != 0 } {
- set rec [lindex [lindex $dbt 0] 0]
- if { [$existdb count $rec] == 0 } {
- if { [$deprecdb count $rec] == 0 } {
- puts "FAIL: unknown log record type $rec seen"
- } else {
- puts "FAIL: deprecated log record type $rec seen"
- }
- }
- }
- error_check_good seen_curs_close [$sc close] 0
-
- error_check_good seendb_close [$seendb close] 0
- error_check_good existdb_close [$existdb close] 0
- error_check_good deprecdb_close [$deprecdb close] 0
-
- logtrack_clean
-}
diff --git a/bdb/test/mdbscript.tcl b/bdb/test/mdbscript.tcl
deleted file mode 100644
index 9f3c971ee3c..00000000000
--- a/bdb/test/mdbscript.tcl
+++ /dev/null
@@ -1,384 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mdbscript.tcl,v 11.29 2002/03/22 21:43:06 krinsky Exp $
-#
-# Process script for the multi-process db tester.
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-global dbenv
-global klock
-global l_keys
-global procid
-global alphabet
-
-# In Tcl, when there are multiple catch handlers, *all* handlers
-# are called, so we have to resort to this hack.
-#
-global exception_handled
-
-set exception_handled 0
-
-set datastr $alphabet$alphabet
-
-# Usage: mdbscript dir file nentries iter procid procs seed
-# dir: DBHOME directory
-# file: db file on which to operate
-# nentries: number of entries taken from dictionary
-# iter: number of operations to run
-# procid: this processes' id number
-# procs: total number of processes running
-set usage "mdbscript method dir file nentries iter procid procs"
-
-# Verify usage
-if { $argc != 7 } {
- puts "FAIL:[timestamp] test042: Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set method [lindex $argv 0]
-set dir [lindex $argv 1]
-set file [lindex $argv 2]
-set nentries [ lindex $argv 3 ]
-set iter [ lindex $argv 4 ]
-set procid [ lindex $argv 5 ]
-set procs [ lindex $argv 6 ]
-
-set pflags ""
-set gflags ""
-set txn ""
-
-set renum [is_rrecno $method]
-set omethod [convert_method $method]
-
-if { [is_record_based $method] == 1 } {
- append gflags " -recno"
-}
-
-# Initialize seed
-global rand_init
-
-# We want repeatable results, but we also want each instance of mdbscript
-# to do something different. So we add the procid to the fixed seed.
-# (Note that this is a serial number given by the caller, not a pid.)
-berkdb srand [expr $rand_init + $procid]
-
-puts "Beginning execution for [pid] $method"
-puts "$dir db_home"
-puts "$file database"
-puts "$nentries data elements"
-puts "$iter iterations"
-puts "$procid process id"
-puts "$procs processes"
-
-set klock NOLOCK
-
-# Note: all I/O operations, and especially flush, are expensive
-# on Win2000 at least with Tcl version 8.3.2. So we'll avoid
-# flushes in the main part of the loop below.
-flush stdout
-
-set dbenv [berkdb_env -create -cdb -home $dir]
-#set dbenv [berkdb_env -create -cdb -log -home $dir]
-error_check_good dbenv [is_valid_env $dbenv] TRUE
-
-set locker [ $dbenv lock_id ]
-
-set db [berkdb_open -env $dbenv -create -mode 0644 $omethod $file]
-error_check_good dbopen [is_valid_db $db] TRUE
-
-# Init globals (no data)
-set nkeys [db_init $db 0]
-puts "Initial number of keys: $nkeys"
-error_check_good db_init $nkeys $nentries
-tclsleep 5
-
-proc get_lock { k } {
- global dbenv
- global procid
- global locker
- global klock
- global DB_LOCK_WRITE
- global DB_LOCK_NOWAIT
- global errorInfo
- global exception_handled
- # Make sure that the key isn't in the middle of
- # a delete operation
- if {[catch {$dbenv lock_get -nowait write $locker $k} klock] != 0 } {
- set exception_handled 1
-
- error_check_good \
- get_lock [is_substr $errorInfo "DB_LOCK_NOTGRANTED"] 1
- puts "Warning: key $k locked"
- set klock NOLOCK
- return 1
- } else {
- error_check_good get_lock [is_valid_lock $klock $dbenv] TRUE
- }
- return 0
-}
-
-# On each iteration we're going to randomly pick a key.
-# 1. We'll either get it (verifying that its contents are reasonable).
-# 2. Put it (using an overwrite to make the data be datastr:ID).
-# 3. Get it and do a put through the cursor, tacking our ID on to
-# 4. Get it, read forward some random number of keys.
-# 5. Get it, read forward some random number of keys and do a put (replace).
-# 6. Get it, read forward some random number of keys and do a del. And then
-# do a put of the key.
-set gets 0
-set getput 0
-set overwrite 0
-set seqread 0
-set seqput 0
-set seqdel 0
-set dlen [string length $datastr]
-
-for { set i 0 } { $i < $iter } { incr i } {
- set op [berkdb random_int 0 5]
- puts "iteration $i operation $op"
- set close_cursor 0
- if {[catch {
- switch $op {
- 0 {
- incr gets
- set k [rand_key $method $nkeys $renum $procs]
- if {[is_record_based $method] == 1} {
- set key $k
- } else {
- set key [lindex $l_keys $k]
- }
-
- if { [get_lock $key] == 1 } {
- incr i -1
- continue;
- }
-
- set rec [eval {$db get} $txn $gflags {$key}]
- error_check_bad "$db get $key" [llength $rec] 0
- set partial [string range \
- [lindex [lindex $rec 0] 1] 0 [expr $dlen - 1]]
- error_check_good \
- "$db get $key" $partial [pad_data $method $datastr]
- }
- 1 {
- incr overwrite
- set k [rand_key $method $nkeys $renum $procs]
- if {[is_record_based $method] == 1} {
- set key $k
- } else {
- set key [lindex $l_keys $k]
- }
-
- set data $datastr:$procid
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $data]}]
- error_check_good "$db put $key" $ret 0
- }
- 2 {
- incr getput
- set dbc [$db cursor -update]
- error_check_good "$db cursor" \
- [is_valid_cursor $dbc $db] TRUE
- set close_cursor 1
- set k [rand_key $method $nkeys $renum $procs]
- if {[is_record_based $method] == 1} {
- set key $k
- } else {
- set key [lindex $l_keys $k]
- }
-
- if { [get_lock $key] == 1 } {
- incr i -1
- error_check_good "$dbc close" \
- [$dbc close] 0
- set close_cursor 0
- continue;
- }
-
- set ret [$dbc get -set $key]
- error_check_good \
- "$dbc get $key" [llength [lindex $ret 0]] 2
- set rec [lindex [lindex $ret 0] 1]
- set partial [string range $rec 0 [expr $dlen - 1]]
- error_check_good \
- "$dbc get $key" $partial [pad_data $method $datastr]
- append rec ":$procid"
- set ret [$dbc put \
- -current [chop_data $method $rec]]
- error_check_good "$dbc put $key" $ret 0
- error_check_good "$dbc close" [$dbc close] 0
- set close_cursor 0
- }
- 3 -
- 4 -
- 5 {
- if { $op == 3 } {
- set flags ""
- } else {
- set flags -update
- }
- set dbc [eval {$db cursor} $flags]
- error_check_good "$db cursor" \
- [is_valid_cursor $dbc $db] TRUE
- set close_cursor 1
- set k [rand_key $method $nkeys $renum $procs]
- if {[is_record_based $method] == 1} {
- set key $k
- } else {
- set key [lindex $l_keys $k]
- }
-
- if { [get_lock $key] == 1 } {
- incr i -1
- error_check_good "$dbc close" \
- [$dbc close] 0
- set close_cursor 0
- continue;
- }
-
- set ret [$dbc get -set $key]
- error_check_good \
- "$dbc get $key" [llength [lindex $ret 0]] 2
-
- # Now read a few keys sequentially
- set nloop [berkdb random_int 0 10]
- if { [berkdb random_int 0 1] == 0 } {
- set flags -next
- } else {
- set flags -prev
- }
- while { $nloop > 0 } {
- set lastret $ret
- set ret [eval {$dbc get} $flags]
- # Might read beginning/end of file
- if { [llength $ret] == 0} {
- set ret $lastret
- break
- }
- incr nloop -1
- }
- switch $op {
- 3 {
- incr seqread
- }
- 4 {
- incr seqput
- set rec [lindex [lindex $ret 0] 1]
- set partial [string range $rec 0 \
- [expr $dlen - 1]]
- error_check_good "$dbc get $key" \
- $partial [pad_data $method $datastr]
- append rec ":$procid"
- set ret [$dbc put -current \
- [chop_data $method $rec]]
- error_check_good \
- "$dbc put $key" $ret 0
- }
- 5 {
- incr seqdel
- set k [lindex [lindex $ret 0] 0]
- # We need to lock the item we're
- # deleting so that someone else can't
- # try to do a get while we're
- # deleting
- error_check_good "$klock put" \
- [$klock put] 0
- set klock NOLOCK
- set cur [$dbc get -current]
- error_check_bad get_current \
- [llength $cur] 0
- set key [lindex [lindex $cur 0] 0]
- if { [get_lock $key] == 1 } {
- incr i -1
- error_check_good "$dbc close" \
- [$dbc close] 0
- set close_cursor 0
- continue
- }
- set ret [$dbc del]
- error_check_good "$dbc del" $ret 0
- set rec $datastr
- append rec ":$procid"
- if { $renum == 1 } {
- set ret [$dbc put -before \
- [chop_data $method $rec]]
- error_check_good \
- "$dbc put $k" $ret $k
- } elseif { \
- [is_record_based $method] == 1 } {
- error_check_good "$dbc close" \
- [$dbc close] 0
- set close_cursor 0
- set ret [$db put $k \
- [chop_data $method $rec]]
- error_check_good \
- "$db put $k" $ret 0
- } else {
- set ret [$dbc put -keylast $k \
- [chop_data $method $rec]]
- error_check_good \
- "$dbc put $k" $ret 0
- }
- }
- }
- if { $close_cursor == 1 } {
- error_check_good \
- "$dbc close" [$dbc close] 0
- set close_cursor 0
- }
- }
- }
- } res] != 0} {
- global errorInfo;
- global exception_handled;
-
- puts $errorInfo
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
-
- if { [string compare $klock NOLOCK] != 0 } {
- catch {$klock put}
- }
- if {$close_cursor == 1} {
- catch {$dbc close}
- set close_cursor 0
- }
-
- if {[string first FAIL $theError] == 0 && \
- $exception_handled != 1} {
- flush stdout
- error "FAIL:[timestamp] test042: key $k: $theError"
- }
- set exception_handled 0
- } else {
- if { [string compare $klock NOLOCK] != 0 } {
- error_check_good "$klock put" [$klock put] 0
- set klock NOLOCK
- }
- }
-}
-
-error_check_good db_close_catch [catch {$db close} ret] 0
-error_check_good db_close $ret 0
-error_check_good dbenv_close [$dbenv close] 0
-
-flush stdout
-exit
-
-puts "[timestamp] [pid] Complete"
-puts "Successful ops: "
-puts "\t$gets gets"
-puts "\t$overwrite overwrites"
-puts "\t$getput getputs"
-puts "\t$seqread seqread"
-puts "\t$seqput seqput"
-puts "\t$seqdel seqdel"
-flush stdout
diff --git a/bdb/test/memp001.tcl b/bdb/test/memp001.tcl
deleted file mode 100644
index c4bbf99b9b2..00000000000
--- a/bdb/test/memp001.tcl
+++ /dev/null
@@ -1,199 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: memp001.tcl,v 11.50 2002/08/07 16:46:28 bostic Exp $
-#
-
-# TEST memp001
-# TEST Randomly updates pages.
-proc memp001 { } {
-
- memp001_body 1 ""
- memp001_body 3 ""
- memp001_body 1 -private
- memp001_body 3 -private
- memp001_body 1 "-system_mem -shm_key 1"
- memp001_body 3 "-system_mem -shm_key 1"
-
-}
-
-proc memp001_body { ncache flags } {
- source ./include.tcl
- global rand_init
-
- set nfiles 5
- set iter 500
- set psize 512
- set cachearg "-cachesize {0 400000 $ncache}"
-
- puts \
-"Memp001: { $flags } random update $iter iterations on $nfiles files."
- #
- # Check if this platform supports this set of flags
- #
- if { [mem_chk $flags] == 1 } {
- return
- }
-
- env_cleanup $testdir
- puts "\tMemp001.a: Create env with $ncache caches"
- set env [eval {berkdb_env -create -mode 0644} \
- $cachearg {-home $testdir} $flags]
- error_check_good env_open [is_valid_env $env] TRUE
-
- #
- # Do a simple mpool_stat call to verify the number of caches
- # just to exercise the stat code.
- set stat [$env mpool_stat]
- set str "Number of caches"
- set checked 0
- foreach statpair $stat {
- if { $checked == 1 } {
- break
- }
- if { [is_substr [lindex $statpair 0] $str] != 0} {
- set checked 1
- error_check_good ncache [lindex $statpair 1] $ncache
- }
- }
- error_check_good checked $checked 1
-
- # Open N memp files
- puts "\tMemp001.b: Create $nfiles mpool files"
- for {set i 1} {$i <= $nfiles} {incr i} {
- set fname "data_file.$i"
- file_create $testdir/$fname 50 $psize
-
- set mpools($i) \
- [$env mpool -create -pagesize $psize -mode 0644 $fname]
- error_check_good mp_open [is_substr $mpools($i) $env.mp] 1
- }
-
- # Now, loop, picking files at random
- berkdb srand $rand_init
- puts "\tMemp001.c: Random page replacement loop"
- for {set i 0} {$i < $iter} {incr i} {
- set mpool $mpools([berkdb random_int 1 $nfiles])
- set p(1) [get_range $mpool 10]
- set p(2) [get_range $mpool 10]
- set p(3) [get_range $mpool 10]
- set p(1) [replace $mpool $p(1)]
- set p(3) [replace $mpool $p(3)]
- set p(4) [get_range $mpool 20]
- set p(4) [replace $mpool $p(4)]
- set p(5) [get_range $mpool 10]
- set p(6) [get_range $mpool 20]
- set p(7) [get_range $mpool 10]
- set p(8) [get_range $mpool 20]
- set p(5) [replace $mpool $p(5)]
- set p(6) [replace $mpool $p(6)]
- set p(9) [get_range $mpool 40]
- set p(9) [replace $mpool $p(9)]
- set p(10) [get_range $mpool 40]
- set p(7) [replace $mpool $p(7)]
- set p(8) [replace $mpool $p(8)]
- set p(9) [replace $mpool $p(9)]
- set p(10) [replace $mpool $p(10)]
- #
- # We now need to put all the pages we have here or
- # else they end up pinned.
- #
- for {set x 1} { $x <= 10} {incr x} {
- error_check_good pgput [$p($x) put] 0
- }
- }
-
- # Close N memp files, close the environment.
- puts "\tMemp001.d: Close mpools"
- for {set i 1} {$i <= $nfiles} {incr i} {
- error_check_good memp_close:$mpools($i) [$mpools($i) close] 0
- }
- error_check_good envclose [$env close] 0
-
- for {set i 1} {$i <= $nfiles} {incr i} {
- fileremove -f $testdir/data_file.$i
- }
-}
-
-proc file_create { fname nblocks blocksize } {
- set fid [open $fname w]
- for {set i 0} {$i < $nblocks} {incr i} {
- seek $fid [expr $i * $blocksize] start
- puts -nonewline $fid $i
- }
- seek $fid [expr $nblocks * $blocksize - 1]
-
- # We don't end the file with a newline, because some platforms (like
- # Windows) emit CR/NL. There does not appear to be a BINARY open flag
- # that prevents this.
- puts -nonewline $fid "Z"
- close $fid
-
- # Make sure it worked
- if { [file size $fname] != $nblocks * $blocksize } {
- error "FAIL: file_create could not create correct file size"
- }
-}
-
-proc get_range { mpool max } {
- set pno [berkdb random_int 0 $max]
- set p [$mpool get $pno]
- error_check_good page [is_valid_page $p $mpool] TRUE
- set got [$p pgnum]
- if { $got != $pno } {
- puts "Get_range: Page mismatch page |$pno| val |$got|"
- }
- set ret [$p init "Page is pinned by [pid]"]
- error_check_good page_init $ret 0
-
- return $p
-}
-
-proc replace { mpool p } {
- set pgno [$p pgnum]
-
- set ret [$p init "Page is unpinned by [pid]"]
- error_check_good page_init $ret 0
-
- set ret [$p put -dirty]
- error_check_good page_put $ret 0
-
- set p2 [$mpool get $pgno]
- error_check_good page [is_valid_page $p2 $mpool] TRUE
-
- return $p2
-}
-
-proc mem_chk { flags } {
- source ./include.tcl
- global errorCode
-
- # Open the memp with region init specified
- env_cleanup $testdir
-
- set cachearg " -cachesize {0 400000 3}"
- set ret [catch {eval {berkdb_env -create -mode 0644}\
- $cachearg {-region_init -home $testdir} $flags} env]
- if { $ret != 0 } {
- # If the env open failed, it may be because we're on a platform
- # such as HP-UX 10 that won't support mutexes in shmget memory.
- # Or QNX, which doesn't support system memory at all.
- # Verify that the return value was EINVAL or EOPNOTSUPP
- # and bail gracefully.
- error_check_good is_shm_test [is_substr $flags -system_mem] 1
- error_check_good returned_error [expr \
- [is_substr $errorCode EINVAL] || \
- [is_substr $errorCode EOPNOTSUPP]] 1
- puts "Warning:\
- platform does not support mutexes in shmget memory."
- puts "Skipping shared memory mpool test."
- return 1
- }
- error_check_good env_open [is_valid_env $env] TRUE
- error_check_good env_close [$env close] 0
- env_cleanup $testdir
-
- return 0
-}
diff --git a/bdb/test/memp002.tcl b/bdb/test/memp002.tcl
deleted file mode 100644
index d55f2987f06..00000000000
--- a/bdb/test/memp002.tcl
+++ /dev/null
@@ -1,62 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: memp002.tcl,v 11.47 2002/09/05 17:23:06 sandstro Exp $
-#
-
-# TEST memp002
-# TEST Tests multiple processes accessing and modifying the same files.
-proc memp002 { } {
- #
- # Multiple processes not supported by private memory so don't
- # run memp002_body with -private.
- #
- memp002_body ""
- memp002_body "-system_mem -shm_key 1"
-}
-
-proc memp002_body { flags } {
- source ./include.tcl
-
- puts "Memp002: {$flags} Multiprocess mpool tester"
-
- set procs 4
- set psizes "512 1024 2048 4096 8192"
- set iterations 500
- set npages 100
-
- # Check if this combination of flags is supported by this arch.
- if { [mem_chk $flags] == 1 } {
- return
- }
-
- set iter [expr $iterations / $procs]
-
- # Clean up old stuff and create new.
- env_cleanup $testdir
-
- for { set i 0 } { $i < [llength $psizes] } { incr i } {
- fileremove -f $testdir/file$i
- }
- set e [eval {berkdb_env -create -lock -home $testdir} $flags]
- error_check_good dbenv [is_valid_env $e] TRUE
-
- set pidlist {}
- for { set i 0 } { $i < $procs } {incr i} {
-
- puts "$tclsh_path\
- $test_path/mpoolscript.tcl $testdir $i $procs \
- $iter $psizes $npages 3 $flags > \
- $testdir/memp002.$i.out &"
- set p [exec $tclsh_path $test_path/wrap.tcl \
- mpoolscript.tcl $testdir/memp002.$i.out $testdir $i $procs \
- $iter $psizes $npages 3 $flags &]
- lappend pidlist $p
- }
- puts "Memp002: $procs independent processes now running"
- watch_procs $pidlist
-
- reset_env $e
-}
diff --git a/bdb/test/memp003.tcl b/bdb/test/memp003.tcl
deleted file mode 100644
index 31eb55b757c..00000000000
--- a/bdb/test/memp003.tcl
+++ /dev/null
@@ -1,153 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: memp003.tcl,v 11.46 2002/04/30 17:26:06 sue Exp $
-#
-
-# TEST memp003
-# TEST Test reader-only/writer process combinations; we use the access methods
-# TEST for testing.
-proc memp003 { } {
- #
- # Multiple processes not supported by private memory so don't
- # run memp003_body with -private.
- #
- memp003_body ""
- memp003_body "-system_mem -shm_key 1"
-}
-
-proc memp003_body { flags } {
- global alphabet
- source ./include.tcl
-
- puts "Memp003: {$flags} Reader/Writer tests"
-
- if { [mem_chk $flags] == 1 } {
- return
- }
-
- env_cleanup $testdir
- set psize 1024
- set nentries 500
- set testfile mpool.db
- set t1 $testdir/t1
-
- # Create an environment that the two processes can share, with
- # 20 pages per cache.
- set c [list 0 [expr $psize * 20 * 3] 3]
- set dbenv [eval {berkdb_env \
- -create -lock -home $testdir -cachesize $c} $flags]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- # First open and create the file.
- set db [berkdb_open -env $dbenv -create -truncate \
- -mode 0644 -pagesize $psize -btree $testfile]
- error_check_good dbopen/RW [is_valid_db $db] TRUE
-
- set did [open $dict]
- set txn ""
- set count 0
-
- puts "\tMemp003.a: create database"
- set keys ""
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- lappend keys $str
-
- set ret [eval {$db put} $txn {$str $str}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $txn {$str}]
- error_check_good get $ret [list [list $str $str]]
-
- incr count
- }
- close $did
- error_check_good close [$db close] 0
-
- # Now open the file for read-only
- set db [berkdb_open -env $dbenv -rdonly $testfile]
- error_check_good dbopen/RO [is_substr $db db] 1
-
- puts "\tMemp003.b: verify a few keys"
- # Read and verify a couple of keys; saving them to check later
- set testset ""
- for { set i 0 } { $i < 10 } { incr i } {
- set ndx [berkdb random_int 0 [expr $nentries - 1]]
- set key [lindex $keys $ndx]
- if { [lsearch $testset $key] != -1 } {
- incr i -1
- continue;
- }
-
- # The remote process stuff is unhappy with
- # zero-length keys; make sure we don't pick one.
- if { [llength $key] == 0 } {
- incr i -1
- continue
- }
-
- lappend testset $key
-
- set ret [eval {$db get} $txn {$key}]
- error_check_good get/RO $ret [list [list $key $key]]
- }
-
- puts "\tMemp003.c: retrieve and modify keys in remote process"
- # Now open remote process where we will open the file RW
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
- puts $f1 "flush stdout"
- flush $f1
-
- set c [concat "{" [list 0 [expr $psize * 20 * 3] 3] "}" ]
- set remote_env [send_cmd $f1 \
- "berkdb_env -create -lock -home $testdir -cachesize $c $flags"]
- error_check_good remote_dbenv [is_valid_env $remote_env] TRUE
-
- set remote_db [send_cmd $f1 "berkdb_open -env $remote_env $testfile"]
- error_check_good remote_dbopen [is_valid_db $remote_db] TRUE
-
- foreach k $testset {
- # Get the key
- set ret [send_cmd $f1 "$remote_db get $k"]
- error_check_good remote_get $ret [list [list $k $k]]
-
- # Now replace the key
- set ret [send_cmd $f1 "$remote_db put $k $k$k"]
- error_check_good remote_put $ret 0
- }
-
- puts "\tMemp003.d: verify changes in local process"
- foreach k $testset {
- set ret [eval {$db get} $txn {$key}]
- error_check_good get_verify/RO $ret [list [list $key $key$key]]
- }
-
- puts "\tMemp003.e: Fill up the cache with dirty buffers"
- foreach k $testset {
- # Now rewrite the keys with BIG data
- set data [replicate $alphabet 32]
- set ret [send_cmd $f1 "$remote_db put $k $data"]
- error_check_good remote_put $ret 0
- }
-
- puts "\tMemp003.f: Get more pages for the read-only file"
- dump_file $db $txn $t1 nop
-
- puts "\tMemp003.g: Sync from the read-only file"
- error_check_good db_sync [$db sync] 0
- error_check_good db_close [$db close] 0
-
- set ret [send_cmd $f1 "$remote_db close"]
- error_check_good remote_get $ret 0
-
- # Close the environment both remotely and locally.
- set ret [send_cmd $f1 "$remote_env close"]
- error_check_good remote:env_close $ret 0
- close $f1
-
- reset_env $dbenv
-}
diff --git a/bdb/test/mpoolscript.tcl b/bdb/test/mpoolscript.tcl
deleted file mode 100644
index c13f70eb945..00000000000
--- a/bdb/test/mpoolscript.tcl
+++ /dev/null
@@ -1,171 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mpoolscript.tcl,v 11.16 2002/04/29 14:47:16 sandstro Exp $
-#
-# Random multiple process mpool tester.
-# Usage: mpoolscript dir id numiters numfiles numpages sleepint
-# dir: lock directory.
-# id: Unique identifier for this process.
-# maxprocs: Number of procs in this test.
-# numiters: Total number of iterations.
-# pgsizes: Pagesizes for the different files. Length of this item indicates
-# how many files to use.
-# numpages: Number of pages per file.
-# sleepint: Maximum sleep interval.
-# flags: Flags for env open
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage \
- "mpoolscript dir id maxprocs numiters pgsizes numpages sleepint flags"
-
-# Verify usage
-if { $argc != 8 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- puts $argc
- exit
-}
-
-# Initialize arguments
-set dir [lindex $argv 0]
-set id [lindex $argv 1]
-set maxprocs [lindex $argv 2]
-set numiters [ lindex $argv 3 ]
-set pgsizes [ lindex $argv 4 ]
-set numpages [ lindex $argv 5 ]
-set sleepint [ lindex $argv 6 ]
-set flags [ lindex $argv 7]
-
-# Initialize seed
-global rand_init
-berkdb srand $rand_init
-
-# Give time for all processes to start up.
-tclsleep 10
-
-puts -nonewline "Beginning execution for $id: $maxprocs $dir $numiters"
-puts " $pgsizes $numpages $sleepint"
-flush stdout
-
-# Figure out how small/large to make the cache
-set max 0
-foreach i $pgsizes {
- if { $i > $max } {
- set max $i
- }
-}
-
-set cache [list 0 [expr $maxprocs * ([lindex $pgsizes 0] + $max)] 1]
-set env_cmd {berkdb_env -lock -cachesize $cache -home $dir}
-set e [eval $env_cmd $flags]
-error_check_good env_open [is_valid_env $e] TRUE
-
-# Now open files
-set mpools {}
-set nfiles 0
-foreach psize $pgsizes {
- set mp [$e mpool -create -mode 0644 -pagesize $psize file$nfiles]
- error_check_good memp_fopen:$nfiles [is_valid_mpool $mp $e] TRUE
- lappend mpools $mp
- incr nfiles
-}
-
-puts "Establishing long-term pin on file 0 page $id for process $id"
-
-# Set up the long-pin page
-set locker [$e lock_id]
-set lock [$e lock_get write $locker 0:$id]
-error_check_good lock_get [is_valid_lock $lock $e] TRUE
-
-set mp [lindex $mpools 0]
-set master_page [$mp get -create $id]
-error_check_good mp_get:$master_page [is_valid_page $master_page $mp] TRUE
-
-set r [$master_page init MASTER$id]
-error_check_good page_init $r 0
-
-# Release the lock but keep the page pinned
-set r [$lock put]
-error_check_good lock_put $r 0
-
-# Main loop. On each iteration, we'll check every page in each of
-# of the files. On any file, if we see the appropriate tag in the
-# field, we'll rewrite the page, else we won't. Keep track of
-# how many pages we actually process.
-set pages 0
-for { set iter 0 } { $iter < $numiters } { incr iter } {
- puts "[timestamp]: iteration $iter, $pages pages set so far"
- flush stdout
- for { set fnum 1 } { $fnum < $nfiles } { incr fnum } {
- if { [expr $fnum % 2 ] == 0 } {
- set pred [expr ($id + $maxprocs - 1) % $maxprocs]
- } else {
- set pred [expr ($id + $maxprocs + 1) % $maxprocs]
- }
-
- set mpf [lindex $mpools $fnum]
- for { set p 0 } { $p < $numpages } { incr p } {
- set lock [$e lock_get write $locker $fnum:$p]
- error_check_good lock_get:$fnum:$p \
- [is_valid_lock $lock $e] TRUE
-
- # Now, get the page
- set pp [$mpf get -create $p]
- error_check_good page_get:$fnum:$p \
- [is_valid_page $pp $mpf] TRUE
-
- if { [$pp is_setto $pred] == 0 || [$pp is_setto 0] == 0 } {
- # Set page to self.
- set r [$pp init $id]
- error_check_good page_init:$fnum:$p $r 0
- incr pages
- set r [$pp put -dirty]
- error_check_good page_put:$fnum:$p $r 0
- } else {
- error_check_good page_put:$fnum:$p [$pp put] 0
- }
- error_check_good lock_put:$fnum:$p [$lock put] 0
- }
- }
- tclsleep [berkdb random_int 1 $sleepint]
-}
-
-# Now verify your master page, release its pin, then verify everyone else's
-puts "$id: End of run verification of master page"
-set r [$master_page is_setto MASTER$id]
-error_check_good page_check $r 1
-set r [$master_page put -dirty]
-error_check_good page_put $r 0
-
-set i [expr ($id + 1) % $maxprocs]
-set mpf [lindex $mpools 0]
-
-while { $i != $id } {
- set p [$mpf get -create $i]
- error_check_good mp_get [is_valid_page $p $mpf] TRUE
-
- if { [$p is_setto MASTER$i] != 1 } {
- puts "Warning: Master page $i not set."
- }
- error_check_good page_put:$p [$p put] 0
-
- set i [expr ($i + 1) % $maxprocs]
-}
-
-# Close files
-foreach i $mpools {
- set r [$i close]
- error_check_good mpf_close $r 0
-}
-
-# Close environment system
-set r [$e close]
-error_check_good env_close $r 0
-
-puts "[timestamp] $id Complete"
-flush stdout
diff --git a/bdb/test/mutex001.tcl b/bdb/test/mutex001.tcl
deleted file mode 100644
index 93f858993a5..00000000000
--- a/bdb/test/mutex001.tcl
+++ /dev/null
@@ -1,51 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutex001.tcl,v 11.23 2002/04/30 19:37:36 sue Exp $
-#
-
-# TEST mutex001
-# TEST Test basic mutex functionality
-proc mutex001 { } {
- source ./include.tcl
-
- puts "Mutex001: Basic functionality"
- env_cleanup $testdir
- set nlocks 20
-
- # Test open w/out create; should fail
- error_check_bad \
- env_open [catch {berkdb_env -lock -home $testdir} env] 0
-
- puts "\tMutex001.a: Create lock env"
- # Now open for real
- set env [berkdb_env -create -mode 0644 -lock -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- puts "\tMutex001.b: Create $nlocks mutexes"
- set m [$env mutex 0644 $nlocks]
- error_check_good mutex_init [is_valid_mutex $m $env] TRUE
-
- # Get, set each mutex; sleep, then get Release
- puts "\tMutex001.c: Get/set loop"
- for { set i 0 } { $i < $nlocks } { incr i } {
- set r [$m get $i ]
- error_check_good mutex_get $r 0
-
- set r [$m setval $i $i]
- error_check_good mutex_setval $r 0
- }
- tclsleep 5
- for { set i 0 } { $i < $nlocks } { incr i } {
- set r [$m getval $i]
- error_check_good mutex_getval $r $i
-
- set r [$m release $i ]
- error_check_good mutex_get $r 0
- }
-
- error_check_good mutex_close [$m close] 0
- error_check_good env_close [$env close] 0
-}
diff --git a/bdb/test/mutex002.tcl b/bdb/test/mutex002.tcl
deleted file mode 100644
index 193e600fe8b..00000000000
--- a/bdb/test/mutex002.tcl
+++ /dev/null
@@ -1,94 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutex002.tcl,v 11.23 2002/04/30 19:37:36 sue Exp $
-#
-
-# TEST mutex002
-# TEST Test basic mutex synchronization
-proc mutex002 { } {
- source ./include.tcl
-
- puts "Mutex002: Basic synchronization"
- env_cleanup $testdir
- set nlocks 20
-
- # Fork off child before we open any files.
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
- flush $f1
-
- # Open the environment and the mutex locally
- puts "\tMutex002.a: Open local and remote env"
- set local_env [berkdb_env -create -mode 0644 -lock -home $testdir]
- error_check_good env_open [is_valid_env $local_env] TRUE
-
- set local_mutex [$local_env mutex 0644 $nlocks]
- error_check_good \
- mutex_init [is_valid_mutex $local_mutex $local_env] TRUE
-
- # Open the environment and the mutex remotely
- set remote_env [send_cmd $f1 "berkdb_env -lock -home $testdir"]
- error_check_good remote:env_open [is_valid_env $remote_env] TRUE
-
- set remote_mutex [send_cmd $f1 "$remote_env mutex 0644 $nlocks"]
- error_check_good \
- mutex_init [is_valid_mutex $remote_mutex $remote_env] TRUE
-
- # Do a get here, then set the value to be pid.
- # On the remote side fire off a get and getval.
- puts "\tMutex002.b: Local and remote get/set"
- set r [$local_mutex get 1]
- error_check_good lock_get $r 0
-
- set r [$local_mutex setval 1 [pid]]
- error_check_good lock_get $r 0
-
- # Now have the remote side request the lock and check its
- # value. Then wait 5 seconds, release the mutex and see
- # what the remote side returned.
- send_timed_cmd $f1 1 "$remote_mutex get 1"
- send_timed_cmd $f1 1 "set ret \[$remote_mutex getval 1\]"
-
- # Now sleep before resetting and releasing lock
- tclsleep 5
- set newv [expr [pid] - 1]
- set r [$local_mutex setval 1 $newv]
- error_check_good mutex_setval $r 0
-
- set r [$local_mutex release 1]
- error_check_good mutex_release $r 0
-
- # Now get the result from the other script
- # Timestamp
- set result [rcv_result $f1]
- error_check_good lock_get:remote_time [expr $result > 4] 1
-
- # Timestamp
- set result [rcv_result $f1]
-
- # Mutex value
- set result [send_cmd $f1 "puts \$ret"]
- error_check_good lock_get:remote_getval $result $newv
-
- # Close down the remote
- puts "\tMutex002.c: Close remote"
- set ret [send_cmd $f1 "$remote_mutex close" 5]
- # Not sure why we need this, but we do... an extra blank line
- # someone gets output somewhere
- gets $f1 ret
- error_check_good remote:mutex_close $ret 0
-
- set ret [send_cmd $f1 "$remote_env close"]
- error_check_good remote:env_close $ret 0
-
- catch { close $f1 } result
-
- set ret [$local_mutex close]
- error_check_good local:mutex_close $ret 0
-
- set ret [$local_env close]
- error_check_good local:env_close $ret 0
-}
diff --git a/bdb/test/mutex003.tcl b/bdb/test/mutex003.tcl
deleted file mode 100644
index da35ac0d115..00000000000
--- a/bdb/test/mutex003.tcl
+++ /dev/null
@@ -1,52 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutex003.tcl,v 11.24 2002/09/05 17:23:06 sandstro Exp $
-#
-
-# TEST mutex003
-# TEST Generate a bunch of parallel testers that try to randomly obtain locks.
-proc mutex003 { } {
- source ./include.tcl
-
- set nmutex 20
- set iter 500
- set procs 5
- set mdegree 3
- set wait 2
- puts "Mutex003: Multi-process random mutex test"
-
- env_cleanup $testdir
-
- puts "\tMutex003.a: Create environment"
- # Now open the region we'll use for multiprocess testing.
- set env [berkdb_env -create -mode 0644 -lock -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- set mutex [$env mutex 0644 $nmutex]
- error_check_good mutex_init [is_valid_mutex $mutex $env] TRUE
-
- error_check_good mutex_close [$mutex close] 0
-
- # Now spawn off processes
- puts "\tMutex003.b: Create $procs processes"
- set pidlist {}
- for { set i 0 } {$i < $procs} {incr i} {
- puts "$tclsh_path\
- $test_path/mutexscript.tcl $testdir\
- $iter $nmutex $wait $mdegree > $testdir/$i.mutexout &"
- set p [exec $tclsh_path $test_path/wrap.tcl \
- mutexscript.tcl $testdir/$i.mutexout $testdir\
- $iter $nmutex $wait $mdegree &]
- lappend pidlist $p
- }
- puts "\tMutex003.c: $procs independent processes now running"
- watch_procs $pidlist
- error_check_good env_close [$env close] 0
- # Remove output files
- for { set i 0 } {$i < $procs} {incr i} {
- fileremove -f $testdir/$i.mutexout
- }
-}
diff --git a/bdb/test/mutexscript.tcl b/bdb/test/mutexscript.tcl
deleted file mode 100644
index bc410f2716d..00000000000
--- a/bdb/test/mutexscript.tcl
+++ /dev/null
@@ -1,91 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: mutexscript.tcl,v 11.16 2002/04/29 14:58:16 sandstro Exp $
-#
-# Random mutex tester.
-# Usage: mutexscript dir numiters mlocks sleepint degree
-# dir: dir in which all the mutexes live.
-# numiters: Total number of iterations.
-# nmutex: Total number of mutexes.
-# sleepint: Maximum sleep interval.
-# degree: Maximum number of locks to acquire at once
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage "mutexscript dir numiters nmutex sleepint degree"
-
-# Verify usage
-if { $argc != 5 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set dir [lindex $argv 0]
-set numiters [ lindex $argv 1 ]
-set nmutex [ lindex $argv 2 ]
-set sleepint [ lindex $argv 3 ]
-set degree [ lindex $argv 4 ]
-set locker [pid]
-set mypid [sanitized_pid]
-
-# Initialize seed
-global rand_init
-berkdb srand $rand_init
-
-puts -nonewline "Mutexscript: Beginning execution for $locker:"
-puts " $numiters $nmutex $sleepint $degree"
-flush stdout
-
-# Open the environment and the mutex
-set e [berkdb_env -create -mode 0644 -lock -home $dir]
-error_check_good evn_open [is_valid_env $e] TRUE
-
-set mutex [$e mutex 0644 $nmutex]
-error_check_good mutex_init [is_valid_mutex $mutex $e] TRUE
-
-# Sleep for awhile to make sure that everyone has gotten in
-tclsleep 5
-
-for { set iter 0 } { $iter < $numiters } { incr iter } {
- set nlocks [berkdb random_int 1 $degree]
- # We will always lock objects in ascending order to avoid
- # deadlocks.
- set lastobj 1
- set mlist {}
- for { set lnum 0 } { $lnum < $nlocks } { incr lnum } {
- # Pick lock parameters
- set obj [berkdb random_int $lastobj [expr $nmutex - 1]]
- set lastobj [expr $obj + 1]
- puts "[timestamp] $locker $lnum: $obj"
-
- # Do get, set its val to own pid, and then add to list
- error_check_good mutex_get:$obj [$mutex get $obj] 0
- error_check_good mutex_setval:$obj [$mutex setval $obj $mypid] 0
- lappend mlist $obj
- if {$lastobj >= $nmutex} {
- break
- }
- }
-
- # Sleep for 10 to (100*$sleepint) ms.
- after [berkdb random_int 10 [expr $sleepint * 100]]
-
- # Now release locks
- foreach i $mlist {
- error_check_good mutex_getval:$i [$mutex getval $i] $mypid
- error_check_good mutex_setval:$i \
- [$mutex setval $i [expr 0 - $mypid]] 0
- error_check_good mutex_release:$i [$mutex release $i] 0
- }
- puts "[timestamp] $locker released mutexes"
- flush stdout
-}
-
-puts "[timestamp] $locker Complete"
-flush stdout
diff --git a/bdb/test/ndbm.tcl b/bdb/test/ndbm.tcl
deleted file mode 100644
index 0bf8e0cc87c..00000000000
--- a/bdb/test/ndbm.tcl
+++ /dev/null
@@ -1,144 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: ndbm.tcl,v 11.16 2002/07/08 13:11:30 mjc Exp $
-#
-# Historic NDBM interface test.
-# Use the first 1000 entries from the dictionary.
-# Insert each with self as key and data; retrieve each.
-# After all are entered, retrieve all; compare output to original.
-# Then reopen the file, re-retrieve everything.
-# Finally, delete everything.
-proc ndbm { { nentries 1000 } } {
- source ./include.tcl
-
- puts "NDBM interfaces test: $nentries"
-
- # Create the database and open the dictionary
- set testfile $testdir/ndbmtest
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir NULL
-
- set db [berkdb ndbm_open -create -truncate -mode 0644 $testfile]
- error_check_good ndbm_open [is_substr $db ndbm] 1
- set did [open $dict]
-
- error_check_good rdonly_false [$db rdonly] 0
-
- set flags 0
- set txn 0
- set count 0
- set skippednullkey 0
-
- puts "\tNDBM.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- # NDBM can't handle zero-length keys
- if { [string length $str] == 0 } {
- set skippednullkey 1
- continue
- }
-
- set ret [$db store $str $str insert]
- error_check_good ndbm_store $ret 0
-
- set d [$db fetch $str]
- error_check_good ndbm_fetch $d $str
- incr count
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tNDBM.b: dump file"
- set oid [open $t1 w]
- for { set key [$db firstkey] } { $key != -1 } {
- set key [$db nextkey] } {
- puts $oid $key
- set d [$db fetch $key]
- error_check_good ndbm_refetch $d $key
- }
-
- # If we had to skip a zero-length key, juggle things to cover up
- # this fact in the dump.
- if { $skippednullkey == 1 } {
- puts $oid ""
- incr nentries 1
- }
- close $oid
-
- # Now compare the keys to see if they match the dictionary (or ints)
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
-
- error_check_good NDBM:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # File descriptors tests won't work under Windows.
- if { $is_windows_test != 1 } {
- puts "\tNDBM.c: pagf/dirf test"
- set fd [$db pagfno]
- error_check_bad pagf $fd -1
- set fd [$db dirfno]
- error_check_bad dirf $fd -1
- }
-
- puts "\tNDBM.d: close, open, and dump file"
-
- # Now, reopen the file and run the last test again.
- error_check_good ndbm_close [$db close] 0
- set db [berkdb ndbm_open -rdonly $testfile]
- error_check_good ndbm_open2 [is_substr $db ndbm] 1
- set oid [open $t1 w]
-
- error_check_good rdonly_true [$db rdonly] "rdonly:not owner"
-
- for { set key [$db firstkey] } { $key != -1 } {
- set key [$db nextkey] } {
- puts $oid $key
- set d [$db fetch $key]
- error_check_good ndbm_refetch2 $d $key
- }
- if { $skippednullkey == 1 } {
- puts $oid ""
- }
- close $oid
-
- # Now compare the keys to see if they match the dictionary (or ints)
- filesort $t1 $t3
-
- error_check_good NDBM:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-
- # Now, reopen the file and delete each entry
- puts "\tNDBM.e: sequential scan and delete"
-
- error_check_good ndbm_close [$db close] 0
- set db [berkdb ndbm_open $testfile]
- error_check_good ndbm_open3 [is_substr $db ndbm] 1
- set oid [open $t1 w]
-
- for { set key [$db firstkey] } { $key != -1 } {
- set key [$db nextkey] } {
- puts $oid $key
- set ret [$db delete $key]
- error_check_good ndbm_delete $ret 0
- }
- if { $skippednullkey == 1 } {
- puts $oid ""
- }
- close $oid
-
- # Now compare the keys to see if they match the dictionary (or ints)
- filesort $t1 $t3
-
- error_check_good NDBM:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
- error_check_good ndbm_close [$db close] 0
-}
diff --git a/bdb/test/parallel.tcl b/bdb/test/parallel.tcl
deleted file mode 100644
index 4e101c088cb..00000000000
--- a/bdb/test/parallel.tcl
+++ /dev/null
@@ -1,295 +0,0 @@
-# Code to load up the tests in to the Queue database
-# $Id: parallel.tcl,v 11.28 2002/09/05 17:23:06 sandstro Exp $
-proc load_queue { file {dbdir RUNQUEUE} nitems } {
-
- puts -nonewline "Loading run queue with $nitems items..."
- flush stdout
-
- set env [berkdb_env -create -lock -home $dbdir]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- set db [eval {berkdb_open -env $env -create -truncate \
- -mode 0644 -len 120 -queue queue.db} ]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set fid [open $file]
-
- set count 0
-
- while { [gets $fid str] != -1 } {
- set testarr($count) $str
- incr count
- }
-
- # Randomize array of tests.
- set rseed [pid]
- berkdb srand $rseed
- puts -nonewline "randomizing..."
- flush stdout
- for { set i 0 } { $i < $count } { incr i } {
- set j [berkdb random_int $i [expr $count - 1]]
-
- set tmp $testarr($i)
- set testarr($i) $testarr($j)
- set testarr($j) $tmp
- }
-
- if { [string compare ALL $nitems] != 0 } {
- set maxload $nitems
- } else {
- set maxload $count
- }
-
- puts "loading..."
- flush stdout
- for { set i 0 } { $i < $maxload } { incr i } {
- set str $testarr($i)
- set ret [eval {$db put -append $str} ]
- error_check_good put:$db $ret [expr $i + 1]
- }
-
- puts "Loaded $maxload records (out of $count)."
- close $fid
- $db close
- $env close
-}
-
-proc init_runqueue { {dbdir RUNQUEUE} nitems list} {
-
- if { [file exists $dbdir] != 1 } {
- file mkdir $dbdir
- }
- puts "Creating test list..."
- $list -n
- load_queue ALL.OUT $dbdir $nitems
- file delete TEST.LIST
- file rename ALL.OUT TEST.LIST
-# file delete ALL.OUT
-}
-
-proc run_parallel { nprocs {list run_all} {nitems ALL} } {
- set basename ./PARALLEL_TESTDIR
- set queuedir ./RUNQUEUE
- source ./include.tcl
-
- mkparalleldirs $nprocs $basename $queuedir
-
- init_runqueue $queuedir $nitems $list
-
- set basedir [pwd]
- set pidlist {}
- set queuedir ../../[string range $basedir \
- [string last "/" $basedir] end]/$queuedir
-
- for { set i 1 } { $i <= $nprocs } { incr i } {
- fileremove -f ALL.OUT.$i
- set ret [catch {
- set p [exec $tclsh_path << \
- "source $test_path/test.tcl;\
- run_queue $i $basename.$i $queuedir $nitems" &]
- lappend pidlist $p
- set f [open $testdir/begin.$p w]
- close $f
- } res]
- }
- watch_procs $pidlist 300 360000
-
- set failed 0
- for { set i 1 } { $i <= $nprocs } { incr i } {
- if { [check_failed_run ALL.OUT.$i] != 0 } {
- set failed 1
- puts "Regression tests failed in process $i."
- }
- }
- if { $failed == 0 } {
- puts "Regression tests succeeded."
- }
-}
-
-proc run_queue { i rundir queuedir nitems } {
- set builddir [pwd]
- file delete $builddir/ALL.OUT.$i
- cd $rundir
-
- puts "Parallel run_queue process $i (pid [pid]) starting."
-
- source ./include.tcl
- global env
-
- set dbenv [berkdb_env -create -lock -home $queuedir]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- set db [eval {berkdb_open -env $dbenv \
- -mode 0644 -len 120 -queue queue.db} ]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set dbc [eval $db cursor]
- error_check_good cursor [is_valid_cursor $dbc $db] TRUE
-
- set count 0
- set waitcnt 0
-
- while { $waitcnt < 5 } {
- set line [$db get -consume]
- if { [ llength $line ] > 0 } {
- set cmd [lindex [lindex $line 0] 1]
- set num [lindex [lindex $line 0] 0]
- set o [open $builddir/ALL.OUT.$i a]
- puts $o "\nExecuting record $num ([timestamp -w]):\n"
- set tdir "TESTDIR.$i"
- regsub {TESTDIR} $cmd $tdir cmd
- puts $o $cmd
- close $o
- if { [expr {$num % 10} == 0] } {
- puts "Starting test $num of $nitems"
- }
- #puts "Process $i, record $num:\n$cmd"
- set env(PURIFYOPTIONS) \
- "-log-file=./test$num.%p -follow-child-processes -messages=first"
- set env(PURECOVOPTIONS) \
- "-counts-file=./cov.pcv -log-file=./cov.log -follow-child-processes"
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl; $cmd" \
- >>& $builddir/ALL.OUT.$i } res] {
- set o [open $builddir/ALL.OUT.$i a]
- puts $o "FAIL: '$cmd': $res"
- close $o
- }
- env_cleanup $testdir
- set o [open $builddir/ALL.OUT.$i a]
- puts $o "\nEnding record $num ([timestamp])\n"
- close $o
- incr count
- } else {
- incr waitcnt
- tclsleep 1
- }
- }
-
- puts "Process $i: $count commands executed"
-
- $dbc close
- $db close
- $dbenv close
-
- #
- # We need to put the pid file in the builddir's idea
- # of testdir, not this child process' local testdir.
- # Therefore source builddir's include.tcl to get its
- # testdir.
- # !!! This resets testdir, so don't do anything else
- # local to the child after this.
- source $builddir/include.tcl
-
- set f [open $builddir/$testdir/end.[pid] w]
- close $f
-}
-
-proc mkparalleldirs { nprocs basename queuedir } {
- source ./include.tcl
- set dir [pwd]
-
- if { $is_windows_test != 1 } {
- set EXE ""
- } else {
- set EXE ".exe"
- }
- for { set i 1 } { $i <= $nprocs } { incr i } {
- set destdir $basename.$i
- catch {file mkdir $destdir}
- puts "Created $destdir"
- if { $is_windows_test == 1 } {
- catch {file mkdir $destdir/Debug}
- catch {eval file copy \
- [eval glob {$dir/Debug/*.dll}] $destdir/Debug}
- }
- catch {eval file copy \
- [eval glob {$dir/{.libs,include.tcl}}] $destdir}
- # catch {eval file copy $dir/$queuedir $destdir}
- catch {eval file copy \
- [eval glob {$dir/db_{checkpoint,deadlock}$EXE} \
- {$dir/db_{dump,load,printlog,recover,stat,upgrade}$EXE} \
- {$dir/db_{archive,verify}$EXE}] \
- $destdir}
-
- # Create modified copies of include.tcl in parallel
- # directories so paths still work.
-
- set infile [open ./include.tcl r]
- set d [read $infile]
- close $infile
-
- regsub {test_path } $d {test_path ../} d
- regsub {src_root } $d {src_root ../} d
- set tdir "TESTDIR.$i"
- regsub -all {TESTDIR} $d $tdir d
- regsub {KILL \.} $d {KILL ..} d
- set outfile [open $destdir/include.tcl w]
- puts $outfile $d
- close $outfile
-
- global svc_list
- foreach svc_exe $svc_list {
- if { [file exists $dir/$svc_exe] } {
- catch {eval file copy $dir/$svc_exe $destdir}
- }
- }
- }
-}
-
-proc run_ptest { nprocs test args } {
- global parms
- set basename ./PARALLEL_TESTDIR
- set queuedir NULL
- source ./include.tcl
-
- mkparalleldirs $nprocs $basename $queuedir
-
- if { [info exists parms($test)] } {
- foreach method \
- "hash queue queueext recno rbtree frecno rrecno btree" {
- if { [eval exec_ptest $nprocs $basename \
- $test $method $args] != 0 } {
- break
- }
- }
- } else {
- eval exec_ptest $nprocs $basename $test $args
- }
-}
-
-proc exec_ptest { nprocs basename test args } {
- source ./include.tcl
-
- set basedir [pwd]
- set pidlist {}
- puts "Running $nprocs parallel runs of $test"
- for { set i 1 } { $i <= $nprocs } { incr i } {
- set outf ALL.OUT.$i
- fileremove -f $outf
- set ret [catch {
- set p [exec $tclsh_path << \
- "cd $basename.$i;\
- source ../$test_path/test.tcl;\
- $test $args" >& $outf &]
- lappend pidlist $p
- set f [open $testdir/begin.$p w]
- close $f
- } res]
- }
- watch_procs $pidlist 30 36000
- set failed 0
- for { set i 1 } { $i <= $nprocs } { incr i } {
- if { [check_failed_run ALL.OUT.$i] != 0 } {
- set failed 1
- puts "Test $test failed in process $i."
- }
- }
- if { $failed == 0 } {
- puts "Test $test succeeded all processes"
- return 0
- } else {
- puts "Test failed: stopping"
- return 1
- }
-}
diff --git a/bdb/test/recd001.tcl b/bdb/test/recd001.tcl
deleted file mode 100644
index bc7ac6d896a..00000000000
--- a/bdb/test/recd001.tcl
+++ /dev/null
@@ -1,242 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd001.tcl,v 11.40 2002/05/08 19:36:18 sandstro Exp $
-#
-# TEST recd001
-# TEST Per-operation recovery tests for non-duplicate, non-split
-# TEST messages. Makes sure that we exercise redo, undo, and do-nothing
-# TEST condition. Any test that appears with the message (change state)
-# TEST indicates that we've already run the particular test, but we are
-# TEST running it again so that we can change the state of the data base
-# TEST to prepare for the next test (this applies to all other recovery
-# TEST tests as well).
-# TEST
-# TEST These are the most basic recovery tests. We do individual recovery
-# TEST tests for each operation in the access method interface. First we
-# TEST create a file and capture the state of the database (i.e., we copy
-# TEST it. Then we run a transaction containing a single operation. In
-# TEST one test, we abort the transaction and compare the outcome to the
-# TEST original copy of the file. In the second test, we restore the
-# TEST original copy of the database and then run recovery and compare
-# TEST this against the actual database.
-proc recd001 { method {select 0} args} {
- global fixed_len
- source ./include.tcl
-
- set orig_fixed_len $fixed_len
- set opts [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Recd001: $method operation/transaction tests"
-
- # Create the database and environment.
- env_cleanup $testdir
-
- # The recovery tests were originally written to
- # do a command, abort, do it again, commit, and then
- # repeat the sequence with another command. Each command
- # tends to require that the previous command succeeded and
- # left the database a certain way. To avoid cluttering up the
- # op_recover interface as well as the test code, we create two
- # databases; one does abort and then commit for each op, the
- # other does prepare, prepare-abort, and prepare-commit for each
- # op. If all goes well, this allows each command to depend
- # exactly one successful iteration of the previous command.
- set testfile recd001.db
- set testfile2 recd001-2.db
-
- set flags "-create -txn -home $testdir"
-
- puts "\tRecd001.a.0: creating environment"
- set env_cmd "berkdb_env $flags"
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- #
- # We need to create a database to get the pagesize (either
- # the default or whatever might have been specified).
- # Then remove it so we can compute fixed_len and create the
- # real database.
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv $opts $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set stat [$db stat]
- #
- # Compute the fixed_len based on the pagesize being used.
- # We want the fixed_len to be 1/4 the pagesize.
- #
- set pg [get_pagesize $stat]
- error_check_bad get_pagesize $pg -1
- set fixed_len [expr $pg / 4]
- error_check_good db_close [$db close] 0
- error_check_good dbremove [berkdb dbremove -env $dbenv $testfile] 0
-
- # Convert the args again because fixed_len is now real.
- # Create the databases and close the environment.
- # cannot specify db truncate in txn protected env!!!
- set opts [convert_args $method ""]
- set omethod [convert_method $method]
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv $opts $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv $opts $testfile2"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- error_check_good env_close [$dbenv close] 0
-
- puts "\tRecd001.a.1: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-
- # List of recovery tests: {CMD MSG} pairs.
- set rlist {
- { {DB put -txn TXNID $key $data} "Recd001.b: put"}
- { {DB del -txn TXNID $key} "Recd001.c: delete"}
- { {DB put -txn TXNID $bigkey $data} "Recd001.d: big key put"}
- { {DB del -txn TXNID $bigkey} "Recd001.e: big key delete"}
- { {DB put -txn TXNID $key $bigdata} "Recd001.f: big data put"}
- { {DB del -txn TXNID $key} "Recd001.g: big data delete"}
- { {DB put -txn TXNID $key $data} "Recd001.h: put (change state)"}
- { {DB put -txn TXNID $key $newdata} "Recd001.i: overwrite"}
- { {DB put -txn TXNID -partial {$off $len} $key $partial_grow}
- "Recd001.j: partial put growing"}
- { {DB put -txn TXNID $key $newdata} "Recd001.k: overwrite (fix)"}
- { {DB put -txn TXNID -partial {$off $len} $key $partial_shrink}
- "Recd001.l: partial put shrinking"}
- { {DB put -txn TXNID -append $data} "Recd001.m: put -append"}
- { {DB get -txn TXNID -consume} "Recd001.n: db get -consume"}
- }
-
- # These are all the data values that we're going to need to read
- # through the operation table and run the recovery tests.
-
- if { [is_record_based $method] == 1 } {
- set key 1
- } else {
- set key recd001_key
- }
- set data recd001_data
- set newdata NEWrecd001_dataNEW
- set off 3
- set len 12
-
- set partial_grow replacement_record_grow
- set partial_shrink xxx
- if { [is_fixed_length $method] == 1 } {
- set len [string length $partial_grow]
- set partial_shrink $partial_grow
- }
- set bigdata [replicate $key $fixed_len]
- if { [is_record_based $method] == 1 } {
- set bigkey $fixed_len
- } else {
- set bigkey [replicate $key $fixed_len]
- }
-
- foreach pair $rlist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- if { $select != 0 } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { [lsearch $select $tag] == -1 } {
- continue
- }
- }
-
- if { [is_queue $method] != 1 } {
- if { [string first append $cmd] != -1 } {
- continue
- }
- if { [string first consume $cmd] != -1 } {
- continue
- }
- }
-
-# if { [is_fixed_length $method] == 1 } {
-# if { [string first partial $cmd] != -1 } {
-# continue
-# }
-# }
- op_recover abort $testdir $env_cmd $testfile $cmd $msg
- op_recover commit $testdir $env_cmd $testfile $cmd $msg
- #
- # Note that since prepare-discard ultimately aborts
- # the txn, it must come before prepare-commit.
- #
- op_recover prepare-abort $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-discard $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-commit $testdir $env_cmd $testfile2 \
- $cmd $msg
- }
- set fixed_len $orig_fixed_len
-
- if { [is_fixed_length $method] == 1 } {
- puts "Skipping remainder of test for fixed length methods"
- return
- }
-
- #
- # Check partial extensions. If we add a key/data to the database
- # and then expand it using -partial, then recover, recovery was
- # failing in #3944. Check that scenario here.
- #
- # !!!
- # We loop here because on each iteration, we need to clean up
- # the old env (i.e. this test does not depend on earlier runs).
- # If we run it without cleaning up the env inbetween, we do not
- # test the scenario of #3944.
- #
- set len [string length $data]
- set len2 256
- set part_data [replicate "abcdefgh" 32]
- set p [list 0 $len]
- set cmd [subst \
- {DB put -txn TXNID -partial {$len $len2} $key $part_data}]
- set msg "Recd001.o: partial put prepopulated/expanding"
- foreach op {abort commit prepare-abort prepare-discard prepare-commit} {
- env_cleanup $testdir
-
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
- set t [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $t $dbenv] TRUE
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv -txn $t $opts $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv -txn $t $opts $testfile2"
- set db2 [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db2] TRUE
-
- set ret [$db put -txn $t -partial $p $key $data]
- error_check_good dbput $ret 0
-
- set ret [$db2 put -txn $t -partial $p $key $data]
- error_check_good dbput $ret 0
- error_check_good txncommit [$t commit] 0
- error_check_good dbclose [$db close] 0
- error_check_good dbclose [$db2 close] 0
- error_check_good dbenvclose [$dbenv close] 0
-
- op_recover $op $testdir $env_cmd $testfile $cmd $msg
- }
- return
-}
diff --git a/bdb/test/recd002.tcl b/bdb/test/recd002.tcl
deleted file mode 100644
index ed579291283..00000000000
--- a/bdb/test/recd002.tcl
+++ /dev/null
@@ -1,103 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd002.tcl,v 11.30 2002/02/25 16:44:24 sandstro Exp $
-#
-# TEST recd002
-# TEST Split recovery tests. For every known split log message, makes sure
-# TEST that we exercise redo, undo, and do-nothing condition.
-proc recd002 { method {select 0} args} {
- source ./include.tcl
- global rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Recd002: skipping for specific pagesizes"
- return
- }
- berkdb srand $rand_init
-
- # Queues don't do splits, so we don't really need the small page
- # size and the small page size is smaller than the record, so it's
- # a problem.
- if { [string compare $omethod "-queue"] == 0 } {
- set pagesize 4096
- } else {
- set pagesize 512
- }
- puts "Recd002: $method split recovery tests"
-
- env_cleanup $testdir
- set testfile recd002.db
- set testfile2 recd002-2.db
- set eflags \
- "-create -txn -lock_max 2000 -home $testdir"
-
- puts "\tRecd002.a: creating environment"
- set env_cmd "berkdb_env $eflags"
- set dbenv [eval $env_cmd]
- error_check_bad dbenv $dbenv NULL
-
- # Create the databases. We will use a small page size so that splits
- # happen fairly quickly.
- set oflags "-create $args $omethod -mode 0644 -env $dbenv\
- -pagesize $pagesize $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_bad db_open $db NULL
- error_check_good db_open [is_substr $db db] 1
- error_check_good db_close [$db close] 0
- set oflags "-create $args $omethod -mode 0644 -env $dbenv\
- -pagesize $pagesize $testfile2"
- set db [eval {berkdb_open} $oflags]
- error_check_bad db_open $db NULL
- error_check_good db_open [is_substr $db db] 1
- error_check_good db_close [$db close] 0
- reset_env $dbenv
-
- # List of recovery tests: {CMD MSG} pairs
- set slist {
- { {populate DB $omethod TXNID $n 0 0} "Recd002.b: splits"}
- { {unpopulate DB TXNID $r} "Recd002.c: Remove keys"}
- }
-
- # If pages are 512 bytes, then adding 512 key/data pairs
- # should be more than sufficient.
- set n 512
- set r [expr $n / 2 ]
- foreach pair $slist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- if { $select != 0 } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { [lsearch $select $tag] == -1 } {
- continue
- }
- }
- op_recover abort $testdir $env_cmd $testfile $cmd $msg
- op_recover commit $testdir $env_cmd $testfile $cmd $msg
- #
- # Note that since prepare-discard ultimately aborts
- # the txn, it must come before prepare-commit.
- #
- op_recover prepare-abort $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-discard $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-commit $testdir $env_cmd $testfile2 \
- $cmd $msg
- }
-
- puts "\tRecd002.d: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
diff --git a/bdb/test/recd003.tcl b/bdb/test/recd003.tcl
deleted file mode 100644
index 0fd054832ce..00000000000
--- a/bdb/test/recd003.tcl
+++ /dev/null
@@ -1,119 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd003.tcl,v 11.30 2002/02/25 16:44:24 sandstro Exp $
-#
-# TEST recd003
-# TEST Duplicate recovery tests. For every known duplicate log message,
-# TEST makes sure that we exercise redo, undo, and do-nothing condition.
-# TEST
-# TEST Test all the duplicate log messages and recovery operations. We make
-# TEST sure that we exercise all possible recovery actions: redo, undo, undo
-# TEST but no fix necessary and redo but no fix necessary.
-proc recd003 { method {select 0} args } {
- source ./include.tcl
- global rand_init
-
- set largs [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "Recd003 skipping for method $method"
- return
- }
- puts "Recd003: $method duplicate recovery tests"
-
- berkdb srand $rand_init
-
- env_cleanup $testdir
- # See comment in recd001.tcl for why there are two database files...
- set testfile recd003.db
- set testfile2 recd003-2.db
- set eflags "-create -txn -home $testdir"
-
- puts "\tRecd003.a: creating environment"
- set env_cmd "berkdb_env $eflags"
- set dbenv [eval $env_cmd]
- error_check_bad dbenv $dbenv NULL
-
- # Create the databases.
- set oflags \
- "-create $largs -mode 0644 $omethod -dup -env $dbenv $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_bad db_open $db NULL
- error_check_good db_open [is_substr $db db] 1
- error_check_good db_close [$db close] 0
- set oflags \
- "-create $largs -mode 0644 $omethod -dup -env $dbenv $testfile2"
- set db [eval {berkdb_open} $oflags]
- error_check_bad db_open $db NULL
- error_check_good db_open [is_substr $db db] 1
- error_check_good db_close [$db close] 0
- reset_env $dbenv
-
- # These are all the data values that we're going to need to read
- # through the operation table and run the recovery tests.
- set n 10
- set dupn 2000
- set bign 500
-
- # List of recovery tests: {CMD MSG} pairs
- set dlist {
- { {populate DB $omethod TXNID $n 1 0}
- "Recd003.b: add dups"}
- { {DB del -txn TXNID duplicate_key}
- "Recd003.c: remove dups all at once"}
- { {populate DB $omethod TXNID $n 1 0}
- "Recd003.d: add dups (change state)"}
- { {unpopulate DB TXNID 0}
- "Recd003.e: remove dups 1 at a time"}
- { {populate DB $omethod TXNID $dupn 1 0}
- "Recd003.f: dup split"}
- { {DB del -txn TXNID duplicate_key}
- "Recd003.g: remove dups (change state)"}
- { {populate DB $omethod TXNID $n 1 1}
- "Recd003.h: add big dup"}
- { {DB del -txn TXNID duplicate_key}
- "Recd003.i: remove big dup all at once"}
- { {populate DB $omethod TXNID $n 1 1}
- "Recd003.j: add big dup (change state)"}
- { {unpopulate DB TXNID 0}
- "Recd003.k: remove big dup 1 at a time"}
- { {populate DB $omethod TXNID $bign 1 1}
- "Recd003.l: split big dup"}
- }
-
- foreach pair $dlist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- if { $select != 0 } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { [lsearch $select $tag] == -1 } {
- continue
- }
- }
- op_recover abort $testdir $env_cmd $testfile $cmd $msg
- op_recover commit $testdir $env_cmd $testfile $cmd $msg
- #
- # Note that since prepare-discard ultimately aborts
- # the txn, it must come before prepare-commit.
- #
- op_recover prepare-abort $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-discard $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-commit $testdir $env_cmd $testfile2 \
- $cmd $msg
- }
-
- puts "\tRecd003.m: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
diff --git a/bdb/test/recd004.tcl b/bdb/test/recd004.tcl
deleted file mode 100644
index 74504ac3cd7..00000000000
--- a/bdb/test/recd004.tcl
+++ /dev/null
@@ -1,95 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd004.tcl,v 11.29 2002/02/25 16:44:25 sandstro Exp $
-#
-# TEST recd004
-# TEST Big key test where big key gets elevated to internal page.
-proc recd004 { method {select 0} args} {
- source ./include.tcl
- global rand_init
-
- set opts [convert_args $method $args]
- set omethod [convert_method $method]
-
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Recd004: skipping for specific pagesizes"
- return
- }
- if { [is_record_based $method] == 1 } {
- puts "Recd004 skipping for method $method"
- return
- }
- puts "Recd004: $method big-key on internal page recovery tests"
-
- berkdb srand $rand_init
-
- env_cleanup $testdir
- set testfile recd004.db
- set testfile2 recd004-2.db
- set eflags "-create -txn -home $testdir"
- puts "\tRecd004.a: creating environment"
- set env_cmd "berkdb_env $eflags"
- set dbenv [eval $env_cmd]
- error_check_bad dbenv $dbenv NULL
-
- # Create the databases. We will use a small page size so that we
- # elevate quickly
- set oflags "-create -mode 0644 \
- $omethod -env $dbenv $opts -pagesize 512 $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_bad db_open $db NULL
- error_check_good db_open [is_substr $db db] 1
- error_check_good db_close [$db close] 0
- set oflags "-create -mode 0644 \
- $omethod -env $dbenv $opts -pagesize 512 $testfile2"
- set db [eval {berkdb_open} $oflags]
- error_check_bad db_open $db NULL
- error_check_good db_open [is_substr $db db] 1
- error_check_good db_close [$db close] 0
- reset_env $dbenv
-
- # List of recovery tests: {CMD MSG} pairs
- set slist {
- { {big_populate DB TXNID $n} "Recd004.b: big key elevation"}
- { {unpopulate DB TXNID 0} "Recd004.c: Remove keys"}
- }
-
- # If pages are 512 bytes, then adding 512 key/data pairs
- # should be more than sufficient.
- set n 512
- foreach pair $slist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- if { $select != 0 } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { [lsearch $select $tag] == -1 } {
- continue
- }
- }
- op_recover abort $testdir $env_cmd $testfile $cmd $msg
- op_recover commit $testdir $env_cmd $testfile $cmd $msg
- #
- # Note that since prepare-discard ultimately aborts
- # the txn, it must come before prepare-commit.
- #
- op_recover prepare-abort $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-discard $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-commit $testdir $env_cmd $testfile2 \
- $cmd $msg
- }
-
- puts "\tRecd004.d: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
diff --git a/bdb/test/recd005.tcl b/bdb/test/recd005.tcl
deleted file mode 100644
index 7668c9e3be3..00000000000
--- a/bdb/test/recd005.tcl
+++ /dev/null
@@ -1,230 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd005.tcl,v 11.34 2002/05/22 15:42:39 sue Exp $
-#
-# TEST recd005
-# TEST Verify reuse of file ids works on catastrophic recovery.
-# TEST
-# TEST Make sure that we can do catastrophic recovery even if we open
-# TEST files using the same log file id.
-proc recd005 { method args} {
- source ./include.tcl
- global rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Recd005: $method catastrophic recovery"
-
- berkdb srand $rand_init
-
- set testfile1 recd005.1.db
- set testfile2 recd005.2.db
- set eflags \
- "-create -txn -lock_max 2000 -lock_max_objects 2000 -home $testdir"
-
- set tnum 0
- foreach sizes "{1000 10} {10 1000}" {
- foreach ops "{abort abort} {abort commit} {commit abort} \
- {commit commit}" {
- env_cleanup $testdir
- incr tnum
-
- set s1 [lindex $sizes 0]
- set s2 [lindex $sizes 1]
- set op1 [lindex $ops 0]
- set op2 [lindex $ops 1]
- puts "\tRecd005.$tnum: $s1 $s2 $op1 $op2"
-
- puts "\tRecd005.$tnum.a: creating environment"
- set env_cmd "berkdb_env $eflags"
- set dbenv [eval $env_cmd]
- error_check_bad dbenv $dbenv NULL
-
- # Create the two databases.
- set oflags \
- "-create -mode 0644 -env $dbenv $args $omethod"
- set db1 [eval {berkdb_open} $oflags $testfile1]
- error_check_bad db_open $db1 NULL
- error_check_good db_open [is_substr $db1 db] 1
- error_check_good db_close [$db1 close] 0
-
- set db2 [eval {berkdb_open} $oflags $testfile2]
- error_check_bad db_open $db2 NULL
- error_check_good db_open [is_substr $db2 db] 1
- error_check_good db_close [$db2 close] 0
- $dbenv close
-
- set dbenv [eval $env_cmd]
- puts "\tRecd005.$tnum.b: Populating databases"
- do_one_file \
- $testdir $method $dbenv $env_cmd $testfile1 $s1 $op1
- do_one_file \
- $testdir $method $dbenv $env_cmd $testfile2 $s2 $op2
-
- puts "\tRecd005.$tnum.c: Verifying initial population"
- check_file $testdir $env_cmd $testfile1 $op1
- check_file $testdir $env_cmd $testfile2 $op2
-
- # Now, close the environment (so that recovery will work
- # on NT which won't allow delete of an open file).
- reset_env $dbenv
-
- berkdb debug_check
- puts -nonewline \
- "\tRecd005.$tnum.d: About to run recovery ... "
- flush stdout
-
- set stat [catch \
- {exec $util_path/db_recover -h $testdir -c} \
- result]
- if { $stat == 1 } {
- error "Recovery error: $result."
- }
- puts "complete"
-
- # Substitute a file that will need recovery and try
- # running recovery again.
- if { $op1 == "abort" } {
- file copy -force $testdir/$testfile1.afterop \
- $testdir/$testfile1
- move_file_extent $testdir $testfile1 \
- afterop copy
- } else {
- file copy -force $testdir/$testfile1.init \
- $testdir/$testfile1
- move_file_extent $testdir $testfile1 init copy
- }
- if { $op2 == "abort" } {
- file copy -force $testdir/$testfile2.afterop \
- $testdir/$testfile2
- move_file_extent $testdir $testfile2 \
- afterop copy
- } else {
- file copy -force $testdir/$testfile2.init \
- $testdir/$testfile2
- move_file_extent $testdir $testfile2 init copy
- }
-
- berkdb debug_check
- puts -nonewline "\tRecd005.$tnum.e:\
- About to run recovery on pre-op database ... "
- flush stdout
-
- set stat \
- [catch {exec $util_path/db_recover \
- -h $testdir -c} result]
- if { $stat == 1 } {
- error "Recovery error: $result."
- }
- puts "complete"
-
- set dbenv [eval $env_cmd]
- check_file $testdir $env_cmd $testfile1 $op1
- check_file $testdir $env_cmd $testfile2 $op2
- reset_env $dbenv
-
- puts "\tRecd005.$tnum.f:\
- Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch \
- {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
- }
- }
-}
-
-proc do_one_file { dir method env env_cmd filename num op } {
- source ./include.tcl
-
- set init_file $dir/$filename.t1
- set afterop_file $dir/$filename.t2
- set final_file $dir/$filename.t3
-
- # Save the initial file and open the environment and the first file
- file copy -force $dir/$filename $dir/$filename.init
- copy_extent_file $dir $filename init
- set oflags "-auto_commit -unknown -env $env"
- set db [eval {berkdb_open} $oflags $filename]
-
- # Dump out file contents for initial case
- open_and_dump_file $filename $env $init_file nop \
- dump_file_direction "-first" "-next"
-
- set txn [$env txn]
- error_check_bad txn_begin $txn NULL
- error_check_good txn_begin [is_substr $txn $env] 1
-
- # Now fill in the db and the txnid in the command
- populate $db $method $txn $num 0 0
-
- # Sync the file so that we can capture a snapshot to test
- # recovery.
- error_check_good sync:$db [$db sync] 0
- file copy -force $dir/$filename $dir/$filename.afterop
- copy_extent_file $dir $filename afterop
- open_and_dump_file $testdir/$filename.afterop NULL \
- $afterop_file nop dump_file_direction "-first" "-next"
- error_check_good txn_$op:$txn [$txn $op] 0
-
- if { $op == "commit" } {
- puts "\t\tFile $filename executed and committed."
- } else {
- puts "\t\tFile $filename executed and aborted."
- }
-
- # Dump out file and save a copy.
- error_check_good sync:$db [$db sync] 0
- open_and_dump_file $testdir/$filename NULL $final_file nop \
- dump_file_direction "-first" "-next"
- file copy -force $dir/$filename $dir/$filename.final
- copy_extent_file $dir $filename final
-
- # If this is an abort, it should match the original file.
- # If this was a commit, then this file should match the
- # afterop file.
- if { $op == "abort" } {
- filesort $init_file $init_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(initial,post-$op):diff($init_file,$final_file) \
- [filecmp $init_file.sort $final_file.sort] 0
- } else {
- filesort $afterop_file $afterop_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(post-$op,pre-commit):diff($afterop_file,$final_file) \
- [filecmp $afterop_file.sort $final_file.sort] 0
- }
-
- error_check_good close:$db [$db close] 0
-}
-
-proc check_file { dir env_cmd filename op } {
- source ./include.tcl
-
- set init_file $dir/$filename.t1
- set afterop_file $dir/$filename.t2
- set final_file $dir/$filename.t3
-
- open_and_dump_file $testdir/$filename NULL $final_file nop \
- dump_file_direction "-first" "-next"
- if { $op == "abort" } {
- filesort $init_file $init_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(initial,post-$op):diff($init_file,$final_file) \
- [filecmp $init_file.sort $final_file.sort] 0
- } else {
- filesort $afterop_file $afterop_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(pre-commit,post-$op):diff($afterop_file,$final_file) \
- [filecmp $afterop_file.sort $final_file.sort] 0
- }
-}
diff --git a/bdb/test/recd006.tcl b/bdb/test/recd006.tcl
deleted file mode 100644
index fc35e755b08..00000000000
--- a/bdb/test/recd006.tcl
+++ /dev/null
@@ -1,262 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd006.tcl,v 11.26 2002/03/15 16:30:53 sue Exp $
-#
-# TEST recd006
-# TEST Nested transactions.
-proc recd006 { method {select 0} args} {
- global kvals
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "Recd006 skipping for method $method"
- return
- }
- puts "Recd006: $method nested transactions"
-
- # Create the database and environment.
- env_cleanup $testdir
-
- set dbfile recd006.db
- set testfile $testdir/$dbfile
-
- puts "\tRecd006.a: create database"
- set oflags "-create $args $omethod $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Make sure that we have enough entries to span a couple of
- # different pages.
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < 1000 } {
- if { [string compare $omethod "-recno"] == 0 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
-
- set ret [$db put -nooverwrite $key $str]
- error_check_good put $ret 0
-
- incr count
- }
- close $did
-
- # Variables used below:
- # p1: a pair of keys that are likely to be on the same page.
- # p2: a pair of keys that are likely to be on the same page,
- # but on a page different than those in p1.
- set dbc [$db cursor]
- error_check_good dbc [is_substr $dbc $db] 1
-
- set ret [$dbc get -first]
- error_check_bad dbc_get:DB_FIRST [llength $ret] 0
- set p1 [lindex [lindex $ret 0] 0]
- set kvals($p1) [lindex [lindex $ret 0] 1]
-
- set ret [$dbc get -next]
- error_check_bad dbc_get:DB_NEXT [llength $ret] 0
- lappend p1 [lindex [lindex $ret 0] 0]
- set kvals([lindex [lindex $ret 0] 0]) [lindex [lindex $ret 0] 1]
-
- set ret [$dbc get -last]
- error_check_bad dbc_get:DB_LAST [llength $ret] 0
- set p2 [lindex [lindex $ret 0] 0]
- set kvals($p2) [lindex [lindex $ret 0] 1]
-
- set ret [$dbc get -prev]
- error_check_bad dbc_get:DB_PREV [llength $ret] 0
- lappend p2 [lindex [lindex $ret 0] 0]
- set kvals([lindex [lindex $ret 0] 0]) [lindex [lindex $ret 0] 1]
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
-
- # Now create the full transaction environment.
- set eflags "-create -txn -home $testdir"
-
- puts "\tRecd006.b: creating environment"
- set env_cmd "berkdb_env $eflags"
- set dbenv [eval $env_cmd]
- error_check_bad dbenv $dbenv NULL
-
- # Reset the environment.
- reset_env $dbenv
-
- set p1 [list $p1]
- set p2 [list $p2]
-
- # List of recovery tests: {CMD MSG} pairs
- set rlist {
- { {nesttest DB TXNID ENV 1 $p1 $p2 commit commit}
- "Recd006.c: children (commit commit)"}
- { {nesttest DB TXNID ENV 0 $p1 $p2 commit commit}
- "Recd006.d: children (commit commit)"}
- { {nesttest DB TXNID ENV 1 $p1 $p2 commit abort}
- "Recd006.e: children (commit abort)"}
- { {nesttest DB TXNID ENV 0 $p1 $p2 commit abort}
- "Recd006.f: children (commit abort)"}
- { {nesttest DB TXNID ENV 1 $p1 $p2 abort abort}
- "Recd006.g: children (abort abort)"}
- { {nesttest DB TXNID ENV 0 $p1 $p2 abort abort}
- "Recd006.h: children (abort abort)"}
- { {nesttest DB TXNID ENV 1 $p1 $p2 abort commit}
- "Recd006.i: children (abort commit)"}
- { {nesttest DB TXNID ENV 0 $p1 $p2 abort commit}
- "Recd006.j: children (abort commit)"}
- }
-
- foreach pair $rlist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- if { $select != 0 } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { [lsearch $select $tag] == -1 } {
- continue
- }
- }
- op_recover abort $testdir $env_cmd $dbfile $cmd $msg
- op_recover commit $testdir $env_cmd $dbfile $cmd $msg
- }
-
- puts "\tRecd006.k: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
-
-# Do the nested transaction test.
-# We want to make sure that children inherit properly from their
-# parents and that locks are properly handed back to parents
-# and that the right thing happens on commit/abort.
-# In particular:
-# Write lock on parent, properly acquired by child.
-# Committed operation on child gives lock to parent so that
-# other child can also get the lock.
-# Aborted op by child releases lock so other child can get it.
-# Correct database state if child commits
-# Correct database state if child aborts
-proc nesttest { db parent env do p1 p2 child1 child2} {
- global kvals
- source ./include.tcl
-
- if { $do == 1 } {
- set func toupper
- } else {
- set func tolower
- }
-
- # Do an RMW on the parent to get a write lock.
- set p10 [lindex $p1 0]
- set p11 [lindex $p1 1]
- set p20 [lindex $p2 0]
- set p21 [lindex $p2 1]
-
- set ret [$db get -rmw -txn $parent $p10]
- set res $ret
- set Dret [lindex [lindex $ret 0] 1]
- if { [string compare $Dret $kvals($p10)] == 0 ||
- [string compare $Dret [string toupper $kvals($p10)]] == 0 } {
- set val 0
- } else {
- set val $Dret
- }
- error_check_good get_parent_RMW $val 0
-
- # OK, do child 1
- set kid1 [$env txn -parent $parent]
- error_check_good kid1 [is_valid_txn $kid1 $env] TRUE
-
- # Reading write-locked parent object should be OK
- #puts "\tRead write-locked parent object for kid1."
- set ret [$db get -txn $kid1 $p10]
- error_check_good kid1_get10 $ret $res
-
- # Now update this child
- set data [lindex [lindex [string $func $ret] 0] 1]
- set ret [$db put -txn $kid1 $p10 $data]
- error_check_good kid1_put10 $ret 0
-
- #puts "\tKid1 successful put."
-
- # Now start child2
- #puts "\tBegin txn for kid2."
- set kid2 [$env txn -parent $parent]
- error_check_good kid2 [is_valid_txn $kid2 $env] TRUE
-
- # Getting anything in the p1 set should deadlock, so let's
- # work on the p2 set.
- set data [string $func $kvals($p20)]
- #puts "\tPut data for kid2."
- set ret [$db put -txn $kid2 $p20 $data]
- error_check_good kid2_put20 $ret 0
-
- #puts "\tKid2 data put successful."
-
- # Now let's do the right thing to kid1
- puts -nonewline "\tKid1 $child1..."
- if { [string compare $child1 "commit"] == 0 } {
- error_check_good kid1_commit [$kid1 commit] 0
- } else {
- error_check_good kid1_abort [$kid1 abort] 0
- }
- puts "complete"
-
- # In either case, child2 should now be able to get the
- # lock, either because it is inherited by the parent
- # (commit) or because it was released (abort).
- set data [string $func $kvals($p11)]
- set ret [$db put -txn $kid2 $p11 $data]
- error_check_good kid2_put11 $ret 0
-
- # Now let's do the right thing to kid2
- puts -nonewline "\tKid2 $child2..."
- if { [string compare $child2 "commit"] == 0 } {
- error_check_good kid2_commit [$kid2 commit] 0
- } else {
- error_check_good kid2_abort [$kid2 abort] 0
- }
- puts "complete"
-
- # Now, let parent check that the right things happened.
- # First get all four values
- set p10_check [lindex [lindex [$db get -txn $parent $p10] 0] 0]
- set p11_check [lindex [lindex [$db get -txn $parent $p11] 0] 0]
- set p20_check [lindex [lindex [$db get -txn $parent $p20] 0] 0]
- set p21_check [lindex [lindex [$db get -txn $parent $p21] 0] 0]
-
- if { [string compare $child1 "commit"] == 0 } {
- error_check_good parent_kid1 $p10_check \
- [string tolower [string $func $kvals($p10)]]
- } else {
- error_check_good \
- parent_kid1 $p10_check [string tolower $kvals($p10)]
- }
- if { [string compare $child2 "commit"] == 0 } {
- error_check_good parent_kid2 $p11_check \
- [string tolower [string $func $kvals($p11)]]
- error_check_good parent_kid2 $p20_check \
- [string tolower [string $func $kvals($p20)]]
- } else {
- error_check_good parent_kid2 $p11_check $kvals($p11)
- error_check_good parent_kid2 $p20_check $kvals($p20)
- }
-
- # Now do a write on the parent for 21 whose lock it should
- # either have or should be available.
- set ret [$db put -txn $parent $p21 [string $func $kvals($p21)]]
- error_check_good parent_put21 $ret 0
-
- return 0
-}
diff --git a/bdb/test/recd007.tcl b/bdb/test/recd007.tcl
deleted file mode 100644
index aeac3bea2c1..00000000000
--- a/bdb/test/recd007.tcl
+++ /dev/null
@@ -1,886 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd007.tcl,v 11.60 2002/08/08 15:38:07 bostic Exp $
-#
-# TEST recd007
-# TEST File create/delete tests.
-# TEST
-# TEST This is a recovery test for create/delete of databases. We have
-# TEST hooks in the database so that we can abort the process at various
-# TEST points and make sure that the transaction doesn't commit. We
-# TEST then need to recover and make sure the file is correctly existing
-# TEST or not, as the case may be.
-proc recd007 { method args} {
- global fixed_len
- source ./include.tcl
-
- set orig_fixed_len $fixed_len
- set opts [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Recd007: $method operation/transaction tests"
-
- # Create the database and environment.
- env_cleanup $testdir
-
- set testfile recd007.db
- set flags "-create -txn -home $testdir"
-
- puts "\tRecd007.a: creating environment"
- set env_cmd "berkdb_env $flags"
-
- set env [eval $env_cmd]
-
- # We need to create a database to get the pagesize (either
- # the default or whatever might have been specified).
- # Then remove it so we can compute fixed_len and create the
- # real database.
- set oflags "-create $omethod -mode 0644 -env $env $opts $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set stat [$db stat]
- #
- # Compute the fixed_len based on the pagesize being used.
- # We want the fixed_len to be 1/4 the pagesize.
- #
- set pg [get_pagesize $stat]
- error_check_bad get_pagesize $pg -1
- set fixed_len [expr $pg / 4]
- error_check_good db_close [$db close] 0
- error_check_good dbremove [berkdb dbremove -env $env $testfile] 0
- error_check_good envclose [$env close] 0
-
- # Convert the args again because fixed_len is now real.
- set opts [convert_args $method ""]
-
- # List of recovery tests: {HOOKS MSG} pairs
- # Where each HOOK is a list of {COPY ABORT}
- #
- set rlist {
- { {"none" "preopen"} "Recd007.b0: none/preopen"}
- { {"none" "postopen"} "Recd007.b1: none/postopen"}
- { {"none" "postlogmeta"} "Recd007.b2: none/postlogmeta"}
- { {"none" "postlog"} "Recd007.b3: none/postlog"}
- { {"none" "postsync"} "Recd007.b4: none/postsync"}
- { {"postopen" "none"} "Recd007.c0: postopen/none"}
- { {"postlogmeta" "none"} "Recd007.c1: postlogmeta/none"}
- { {"postlog" "none"} "Recd007.c2: postlog/none"}
- { {"postsync" "none"} "Recd007.c3: postsync/none"}
- { {"postopen" "postopen"} "Recd007.d: postopen/postopen"}
- { {"postopen" "postlogmeta"} "Recd007.e: postopen/postlogmeta"}
- { {"postopen" "postlog"} "Recd007.f: postopen/postlog"}
- { {"postlog" "postlog"} "Recd007.g: postlog/postlog"}
- { {"postlogmeta" "postlogmeta"} "Recd007.h: postlogmeta/postlogmeta"}
- { {"postlogmeta" "postlog"} "Recd007.i: postlogmeta/postlog"}
- { {"postlog" "postsync"} "Recd007.j: postlog/postsync"}
- { {"postsync" "postsync"} "Recd007.k: postsync/postsync"}
- }
-
- # These are all the data values that we're going to need to read
- # through the operation table and run the recovery tests.
-
- foreach pair $rlist {
- set cmd [lindex $pair 0]
- set msg [lindex $pair 1]
- file_recover_create $testdir $env_cmd $omethod \
- $opts $testfile $cmd $msg
- }
-
- set rlist {
- { {"none" "predestroy"} "Recd007.l0: none/predestroy"}
- { {"none" "postdestroy"} "Recd007.l1: none/postdestroy"}
- { {"predestroy" "none"} "Recd007.m0: predestroy/none"}
- { {"postdestroy" "none"} "Recd007.m1: postdestroy/none"}
- { {"predestroy" "predestroy"} "Recd007.n: predestroy/predestroy"}
- { {"predestroy" "postdestroy"} "Recd007.o: predestroy/postdestroy"}
- { {"postdestroy" "postdestroy"} "Recd007.p: postdestroy/postdestroy"}
- }
- foreach op { dbremove dbrename dbtruncate } {
- foreach pair $rlist {
- set cmd [lindex $pair 0]
- set msg [lindex $pair 1]
- file_recover_delete $testdir $env_cmd $omethod \
- $opts $testfile $cmd $msg $op
- }
- }
-
- if { $is_windows_test != 1 } {
- set env_cmd "berkdb_env_noerr $flags"
- do_file_recover_delmk $testdir $env_cmd $method $opts $testfile
- }
-
- puts "\tRecd007.r: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
-
-proc file_recover_create { dir env_cmd method opts dbfile cmd msg } {
- #
- # We run this test on each of these scenarios:
- # 1. Creating just a database
- # 2. Creating a database with a subdb
- # 3. Creating a 2nd subdb in a database
- puts "\t$msg create with a database"
- do_file_recover_create $dir $env_cmd $method $opts $dbfile \
- 0 $cmd $msg
- if { [is_queue $method] == 1 } {
- puts "\tSkipping subdatabase tests for method $method"
- return
- }
- puts "\t$msg create with a database and subdb"
- do_file_recover_create $dir $env_cmd $method $opts $dbfile \
- 1 $cmd $msg
- puts "\t$msg create with a database and 2nd subdb"
- do_file_recover_create $dir $env_cmd $method $opts $dbfile \
- 2 $cmd $msg
-
-}
-
-proc do_file_recover_create { dir env_cmd method opts dbfile sub cmd msg } {
- global log_log_record_types
- source ./include.tcl
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $dir
- }
-
- env_cleanup $dir
- set dflags "-dar"
- # Open the environment and set the copy/abort locations
- set env [eval $env_cmd]
- set copy [lindex $cmd 0]
- set abort [lindex $cmd 1]
- error_check_good copy_location [is_valid_create_loc $copy] 1
- error_check_good abort_location [is_valid_create_loc $abort] 1
-
- if {([string first "logmeta" $copy] != -1 || \
- [string first "logmeta" $abort] != -1) && \
- [is_btree $method] == 0 } {
- puts "\tSkipping for method $method"
- $env test copy none
- $env test abort none
- error_check_good env_close [$env close] 0
- return
- }
-
- # Basically non-existence is our initial state. When we
- # abort, it is also our final state.
- #
- switch $sub {
- 0 {
- set oflags "-create $method -auto_commit -mode 0644 \
- -env $env $opts $dbfile"
- }
- 1 {
- set oflags "-create $method -auto_commit -mode 0644 \
- -env $env $opts $dbfile sub0"
- }
- 2 {
- #
- # If we are aborting here, then we need to
- # create a first subdb, then create a second
- #
- set oflags "-create $method -auto_commit -mode 0644 \
- -env $env $opts $dbfile sub0"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
- set init_file $dir/$dbfile.init
- catch { file copy -force $dir/$dbfile $init_file } res
- set oflags "-create $method -auto_commit -mode 0644 \
- -env $env $opts $dbfile sub1"
- }
- default {
- puts "\tBad value $sub for sub"
- return
- }
- }
- #
- # Set our locations to copy and abort
- #
- set ret [eval $env test copy $copy]
- error_check_good test_copy $ret 0
- set ret [eval $env test abort $abort]
- error_check_good test_abort $ret 0
-
- puts "\t\tExecuting command"
- set ret [catch {eval {berkdb_open} $oflags} db]
-
- # Sync the mpool so any changes to the file that are
- # in mpool get written to the disk file before the
- # diff.
- $env mpool_sync
-
- #
- # If we don't abort, then we expect success.
- # If we abort, we expect no file created.
- #
- if {[string first "none" $abort] == -1} {
- #
- # Operation was aborted, verify it does
- # not exist.
- #
- puts "\t\tCommand executed and aborted."
- error_check_bad db_open ret 0
-
- #
- # Check that the file does not exist. Final state.
- #
- if { $sub != 2 } {
- error_check_good db_open:exists \
- [file exists $dir/$dbfile] 0
- } else {
- error_check_good \
- diff(init,postcreate):diff($init_file,$dir/$dbfile)\
- [dbdump_diff $dflags $init_file $dir $dbfile] 0
- }
- } else {
- #
- # Operation was committed, verify it exists.
- #
- puts "\t\tCommand executed and committed."
- error_check_good db_open [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- #
- # Check that the file exists.
- #
- error_check_good db_open [file exists $dir/$dbfile] 1
- set init_file $dir/$dbfile.init
- catch { file copy -force $dir/$dbfile $init_file } res
-
- if { [is_queue $method] == 1 } {
- copy_extent_file $dir $dbfile init
- }
- }
- error_check_good env_close [$env close] 0
-
- #
- # Run recovery here. Should be a no-op. Verify that
- # the file still doesn't exist or change (depending on sub)
- # when we are done.
- #
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
- if { $sub != 2 && [string first "none" $abort] == -1} {
- #
- # Operation was aborted, verify it still does
- # not exist. Only done with file creations.
- #
- error_check_good after_recover1 [file exists $dir/$dbfile] 0
- } else {
- #
- # Operation was committed or just a subdb was aborted.
- # Verify it did not change.
- #
- error_check_good \
- diff(initial,post-recover1):diff($init_file,$dir/$dbfile) \
- [dbdump_diff $dflags $init_file $dir $dbfile] 0
- #
- # Need a new copy to get the right LSN into the file.
- #
- catch { file copy -force $dir/$dbfile $init_file } res
-
- if { [is_queue $method] == 1 } {
- copy_extent_file $dir $dbfile init
- }
- }
-
- # If we didn't make a copy, then we are done.
- #
- if {[string first "none" $copy] != -1} {
- return
- }
-
- #
- # Now move the .afterop file to $dbfile. Run recovery again.
- #
- copy_afterop $dir
-
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
- if { $sub != 2 && [string first "none" $abort] == -1} {
- #
- # Operation was aborted, verify it still does
- # not exist. Only done with file creations.
- #
- error_check_good after_recover2 [file exists $dir/$dbfile] 0
- } else {
- #
- # Operation was committed or just a subdb was aborted.
- # Verify it did not change.
- #
- error_check_good \
- diff(initial,post-recover2):diff($init_file,$dir/$dbfile) \
- [dbdump_diff $dflags $init_file $dir $dbfile] 0
- }
-
-}
-
-proc file_recover_delete { dir env_cmd method opts dbfile cmd msg op } {
- #
- # We run this test on each of these scenarios:
- # 1. Deleting/Renaming just a database
- # 2. Deleting/Renaming a database with a subdb
- # 3. Deleting/Renaming a 2nd subdb in a database
- puts "\t$msg $op with a database"
- do_file_recover_delete $dir $env_cmd $method $opts $dbfile \
- 0 $cmd $msg $op
- if { [is_queue $method] == 1 } {
- puts "\tSkipping subdatabase tests for method $method"
- return
- }
- puts "\t$msg $op with a database and subdb"
- do_file_recover_delete $dir $env_cmd $method $opts $dbfile \
- 1 $cmd $msg $op
- puts "\t$msg $op with a database and 2nd subdb"
- do_file_recover_delete $dir $env_cmd $method $opts $dbfile \
- 2 $cmd $msg $op
-
-}
-
-proc do_file_recover_delete { dir env_cmd method opts dbfile sub cmd msg op } {
- global log_log_record_types
- source ./include.tcl
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $dir
- }
-
- env_cleanup $dir
- # Open the environment and set the copy/abort locations
- set env [eval $env_cmd]
- set copy [lindex $cmd 0]
- set abort [lindex $cmd 1]
- error_check_good copy_location [is_valid_delete_loc $copy] 1
- error_check_good abort_location [is_valid_delete_loc $abort] 1
-
- if { [is_record_based $method] == 1 } {
- set key1 1
- set key2 2
- } else {
- set key1 recd007_key1
- set key2 recd007_key2
- }
- set data1 recd007_data0
- set data2 recd007_data1
- set data3 NEWrecd007_data2
-
- #
- # Depending on what sort of subdb we want, if any, our
- # args to the open call will be different (and if we
- # want a 2nd subdb, we create the first here.
- #
- # XXX
- # For dbtruncate, we want oflags to have "$env" in it,
- # not have the value currently in 'env'. That is why
- # the '$' is protected below. Later on we use oflags
- # but with a new $env we just opened.
- #
- switch $sub {
- 0 {
- set subdb ""
- set new $dbfile.new
- set dflags "-dar"
- set oflags "-create $method -auto_commit -mode 0644 \
- -env \$env $opts $dbfile"
- }
- 1 {
- set subdb sub0
- set new $subdb.new
- set dflags ""
- set oflags "-create $method -auto_commit -mode 0644 \
- -env \$env $opts $dbfile $subdb"
- }
- 2 {
- #
- # If we are aborting here, then we need to
- # create a first subdb, then create a second
- #
- set subdb sub1
- set new $subdb.new
- set dflags ""
- set oflags "-create $method -auto_commit -mode 0644 \
- -env \$env $opts $dbfile sub0"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set txn [$env txn]
- set ret [$db put -txn $txn $key1 $data1]
- error_check_good db_put $ret 0
- error_check_good commit [$txn commit] 0
- error_check_good db_close [$db close] 0
- set oflags "-create $method -auto_commit -mode 0644 \
- -env \$env $opts $dbfile $subdb"
- }
- default {
- puts "\tBad value $sub for sub"
- return
- }
- }
-
- #
- # Set our locations to copy and abort
- #
- set ret [eval $env test copy $copy]
- error_check_good test_copy $ret 0
- set ret [eval $env test abort $abort]
- error_check_good test_abort $ret 0
-
- #
- # Open our db, add some data, close and copy as our
- # init file.
- #
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set txn [$env txn]
- set ret [$db put -txn $txn $key1 $data1]
- error_check_good db_put $ret 0
- set ret [$db put -txn $txn $key2 $data2]
- error_check_good db_put $ret 0
- error_check_good commit [$txn commit] 0
- error_check_good db_close [$db close] 0
-
- $env mpool_sync
-
- set init_file $dir/$dbfile.init
- catch { file copy -force $dir/$dbfile $init_file } res
-
- if { [is_queue $method] == 1} {
- copy_extent_file $dir $dbfile init
- }
-
- #
- # If we don't abort, then we expect success.
- # If we abort, we expect no file removed.
- #
- switch $op {
- "dbrename" {
- set ret [catch { eval {berkdb} $op -env $env -auto_commit \
- $dbfile $subdb $new } remret]
- }
- "dbremove" {
- set ret [catch { eval {berkdb} $op -env $env -auto_commit \
- $dbfile $subdb } remret]
- }
- "dbtruncate" {
- set txn [$env txn]
- set db [eval {berkdb_open_noerr -env} \
- $env -auto_commit $dbfile $subdb]
- error_check_good dbopen [is_valid_db $db] TRUE
- error_check_good txnbegin [is_valid_txn $txn $env] TRUE
- set ret [catch {$db truncate -txn $txn} remret]
- }
- }
- $env mpool_sync
- if { $abort == "none" } {
- if { $op == "dbtruncate" } {
- error_check_good txncommit [$txn commit] 0
- error_check_good dbclose [$db close] 0
- }
- #
- # Operation was committed, verify it.
- #
- puts "\t\tCommand executed and committed."
- error_check_good $op $ret 0
- #
- # If a dbtruncate, check that truncate returned the number
- # of items previously in the database.
- #
- if { [string compare $op "dbtruncate"] == 0 } {
- error_check_good remret $remret 2
- }
- recd007_check $op $sub $dir $dbfile $subdb $new $env $oflags
- } else {
- #
- # Operation was aborted, verify it did not change.
- #
- if { $op == "dbtruncate" } {
- error_check_good txnabort [$txn abort] 0
- error_check_good dbclose [$db close] 0
- }
- puts "\t\tCommand executed and aborted."
- error_check_good $op $ret 1
-
- #
- # Check that the file exists. Final state.
- # Compare against initial file.
- #
- error_check_good post$op.1 [file exists $dir/$dbfile] 1
- error_check_good \
- diff(init,post$op.2):diff($init_file,$dir/$dbfile)\
- [dbdump_diff $dflags $init_file $dir $dbfile] 0
- }
- $env mpool_sync
- error_check_good env_close [$env close] 0
- catch { file copy -force $dir/$dbfile $init_file } res
- if { [is_queue $method] == 1} {
- copy_extent_file $dir $dbfile init
- }
-
-
- #
- # Run recovery here. Should be a no-op. Verify that
- # the file still doesn't exist or change (depending on abort)
- # when we are done.
- #
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
-
- puts "complete"
-
- if { $abort == "none" } {
- #
- # Operate was committed.
- #
- set env [eval $env_cmd]
- recd007_check $op $sub $dir $dbfile $subdb $new $env $oflags
- error_check_good env_close [$env close] 0
- } else {
- #
- # Operation was aborted, verify it did not change.
- #
- berkdb debug_check
- error_check_good \
- diff(initial,post-recover1):diff($init_file,$dir/$dbfile) \
- [dbdump_diff $dflags $init_file $dir $dbfile] 0
- }
-
- #
- # If we didn't make a copy, then we are done.
- #
- if {[string first "none" $copy] != -1} {
- return
- }
-
- #
- # Now restore the .afterop file(s) to their original name.
- # Run recovery again.
- #
- copy_afterop $dir
-
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
-
- if { [string first "none" $abort] != -1} {
- set env [eval $env_cmd]
- recd007_check $op $sub $dir $dbfile $subdb $new $env $oflags
- error_check_good env_close [$env close] 0
- } else {
- #
- # Operation was aborted, verify it did not change.
- #
- error_check_good \
- diff(initial,post-recover2):diff($init_file,$dir/$dbfile) \
- [dbdump_diff $dflags $init_file $dir $dbfile] 0
- }
-
-}
-
-#
-# This function tests a specific case of recovering after a db removal.
-# This is for SR #2538. Basically we want to test that:
-# - Make an env.
-# - Make/close a db.
-# - Remove the db.
-# - Create another db of same name.
-# - Sync db but leave open.
-# - Run recovery.
-# - Verify no recovery errors and that new db is there.
-proc do_file_recover_delmk { dir env_cmd method opts dbfile } {
- global log_log_record_types
- source ./include.tcl
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $dir
- }
- set omethod [convert_method $method]
-
- puts "\tRecd007.q: Delete and recreate a database"
- env_cleanup $dir
- # Open the environment and set the copy/abort locations
- set env [eval $env_cmd]
- error_check_good env_open [is_valid_env $env] TRUE
-
- if { [is_record_based $method] == 1 } {
- set key 1
- } else {
- set key recd007_key
- }
- set data1 recd007_data
- set data2 NEWrecd007_data2
-
- set oflags \
- "-create $omethod -auto_commit -mode 0644 $opts $dbfile"
-
- #
- # Open our db, add some data, close and copy as our
- # init file.
- #
- set db [eval {berkdb_open_noerr} -env $env $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set txn [$env txn]
- set ret [$db put -txn $txn $key $data1]
- error_check_good db_put $ret 0
- error_check_good commit [$txn commit] 0
- error_check_good db_close [$db close] 0
-
- set ret \
- [catch { berkdb dbremove -env $env -auto_commit $dbfile } remret]
-
- #
- # Operation was committed, verify it does
- # not exist.
- #
- puts "\t\tCommand executed and committed."
- error_check_good dbremove $ret 0
- error_check_good dbremove.1 [file exists $dir/$dbfile] 0
-
- #
- # Now create a new db with the same name.
- #
- set db [eval {berkdb_open_noerr} -env $env $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set txn [$env txn]
- set ret [$db put -txn $txn $key [chop_data $method $data2]]
- error_check_good db_put $ret 0
- error_check_good commit [$txn commit] 0
- error_check_good db_sync [$db sync] 0
-
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
- error_check_good db_recover $stat 0
- error_check_good db_recover.1 [file exists $dir/$dbfile] 1
- #
- # Since we ran recovery on the open db/env, we need to
- # catch these calls. Basically they are there to clean
- # up the Tcl widgets.
- #
- set stat [catch {$db close} ret]
- error_check_bad dbclose_after_remove $stat 0
- error_check_good dbclose_after_remove [is_substr $ret recovery] 1
- set stat [catch {$env close} ret]
- error_check_bad envclose_after_remove $stat 0
- error_check_good envclose_after_remove [is_substr $ret recovery] 1
-
- #
- # Reopen env and db and verify 2nd database is there.
- #
- set env [eval $env_cmd]
- error_check_good env_open [is_valid_env $env] TRUE
- set db [eval {berkdb_open} -env $env $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set ret [$db get $key]
- error_check_good dbget [llength $ret] 1
- set kd [lindex $ret 0]
- error_check_good key [lindex $kd 0] $key
- error_check_good data2 [lindex $kd 1] [pad_data $method $data2]
-
- error_check_good dbclose [$db close] 0
- error_check_good envclose [$env close] 0
-}
-
-proc is_valid_create_loc { loc } {
- switch $loc {
- none -
- preopen -
- postopen -
- postlogmeta -
- postlog -
- postsync
- { return 1 }
- default
- { return 0 }
- }
-}
-
-proc is_valid_delete_loc { loc } {
- switch $loc {
- none -
- predestroy -
- postdestroy -
- postremcall
- { return 1 }
- default
- { return 0 }
- }
-}
-
-# Do a logical diff on the db dump files. We expect that either
-# the files are identical, or if they differ, that it is exactly
-# just a free/invalid page.
-# Return 1 if they are different, 0 if logically the same (or identical).
-#
-proc dbdump_diff { flags initfile dir dbfile } {
- source ./include.tcl
-
- set initdump $initfile.dump
- set dbdump $dbfile.dump
-
- set stat [catch {eval {exec $util_path/db_dump} $flags -f $initdump \
- $initfile} ret]
- error_check_good dbdump.init $stat 0
-
- # Do a dump without the freelist which should eliminate any
- # recovery differences.
- set stat [catch {eval {exec $util_path/db_dump} $flags -f $dir/$dbdump \
- $dir/$dbfile} ret]
- error_check_good dbdump.db $stat 0
-
- set stat [filecmp $dir/$dbdump $initdump]
-
- if {$stat == 0} {
- return 0
- }
- puts "diff: $dbdump $initdump gives:\n$ret"
- return 1
-}
-
-proc recd007_check { op sub dir dbfile subdb new env oflags } {
- #
- # No matter how many subdbs we have, dbtruncate will always
- # have a file, and if we open our particular db, it should
- # have no entries.
- #
- if { $sub == 0 } {
- if { $op == "dbremove" } {
- error_check_good $op:not-exist \
- [file exists $dir/$dbfile] 0
- } elseif { $op == "dbrename"} {
- error_check_good $op:exist \
- [file exists $dir/$dbfile] 0
- error_check_good $op:exist2 \
- [file exists $dir/$dbfile.new] 1
- } else {
- error_check_good $op:exist \
- [file exists $dir/$dbfile] 1
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set dbc [$db cursor]
- error_check_good dbc_open \
- [is_valid_cursor $dbc $db] TRUE
- set ret [$dbc get -first]
- error_check_good dbget1 [llength $ret] 0
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
- }
- return
- } else {
- set t1 $dir/t1
- #
- # If we have subdbs, check that all but the last one
- # are there, and the last one is correctly operated on.
- #
- set db [berkdb_open -rdonly -env $env $dbfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set c [eval {$db cursor}]
- error_check_good db_cursor [is_valid_cursor $c $db] TRUE
- set d [$c get -last]
- if { $op == "dbremove" } {
- if { $sub == 1 } {
- error_check_good subdb:rem [llength $d] 0
- } else {
- error_check_bad subdb:rem [llength $d] 0
- set sdb [lindex [lindex $d 0] 0]
- error_check_bad subdb:rem1 $sdb $subdb
- }
- } elseif { $op == "dbrename"} {
- set sdb [lindex [lindex $d 0] 0]
- error_check_good subdb:ren $sdb $new
- if { $sub != 1 } {
- set d [$c get -prev]
- error_check_bad subdb:ren [llength $d] 0
- set sdb [lindex [lindex $d 0] 0]
- error_check_good subdb:ren1 \
- [is_substr "new" $sdb] 0
- }
- } else {
- set sdb [lindex [lindex $d 0] 0]
- set dbt [berkdb_open -rdonly -env $env $dbfile $sdb]
- error_check_good db_open [is_valid_db $dbt] TRUE
- set dbc [$dbt cursor]
- error_check_good dbc_open \
- [is_valid_cursor $dbc $dbt] TRUE
- set ret [$dbc get -first]
- error_check_good dbget2 [llength $ret] 0
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$dbt close] 0
- if { $sub != 1 } {
- set d [$c get -prev]
- error_check_bad subdb:ren [llength $d] 0
- set sdb [lindex [lindex $d 0] 0]
- set dbt [berkdb_open -rdonly -env $env \
- $dbfile $sdb]
- error_check_good db_open [is_valid_db $dbt] TRUE
- set dbc [$db cursor]
- error_check_good dbc_open \
- [is_valid_cursor $dbc $db] TRUE
- set ret [$dbc get -first]
- error_check_bad dbget3 [llength $ret] 0
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$dbt close] 0
- }
- }
- error_check_good dbcclose [$c close] 0
- error_check_good db_close [$db close] 0
- }
-}
-
-proc copy_afterop { dir } {
- set r [catch { set filecopy [glob $dir/*.afterop] } res]
- if { $r == 1 } {
- return
- }
- foreach f $filecopy {
- set orig [string range $f 0 \
- [expr [string last "." $f] - 1]]
- catch { file rename -force $f $orig} res
- }
-}
diff --git a/bdb/test/recd008.tcl b/bdb/test/recd008.tcl
deleted file mode 100644
index 548813a403b..00000000000
--- a/bdb/test/recd008.tcl
+++ /dev/null
@@ -1,227 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd008.tcl,v 1.26 2002/02/25 16:44:26 sandstro Exp $
-#
-# TEST recd008
-# TEST Test deeply nested transactions and many-child transactions.
-proc recd008 { method {breadth 4} {depth 4} args} {
- global kvals
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 } {
- puts "Recd008 skipping for method $method"
- return
- }
- puts "Recd008: $method $breadth X $depth deeply nested transactions"
-
- # Create the database and environment.
- env_cleanup $testdir
-
- set dbfile recd008.db
-
- puts "\tRecd008.a: create database"
- set db [eval {berkdb_open -create} $args $omethod $testdir/$dbfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Make sure that we have enough entries to span a couple of
- # different pages.
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < 1000 } {
- if { [string compare $omethod "-recno"] == 0 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- if { $count == 500} {
- set p1 $key
- set kvals($p1) $str
- }
- set ret [$db put $key $str]
- error_check_good put $ret 0
-
- incr count
- }
- close $did
- error_check_good db_close [$db close] 0
-
- set txn_max [expr int([expr pow($breadth,$depth)])]
- if { $txn_max < 20 } {
- set txn_max 20
- }
- puts "\tRecd008.b: create environment for $txn_max transactions"
-
- set eflags "-mode 0644 -create -txn_max $txn_max \
- -txn -home $testdir"
- set env_cmd "berkdb_env $eflags"
- set dbenv [eval $env_cmd]
- error_check_good env_open [is_valid_env $dbenv] TRUE
-
- reset_env $dbenv
-
- set rlist {
- { {recd008_parent abort ENV DB $p1 TXNID 1 1 $breadth $depth}
- "Recd008.c: child abort parent" }
- { {recd008_parent commit ENV DB $p1 TXNID 1 1 $breadth $depth}
- "Recd008.d: child commit parent" }
- }
- foreach pair $rlist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- op_recover abort $testdir $env_cmd $dbfile $cmd $msg
- recd008_setkval $dbfile $p1
- op_recover commit $testdir $env_cmd $dbfile $cmd $msg
- recd008_setkval $dbfile $p1
- }
-
- puts "\tRecd008.e: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
-
-proc recd008_setkval { dbfile p1 } {
- global kvals
- source ./include.tcl
-
- set db [berkdb_open $testdir/$dbfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set ret [$db get $p1]
- set kvals($p1) [lindex [lindex $ret 0] 1]
-}
-
-# This is a lot like the op_recover procedure. We cannot use that
-# because it was not meant to be called recursively. This proc
-# knows about depth/breadth and file naming so that recursive calls
-# don't overwrite various initial and afterop files, etc.
-#
-# The basic flow of this is:
-# (Initial file)
-# Parent begin transaction (in op_recover)
-# Parent starts children
-# Recursively call recd008_recover
-# (children modify p1)
-# Parent modifies p1
-# (Afterop file)
-# Parent commit/abort (in op_recover)
-# (Final file)
-# Recovery test (in op_recover)
-proc recd008_parent { op env db p1key parent b0 d0 breadth depth } {
- global kvals
- source ./include.tcl
-
- #
- # Save copy of original data
- # Acquire lock on data
- #
- set olddata $kvals($p1key)
- set ret [$db get -rmw -txn $parent $p1key]
- set Dret [lindex [lindex $ret 0] 1]
- error_check_good get_parent_RMW $Dret $olddata
-
- #
- # Parent spawns off children
- #
- set ret [recd008_txn $op $env $db $p1key $parent \
- $b0 $d0 $breadth $depth]
-
- puts "Child runs complete. Parent modifies data."
-
- #
- # Parent modifies p1
- #
- set newdata $olddata.parent
- set ret [$db put -txn $parent $p1key $newdata]
- error_check_good db_put $ret 0
-
- #
- # Save value in kvals for later comparison
- #
- switch $op {
- "commit" {
- set kvals($p1key) $newdata
- }
- "abort" {
- set kvals($p1key) $olddata
- }
- }
- return 0
-}
-
-proc recd008_txn { op env db p1key parent b0 d0 breadth depth } {
- global log_log_record_types
- global kvals
- source ./include.tcl
-
- for {set d 1} {$d < $d0} {incr d} {
- puts -nonewline "\t"
- }
- puts "Recd008_txn: $op parent:$parent $breadth $depth ($b0 $d0)"
-
- # Save the initial file and open the environment and the file
- for {set b $b0} {$b <= $breadth} {incr b} {
- #
- # Begin child transaction
- #
- set t [$env txn -parent $parent]
- error_check_bad txn_begin $t NULL
- error_check_good txn_begin [is_valid_txn $t $env] TRUE
- set startd [expr $d0 + 1]
- set child $b:$startd:$t
- set olddata $kvals($p1key)
- set newdata $olddata.$child
- set ret [$db get -rmw -txn $t $p1key]
- set Dret [lindex [lindex $ret 0] 1]
- error_check_good get_parent_RMW $Dret $olddata
-
- #
- # Recursively call to set up nested transactions/children
- #
- for {set d $startd} {$d <= $depth} {incr d} {
- set ret [recd008_txn commit $env $db $p1key $t \
- $b $d $breadth $depth]
- set ret [recd008_txn abort $env $db $p1key $t \
- $b $d $breadth $depth]
- }
- #
- # Modifies p1.
- #
- set ret [$db put -txn $t $p1key $newdata]
- error_check_good db_put $ret 0
-
- #
- # Commit or abort
- #
- for {set d 1} {$d < $startd} {incr d} {
- puts -nonewline "\t"
- }
- puts "Executing txn_$op:$t"
- error_check_good txn_$op:$t [$t $op] 0
- for {set d 1} {$d < $startd} {incr d} {
- puts -nonewline "\t"
- }
- set ret [$db get -rmw -txn $parent $p1key]
- set Dret [lindex [lindex $ret 0] 1]
- switch $op {
- "commit" {
- puts "Command executed and committed."
- error_check_good get_parent_RMW $Dret $newdata
- set kvals($p1key) $newdata
- }
- "abort" {
- puts "Command executed and aborted."
- error_check_good get_parent_RMW $Dret $olddata
- set kvals($p1key) $olddata
- }
- }
- }
- return 0
-}
diff --git a/bdb/test/recd009.tcl b/bdb/test/recd009.tcl
deleted file mode 100644
index 5538d2d7652..00000000000
--- a/bdb/test/recd009.tcl
+++ /dev/null
@@ -1,180 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd009.tcl,v 1.18 2002/04/01 20:11:44 krinsky Exp $
-#
-# TEST recd009
-# TEST Verify record numbering across split/reverse splits and recovery.
-proc recd009 { method {select 0} args} {
- global fixed_len
- source ./include.tcl
-
- if { [is_rbtree $method] != 1 && [is_rrecno $method] != 1} {
- puts "Recd009 skipping for method $method."
- return
- }
-
- set opts [convert_args $method $args]
- set method [convert_method $method]
-
- puts "\tRecd009: Test record numbers across splits and recovery"
-
- set testfile recd009.db
- env_cleanup $testdir
- set mkeys 1000
- set nkeys 5
- set data "data"
-
- puts "\tRecd009.a: Create $method environment and database."
- set flags "-create -txn -home $testdir"
-
- set env_cmd "berkdb_env $flags"
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- set oflags "-env $dbenv -pagesize 8192 -create -mode 0644 $opts $method"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Fill page with small key/data pairs. Keep at leaf.
- puts "\tRecd009.b: Fill page with $nkeys small key/data pairs."
- for { set i 1 } { $i <= $nkeys } { incr i } {
- if { [is_recno $method] == 1 } {
- set key $i
- } else {
- set key key000$i
- }
- set ret [$db put $key $data$i]
- error_check_good dbput $ret 0
- }
- error_check_good db_close [$db close] 0
- error_check_good env_close [$dbenv close] 0
-
- set newnkeys [expr $nkeys + 1]
- # List of recovery tests: {CMD MSG} pairs.
- set rlist {
- { {recd009_split DB TXNID 1 $method $newnkeys $mkeys}
- "Recd009.c: split"}
- { {recd009_split DB TXNID 0 $method $newnkeys $mkeys}
- "Recd009.d: reverse split"}
- }
-
- foreach pair $rlist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- if { $select != 0 } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { [lsearch $select $tag] == -1 } {
- continue
- }
- }
- set reverse [string first "reverse" $msg]
- if { $reverse == -1 } {
- set abortkeys $nkeys
- set commitkeys $mkeys
- set abortpg 0
- set commitpg 1
- } else {
- set abortkeys $mkeys
- set commitkeys $nkeys
- set abortpg 1
- set commitpg 0
- }
- op_recover abort $testdir $env_cmd $testfile $cmd $msg
- recd009_recnocheck $testdir $testfile $opts $abortkeys $abortpg
- op_recover commit $testdir $env_cmd $testfile $cmd $msg
- recd009_recnocheck $testdir $testfile $opts \
- $commitkeys $commitpg
- }
- puts "\tRecd009.e: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
-
-#
-# This procedure verifies that the database has only numkeys number
-# of keys and that they are in order.
-#
-proc recd009_recnocheck { tdir testfile opts numkeys numpg} {
- source ./include.tcl
-
- set db [eval {berkdb_open} $opts $tdir/$testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- puts "\tRecd009_recnocheck: Verify page count of $numpg on split."
- set stat [$db stat]
- error_check_bad stat:check-split [is_substr $stat \
- "{{Internal pages} 0}"] $numpg
-
- set type [$db get_type]
- set dbc [$db cursor]
- error_check_good dbcursor [is_valid_cursor $dbc $db] TRUE
- set i 1
- puts "\tRecd009_recnocheck: Checking $numkeys record numbers."
- for {set d [$dbc get -first]} { [llength $d] != 0 } {
- set d [$dbc get -next]} {
- if { [is_btree $type] } {
- set thisi [$dbc get -get_recno]
- } else {
- set thisi [lindex [lindex $d 0] 0]
- }
- error_check_good recno_check $i $thisi
- error_check_good record_count [expr $i <= $numkeys] 1
- incr i
- }
- error_check_good curs_close [$dbc close] 0
- error_check_good db_close [$db close] 0
-}
-
-proc recd009_split { db txn split method nkeys mkeys } {
- global errorCode
- source ./include.tcl
-
- set data "data"
-
- set isrecno [is_recno $method]
- # if mkeys is above 1000, need to adjust below for lexical order
- if { $split == 1 } {
- puts "\tRecd009_split: Add $mkeys pairs to force split."
- for {set i $nkeys} { $i <= $mkeys } { incr i } {
- if { $isrecno == 1 } {
- set key $i
- } else {
- if { $i >= 100 } {
- set key key0$i
- } elseif { $i >= 10 } {
- set key key00$i
- } else {
- set key key000$i
- }
- }
- set ret [$db put -txn $txn $key $data$i]
- error_check_good dbput:more $ret 0
- }
- } else {
- puts "\tRecd009_split: Delete added keys to force reverse split."
- # Since rrecno renumbers, we delete downward.
- for {set i $mkeys} { $i >= $nkeys } { set i [expr $i - 1] } {
- if { $isrecno == 1 } {
- set key $i
- } else {
- if { $i >= 100 } {
- set key key0$i
- } elseif { $i >= 10 } {
- set key key00$i
- } else {
- set key key000$i
- }
- }
- error_check_good db_del:$i [$db del -txn $txn $key] 0
- }
- }
- return 0
-}
diff --git a/bdb/test/recd010.tcl b/bdb/test/recd010.tcl
deleted file mode 100644
index 2549e03a2c0..00000000000
--- a/bdb/test/recd010.tcl
+++ /dev/null
@@ -1,257 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd010.tcl,v 1.19 2002/03/15 19:05:07 sue Exp $
-#
-# TEST recd010
-# TEST Test stability of btree duplicates across btree off-page dup splits
-# TEST and reverse splits and across recovery.
-proc recd010 { method {select 0} args} {
- if { [is_btree $method] != 1 } {
- puts "Recd010 skipping for method $method."
- return
- }
-
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Recd010: skipping for specific pagesizes"
- return
- }
- set largs $args
- append largs " -dup "
- recd010_main $method $select $largs
- append largs " -dupsort "
- recd010_main $method $select $largs
-}
-
-proc recd010_main { method select largs } {
- global fixed_len
- global kvals
- global kvals_dups
- source ./include.tcl
-
-
- set opts [convert_args $method $largs]
- set method [convert_method $method]
-
- puts "Recd010 ($opts): Test duplicates across splits and recovery"
-
- set testfile recd010.db
- env_cleanup $testdir
- #
- # Set pagesize small to generate lots of off-page dups
- #
- set page 512
- set mkeys 1000
- set firstkeys 5
- set data "data"
- set key "recd010_key"
-
- puts "\tRecd010.a: Create environment and database."
- set flags "-create -txn -home $testdir"
-
- set env_cmd "berkdb_env $flags"
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- set oflags "-env $dbenv -create -mode 0644 $opts $method"
- set db [eval {berkdb_open} -pagesize $page $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Fill page with small key/data pairs. Keep at leaf.
- puts "\tRecd010.b: Fill page with $firstkeys small dups."
- for { set i 1 } { $i <= $firstkeys } { incr i } {
- set ret [$db put $key $data$i]
- error_check_good dbput $ret 0
- }
- set kvals 1
- set kvals_dups $firstkeys
- error_check_good db_close [$db close] 0
- error_check_good env_close [$dbenv close] 0
-
- # List of recovery tests: {CMD MSG} pairs.
- if { $mkeys < 100 } {
- puts "Recd010 mkeys of $mkeys too small"
- return
- }
- set rlist {
- { {recd010_split DB TXNID 1 2 $mkeys}
- "Recd010.c: btree split 2 large dups"}
- { {recd010_split DB TXNID 0 2 $mkeys}
- "Recd010.d: btree reverse split 2 large dups"}
- { {recd010_split DB TXNID 1 10 $mkeys}
- "Recd010.e: btree split 10 dups"}
- { {recd010_split DB TXNID 0 10 $mkeys}
- "Recd010.f: btree reverse split 10 dups"}
- { {recd010_split DB TXNID 1 100 $mkeys}
- "Recd010.g: btree split 100 dups"}
- { {recd010_split DB TXNID 0 100 $mkeys}
- "Recd010.h: btree reverse split 100 dups"}
- }
-
- foreach pair $rlist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- if { $select != 0 } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { [lsearch $select $tag] == -1 } {
- continue
- }
- }
- set reverse [string first "reverse" $msg]
- op_recover abort $testdir $env_cmd $testfile $cmd $msg
- recd010_check $testdir $testfile $opts abort $reverse $firstkeys
- op_recover commit $testdir $env_cmd $testfile $cmd $msg
- recd010_check $testdir $testfile $opts commit $reverse $firstkeys
- }
- puts "\tRecd010.i: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
-
-#
-# This procedure verifies that the database has only numkeys number
-# of keys and that they are in order.
-#
-proc recd010_check { tdir testfile opts op reverse origdups } {
- global kvals
- global kvals_dups
- source ./include.tcl
-
- set db [eval {berkdb_open} $opts $tdir/$testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set data "data"
-
- if { $reverse == -1 } {
- puts "\tRecd010_check: Verify split after $op"
- } else {
- puts "\tRecd010_check: Verify reverse split after $op"
- }
-
- set stat [$db stat]
- if { [expr ([string compare $op "abort"] == 0 && $reverse == -1) || \
- ([string compare $op "commit"] == 0 && $reverse != -1)]} {
- set numkeys 0
- set allkeys [expr $numkeys + 1]
- set numdups $origdups
- #
- # If we abort the adding of dups, or commit
- # the removal of dups, either way check that
- # we are back at the beginning. Check that:
- # - We have 0 internal pages.
- # - We have only 1 key (the original we primed the db
- # with at the beginning of the test).
- # - We have only the original number of dups we primed
- # the db with at the beginning of the test.
- #
- error_check_good stat:orig0 [is_substr $stat \
- "{{Internal pages} 0}"] 1
- error_check_good stat:orig1 [is_substr $stat \
- "{{Number of keys} 1}"] 1
- error_check_good stat:orig2 [is_substr $stat \
- "{{Number of records} $origdups}"] 1
- } else {
- set numkeys $kvals
- set allkeys [expr $numkeys + 1]
- set numdups $kvals_dups
- #
- # If we abort the removal of dups, or commit the
- # addition of dups, check that:
- # - We have > 0 internal pages.
- # - We have the number of keys.
- #
- error_check_bad stat:new0 [is_substr $stat \
- "{{Internal pages} 0}"] 1
- error_check_good stat:new1 [is_substr $stat \
- "{{Number of keys} $allkeys}"] 1
- }
-
- set dbc [$db cursor]
- error_check_good dbcursor [is_valid_cursor $dbc $db] TRUE
- puts "\tRecd010_check: Checking key and duplicate values"
- set key "recd010_key"
- #
- # Check dups are there as they should be.
- #
- for {set ki 0} {$ki < $numkeys} {incr ki} {
- set datacnt 0
- for {set d [$dbc get -set $key$ki]} { [llength $d] != 0 } {
- set d [$dbc get -nextdup]} {
- set thisdata [lindex [lindex $d 0] 1]
- if { $datacnt < 10 } {
- set pdata $data.$ki.00$datacnt
- } elseif { $datacnt < 100 } {
- set pdata $data.$ki.0$datacnt
- } else {
- set pdata $data.$ki.$datacnt
- }
- error_check_good dup_check $thisdata $pdata
- incr datacnt
- }
- error_check_good dup_count $datacnt $numdups
- }
- #
- # Check that the number of expected keys (allkeys) are
- # all of the ones that exist in the database.
- #
- set dupkeys 0
- set lastkey ""
- for {set d [$dbc get -first]} { [llength $d] != 0 } {
- set d [$dbc get -next]} {
- set thiskey [lindex [lindex $d 0] 0]
- if { [string compare $lastkey $thiskey] != 0 } {
- incr dupkeys
- }
- set lastkey $thiskey
- }
- error_check_good key_check $allkeys $dupkeys
- error_check_good curs_close [$dbc close] 0
- error_check_good db_close [$db close] 0
-}
-
-proc recd010_split { db txn split nkeys mkeys } {
- global errorCode
- global kvals
- global kvals_dups
- source ./include.tcl
-
- set data "data"
- set key "recd010_key"
-
- set numdups [expr $mkeys / $nkeys]
-
- set kvals $nkeys
- set kvals_dups $numdups
- if { $split == 1 } {
- puts \
-"\tRecd010_split: Add $nkeys keys, with $numdups duplicates each to force split."
- for {set k 0} { $k < $nkeys } { incr k } {
- for {set i 0} { $i < $numdups } { incr i } {
- if { $i < 10 } {
- set pdata $data.$k.00$i
- } elseif { $i < 100 } {
- set pdata $data.$k.0$i
- } else {
- set pdata $data.$k.$i
- }
- set ret [$db put -txn $txn $key$k $pdata]
- error_check_good dbput:more $ret 0
- }
- }
- } else {
- puts \
-"\tRecd010_split: Delete $nkeys keys to force reverse split."
- for {set k 0} { $k < $nkeys } { incr k } {
- error_check_good db_del:$k [$db del -txn $txn $key$k] 0
- }
- }
- return 0
-}
diff --git a/bdb/test/recd011.tcl b/bdb/test/recd011.tcl
deleted file mode 100644
index 74108a30650..00000000000
--- a/bdb/test/recd011.tcl
+++ /dev/null
@@ -1,116 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd011.tcl,v 11.19 2002/02/25 16:44:26 sandstro Exp $
-#
-# TEST recd011
-# TEST Verify that recovery to a specific timestamp works.
-proc recd011 { method {niter 200} {ckpt_freq 15} {sleep_time 1} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- set tnum 11
-
- puts "Recd0$tnum ($args): Test recovery to a specific timestamp."
-
- set testfile recd0$tnum.db
- env_cleanup $testdir
-
- set i 0
- if { [is_record_based $method] == 1 } {
- set key 1
- } else {
- set key KEY
- }
-
- puts "\tRecd0$tnum.a: Create environment and database."
- set flags "-create -txn -home $testdir"
-
- set env_cmd "berkdb_env $flags"
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- set oflags "-auto_commit -env $dbenv -create -mode 0644 $args $omethod"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Main loop: every second or so, increment the db in a txn.
- puts "\t\tInitial Checkpoint"
- error_check_good "Initial Checkpoint" [$dbenv txn_checkpoint] 0
-
- puts "\tRecd0$tnum.b ($niter iterations):\
- Transaction-protected increment loop."
- for { set i 0 } { $i <= $niter } { incr i } {
- set data $i
-
- # Put, in a txn.
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
- error_check_good db_put \
- [$db put -txn $txn $key [chop_data $method $data]] 0
- error_check_good txn_commit [$txn commit] 0
-
- set timeof($i) [timestamp -r]
-
- # If an appropriate period has elapsed, checkpoint.
- if { $i % $ckpt_freq == $ckpt_freq - 1 } {
- puts "\t\tIteration $i: Checkpointing."
- error_check_good ckpt($i) [$dbenv txn_checkpoint] 0
- }
-
- # sleep for N seconds.
- tclsleep $sleep_time
- }
- error_check_good db_close [$db close] 0
- error_check_good env_close [$dbenv close] 0
-
- # Now, loop through and recover to each timestamp, verifying the
- # expected increment.
- puts "\tRecd0$tnum.c: Recover to each timestamp and check."
- for { set i $niter } { $i >= 0 } { incr i -1 } {
-
- # Run db_recover.
- set t [clock format $timeof($i) -format "%y%m%d%H%M.%S"]
- berkdb debug_check
- set ret [catch {exec $util_path/db_recover -h $testdir -t $t} r]
- error_check_good db_recover($i,$t) $ret 0
-
- # Now open the db and check the timestamp.
- set db [eval {berkdb_open} $testdir/$testfile]
- error_check_good db_open($i) [is_valid_db $db] TRUE
-
- set dbt [$db get $key]
- set datum [lindex [lindex $dbt 0] 1]
- error_check_good timestamp_recover $datum [pad_data $method $i]
-
- error_check_good db_close [$db close] 0
- }
-
- # Finally, recover to a time well before the first timestamp
- # and well after the last timestamp. The latter should
- # be just like the timestamp of the last test performed;
- # the former should fail.
- puts "\tRecd0$tnum.d: Recover to before the first timestamp."
- set t [clock format [expr $timeof(0) - 1000] -format "%y%m%d%H%M.%S"]
- set ret [catch {exec $util_path/db_recover -h $testdir -t $t} r]
- error_check_bad db_recover(before,$t) $ret 0
-
- puts "\tRecd0$tnum.e: Recover to after the last timestamp."
- set t [clock format \
- [expr $timeof($niter) + 1000] -format "%y%m%d%H%M.%S"]
- set ret [catch {exec $util_path/db_recover -h $testdir -t $t} r]
- error_check_good db_recover(after,$t) $ret 0
-
- # Now open the db and check the timestamp.
- set db [eval {berkdb_open} $testdir/$testfile]
- error_check_good db_open(after) [is_valid_db $db] TRUE
-
- set dbt [$db get $key]
- set datum2 [lindex [lindex $dbt 0] 1]
-
- error_check_good timestamp_recover $datum2 $datum
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/recd012.tcl b/bdb/test/recd012.tcl
deleted file mode 100644
index 8231e648588..00000000000
--- a/bdb/test/recd012.tcl
+++ /dev/null
@@ -1,432 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd012.tcl,v 11.27 2002/05/10 00:48:07 margo Exp $
-#
-# TEST recd012
-# TEST Test of log file ID management. [#2288]
-# TEST Test recovery handling of file opens and closes.
-proc recd012 { method {start 0} \
- {niter 49} {noutiter 25} {niniter 100} {ndbs 5} args } {
- source ./include.tcl
-
- set tnum 12
- set pagesize 512
-
- if { $is_qnx_test } {
- set niter 40
- }
-
- puts "Recd0$tnum $method ($args): Test recovery file management."
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Recd012: skipping for specific pagesizes"
- return
- }
-
- for { set i $start } { $i <= $niter } { incr i } {
- env_cleanup $testdir
-
- # For repeatability, we pass in the iteration number
- # as a parameter and use that in recd012_body to seed
- # the random number generator to randomize our operations.
- # This lets us re-run a potentially failing iteration
- # without having to start from the beginning and work
- # our way to it.
- #
- # The number of databases ranges from 4 to 8 and is
- # a function of $niter
- # set ndbs [expr ($i % 5) + 4]
-
- recd012_body \
- $method $ndbs $i $noutiter $niniter $pagesize $tnum $args
- }
-}
-
-proc recd012_body { method {ndbs 5} iter noutiter niniter psz tnum {largs ""} } {
- global alphabet rand_init fixed_len recd012_ofkey recd012_ofckptkey
- source ./include.tcl
-
- set largs [convert_args $method $largs]
- set omethod [convert_method $method]
-
- puts "\tRecd0$tnum $method ($largs): Iteration $iter"
- puts "\t\tRecd0$tnum.a: Create environment and $ndbs databases."
-
- # We run out of lockers during some of the recovery runs, so
- # we need to make sure that we specify a DB_CONFIG that will
- # give us enough lockers.
- set f [open $testdir/DB_CONFIG w]
- puts $f "set_lk_max_lockers 5000"
- close $f
-
- set flags "-create -txn -home $testdir"
- set env_cmd "berkdb_env $flags"
- error_check_good env_remove [berkdb envremove -home $testdir] 0
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- # Initialize random number generator based on $iter.
- berkdb srand [expr $iter + $rand_init]
-
- # Initialize database that keeps track of number of open files (so
- # we don't run out of descriptors).
- set ofname of.db
- set txn [$dbenv txn]
- error_check_good open_txn_begin [is_valid_txn $txn $dbenv] TRUE
- set ofdb [berkdb_open -env $dbenv -txn $txn\
- -create -dup -mode 0644 -btree -pagesize 512 $ofname]
- error_check_good of_open [is_valid_db $ofdb] TRUE
- error_check_good open_txn_commit [$txn commit] 0
- set oftxn [$dbenv txn]
- error_check_good of_txn [is_valid_txn $oftxn $dbenv] TRUE
- error_check_good of_put [$ofdb put -txn $oftxn $recd012_ofkey 1] 0
- error_check_good of_put2 [$ofdb put -txn $oftxn $recd012_ofckptkey 0] 0
- error_check_good of_put3 [$ofdb put -txn $oftxn $recd012_ofckptkey 0] 0
- error_check_good of_txn_commit [$oftxn commit] 0
- error_check_good of_close [$ofdb close] 0
-
- # Create ndbs databases to work in, and a file listing db names to
- # pick from.
- set f [open $testdir/dblist w]
-
- set oflags "-auto_commit -env $dbenv \
- -create -mode 0644 -pagesize $psz $largs $omethod"
- for { set i 0 } { $i < $ndbs } { incr i } {
- # 50-50 chance of being a subdb, unless we're a queue.
- if { [berkdb random_int 0 1] || [is_queue $method] } {
- # not a subdb
- set dbname recd0$tnum-$i.db
- } else {
- # subdb
- set dbname "recd0$tnum-subdb.db s$i"
- }
- puts $f $dbname
- set db [eval berkdb_open $oflags $dbname]
- error_check_good db($i) [is_valid_db $db] TRUE
- error_check_good db($i)_close [$db close] 0
- }
- close $f
- error_check_good env_close [$dbenv close] 0
-
- # Now we get to the meat of things. Our goal is to do some number
- # of opens, closes, updates, and shutdowns (simulated here by a
- # close of all open handles and a close/reopen of the environment,
- # with or without an envremove), matching the regular expression
- #
- # ((O[OUC]+S)+R+V)
- #
- # We'll repeat the inner + a random number up to $niniter times,
- # and the outer + a random number up to $noutiter times.
- #
- # In order to simulate shutdowns, we'll perform the opens, closes,
- # and updates in a separate process, which we'll exit without closing
- # all handles properly. The environment will be left lying around
- # before we run recovery 50% of the time.
- set out [berkdb random_int 1 $noutiter]
- puts \
- "\t\tRecd0$tnum.b: Performing $out recoveries of up to $niniter ops."
- for { set i 0 } { $i < $out } { incr i } {
- set child [open "|$tclsh_path" w]
-
- # For performance, don't source everything,
- # just what we'll need.
- puts $child "load $tcllib"
- puts $child "set fixed_len $fixed_len"
- puts $child "source $src_root/test/testutils.tcl"
- puts $child "source $src_root/test/recd0$tnum.tcl"
-
- set rnd [expr $iter * 10000 + $i * 100 + $rand_init]
-
- # Go.
- berkdb debug_check
- puts $child "recd012_dochild {$env_cmd} $rnd $i $niniter\
- $ndbs $tnum $method $ofname $largs"
- close $child
-
- # Run recovery 0-3 times.
- set nrecs [berkdb random_int 0 3]
- for { set j 0 } { $j < $nrecs } { incr j } {
- berkdb debug_check
- set ret [catch {exec $util_path/db_recover \
- -h $testdir} res]
- if { $ret != 0 } {
- puts "FAIL: db_recover returned with nonzero\
- exit status, output as follows:"
- file mkdir /tmp/12out
- set fd [open /tmp/12out/[pid] w]
- puts $fd $res
- close $fd
- }
- error_check_good recover($j) $ret 0
- }
- }
-
- # Run recovery one final time; it doesn't make sense to
- # check integrity if we do not.
- set ret [catch {exec $util_path/db_recover -h $testdir} res]
- if { $ret != 0 } {
- puts "FAIL: db_recover returned with nonzero\
- exit status, output as follows:"
- puts $res
- }
-
- # Make sure each datum is the correct filename.
- puts "\t\tRecd0$tnum.c: Checking data integrity."
- set dbenv [berkdb_env -create -private -home $testdir]
- error_check_good env_open_integrity [is_valid_env $dbenv] TRUE
- set f [open $testdir/dblist r]
- set i 0
- while { [gets $f dbinfo] > 0 } {
- set db [eval berkdb_open -env $dbenv $dbinfo]
- error_check_good dbopen($dbinfo) [is_valid_db $db] TRUE
-
- set dbc [$db cursor]
- error_check_good cursor [is_valid_cursor $dbc $db] TRUE
-
- for { set dbt [$dbc get -first] } { [llength $dbt] > 0 } \
- { set dbt [$dbc get -next] } {
- error_check_good integrity [lindex [lindex $dbt 0] 1] \
- [pad_data $method $dbinfo]
- }
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
- }
- close $f
- error_check_good env_close_integrity [$dbenv close] 0
-
- # Verify
- error_check_good verify \
- [verify_dir $testdir "\t\tRecd0$tnum.d: " 0 0 1] 0
-}
-
-proc recd012_dochild { env_cmd rnd outiter niniter ndbs tnum method\
- ofname args } {
- global recd012_ofkey
- source ./include.tcl
- if { [is_record_based $method] } {
- set keybase ""
- } else {
- set keybase .[repeat abcdefghijklmnopqrstuvwxyz 4]
- }
-
- # Initialize our random number generator, repeatably based on an arg.
- berkdb srand $rnd
-
- # Open our env.
- set dbenv [eval $env_cmd]
- error_check_good env_open [is_valid_env $dbenv] TRUE
-
- # Find out how many databases appear to be open in the log--we
- # don't want recovery to run out of filehandles.
- set txn [$dbenv txn]
- error_check_good child_txn_begin [is_valid_txn $txn $dbenv] TRUE
- set ofdb [berkdb_open -env $dbenv -txn $txn $ofname]
- error_check_good child_txn_commit [$txn commit] 0
-
- set oftxn [$dbenv txn]
- error_check_good of_txn [is_valid_txn $oftxn $dbenv] TRUE
- set dbt [$ofdb get -txn $oftxn $recd012_ofkey]
- error_check_good of_get [lindex [lindex $dbt 0] 0] $recd012_ofkey
- set nopenfiles [lindex [lindex $dbt 0] 1]
-
- error_check_good of_commit [$oftxn commit] 0
-
- # Read our dbnames
- set f [open $testdir/dblist r]
- set i 0
- while { [gets $f dbname($i)] > 0 } {
- incr i
- }
- close $f
-
- # We now have $ndbs extant databases.
- # Open one of them, just to get us started.
- set opendbs {}
- set oflags "-env $dbenv $args"
-
- # Start a transaction, just to get us started.
- set curtxn [$dbenv txn]
- error_check_good txn [is_valid_txn $curtxn $dbenv] TRUE
-
- # Inner loop. Do $in iterations of a random open, close, or
- # update, where $in is between 1 and $niniter.
- set in [berkdb random_int 1 $niniter]
- for { set j 0 } { $j < $in } { incr j } {
- set op [berkdb random_int 0 2]
- switch $op {
- 0 {
- # Open.
- recd012_open
- }
- 1 {
- # Update. Put random-number$keybase as key,
- # filename as data, into random database.
- set num_open [llength $opendbs]
- if { $num_open == 0 } {
- # If none are open, do an open first.
- recd012_open
- }
- set n [berkdb random_int 0 [expr $num_open - 1]]
- set pair [lindex $opendbs $n]
- set udb [lindex $pair 0]
- set uname [lindex $pair 1]
-
- set key [berkdb random_int 1000 1999]$keybase
- set data [chop_data $method $uname]
- error_check_good put($uname,$udb,$key,$data) \
- [$udb put -txn $curtxn $key $data] 0
-
- # One time in four, commit the transaction.
- if { [berkdb random_int 0 3] == 0 && 0 } {
- error_check_good txn_recommit \
- [$curtxn commit] 0
- set curtxn [$dbenv txn]
- error_check_good txn_reopen \
- [is_valid_txn $curtxn $dbenv] TRUE
- }
- }
- 2 {
- # Close.
- if { [llength $opendbs] == 0 } {
- # If none are open, open instead of closing.
- recd012_open
- continue
- }
-
- # Commit curtxn first, lest we self-deadlock.
- error_check_good txn_recommit [$curtxn commit] 0
-
- # Do it.
- set which [berkdb random_int 0 \
- [expr [llength $opendbs] - 1]]
-
- set db [lindex [lindex $opendbs $which] 0]
- error_check_good db_choice [is_valid_db $db] TRUE
- global errorCode errorInfo
-
- error_check_good db_close \
- [[lindex [lindex $opendbs $which] 0] close] 0
-
- set opendbs [lreplace $opendbs $which $which]
- incr nopenfiles -1
-
- # Reopen txn.
- set curtxn [$dbenv txn]
- error_check_good txn_reopen \
- [is_valid_txn $curtxn $dbenv] TRUE
- }
- }
-
- # One time in two hundred, checkpoint.
- if { [berkdb random_int 0 199] == 0 } {
- puts "\t\t\tRecd0$tnum:\
- Random checkpoint after operation $outiter.$j."
- error_check_good txn_ckpt \
- [$dbenv txn_checkpoint] 0
- set nopenfiles \
- [recd012_nopenfiles_ckpt $dbenv $ofdb $nopenfiles]
- }
- }
-
- # We have to commit curtxn. It'd be kind of nice not to, but
- # if we start in again without running recovery, we may block
- # ourselves.
- error_check_good curtxn_commit [$curtxn commit] 0
-
- # Put back the new number of open files.
- set oftxn [$dbenv txn]
- error_check_good of_txn [is_valid_txn $oftxn $dbenv] TRUE
- error_check_good of_del [$ofdb del -txn $oftxn $recd012_ofkey] 0
- error_check_good of_put \
- [$ofdb put -txn $oftxn $recd012_ofkey $nopenfiles] 0
- error_check_good of_commit [$oftxn commit] 0
- error_check_good ofdb_close [$ofdb close] 0
-}
-
-proc recd012_open { } {
- # This is basically an inline and has to modify curtxn,
- # so use upvars.
- upvar curtxn curtxn
- upvar ndbs ndbs
- upvar dbname dbname
- upvar dbenv dbenv
- upvar oflags oflags
- upvar opendbs opendbs
- upvar nopenfiles nopenfiles
-
- # Return without an open if we've already opened too many files--
- # we don't want to make recovery run out of filehandles.
- if { $nopenfiles > 30 } {
- #puts "skipping--too many open files"
- return -code break
- }
-
- # Commit curtxn first, lest we self-deadlock.
- error_check_good txn_recommit \
- [$curtxn commit] 0
-
- # Do it.
- set which [berkdb random_int 0 [expr $ndbs - 1]]
-
- set db [eval berkdb_open -auto_commit $oflags $dbname($which)]
-
- lappend opendbs [list $db $dbname($which)]
-
- # Reopen txn.
- set curtxn [$dbenv txn]
- error_check_good txn_reopen [is_valid_txn $curtxn $dbenv] TRUE
-
- incr nopenfiles
-}
-
-# Update the database containing the number of files that db_recover has
-# to contend with--we want to avoid letting it run out of file descriptors.
-# We do this by keeping track of the number of unclosed opens since the
-# checkpoint before last.
-# $recd012_ofkey stores this current value; the two dups available
-# at $recd012_ofckptkey store the number of opens since the last checkpoint
-# previous.
-# Thus, if the current value is 17 when we do a checkpoint, and the
-# stored values are 3 and 8, the new current value (which we return)
-# is 14, and the new stored values are 8 and 6.
-proc recd012_nopenfiles_ckpt { env db nopenfiles } {
- global recd012_ofckptkey
- set txn [$env txn]
- error_check_good nopenfiles_ckpt_txn [is_valid_txn $txn $env] TRUE
-
- set dbc [$db cursor -txn $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- # Get the first ckpt value and delete it.
- set dbt [$dbc get -set $recd012_ofckptkey]
- error_check_good set [llength $dbt] 1
-
- set discard [lindex [lindex $dbt 0] 1]
- error_check_good del [$dbc del] 0
-
- set nopenfiles [expr $nopenfiles - $discard]
-
- # Get the next ckpt value
- set dbt [$dbc get -nextdup]
- error_check_good set2 [llength $dbt] 1
-
- # Calculate how many opens we've had since this checkpoint before last.
- set onlast [lindex [lindex $dbt 0] 1]
- set sincelast [expr $nopenfiles - $onlast]
-
- # Put this new number at the end of the dup set.
- error_check_good put [$dbc put -keylast $recd012_ofckptkey $sincelast] 0
-
- # We should never deadlock since we're the only one in this db.
- error_check_good dbc_close [$dbc close] 0
- error_check_good txn_commit [$txn commit] 0
-
- return $nopenfiles
-}
-
-# globals -- it's not worth passing these around, as they're constants
-set recd012_ofkey OPENFILES
-set recd012_ofckptkey CKPTS
diff --git a/bdb/test/recd013.tcl b/bdb/test/recd013.tcl
deleted file mode 100644
index e08654f34e0..00000000000
--- a/bdb/test/recd013.tcl
+++ /dev/null
@@ -1,287 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd013.tcl,v 11.18 2002/02/25 16:44:27 sandstro Exp $
-#
-# TEST recd013
-# TEST Test of cursor adjustment on child transaction aborts. [#2373]
-#
-# XXX
-# Other tests that cover more specific variants of the same issue
-# are in the access method tests for now. This is probably wrong; we
-# put this one here because they're closely based on and intertwined
-# with other, non-transactional cursor stability tests that are among
-# the access method tests, and because we need at least one test to
-# fit under recd and keep logtrack from complaining. We'll sort out the mess
-# later; the important thing, for now, is that everything that needs to gets
-# tested. (This really shouldn't be under recd at all, since it doesn't
-# run recovery!)
-proc recd013 { method { nitems 100 } args } {
- source ./include.tcl
- global alphabet log_log_record_types
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- set tnum 13
- set pgsz 512
-
- puts "Recd0$tnum $method ($args): Test of aborted cursor adjustments."
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Recd013: skipping for specific pagesizes"
- return
- }
-
- set testfile recd0$tnum.db
- env_cleanup $testdir
-
- set i 0
- if { [is_record_based $method] == 1 } {
- set keybase ""
- } else {
- set keybase "key"
- }
-
- puts "\tRecd0$tnum.a:\
- Create environment, database, and parent transaction."
- set flags "-create -txn -home $testdir"
-
- set env_cmd "berkdb_env $flags"
- set env [eval $env_cmd]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- set oflags \
- "-auto_commit -env $env -create -mode 0644 -pagesize $pgsz $args $omethod"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Create a database containing $nitems items, numbered with odds.
- # We'll then put the even numbers during the body of the test.
- set txn [$env txn]
- error_check_good init_txn [is_valid_txn $txn $env] TRUE
- for { set i 1 } { $i <= 2 * $nitems } { incr i 2 } {
- set key $keybase$i
- set data [chop_data $method $i$alphabet]
-
- # First, try to put the item in a child transaction,
- # then abort and verify all the cursors we've done up until
- # now.
- set ctxn [$env txn -parent $txn]
- error_check_good child_txn($i) [is_valid_txn $ctxn $env] TRUE
- error_check_good fake_put($i) [$db put -txn $ctxn $key $data] 0
- error_check_good ctxn_abort($i) [$ctxn abort] 0
- for { set j 1 } { $j < $i } { incr j 2 } {
- error_check_good dbc_get($j) [$dbc($j) get -current] \
- [list [list $keybase$j \
- [pad_data $method $j$alphabet]]]
- }
-
- # Then put for real.
- error_check_good init_put($i) [$db put -txn $txn $key $data] 0
-
- # Set a cursor of the parent txn to each item.
- set dbc($i) [$db cursor -txn $txn]
- error_check_good dbc_getset($i) \
- [$dbc($i) get -set $key] \
- [list [list $keybase$i [pad_data $method $i$alphabet]]]
-
- # And verify all the cursors, including the one we just
- # created.
- for { set j 1 } { $j <= $i } { incr j 2 } {
- error_check_good dbc_get($j) [$dbc($j) get -current] \
- [list [list $keybase$j \
- [pad_data $method $j$alphabet]]]
- }
- }
-
- puts "\t\tRecd0$tnum.a.1: Verify cursor stability after init."
- for { set i 1 } { $i <= 2 * $nitems } { incr i 2 } {
- error_check_good dbc_get($i) [$dbc($i) get -current] \
- [list [list $keybase$i [pad_data $method $i$alphabet]]]
- }
-
- puts "\tRecd0$tnum.b: Put test."
- puts "\t\tRecd0$tnum.b.1: Put items."
- set ctxn [$env txn -parent $txn]
- error_check_good txn [is_valid_txn $ctxn $env] TRUE
- for { set i 2 } { $i <= 2 * $nitems } { incr i 2 } {
- set key $keybase$i
- set data [chop_data $method $i$alphabet]
- error_check_good child_put($i) [$db put -txn $ctxn $key $data] 0
-
- # If we're a renumbering recno, this is uninteresting.
- # Stir things up by putting a few additional records at
- # the beginning.
- if { [is_rrecno $method] == 1 } {
- set curs [$db cursor -txn $ctxn]
- error_check_bad llength_get_first \
- [llength [$curs get -first]] 0
- error_check_good cursor [is_valid_cursor $curs $db] TRUE
- # expect a recno!
- error_check_good rrecno_put($i) \
- [$curs put -before ADDITIONAL.$i] 1
- error_check_good curs_close [$curs close] 0
- }
- }
-
- puts "\t\tRecd0$tnum.b.2: Verify cursor stability after abort."
- error_check_good ctxn_abort [$ctxn abort] 0
-
- for { set i 1 } { $i <= 2 * $nitems } { incr i 2 } {
- error_check_good dbc_get($i) [$dbc($i) get -current] \
- [list [list $keybase$i [pad_data $method $i$alphabet]]]
- }
-
- # Clean up cursors.
- for { set i 1 } { $i <= 2 * $nitems } { incr i 2 } {
- error_check_good dbc($i)_close [$dbc($i) close] 0
- }
-
- # Sync and verify.
- error_check_good txn_commit [$txn commit] 0
- set txn [$env txn]
- error_check_good txn [is_valid_txn $txn $env] TRUE
-
- error_check_good db_sync [$db sync] 0
- error_check_good db_verify \
- [verify_dir $testdir "\t\tRecd0$tnum.b.3: "] 0
-
- # Now put back all the even records, this time in the parent.
- # Commit and re-begin the transaction so we can abort and
- # get back to a nice full database.
- for { set i 2 } { $i <= 2 * $nitems } { incr i 2 } {
- set key $keybase$i
- set data [chop_data $method $i$alphabet]
- error_check_good child_put($i) [$db put -txn $txn $key $data] 0
- }
- error_check_good txn_commit [$txn commit] 0
- set txn [$env txn]
- error_check_good txn [is_valid_txn $txn $env] TRUE
-
- # Delete test. Set a cursor to each record. Delete the even ones
- # in the parent and check cursor stability. Then open a child
- # transaction, and delete the odd ones. Verify that the database
- # is empty.
- puts "\tRecd0$tnum.c: Delete test."
- unset dbc
-
- # Create cursors pointing at each item.
- for { set i 1 } { $i <= 2 * $nitems } { incr i } {
- set dbc($i) [$db cursor -txn $txn]
- error_check_good dbc($i)_create [is_valid_cursor $dbc($i) $db] \
- TRUE
- error_check_good dbc_getset($i) [$dbc($i) get -set $keybase$i] \
- [list [list $keybase$i [pad_data $method $i$alphabet]]]
- }
-
- puts "\t\tRecd0$tnum.c.1: Delete even items in child txn and abort."
-
- if { [is_rrecno $method] != 1 } {
- set init 2
- set bound [expr 2 * $nitems]
- set step 2
- } else {
- # In rrecno, deletes will renumber the items, so we have
- # to take that into account when we delete by recno.
- set init 2
- set bound [expr $nitems + 1]
- set step 1
- }
-
- set ctxn [$env txn -parent $txn]
- for { set i $init } { $i <= $bound } { incr i $step } {
- error_check_good del($i) [$db del -txn $ctxn $keybase$i] 0
- }
- error_check_good ctxn_abort [$ctxn abort] 0
-
- # Verify that no items are deleted.
- for { set i 1 } { $i <= 2 * $nitems } { incr i } {
- error_check_good dbc_get($i) [$dbc($i) get -current] \
- [list [list $keybase$i [pad_data $method $i$alphabet]]]
- }
-
- puts "\t\tRecd0$tnum.c.2: Delete even items in child txn and commit."
- set ctxn [$env txn -parent $txn]
- for { set i $init } { $i <= $bound } { incr i $step } {
- error_check_good del($i) [$db del -txn $ctxn $keybase$i] 0
- }
- error_check_good ctxn_commit [$ctxn commit] 0
-
- # Verify that even items are deleted and odd items are not.
- for { set i 1 } { $i <= 2 * $nitems } { incr i 2 } {
- if { [is_rrecno $method] != 1 } {
- set j $i
- } else {
- set j [expr ($i - 1) / 2 + 1]
- }
- error_check_good dbc_get($i) [$dbc($i) get -current] \
- [list [list $keybase$j [pad_data $method $i$alphabet]]]
- }
- for { set i 2 } { $i <= 2 * $nitems } { incr i 2 } {
- error_check_good dbc_get($i) [$dbc($i) get -current] \
- [list [list "" ""]]
- }
-
- puts "\t\tRecd0$tnum.c.3: Delete odd items in child txn."
-
- set ctxn [$env txn -parent $txn]
-
- for { set i 1 } { $i <= 2 * $nitems } { incr i 2 } {
- if { [is_rrecno $method] != 1 } {
- set j $i
- } else {
- # If this is an rrecno, just delete the first
- # item repeatedly--the renumbering will make
- # that delete everything.
- set j 1
- }
- error_check_good del($i) [$db del -txn $ctxn $keybase$j] 0
- }
-
- # Verify that everyone's deleted.
- for { set i 1 } { $i <= 2 * $nitems } { incr i } {
- error_check_good get_deleted($i) \
- [llength [$db get -txn $ctxn $keybase$i]] 0
- }
-
- puts "\t\tRecd0$tnum.c.4: Verify cursor stability after abort."
- error_check_good ctxn_abort [$ctxn abort] 0
-
- # Verify that even items are deleted and odd items are not.
- for { set i 1 } { $i <= 2 * $nitems } { incr i 2 } {
- if { [is_rrecno $method] != 1 } {
- set j $i
- } else {
- set j [expr ($i - 1) / 2 + 1]
- }
- error_check_good dbc_get($i) [$dbc($i) get -current] \
- [list [list $keybase$j [pad_data $method $i$alphabet]]]
- }
- for { set i 2 } { $i <= 2 * $nitems } { incr i 2 } {
- error_check_good dbc_get($i) [$dbc($i) get -current] \
- [list [list "" ""]]
- }
-
- # Clean up cursors.
- for { set i 1 } { $i <= 2 * $nitems } { incr i } {
- error_check_good dbc($i)_close [$dbc($i) close] 0
- }
-
- # Sync and verify.
- error_check_good db_sync [$db sync] 0
- error_check_good db_verify \
- [verify_dir $testdir "\t\tRecd0$tnum.c.5: "] 0
-
- puts "\tRecd0$tnum.d: Clean up."
- error_check_good txn_commit [$txn commit] 0
- error_check_good db_close [$db close] 0
- error_check_good env_close [$env close] 0
- error_check_good verify_dir \
- [verify_dir $testdir "\t\tRecd0$tnum.d.1: "] 0
-
- if { $log_log_record_types == 1 } {
- logtrack_read $testdir
- }
-}
diff --git a/bdb/test/recd014.tcl b/bdb/test/recd014.tcl
deleted file mode 100644
index 6796341dca2..00000000000
--- a/bdb/test/recd014.tcl
+++ /dev/null
@@ -1,445 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd014.tcl,v 1.19 2002/08/15 19:21:24 sandstro Exp $
-#
-# TEST recd014
-# TEST This is a recovery test for create/delete of queue extents. We
-# TEST then need to recover and make sure the file is correctly existing
-# TEST or not, as the case may be.
-proc recd014 { method args} {
- global fixed_len
- source ./include.tcl
-
- if { ![is_queueext $method] == 1 } {
- puts "Recd014: Skipping for method $method"
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Recd014: skipping for specific pagesizes"
- return
- }
-
- set orig_fixed_len $fixed_len
- #
- # We will use 512-byte pages, to be able to control
- # when extents get created/removed.
- #
- set fixed_len 300
-
- set opts [convert_args $method $args]
- set omethod [convert_method $method]
- #
- # We want to set -extent 1 instead of what
- # convert_args gave us.
- #
- set exti [lsearch -exact $opts "-extent"]
- incr exti
- set opts [lreplace $opts $exti $exti 1]
-
- puts "Recd014: $method extent creation/deletion tests"
-
- # Create the database and environment.
- env_cleanup $testdir
-
- set testfile recd014.db
- set flags "-create -txn -home $testdir"
-
- puts "\tRecd014.a: creating environment"
- set env_cmd "berkdb_env $flags"
-
- puts "\tRecd014.b: Create test commit"
- ext_recover_create $testdir $env_cmd $omethod \
- $opts $testfile commit
- puts "\tRecd014.b: Create test abort"
- ext_recover_create $testdir $env_cmd $omethod \
- $opts $testfile abort
-
- puts "\tRecd014.c: Consume test commit"
- ext_recover_consume $testdir $env_cmd $omethod \
- $opts $testfile commit
- puts "\tRecd014.c: Consume test abort"
- ext_recover_consume $testdir $env_cmd $omethod \
- $opts $testfile abort
-
- set fixed_len $orig_fixed_len
- puts "\tRecd014.d: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-}
-
-proc ext_recover_create { dir env_cmd method opts dbfile txncmd } {
- global log_log_record_types
- global fixed_len
- global alphabet
- source ./include.tcl
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $dir
- }
-
- env_cleanup $dir
- # Open the environment and set the copy/abort locations
- set env [eval $env_cmd]
-
- set init_file $dir/$dbfile.init
- set noenvflags "-create $method -mode 0644 -pagesize 512 $opts $dbfile"
- set oflags "-env $env $noenvflags"
-
- set t [$env txn]
- error_check_good txn_begin [is_valid_txn $t $env] TRUE
-
- set ret [catch {eval {berkdb_open} -txn $t $oflags} db]
- error_check_good txn_commit [$t commit] 0
-
- set t [$env txn]
- error_check_good txn_begin [is_valid_txn $t $env] TRUE
-
- #
- # The command to execute to create an extent is a put.
- # We are just creating the first one, so our extnum is 0.
- #
- set extnum 0
- set data [chop_data $method [replicate $alphabet 512]]
- puts "\t\tExecuting command"
- set putrecno [$db put -txn $t -append $data]
- error_check_good db_put $putrecno 1
-
- # Sync the db so any changes to the file that are
- # in mpool get written to the disk file before the
- # diff.
- puts "\t\tSyncing"
- error_check_good db_sync [$db sync] 0
-
- catch { file copy -force $dir/$dbfile $dir/$dbfile.afterop } res
- copy_extent_file $dir $dbfile afterop
-
- error_check_good txn_$txncmd:$t [$t $txncmd] 0
- #
- # If we don't abort, then we expect success.
- # If we abort, we expect no file created.
- #
- set dbq [make_ext_filename $dir $dbfile $extnum]
- error_check_good extput:exists1 [file exists $dbq] 1
- set ret [$db get $putrecno]
- if {$txncmd == "abort"} {
- #
- # Operation was aborted. Verify our entry is not there.
- #
- puts "\t\tCommand executed and aborted."
- error_check_good db_get [llength $ret] 0
- } else {
- #
- # Operation was committed, verify it exists.
- #
- puts "\t\tCommand executed and committed."
- error_check_good db_get [llength $ret] 1
- catch { file copy -force $dir/$dbfile $init_file } res
- copy_extent_file $dir $dbfile init
- }
- set t [$env txn]
- error_check_good txn_begin [is_valid_txn $t $env] TRUE
- error_check_good db_close [$db close] 0
- error_check_good txn_commit [$t commit] 0
- error_check_good env_close [$env close] 0
-
- #
- # Run recovery here. Should be a no-op. Verify that
- # the file still does/n't exist when we are done.
- #
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery (no-op) ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
- #
- # Verify it did not change.
- #
- error_check_good extput:exists2 [file exists $dbq] 1
- ext_create_check $dir $txncmd $init_file $dbfile $noenvflags $putrecno
-
- #
- # Need a new copy to get the right LSN into the file.
- #
- catch { file copy -force $dir/$dbfile $init_file } res
- copy_extent_file $dir $dbfile init
-
- #
- # Undo.
- # Now move the .afterop file to $dbfile. Run recovery again.
- #
- file copy -force $dir/$dbfile.afterop $dir/$dbfile
- move_file_extent $dir $dbfile afterop copy
-
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery (afterop) ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
- ext_create_check $dir $txncmd $init_file $dbfile $noenvflags $putrecno
-
- #
- # To redo, remove the dbfiles. Run recovery again.
- #
- catch { file rename -force $dir/$dbfile $dir/$dbfile.renamed } res
- copy_extent_file $dir $dbfile renamed rename
-
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery (init) ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- #
- # !!!
- # Even though db_recover exits with status 0, it should print out
- # a warning because the file didn't exist. Db_recover writes this
- # to stderr. Tcl assumes that ANYTHING written to stderr is an
- # error, so even though we exit with 0 status, we still get an
- # error back from 'catch'. Look for the warning.
- #
- if { $stat == 1 && [is_substr $result "warning"] == 0 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
-
- #
- # Verify it was redone. However, since we removed the files
- # to begin with, recovery with abort will not recreate the
- # extent. Recovery with commit will.
- #
- if {$txncmd == "abort"} {
- error_check_good extput:exists3 [file exists $dbq] 0
- } else {
- error_check_good extput:exists3 [file exists $dbq] 1
- }
-}
-
-proc ext_create_check { dir txncmd init_file dbfile oflags putrecno } {
- if { $txncmd == "commit" } {
- #
- # Operation was committed. Verify it did not change.
- #
- error_check_good \
- diff(initial,post-recover2):diff($init_file,$dir/$dbfile) \
- [dbdump_diff "-dar" $init_file $dir $dbfile] 0
- } else {
- #
- # Operation aborted. The file is there, but make
- # sure the item is not.
- #
- set xdb [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $xdb] TRUE
- set ret [$xdb get $putrecno]
- error_check_good db_get [llength $ret] 0
- error_check_good db_close [$xdb close] 0
- }
-}
-
-proc ext_recover_consume { dir env_cmd method opts dbfile txncmd} {
- global log_log_record_types
- global alphabet
- source ./include.tcl
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $dir
- }
-
- env_cleanup $dir
- # Open the environment and set the copy/abort locations
- set env [eval $env_cmd]
-
- set oflags "-create -auto_commit $method -mode 0644 -pagesize 512 \
- -env $env $opts $dbfile"
-
- #
- # Open our db, add some data, close and copy as our
- # init file.
- #
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
-
- set extnum 0
- set data [chop_data $method [replicate $alphabet 512]]
-
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
- set putrecno [$db put -txn $txn -append $data]
- error_check_good db_put $putrecno 1
- error_check_good commit [$txn commit] 0
- error_check_good db_close [$db close] 0
-
- puts "\t\tExecuting command"
-
- set init_file $dir/$dbfile.init
- catch { file copy -force $dir/$dbfile $init_file } res
- copy_extent_file $dir $dbfile init
-
- #
- # If we don't abort, then we expect success.
- # If we abort, we expect no file removed until recovery is run.
- #
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
-
- set t [$env txn]
- error_check_good txn_begin [is_valid_txn $t $env] TRUE
-
- set dbcmd "$db get -txn $t -consume"
- set ret [eval $dbcmd]
- error_check_good db_sync [$db sync] 0
-
- catch { file copy -force $dir/$dbfile $dir/$dbfile.afterop } res
- copy_extent_file $dir $dbfile afterop
-
- error_check_good txn_$txncmd:$t [$t $txncmd] 0
- error_check_good db_sync [$db sync] 0
- set dbq [make_ext_filename $dir $dbfile $extnum]
- if {$txncmd == "abort"} {
- #
- # Operation was aborted, verify ext did not change.
- #
- puts "\t\tCommand executed and aborted."
-
- #
- # Check that the file exists. Final state.
- # Since we aborted the txn, we should be able
- # to get to our original entry.
- #
- error_check_good postconsume.1 [file exists $dbq] 1
- error_check_good \
- diff(init,postconsume.2):diff($init_file,$dir/$dbfile)\
- [dbdump_diff "-dar" $init_file $dir $dbfile] 0
- } else {
- #
- # Operation was committed, verify it does
- # not exist.
- #
- puts "\t\tCommand executed and committed."
- #
- # Check file existence. Consume operations remove
- # the extent when we move off, which we should have
- # done.
- error_check_good consume_exists [file exists $dbq] 0
- }
- error_check_good db_close [$db close] 0
- error_check_good env_close [$env close] 0
-
- #
- # Run recovery here on what we ended up with. Should be a no-op.
- #
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery (no-op) ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
- if { $txncmd == "abort"} {
- #
- # Operation was aborted, verify it did not change.
- #
- error_check_good \
- diff(initial,post-recover1):diff($init_file,$dir/$dbfile) \
- [dbdump_diff "-dar" $init_file $dir $dbfile] 0
- } else {
- #
- # Operation was committed, verify it does
- # not exist. Both operations should result
- # in no file existing now that we've run recovery.
- #
- error_check_good after_recover1 [file exists $dbq] 0
- }
-
- #
- # Run recovery here. Re-do the operation.
- # Verify that the file doesn't exist
- # (if we committed) or change (if we aborted)
- # when we are done.
- #
- catch { file copy -force $dir/$dbfile $init_file } res
- copy_extent_file $dir $dbfile init
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery (init) ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
- if { $txncmd == "abort"} {
- #
- # Operation was aborted, verify it did not change.
- #
- error_check_good \
- diff(initial,post-recover1):diff($init_file,$dir/$dbfile) \
- [dbdump_diff "-dar" $init_file $dir $dbfile] 0
- } else {
- #
- # Operation was committed, verify it does
- # not exist. Both operations should result
- # in no file existing now that we've run recovery.
- #
- error_check_good after_recover2 [file exists $dbq] 0
- }
-
- #
- # Now move the .afterop file to $dbfile. Run recovery again.
- #
- set filecopy [glob $dir/*.afterop]
- set afterop [lindex $filecopy 0]
- file rename -force $afterop $dir/$dbfile
- set afterop [string range $afterop \
- [expr [string last "/" $afterop] + 1] \
- [string last "." $afterop]]
- move_file_extent $dir $dbfile afterop rename
-
- berkdb debug_check
- puts -nonewline "\t\tAbout to run recovery (afterop) ... "
- flush stdout
-
- set stat [catch {exec $util_path/db_recover -h $dir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- return
- }
- puts "complete"
-
- if { $txncmd == "abort"} {
- #
- # Operation was aborted, verify it did not change.
- #
- error_check_good \
- diff(initial,post-recover2):diff($init_file,$dir/$dbfile) \
- [dbdump_diff "-dar" $init_file $dir $dbfile] 0
- } else {
- #
- # Operation was committed, verify it still does
- # not exist.
- #
- error_check_good after_recover3 [file exists $dbq] 0
- }
-}
diff --git a/bdb/test/recd015.tcl b/bdb/test/recd015.tcl
deleted file mode 100644
index 8c3ad612419..00000000000
--- a/bdb/test/recd015.tcl
+++ /dev/null
@@ -1,160 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd015.tcl,v 1.13 2002/09/05 17:23:06 sandstro Exp $
-#
-# TEST recd015
-# TEST This is a recovery test for testing lots of prepared txns.
-# TEST This test is to force the use of txn_recover to call with the
-# TEST DB_FIRST flag and then DB_NEXT.
-proc recd015 { method args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Recd015: $method ($args) prepared txns test"
-
- # Create the database and environment.
-
- set numtxns 1
- set testfile NULL
-
- set env_cmd "berkdb_env -create -txn -home $testdir"
- set msg "\tRecd015.a"
- puts "$msg Simple test to prepare $numtxns txn "
- foreach op { abort commit discard } {
- env_cleanup $testdir
- recd015_body $env_cmd $testfile $numtxns $msg $op
- }
-
- #
- # Now test large numbers of prepared txns to test DB_NEXT
- # on txn_recover.
- #
- set numtxns 250
- set testfile recd015.db
- set txnmax [expr $numtxns + 5]
- #
- # For this test we create our database ahead of time so that we
- # don't need to send methods and args to the script.
- #
- env_cleanup $testdir
- set env_cmd "berkdb_env -create -txn_max $txnmax -txn -home $testdir"
- set env [eval $env_cmd]
- error_check_good dbenv [is_valid_env $env] TRUE
- set db [eval {berkdb_open -create} $omethod -env $env $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
- error_check_good envclose [$env close] 0
-
- set msg "\tRecd015.b"
- puts "$msg Large test to prepare $numtxns txn "
- foreach op { abort commit discard } {
- recd015_body $env_cmd $testfile $numtxns $msg $op
- }
-
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $testdir/LOG } ret]
- error_check_good db_printlog $stat 0
- fileremove $testdir/LOG
-}
-
-proc recd015_body { env_cmd testfile numtxns msg op } {
- source ./include.tcl
-
- sentinel_init
- set gidf $testdir/gidfile
- fileremove -f $gidf
- set pidlist {}
- puts "$msg.0: Executing child script to prepare txns"
- berkdb debug_check
- set p [exec $tclsh_path $test_path/wrap.tcl recd15scr.tcl \
- $testdir/recdout $env_cmd $testfile $gidf $numtxns &]
-
- lappend pidlist $p
- watch_procs $pidlist 5
- set f1 [open $testdir/recdout r]
- set r [read $f1]
- puts $r
- close $f1
- fileremove -f $testdir/recdout
-
- berkdb debug_check
- puts -nonewline "$msg.1: Running recovery ... "
- flush stdout
- berkdb debug_check
- set env [eval $env_cmd -recover]
- error_check_good dbenv-recover [is_valid_env $env] TRUE
- puts "complete"
-
- puts "$msg.2: getting txns from txn_recover"
- set txnlist [$env txn_recover]
- error_check_good txnlist_len [llength $txnlist] $numtxns
-
- set gfd [open $gidf r]
- set i 0
- while { [gets $gfd gid] != -1 } {
- set gids($i) $gid
- incr i
- }
- close $gfd
- #
- # Make sure we have as many as we expect
- error_check_good num_gids $i $numtxns
-
- set i 0
- puts "$msg.3: comparing GIDs and $op txns"
- foreach tpair $txnlist {
- set txn [lindex $tpair 0]
- set gid [lindex $tpair 1]
- error_check_good gidcompare $gid $gids($i)
- error_check_good txn:$op [$txn $op] 0
- incr i
- }
- if { $op != "discard" } {
- error_check_good envclose [$env close] 0
- return
- }
- #
- # If we discarded, now do it again and randomly resolve some
- # until all txns are resolved.
- #
- puts "$msg.4: resolving/discarding txns"
- set txnlist [$env txn_recover]
- set len [llength $txnlist]
- set opval(1) "abort"
- set opcnt(1) 0
- set opval(2) "commit"
- set opcnt(2) 0
- set opval(3) "discard"
- set opcnt(3) 0
- while { $len != 0 } {
- set opicnt(1) 0
- set opicnt(2) 0
- set opicnt(3) 0
- #
- # Abort/commit or discard them randomly until
- # all are resolved.
- #
- for { set i 0 } { $i < $len } { incr i } {
- set t [lindex $txnlist $i]
- set txn [lindex $t 0]
- set newop [berkdb random_int 1 3]
- set ret [$txn $opval($newop)]
- error_check_good txn_$opval($newop):$i $ret 0
- incr opcnt($newop)
- incr opicnt($newop)
- }
-# puts "$opval(1): $opicnt(1) Total: $opcnt(1)"
-# puts "$opval(2): $opicnt(2) Total: $opcnt(2)"
-# puts "$opval(3): $opicnt(3) Total: $opcnt(3)"
-
- set txnlist [$env txn_recover]
- set len [llength $txnlist]
- }
-
- error_check_good envclose [$env close] 0
-}
diff --git a/bdb/test/recd016.tcl b/bdb/test/recd016.tcl
deleted file mode 100644
index 504aca09617..00000000000
--- a/bdb/test/recd016.tcl
+++ /dev/null
@@ -1,183 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd016.tcl,v 11.8 2002/09/05 17:23:07 sandstro Exp $
-#
-# TEST recd016
-# TEST This is a recovery test for testing running recovery while
-# TEST recovery is already running. While bad things may or may not
-# TEST happen, if recovery is then run properly, things should be correct.
-proc recd016 { method args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Recd016: $method ($args) simultaneous recovery test"
- puts "Recd016: Skipping; waiting on SR #6277"
- return
-
- # Create the database and environment.
- set testfile recd016.db
-
- #
- # For this test we create our database ahead of time so that we
- # don't need to send methods and args to the script.
- #
- cleanup $testdir NULL
-
- #
- # Use a smaller log to make more files and slow down recovery.
- #
- set gflags ""
- set pflags ""
- set log_max [expr 256 * 1024]
- set nentries 10000
- set nrec 6
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
- set t5 $testdir/t5
- # Since we are using txns, we need at least 1 lock per
- # record (for queue). So set lock_max accordingly.
- set lkmax [expr $nentries * 2]
-
- puts "\tRecd016.a: Create environment and database"
- set env_cmd "berkdb_env -create -log_max $log_max \
- -lock_max $lkmax -txn -home $testdir"
- set env [eval $env_cmd]
- error_check_good dbenv [is_valid_env $env] TRUE
- set db [eval {berkdb_open -create} \
- $omethod -auto_commit -env $env $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
- set abid [open $t4 w]
-
- if { [is_record_based $method] == 1 } {
- set checkfunc recd016_recno.check
- append gflags " -recno"
- } else {
- set checkfunc recd016.check
- }
- puts "\tRecd016.b: put/get loop"
- # Here is the loop where we put and get each key/data pair
- set count 0
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- if { 0xffffffff > 0 && $key > 0xffffffff } {
- set key [expr $key - 0x100000000]
- }
- if { $key == 0 || $key - 0xffffffff == 1 } {
- incr key
- incr count
- }
- set kvals($key) [pad_data $method $str]
- } else {
- set key $str
- set str [reverse $str]
- }
- #
- # Start a transaction. Alternately abort and commit them.
- # This will create a bigger log for recovery to collide.
- #
- set txn [$env txn]
- set ret [eval \
- {$db put} -txn $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
-
- if {[expr $count % 2] == 0} {
- set ret [$txn commit]
- error_check_good txn_commit $ret 0
- set ret [eval {$db get} $gflags {$key}]
- error_check_good commit_get \
- $ret [list [list $key [pad_data $method $str]]]
- } else {
- set ret [$txn abort]
- error_check_good txn_abort $ret 0
- set ret [eval {$db get} $gflags {$key}]
- error_check_good abort_get [llength $ret] 0
- puts $abid $key
- }
- incr count
- }
- close $did
- close $abid
- error_check_good dbclose [$db close] 0
- error_check_good envclose [$env close] 0
-
- set pidlist {}
- puts "\tRecd016.c: Start up $nrec recovery processes at once"
- for {set i 0} {$i < $nrec} {incr i} {
- set p [exec $util_path/db_recover -h $testdir -c &]
- lappend pidlist $p
- }
- watch_procs $pidlist 5
- #
- # Now that they are all done run recovery correctly
- puts "\tRecd016.d: Run recovery process"
- set stat [catch {exec $util_path/db_recover -h $testdir -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- }
-
- puts "\tRecd016.e: Open, dump and check database"
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {incr i} {
- set j $i
- if { 0xffffffff > 0 && $j > 0xffffffff } {
- set j [expr $j - 0x100000000]
- }
- if { $j == 0 } {
- incr i
- incr j
- }
- puts $oid $j
- }
- close $oid
- } else {
- set q q
- filehead $nentries $dict $t2
- }
- filesort $t2 $t3
- file rename -force $t3 $t2
- filesort $t4 $t3
- file rename -force $t3 $t4
- fileextract $t2 $t4 $t3
- file rename -force $t3 $t5
-
- set env [eval $env_cmd]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_file_direction "-first" "-next"
- filesort $t1 $t3
- error_check_good envclose [$env close] 0
-
- error_check_good Recd016:diff($t5,$t3) \
- [filecmp $t5 $t3] 0
-
- set stat [catch {exec $util_path/db_printlog -h $testdir \
- > $testdir/LOG } ret]
- error_check_good db_printlog $stat 0
- fileremove $testdir/LOG
-}
-
-# Check function for recd016; keys and data are identical
-proc recd016.check { key data } {
- error_check_good "key/data mismatch" $data [reverse $key]
-}
-
-proc recd016_recno.check { key data } {
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data $kvals($key)
-}
diff --git a/bdb/test/recd017.tcl b/bdb/test/recd017.tcl
deleted file mode 100644
index 9f8208c1b3e..00000000000
--- a/bdb/test/recd017.tcl
+++ /dev/null
@@ -1,151 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd017.tcl,v 11.4 2002/09/03 16:44:37 sue Exp $
-#
-# TEST recd017
-# TEST Test recovery and security. This is basically a watered
-# TEST down version of recd001 just to verify that encrypted environments
-# TEST can be recovered.
-proc recd017 { method {select 0} args} {
- global fixed_len
- global encrypt
- global passwd
- source ./include.tcl
-
- set orig_fixed_len $fixed_len
- set opts [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Recd017: $method operation/transaction tests"
-
- # Create the database and environment.
- env_cleanup $testdir
-
- # The recovery tests were originally written to
- # do a command, abort, do it again, commit, and then
- # repeat the sequence with another command. Each command
- # tends to require that the previous command succeeded and
- # left the database a certain way. To avoid cluttering up the
- # op_recover interface as well as the test code, we create two
- # databases; one does abort and then commit for each op, the
- # other does prepare, prepare-abort, and prepare-commit for each
- # op. If all goes well, this allows each command to depend
- # exactly one successful iteration of the previous command.
- set testfile recd017.db
- set testfile2 recd017-2.db
-
- set flags "-create -encryptaes $passwd -txn -home $testdir"
-
- puts "\tRecd017.a.0: creating environment"
- set env_cmd "berkdb_env $flags"
- convert_encrypt $env_cmd
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- #
- # We need to create a database to get the pagesize (either
- # the default or whatever might have been specified).
- # Then remove it so we can compute fixed_len and create the
- # real database.
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv -encrypt $opts $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set stat [$db stat]
- #
- # Compute the fixed_len based on the pagesize being used.
- # We want the fixed_len to be 1/4 the pagesize.
- #
- set pg [get_pagesize $stat]
- error_check_bad get_pagesize $pg -1
- set fixed_len [expr $pg / 4]
- error_check_good db_close [$db close] 0
- error_check_good dbremove [berkdb dbremove -env $dbenv $testfile] 0
-
- # Convert the args again because fixed_len is now real.
- # Create the databases and close the environment.
- # cannot specify db truncate in txn protected env!!!
- set opts [convert_args $method ""]
- convert_encrypt $env_cmd
- set omethod [convert_method $method]
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv -encrypt $opts $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv -encrypt $opts $testfile2"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- error_check_good env_close [$dbenv close] 0
-
- puts "\tRecd017.a.1: Verify db_printlog can read logfile"
- set tmpfile $testdir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $testdir -P $passwd \
- > $tmpfile} ret]
- error_check_good db_printlog $stat 0
- fileremove $tmpfile
-
- # List of recovery tests: {CMD MSG} pairs.
- set rlist {
- { {DB put -txn TXNID $key $data} "Recd017.b: put"}
- { {DB del -txn TXNID $key} "Recd017.c: delete"}
- }
-
- # These are all the data values that we're going to need to read
- # through the operation table and run the recovery tests.
-
- if { [is_record_based $method] == 1 } {
- set key 1
- } else {
- set key recd017_key
- }
- set data recd017_data
- foreach pair $rlist {
- set cmd [subst [lindex $pair 0]]
- set msg [lindex $pair 1]
- if { $select != 0 } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { [lsearch $select $tag] == -1 } {
- continue
- }
- }
-
- if { [is_queue $method] != 1 } {
- if { [string first append $cmd] != -1 } {
- continue
- }
- if { [string first consume $cmd] != -1 } {
- continue
- }
- }
-
-# if { [is_fixed_length $method] == 1 } {
-# if { [string first partial $cmd] != -1 } {
-# continue
-# }
-# }
- op_recover abort $testdir $env_cmd $testfile $cmd $msg
- op_recover commit $testdir $env_cmd $testfile $cmd $msg
- #
- # Note that since prepare-discard ultimately aborts
- # the txn, it must come before prepare-commit.
- #
- op_recover prepare-abort $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-discard $testdir $env_cmd $testfile2 \
- $cmd $msg
- op_recover prepare-commit $testdir $env_cmd $testfile2 \
- $cmd $msg
- }
- set fixed_len $orig_fixed_len
- return
-}
diff --git a/bdb/test/recd018.tcl b/bdb/test/recd018.tcl
deleted file mode 100644
index fb5a589d851..00000000000
--- a/bdb/test/recd018.tcl
+++ /dev/null
@@ -1,110 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd018.tcl,v 11.2 2002/03/13 21:04:20 sue Exp $
-#
-# TEST recd018
-# TEST Test recover of closely interspersed checkpoints and commits.
-#
-# This test is from the error case from #4230.
-#
-proc recd018 { method {ndbs 10} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- set tnum 18
-
- puts "Recd0$tnum ($args): $method recovery of checkpoints and commits."
-
- set tname recd0$tnum.db
- env_cleanup $testdir
-
- set i 0
- if { [is_record_based $method] == 1 } {
- set key 1
- set key2 2
- } else {
- set key KEY
- set key2 KEY2
- }
-
- puts "\tRecd0$tnum.a: Create environment and database."
- set flags "-create -txn -home $testdir"
-
- set env_cmd "berkdb_env $flags"
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- set oflags "-auto_commit -env $dbenv -create -mode 0644 $args $omethod"
- for { set i 0 } { $i < $ndbs } { incr i } {
- set testfile $tname.$i
- set db($i) [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db($i)] TRUE
- set file $testdir/$testfile.init
- catch { file copy -force $testdir/$testfile $file} res
- copy_extent_file $testdir $testfile init
- }
-
- # Main loop: Write a record or two to each database.
- # Do a commit immediately followed by a checkpoint after each one.
- error_check_good "Initial Checkpoint" [$dbenv txn_checkpoint] 0
-
- puts "\tRecd0$tnum.b Put/Commit/Checkpoint to $ndbs databases"
- for { set i 0 } { $i < $ndbs } { incr i } {
- set testfile $tname.$i
- set data $i
-
- # Put, in a txn.
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
- error_check_good db_put \
- [$db($i) put -txn $txn $key [chop_data $method $data]] 0
- error_check_good txn_commit [$txn commit] 0
- error_check_good txn_checkpt [$dbenv txn_checkpoint] 0
- if { [expr $i % 2] == 0 } {
- set txn [$dbenv txn]
- error_check_good txn2 [is_valid_txn $txn $dbenv] TRUE
- error_check_good db_put [$db($i) put \
- -txn $txn $key2 [chop_data $method $data]] 0
- error_check_good txn_commit [$txn commit] 0
- error_check_good txn_checkpt [$dbenv txn_checkpoint] 0
- }
- error_check_good db_close [$db($i) close] 0
- set file $testdir/$testfile.afterop
- catch { file copy -force $testdir/$testfile $file} res
- copy_extent_file $testdir $testfile afterop
- }
- error_check_good env_close [$dbenv close] 0
-
- # Now, loop through and recover to each timestamp, verifying the
- # expected increment.
- puts "\tRecd0$tnum.c: Run recovery (no-op)"
- set ret [catch {exec $util_path/db_recover -h $testdir} r]
- error_check_good db_recover $ret 0
-
- puts "\tRecd0$tnum.d: Run recovery (initial file)"
- for { set i 0 } {$i < $ndbs } { incr i } {
- set testfile $tname.$i
- set file $testdir/$testfile.init
- catch { file copy -force $file $testdir/$testfile } res
- move_file_extent $testdir $testfile init copy
- }
-
- set ret [catch {exec $util_path/db_recover -h $testdir} r]
- error_check_good db_recover $ret 0
-
- puts "\tRecd0$tnum.e: Run recovery (after file)"
- for { set i 0 } {$i < $ndbs } { incr i } {
- set testfile $tname.$i
- set file $testdir/$testfile.afterop
- catch { file copy -force $file $testdir/$testfile } res
- move_file_extent $testdir $testfile afterop copy
- }
-
- set ret [catch {exec $util_path/db_recover -h $testdir} r]
- error_check_good db_recover $ret 0
-
-}
diff --git a/bdb/test/recd019.tcl b/bdb/test/recd019.tcl
deleted file mode 100644
index dd67b7dcb2a..00000000000
--- a/bdb/test/recd019.tcl
+++ /dev/null
@@ -1,121 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd019.tcl,v 11.3 2002/08/08 15:38:07 bostic Exp $
-#
-# TEST recd019
-# TEST Test txn id wrap-around and recovery.
-proc recd019 { method {numid 50} args} {
- global fixed_len
- global txn_curid
- global log_log_record_types
- source ./include.tcl
-
- set orig_fixed_len $fixed_len
- set opts [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Recd019: $method txn id wrap-around test"
-
- # Create the database and environment.
- env_cleanup $testdir
-
- set testfile recd019.db
-
- set flags "-create -txn -home $testdir"
-
- puts "\tRecd019.a: creating environment"
- set env_cmd "berkdb_env $flags"
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- # Test txn wrapping. Force a txn_recycle msg.
- #
- set new_curid $txn_curid
- set new_maxid [expr $new_curid + $numid]
- error_check_good txn_id_set [$dbenv txn_id_set $new_curid $new_maxid] 0
-
- #
- # We need to create a database to get the pagesize (either
- # the default or whatever might have been specified).
- # Then remove it so we can compute fixed_len and create the
- # real database.
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv $opts $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- set stat [$db stat]
- #
- # Compute the fixed_len based on the pagesize being used.
- # We want the fixed_len to be 1/4 the pagesize.
- #
- set pg [get_pagesize $stat]
- error_check_bad get_pagesize $pg -1
- set fixed_len [expr $pg / 4]
- error_check_good db_close [$db close] 0
- error_check_good dbremove [berkdb dbremove -env $dbenv $testfile] 0
-
- # Convert the args again because fixed_len is now real.
- # Create the databases and close the environment.
- # cannot specify db truncate in txn protected env!!!
- set opts [convert_args $method ""]
- set omethod [convert_method $method]
- set oflags "-create $omethod -mode 0644 \
- -env $dbenv -auto_commit $opts $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
-
- #
- # Force txn ids to wrap twice and then some.
- #
- set nument [expr $numid * 3 - 2]
- puts "\tRecd019.b: Wrapping txn ids after $numid"
- set file $testdir/$testfile.init
- catch { file copy -force $testdir/$testfile $file} res
- copy_extent_file $testdir $testfile init
- for { set i 1 } { $i <= $nument } { incr i } {
- # Use 'i' as key so method doesn't matter
- set key $i
- set data $i
-
- # Put, in a txn.
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
- error_check_good db_put \
- [$db put -txn $txn $key [chop_data $method $data]] 0
- error_check_good txn_commit [$txn commit] 0
- }
- error_check_good db_close [$db close] 0
- set file $testdir/$testfile.afterop
- catch { file copy -force $testdir/$testfile $file} res
- copy_extent_file $testdir $testfile afterop
- error_check_good env_close [$dbenv close] 0
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $testdir
- }
-
- # Now, loop through and recover.
- puts "\tRecd019.c: Run recovery (no-op)"
- set ret [catch {exec $util_path/db_recover -h $testdir} r]
- error_check_good db_recover $ret 0
-
- puts "\tRecd019.d: Run recovery (initial file)"
- set file $testdir/$testfile.init
- catch { file copy -force $file $testdir/$testfile } res
- move_file_extent $testdir $testfile init copy
-
- set ret [catch {exec $util_path/db_recover -h $testdir} r]
- error_check_good db_recover $ret 0
-
- puts "\tRecd019.e: Run recovery (after file)"
- set file $testdir/$testfile.afterop
- catch { file copy -force $file $testdir/$testfile } res
- move_file_extent $testdir $testfile afterop copy
-
- set ret [catch {exec $util_path/db_recover -h $testdir} r]
- error_check_good db_recover $ret 0
-}
diff --git a/bdb/test/recd020.tcl b/bdb/test/recd020.tcl
deleted file mode 100644
index 93a89f32578..00000000000
--- a/bdb/test/recd020.tcl
+++ /dev/null
@@ -1,180 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd020.tcl,v 11.8 2002/08/08 15:38:08 bostic Exp $
-#
-# TEST recd020
-# TEST Test recovery after checksum error.
-proc recd020 { method args} {
- global fixed_len
- global log_log_record_types
- global datastr
- source ./include.tcl
-
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Recd020: skipping for specific pagesizes"
- return
- }
- if { [is_queueext $method] == 1 } {
- puts "Recd020: skipping for method $method"
- return
- }
-
- puts "Recd020: $method recovery after checksum error"
-
- # Create the database and environment.
- env_cleanup $testdir
-
- set testfile recd020.db
- set flags "-create -txn -home $testdir"
-
- puts "\tRecd020.a: creating environment"
- set env_cmd "berkdb_env $flags"
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- set pgsize 512
- set orig_fixed_len $fixed_len
- set fixed_len [expr $pgsize / 4]
- set opts [convert_args $method $args]
- set omethod [convert_method $method]
- set oflags "-create $omethod -mode 0644 \
- -auto_commit -chksum -pagesize $pgsize $opts $testfile"
- set db [eval {berkdb_open} -env $dbenv $oflags]
-
- #
- # Put some data.
- #
- set nument 50
- puts "\tRecd020.b: Put some data"
- for { set i 1 } { $i <= $nument } { incr i } {
- # Use 'i' as key so method doesn't matter
- set key $i
- set data $i$datastr
-
- # Put, in a txn.
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
- error_check_good db_put \
- [$db put -txn $txn $key [chop_data $method $data]] 0
- error_check_good txn_commit [$txn commit] 0
- }
- error_check_good db_close [$db close] 0
- error_check_good env_close [$dbenv close] 0
- #
- # We need to remove the env so that we don't get cached
- # pages.
- #
- error_check_good env_remove [berkdb envremove -home $testdir] 0
-
- puts "\tRecd020.c: Overwrite part of database"
- #
- # First just touch some bits in the file. We want to go
- # through the paging system, so touch some data pages,
- # like the middle of page 2.
- # We should get a checksum error for the checksummed file.
- #
- set pg 2
- set fid [open $testdir/$testfile r+]
- fconfigure $fid -translation binary
- set seeklen [expr $pgsize * $pg + 200]
- seek $fid $seeklen start
- set byte [read $fid 1]
- binary scan $byte c val
- set newval [expr ~$val]
- set newbyte [binary format c $newval]
- seek $fid $seeklen start
- puts -nonewline $fid $newbyte
- close $fid
-
- #
- # Verify we get the checksum error. When we get it, it should
- # log the error as well, so when we run recovery we'll need to
- # do catastrophic recovery. We do this in a sub-process so that
- # the files are closed after the panic.
- #
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
-
- set env_cmd "berkdb_env_noerr $flags"
- set dbenv [send_cmd $f1 $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- set db [send_cmd $f1 "{berkdb_open_noerr} -env $dbenv $oflags"]
- error_check_good db [is_valid_db $db] TRUE
-
- # We need to set non-blocking mode so that after each command
- # we can read all the remaining output from that command and
- # we can know what the output from one command is.
- fconfigure $f1 -blocking 0
- set ret [read $f1]
- set got_err 0
- for { set i 1 } { $i <= $nument } { incr i } {
- set stat [send_cmd $f1 "catch {$db get $i} r"]
- set getret [send_cmd $f1 "puts \$r"]
- set ret [read $f1]
- if { $stat == 1 } {
- error_check_good dbget:fail [is_substr $getret \
- "checksum error: catastrophic recovery required"] 1
- set got_err 1
- # Now verify that it was an error on the page we set.
- error_check_good dbget:pg$pg [is_substr $ret \
- "failed for page $pg"] 1
- break
- } else {
- set key [lindex [lindex $getret 0] 0]
- set data [lindex [lindex $getret 0] 1]
- error_check_good keychk $key $i
- error_check_good datachk $data \
- [pad_data $method $i$datastr]
- }
- }
- error_check_good got_chksum $got_err 1
- set ret [send_cmd $f1 "$db close"]
- set extra [read $f1]
- error_check_good db:fail [is_substr $ret "run recovery"] 1
-
- set ret [send_cmd $f1 "$dbenv close"]
- error_check_good env_close:fail [is_substr $ret "run recovery"] 1
- close $f1
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $testdir
- }
-
- puts "\tRecd020.d: Run normal recovery"
- set ret [catch {exec $util_path/db_recover -h $testdir} r]
- error_check_good db_recover $ret 1
- error_check_good dbrec:fail \
- [is_substr $r "checksum error: catastrophic recovery required"] 1
-
- catch {fileremove $testdir/$testfile} ret
- puts "\tRecd020.e: Run catastrophic recovery"
- set ret [catch {exec $util_path/db_recover -c -h $testdir} r]
- error_check_good db_recover $ret 0
-
- #
- # Now verify the data was reconstructed correctly.
- #
- set env_cmd "berkdb_env_noerr $flags"
- set dbenv [eval $env_cmd]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- set db [eval {berkdb_open} -env $dbenv $oflags]
- error_check_good db [is_valid_db $db] TRUE
-
- for { set i 1 } { $i <= $nument } { incr i } {
- set stat [catch {$db get $i} ret]
- error_check_good stat $stat 0
- set key [lindex [lindex $ret 0] 0]
- set data [lindex [lindex $ret 0] 1]
- error_check_good keychk $key $i
- error_check_good datachk $data [pad_data $method $i$datastr]
- }
- error_check_good db_close [$db close] 0
- error_check_good env_close [$dbenv close] 0
-}
diff --git a/bdb/test/recd15scr.tcl b/bdb/test/recd15scr.tcl
deleted file mode 100644
index e1238907a71..00000000000
--- a/bdb/test/recd15scr.tcl
+++ /dev/null
@@ -1,74 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recd15scr.tcl,v 1.5 2002/01/30 13:18:04 margo Exp $
-#
-# Recd15 - lots of txns - txn prepare script
-# Usage: recd15script envcmd dbcmd gidf numtxns
-# envcmd: command to open env
-# dbfile: name of database file
-# gidf: name of global id file
-# numtxns: number of txns to start
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage "recd15script envcmd dbfile gidfile numtxns"
-
-# Verify usage
-if { $argc != 4 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set envcmd [ lindex $argv 0 ]
-set dbfile [ lindex $argv 1 ]
-set gidfile [ lindex $argv 2 ]
-set numtxns [ lindex $argv 3 ]
-
-set txnmax [expr $numtxns + 5]
-set dbenv [eval $envcmd]
-error_check_good envopen [is_valid_env $dbenv] TRUE
-
-set usedb 0
-if { $dbfile != "NULL" } {
- set usedb 1
- set db [berkdb_open -auto_commit -env $dbenv $dbfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-}
-
-puts "\tRecd015script.a: Begin $numtxns txns"
-for {set i 0} {$i < $numtxns} {incr i} {
- set t [$dbenv txn]
- error_check_good txnbegin($i) [is_valid_txn $t $dbenv] TRUE
- set txns($i) $t
- if { $usedb } {
- set dbc [$db cursor -txn $t]
- error_check_good cursor($i) [is_valid_cursor $dbc $db] TRUE
- set curs($i) $dbc
- }
-}
-
-puts "\tRecd015script.b: Prepare $numtxns txns"
-set gfd [open $gidfile w+]
-for {set i 0} {$i < $numtxns} {incr i} {
- if { $usedb } {
- set dbc $curs($i)
- error_check_good dbc_close [$dbc close] 0
- }
- set t $txns($i)
- set gid [make_gid recd015script:$t]
- puts $gfd $gid
- error_check_good txn_prepare:$t [$t prepare $gid] 0
-}
-close $gfd
-
-#
-# We do not close the db or env, but exit with the txns outstanding.
-#
-puts "\tRecd015script completed successfully"
-flush stdout
diff --git a/bdb/test/recdscript.tcl b/bdb/test/recdscript.tcl
deleted file mode 100644
index a2afde46e4d..00000000000
--- a/bdb/test/recdscript.tcl
+++ /dev/null
@@ -1,37 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: recdscript.tcl,v 11.4 2002/01/11 15:53:32 bostic Exp $
-#
-# Recovery txn prepare script
-# Usage: recdscript op dir envcmd dbfile cmd
-# op: primary txn operation
-# dir: test directory
-# envcmd: command to open env
-# dbfile: name of database file
-# gidf: name of global id file
-# cmd: db command to execute
-
-source ./include.tcl
-source $test_path/test.tcl
-
-set usage "recdscript op dir envcmd dbfile gidfile cmd"
-
-# Verify usage
-if { $argc != 6 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set op [ lindex $argv 0 ]
-set dir [ lindex $argv 1 ]
-set envcmd [ lindex $argv 2 ]
-set dbfile [ lindex $argv 3 ]
-set gidfile [ lindex $argv 4 ]
-set cmd [ lindex $argv 5 ]
-
-op_recover_prep $op $dir $envcmd $dbfile $gidfile $cmd
-flush stdout
diff --git a/bdb/test/rep001.tcl b/bdb/test/rep001.tcl
deleted file mode 100644
index 97a640029f5..00000000000
--- a/bdb/test/rep001.tcl
+++ /dev/null
@@ -1,249 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rep001.tcl,v 1.16 2002/08/26 17:52:19 margo Exp $
-#
-# TEST rep001
-# TEST Replication rename and forced-upgrade test.
-# TEST
-# TEST Run a modified version of test001 in a replicated master environment;
-# TEST verify that the database on the client is correct.
-# TEST Next, remove the database, close the master, upgrade the
-# TEST client, reopen the master, and make sure the new master can correctly
-# TEST run test001 and propagate it in the other direction.
-
-proc rep001 { method { niter 1000 } { tnum "01" } args } {
- global passwd
-
- puts "Rep0$tnum: Replication sanity test."
-
- set envargs ""
- rep001_sub $method $niter $tnum $envargs $args
-
- puts "Rep0$tnum: Replication and security sanity test."
- append envargs " -encryptaes $passwd "
- append args " -encrypt "
- rep001_sub $method $niter $tnum $envargs $args
-}
-
-proc rep001_sub { method niter tnum envargs largs } {
- source ./include.tcl
- global testdir
- global encrypt
-
- env_cleanup $testdir
-
- replsetup $testdir/MSGQUEUEDIR
-
- set masterdir $testdir/MASTERDIR
- set clientdir $testdir/CLIENTDIR
-
- file mkdir $masterdir
- file mkdir $clientdir
-
- if { [is_record_based $method] == 1 } {
- set checkfunc test001_recno.check
- } else {
- set checkfunc test001.check
- }
-
- # Open a master.
- repladd 1
- set masterenv \
- [eval {berkdb_env -create -lock_max 2500 -log_max 1000000} \
- $envargs {-home $masterdir -txn -rep_master -rep_transport \
- [list 1 replsend]}]
- error_check_good master_env [is_valid_env $masterenv] TRUE
-
- # Open a client
- repladd 2
- set clientenv [eval {berkdb_env -create} $envargs -txn -lock_max 2500 \
- {-home $clientdir -rep_client -rep_transport [list 2 replsend]}]
- error_check_good client_env [is_valid_env $clientenv] TRUE
-
- # Bring the client online by processing the startup messages.
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $clientenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- # Open a test database on the master (so we can test having handles
- # open across an upgrade).
- puts "\tRep0$tnum.a:\
- Opening test database for post-upgrade client logging test."
- set master_upg_db [berkdb_open \
- -create -auto_commit -btree -env $masterenv rep0$tnum-upg.db]
- set puttxn [$masterenv txn]
- error_check_good master_upg_db_put \
- [$master_upg_db put -txn $puttxn hello world] 0
- error_check_good puttxn_commit [$puttxn commit] 0
- error_check_good master_upg_db_close [$master_upg_db close] 0
-
- # Run a modified test001 in the master (and update client).
- puts "\tRep0$tnum.b: Running test001 in replicated env."
- eval test001 $method $niter 0 $tnum 1 -env $masterenv $largs
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $clientenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- # Open the cross-upgrade database on the client and check its contents.
- set client_upg_db [berkdb_open \
- -create -auto_commit -btree -env $clientenv rep0$tnum-upg.db]
- error_check_good client_upg_db_get [$client_upg_db get hello] \
- [list [list hello world]]
- # !!! We use this handle later. Don't close it here.
-
- # Verify the database in the client dir.
- puts "\tRep0$tnum.c: Verifying client database contents."
- set testdir [get_home $masterenv]
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- open_and_dump_file test0$tnum.db $clientenv $t1 \
- $checkfunc dump_file_direction "-first" "-next"
-
- # Remove the file (and update client).
- puts "\tRep0$tnum.d: Remove the file on the master and close master."
- error_check_good remove \
- [$masterenv dbremove -auto_commit test0$tnum.db] 0
- error_check_good masterenv_close [$masterenv close] 0
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $clientenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- # Don't get confused in Tcl.
- puts "\tRep0$tnum.e: Upgrade client."
- set newmasterenv $clientenv
- error_check_good upgrade_client [$newmasterenv rep_start -master] 0
-
- # Run test001 in the new master
- puts "\tRep0$tnum.f: Running test001 in new master."
- eval test001 $method $niter 0 $tnum 1 -env $newmasterenv $largs
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $newmasterenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- puts "\tRep0$tnum.g: Reopen old master as client and catch up."
- # Throttle master so it can't send everything at once
- $newmasterenv rep_limit 0 [expr 64 * 1024]
- set newclientenv [eval {berkdb_env -create -recover} $envargs \
- -txn -lock_max 2500 \
- {-home $masterdir -rep_client -rep_transport [list 1 replsend]}]
- error_check_good newclient_env [is_valid_env $newclientenv] TRUE
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $newclientenv 1]
- incr nproced [replprocessqueue $newmasterenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
- set stats [$newmasterenv rep_stat]
- set nthrottles [getstats $stats {Transmission limited}]
- error_check_bad nthrottles $nthrottles -1
- error_check_bad nthrottles $nthrottles 0
-
- # Run a modified test001 in the new master (and update client).
- puts "\tRep0$tnum.h: Running test001 in new master."
- eval test001 $method \
- $niter $niter $tnum 1 -env $newmasterenv $largs
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $newclientenv 1]
- incr nproced [replprocessqueue $newmasterenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- # Test put to the database handle we opened back when the new master
- # was a client.
- puts "\tRep0$tnum.i: Test put to handle opened before upgrade."
- set puttxn [$newmasterenv txn]
- error_check_good client_upg_db_put \
- [$client_upg_db put -txn $puttxn hello there] 0
- error_check_good puttxn_commit [$puttxn commit] 0
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $newclientenv 1]
- incr nproced [replprocessqueue $newmasterenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- # Close the new master's handle for the upgrade-test database; we
- # don't need it. Then check to make sure the client did in fact
- # update the database.
- error_check_good client_upg_db_close [$client_upg_db close] 0
- set newclient_upg_db [berkdb_open -env $newclientenv rep0$tnum-upg.db]
- error_check_good newclient_upg_db_get [$newclient_upg_db get hello] \
- [list [list hello there]]
- error_check_good newclient_upg_db_close [$newclient_upg_db close] 0
-
- # Verify the database in the client dir.
- puts "\tRep0$tnum.j: Verifying new client database contents."
- set testdir [get_home $newmasterenv]
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- open_and_dump_file test0$tnum.db $newclientenv $t1 \
- $checkfunc dump_file_direction "-first" "-next"
-
- if { [string compare [convert_method $method] -recno] != 0 } {
- filesort $t1 $t3
- }
- error_check_good diff_files($t2,$t3) [filecmp $t2 $t3] 0
-
-
- error_check_good newmasterenv_close [$newmasterenv close] 0
- error_check_good newclientenv_close [$newclientenv close] 0
-
- if { [lsearch $envargs "-encrypta*"] !=-1 } {
- set encrypt 1
- }
- error_check_good verify \
- [verify_dir $clientdir "\tRep0$tnum.k: " 0 0 1] 0
- replclose $testdir/MSGQUEUEDIR
-}
diff --git a/bdb/test/rep002.tcl b/bdb/test/rep002.tcl
deleted file mode 100644
index 68666b0d0f0..00000000000
--- a/bdb/test/rep002.tcl
+++ /dev/null
@@ -1,278 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rep002.tcl,v 11.11 2002/08/08 18:13:12 sue Exp $
-#
-# TEST rep002
-# TEST Basic replication election test.
-# TEST
-# TEST Run a modified version of test001 in a replicated master environment;
-# TEST hold an election among a group of clients to make sure they select
-# TEST a proper master from amongst themselves, in various scenarios.
-
-proc rep002 { method { niter 10 } { nclients 3 } { tnum "02" } args } {
- source ./include.tcl
- global elect_timeout
-
- set elect_timeout 1000000
-
- if { [is_record_based $method] == 1 } {
- puts "Rep002: Skipping for method $method."
- return
- }
-
- env_cleanup $testdir
-
- set qdir $testdir/MSGQUEUEDIR
- replsetup $qdir
-
- set masterdir $testdir/MASTERDIR
- file mkdir $masterdir
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set clientdir($i) $testdir/CLIENTDIR.$i
- file mkdir $clientdir($i)
- }
-
- puts "Rep0$tnum: Replication election test with $nclients clients."
-
- # Open a master.
- repladd 1
- set env_cmd(M) "berkdb_env -create -log_max 1000000 -home \
- $masterdir -txn -rep_master -rep_transport \[list 1 replsend\]"
- set masterenv [eval $env_cmd(M)]
- error_check_good master_env [is_valid_env $masterenv] TRUE
-
- # Open the clients.
- for { set i 0 } { $i < $nclients } { incr i } {
- set envid [expr $i + 2]
- repladd $envid
- set env_cmd($i) "berkdb_env -create -home $clientdir($i) \
- -txn -rep_client -rep_transport \[list $envid replsend\]"
- set clientenv($i) [eval $env_cmd($i)]
- error_check_good \
- client_env($i) [is_valid_env $clientenv($i)] TRUE
- }
-
- # Run a modified test001 in the master.
- puts "\tRep0$tnum.a: Running test001 in replicated env."
- eval test001 $method $niter 0 $tnum 0 -env $masterenv $args
-
- # Loop, processing first the master's messages, then the client's,
- # until both queues are empty.
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $masterenv 1]
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set envid [expr $i + 2]
- incr nproced [replprocessqueue $clientenv($i) $envid]
- }
-
- if { $nproced == 0 } {
- break
- }
- }
-
- # Verify the database in the client dir.
- for { set i 0 } { $i < $nclients } { incr i } {
- puts "\tRep0$tnum.b: Verifying contents of client database $i."
- set testdir [get_home $masterenv]
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- open_and_dump_file test0$tnum.db $clientenv($i) $testdir/t1 \
- test001.check dump_file_direction "-first" "-next"
-
- if { [string compare [convert_method $method] -recno] != 0 } {
- filesort $t1 $t3
- }
- error_check_good diff_files($t2,$t3) [filecmp $t2 $t3] 0
-
- verify_dir $clientdir($i) "\tRep0$tnum.c: " 0 0 1
- }
-
- # Start an election in the first client.
- puts "\tRep0$tnum.d: Starting election without dead master."
-
- set elect_pipe(0) [start_election \
- $qdir $env_cmd(0) [expr $nclients + 1] 20 $elect_timeout]
-
- tclsleep 1
-
- # We want to verify all the clients but the one that declared an
- # election get the election message.
- # We also want to verify that the master declares the election
- # over by fiat, even if everyone uses a lower priority than 20.
- # Loop and process all messages, keeping track of which
- # sites got a HOLDELECTION and checking that the returned newmaster,
- # if any, is 1 (the master's replication ID).
- set got_hold_elect(M) 0
- for { set i 0 } { $i < $nclients } { incr i } {
- set got_hold_elect($i) 0
- }
- while { 1 } {
- set nproced 0
- set he 0
- set nm 0
-
-
- incr nproced [replprocessqueue $masterenv 1 0 he nm]
-
- if { $he == 1 } {
- set elect_pipe(M) [start_election $qdir \
- $env_cmd(M) [expr $nclients + 1] 0 $elect_timeout]
- set got_hold_elect(M) 1
- }
- if { $nm != 0 } {
- error_check_good newmaster_is_master $nm 1
- }
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set he 0
- set envid [expr $i + 2]
- incr nproced \
- [replprocessqueue $clientenv($i) $envid 0 he nm]
- if { $he == 1 } {
- # error_check_bad client(0)_in_elect $i 0
- set elect_pipe(M) [start_election $qdir \
- $env_cmd($i) [expr $nclients + 1] 0 \
- $elect_timeout]
- set got_hold_elect($i) 1
- }
- if { $nm != 0 } {
- error_check_good newmaster_is_master $nm 1
- }
- }
-
- if { $nproced == 0 } {
- break
- }
- }
-
- error_check_good got_hold_elect(master) $got_hold_elect(M) 0
- unset got_hold_elect(M)
- # error_check_good got_hold_elect(0) $got_hold_elect(0) 0
- unset got_hold_elect(0)
- for { set i 1 } { $i < $nclients } { incr i } {
- error_check_good got_hold_elect($i) $got_hold_elect($i) 1
- unset got_hold_elect($i)
- }
-
- cleanup_elections
-
- # We need multiple clients to proceed from here.
- if { $nclients < 2 } {
- puts "\tRep0$tnum: Skipping for less than two clients."
- error_check_good masterenv_close [$masterenv close] 0
- for { set i 0 } { $i < $nclients } { incr i } {
- error_check_good clientenv_close($i) \
- [$clientenv($i) close] 0
- }
- return
- }
-
- # Make sure all the clients are synced up and ready to be good
- # voting citizens.
- error_check_good master_flush [$masterenv rep_flush] 0
- while { 1 } {
- set nproced 0
- incr nproced [replprocessqueue $masterenv 1 0]
- for { set i 0 } { $i < $nclients } { incr i } {
- incr nproced [replprocessqueue $clientenv($i) \
- [expr $i + 2] 0]
- }
-
- if { $nproced == 0 } {
- break
- }
- }
-
- # Now hold another election in the first client, this time with
- # a dead master.
- puts "\tRep0$tnum.e: Starting election with dead master."
- error_check_good masterenv_close [$masterenv close] 0
-
- for { set i 0 } { $i < $nclients } { incr i } {
- replclear [expr $i + 2]
- }
-
- set elect_pipe(0) [start_election \
- $qdir $env_cmd(0) [expr $nclients + 1] 20 $elect_timeout]
-
- tclsleep 1
-
- # Process messages, and verify that the client with the highest
- # priority--client #1--wins.
- set got_newmaster 0
- set tries 10
- while { 1 } {
- set nproced 0
- set he 0
- set nm 0
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set he 0
- set envid [expr $i + 2]
- incr nproced \
- [replprocessqueue $clientenv($i) $envid 0 he nm]
- if { $he == 1 } {
-
- # Client #1 has priority 100; everyone else
- # has priority 10.
- if { $i == 1 } {
- set pri 100
- } else {
- set pri 10
- }
- # error_check_bad client(0)_in_elect $i 0
- set elect_pipe(M) [start_election $qdir \
- $env_cmd($i) [expr $nclients + 1] $pri \
- $elect_timeout]
- set got_hold_elect($i) 1
- }
- if { $nm != 0 } {
- error_check_good newmaster_is_master $nm \
- [expr 1 + 2]
- set got_newmaster $nm
-
- # If this env is the new master, it needs to
- # configure itself as such--this is a different
- # env handle from the one that performed the
- # election.
- if { $nm == $envid } {
- error_check_good make_master($i) \
- [$clientenv($i) rep_start -master] \
- 0
- }
- }
- }
-
- # We need to wait around to make doubly sure that the
- # election has finished...
- if { $nproced == 0 } {
- incr tries -1
- if { $tries == 0 } {
- break
- } else {
- tclsleep 1
- }
- }
- }
-
- # Verify that client #1 is actually the winner.
- error_check_good "client 1 wins" $got_newmaster [expr 1 + 2]
-
- cleanup_elections
-
- for { set i 0 } { $i < $nclients } { incr i } {
- error_check_good clientenv_close($i) [$clientenv($i) close] 0
- }
-
- replclose $testdir/MSGQUEUEDIR
-}
-
-proc reptwo { args } { eval rep002 $args }
diff --git a/bdb/test/rep003.tcl b/bdb/test/rep003.tcl
deleted file mode 100644
index 7bb7e00ddbf..00000000000
--- a/bdb/test/rep003.tcl
+++ /dev/null
@@ -1,221 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rep003.tcl,v 11.9 2002/08/09 02:23:50 margo Exp $
-#
-# TEST rep003
-# TEST Repeated shutdown/restart replication test
-# TEST
-# TEST Run a quick put test in a replicated master environment; start up,
-# TEST shut down, and restart client processes, with and without recovery.
-# TEST To ensure that environment state is transient, use DB_PRIVATE.
-
-proc rep003 { method { tnum "03" } args } {
- source ./include.tcl
- global testdir rep003_dbname rep003_omethod rep003_oargs
-
- env_cleanup $testdir
- set niter 10
- set rep003_dbname rep003.db
-
- if { [is_record_based $method] } {
- puts "Rep0$tnum: Skipping for method $method"
- return
- }
-
- set rep003_omethod [convert_method $method]
- set rep003_oargs [convert_args $method $args]
-
- replsetup $testdir/MSGQUEUEDIR
-
- set masterdir $testdir/MASTERDIR
- file mkdir $masterdir
-
- set clientdir $testdir/CLIENTDIR
- file mkdir $clientdir
-
- puts "Rep0$tnum: Replication repeated-startup test"
-
- # Open a master.
- repladd 1
- set masterenv [berkdb_env_noerr -create -log_max 1000000 \
- -home $masterdir -txn -rep_master -rep_transport [list 1 replsend]]
- error_check_good master_env [is_valid_env $masterenv] TRUE
-
- puts "\tRep0$tnum.a: Simple client startup test."
-
- # Put item one.
- rep003_put $masterenv A1 a-one
-
- # Open a client.
- repladd 2
- set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \
- -rep_client -rep_transport [list 2 replsend]]
- error_check_good client_env [is_valid_env $clientenv] TRUE
-
- # Put another quick item.
- rep003_put $masterenv A2 a-two
-
- # Loop, processing first the master's messages, then the client's,
- # until both queues are empty.
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $clientenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- rep003_check $clientenv A1 a-one
- rep003_check $clientenv A2 a-two
-
- error_check_good clientenv_close [$clientenv close] 0
- replclear 2
-
- # Now reopen the client after doing another put.
- puts "\tRep0$tnum.b: Client restart."
- rep003_put $masterenv B1 b-one
-
- unset clientenv
- set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \
- -rep_client -rep_transport [list 2 replsend]]
- error_check_good client_env [is_valid_env $clientenv] TRUE
-
- rep003_put $masterenv B2 b-two
-
- # Loop, processing first the master's messages, then the client's,
- # until both queues are empty.
- while { 1 } {
- set nproced 0
-
- # The items from part A should be present at all times--
- # if we roll them back, we've screwed up. [#5709]
- rep003_check $clientenv A1 a-one
- rep003_check $clientenv A2 a-two
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $clientenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- rep003_check $clientenv B1 b-one
- rep003_check $clientenv B2 b-two
-
- error_check_good clientenv_close [$clientenv close] 0
-
- replclear 2
-
- # Now reopen the client after a recovery.
- puts "\tRep0$tnum.c: Client restart after recovery."
- rep003_put $masterenv C1 c-one
-
- unset clientenv
- set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \
- -recover -rep_client -rep_transport [list 2 replsend]]
- error_check_good client_env [is_valid_env $clientenv] TRUE
-
- rep003_put $masterenv C2 c-two
-
- # Loop, processing first the master's messages, then the client's,
- # until both queues are empty.
- while { 1 } {
- set nproced 0
-
- # The items from part A should be present at all times--
- # if we roll them back, we've screwed up. [#5709]
- rep003_check $clientenv A1 a-one
- rep003_check $clientenv A2 a-two
- rep003_check $clientenv B1 b-one
- rep003_check $clientenv B2 b-two
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $clientenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- rep003_check $clientenv C1 c-one
- rep003_check $clientenv C2 c-two
-
- error_check_good clientenv_close [$clientenv close] 0
-
- replclear 2
-
- # Now reopen the client after a catastrophic recovery.
- puts "\tRep0$tnum.d: Client restart after catastrophic recovery."
- rep003_put $masterenv D1 d-one
-
- unset clientenv
- set clientenv [berkdb_env_noerr -create -private -home $clientdir -txn \
- -recover_fatal -rep_client -rep_transport [list 2 replsend]]
- error_check_good client_env [is_valid_env $clientenv] TRUE
-
- rep003_put $masterenv D2 d-two
-
- # Loop, processing first the master's messages, then the client's,
- # until both queues are empty.
- while { 1 } {
- set nproced 0
-
- # The items from part A should be present at all times--
- # if we roll them back, we've screwed up. [#5709]
- rep003_check $clientenv A1 a-one
- rep003_check $clientenv A2 a-two
- rep003_check $clientenv B1 b-one
- rep003_check $clientenv B2 b-two
- rep003_check $clientenv C1 c-one
- rep003_check $clientenv C2 c-two
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $clientenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- rep003_check $clientenv D1 d-one
- rep003_check $clientenv D2 d-two
-
- error_check_good clientenv_close [$clientenv close] 0
-
- error_check_good masterenv_close [$masterenv close] 0
- replclose $testdir/MSGQUEUEDIR
-}
-
-proc rep003_put { masterenv key data } {
- global rep003_dbname rep003_omethod rep003_oargs
-
- set db [eval {berkdb_open_noerr -create -env $masterenv -auto_commit} \
- $rep003_omethod $rep003_oargs $rep003_dbname]
- error_check_good rep3_put_open($key,$data) [is_valid_db $db] TRUE
-
- set txn [$masterenv txn]
- error_check_good rep3_put($key,$data) [$db put -txn $txn $key $data] 0
- error_check_good rep3_put_txn_commit($key,$data) [$txn commit] 0
-
- error_check_good rep3_put_close($key,$data) [$db close] 0
-}
-
-proc rep003_check { env key data } {
- global rep003_dbname
-
- set db [berkdb_open_noerr -rdonly -env $env $rep003_dbname]
- error_check_good rep3_check_open($key,$data) [is_valid_db $db] TRUE
-
- set dbt [$db get $key]
- error_check_good rep3_check($key,$data) \
- [lindex [lindex $dbt 0] 1] $data
-
- error_check_good rep3_put_close($key,$data) [$db close] 0
-}
diff --git a/bdb/test/rep004.tcl b/bdb/test/rep004.tcl
deleted file mode 100644
index e1d4d3b65c7..00000000000
--- a/bdb/test/rep004.tcl
+++ /dev/null
@@ -1,198 +0,0 @@
-#
-# Copyright (c) 2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rep004.tcl,v 1.5 2002/08/08 18:13:12 sue Exp $
-#
-# TEST rep004
-# TEST Test of DB_REP_LOGSONLY.
-# TEST
-# TEST Run a quick put test in a master environment that has one logs-only
-# TEST client. Shut down, then run catastrophic recovery in the logs-only
-# TEST client and check that the database is present and populated.
-
-proc rep004 { method { nitems 10 } { tnum "04" } args } {
- source ./include.tcl
- global testdir
-
- env_cleanup $testdir
- set dbname rep0$tnum.db
-
- set omethod [convert_method $method]
- set oargs [convert_args $method $args]
-
- puts "Rep0$tnum: Test of logs-only replication clients"
-
- replsetup $testdir/MSGQUEUEDIR
- set masterdir $testdir/MASTERDIR
- file mkdir $masterdir
- set clientdir $testdir/CLIENTDIR
- file mkdir $clientdir
- set logsonlydir $testdir/LOGSONLYDIR
- file mkdir $logsonlydir
-
- # Open a master, a logsonly replica, and a normal client.
- repladd 1
- set masterenv [berkdb_env -create -home $masterdir -txn -rep_master \
- -rep_transport [list 1 replsend]]
- error_check_good master_env [is_valid_env $masterenv] TRUE
-
- repladd 2
- set loenv [berkdb_env -create -home $logsonlydir -txn -rep_logsonly \
- -rep_transport [list 2 replsend]]
- error_check_good logsonly_env [is_valid_env $loenv] TRUE
-
- repladd 3
- set clientenv [berkdb_env -create -home $clientdir -txn -rep_client \
- -rep_transport [list 3 replsend]]
- error_check_good client_env [is_valid_env $clientenv] TRUE
-
-
- puts "\tRep0$tnum.a: Populate database."
-
- set db [eval {berkdb open -create -mode 0644 -auto_commit} \
- -env $masterenv $oargs $omethod $dbname]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < $nitems } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- set data $str
- } else {
- set key $str
- set data [reverse $str]
- }
- set kvals($count) $key
- set dvals($count) [pad_data $method $data]
-
- set txn [$masterenv txn]
- error_check_good txn($count) [is_valid_txn $txn $masterenv] TRUE
-
- set ret [eval \
- {$db put} -txn $txn {$key [chop_data $method $data]}]
- error_check_good put($count) $ret 0
-
- error_check_good commit($count) [$txn commit] 0
-
- incr count
- }
-
- puts "\tRep0$tnum.b: Sync up clients."
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $loenv 2]
- incr nproced [replprocessqueue $clientenv 3]
-
- if { $nproced == 0 } {
- break
- }
- }
-
-
- puts "\tRep0$tnum.c: Get master and logs-only client ahead."
- set newcount 0
- while { [gets $did str] != -1 && $newcount < $nitems } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- set data $str
- } else {
- set key $str
- set data [reverse $str]
- }
- set kvals($count) $key
- set dvals($count) [pad_data $method $data]
-
- set txn [$masterenv txn]
- error_check_good txn($count) [is_valid_txn $txn $masterenv] TRUE
-
- set ret [eval \
- {$db put} -txn $txn {$key [chop_data $method $data]}]
- error_check_good put($count) $ret 0
-
- error_check_good commit($count) [$txn commit] 0
-
- incr count
- incr newcount
- }
-
- error_check_good db_close [$db close] 0
-
- puts "\tRep0$tnum.d: Sync up logs-only client only, then fail over."
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $masterenv 1]
- incr nproced [replprocessqueue $loenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
-
- # "Crash" the master, and fail over to the upgradeable client.
- error_check_good masterenv_close [$masterenv close] 0
- replclear 3
-
- error_check_good upgrade_client [$clientenv rep_start -master] 0
- set donenow 0
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $clientenv 3]
- incr nproced [replprocessqueue $loenv 2]
-
- if { $nproced == 0 } {
- break
- }
- }
-
- error_check_good loenv_close [$loenv close] 0
-
- puts "\tRep0$tnum.e: Run catastrophic recovery on logs-only client."
- set loenv [berkdb_env -create -home $logsonlydir -txn -recover_fatal]
-
- puts "\tRep0$tnum.f: Verify logs-only client contents."
- set lodb [eval {berkdb open} -env $loenv $oargs $omethod $dbname]
- set loc [$lodb cursor]
-
- set cdb [eval {berkdb open} -env $clientenv $oargs $omethod $dbname]
- set cc [$cdb cursor]
-
- # Make sure new master and recovered logs-only replica match.
- for { set cdbt [$cc get -first] } \
- { [llength $cdbt] > 0 } { set cdbt [$cc get -next] } {
- set lodbt [$loc get -next]
-
- error_check_good newmaster_replica_match $cdbt $lodbt
- }
-
- # Reset new master cursor.
- error_check_good cc_close [$cc close] 0
- set cc [$cdb cursor]
-
- for { set lodbt [$loc get -first] } \
- { [llength $lodbt] > 0 } { set lodbt [$loc get -next] } {
- set cdbt [$cc get -next]
-
- error_check_good replica_newmaster_match $lodbt $cdbt
- }
-
- error_check_good loc_close [$loc close] 0
- error_check_good lodb_close [$lodb close] 0
- error_check_good loenv_close [$loenv close] 0
-
- error_check_good cc_close [$cc close] 0
- error_check_good cdb_close [$cdb close] 0
- error_check_good clientenv_close [$clientenv close] 0
-
- close $did
-
- replclose $testdir/MSGQUEUEDIR
-}
diff --git a/bdb/test/rep005.tcl b/bdb/test/rep005.tcl
deleted file mode 100644
index e0515f1cd62..00000000000
--- a/bdb/test/rep005.tcl
+++ /dev/null
@@ -1,225 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rep005.tcl,v 11.3 2002/08/08 18:13:13 sue Exp $
-#
-# TEST rep005
-# TEST Replication election test with error handling.
-# TEST
-# TEST Run a modified version of test001 in a replicated master environment;
-# TEST hold an election among a group of clients to make sure they select
-# TEST a proper master from amongst themselves, forcing errors at various
-# TEST locations in the election path.
-
-proc rep005 { method { niter 10 } { tnum "05" } args } {
- source ./include.tcl
-
- if { [is_record_based $method] == 1 } {
- puts "Rep005: Skipping for method $method."
- return
- }
-
- set nclients 3
- env_cleanup $testdir
-
- set qdir $testdir/MSGQUEUEDIR
- replsetup $qdir
-
- set masterdir $testdir/MASTERDIR
- file mkdir $masterdir
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set clientdir($i) $testdir/CLIENTDIR.$i
- file mkdir $clientdir($i)
- }
-
- puts "Rep0$tnum: Replication election test with $nclients clients."
-
- # Open a master.
- repladd 1
- set env_cmd(M) "berkdb_env -create -log_max 1000000 -home \
- $masterdir -txn -rep_master -rep_transport \[list 1 replsend\]"
- set masterenv [eval $env_cmd(M)]
- error_check_good master_env [is_valid_env $masterenv] TRUE
-
- # Open the clients.
- for { set i 0 } { $i < $nclients } { incr i } {
- set envid [expr $i + 2]
- repladd $envid
- set env_cmd($i) "berkdb_env -create -home $clientdir($i) \
- -txn -rep_client -rep_transport \[list $envid replsend\]"
- set clientenv($i) [eval $env_cmd($i)]
- error_check_good \
- client_env($i) [is_valid_env $clientenv($i)] TRUE
- }
-
- # Run a modified test001 in the master.
- puts "\tRep0$tnum.a: Running test001 in replicated env."
- eval test001 $method $niter 0 $tnum 0 -env $masterenv $args
-
- # Loop, processing first the master's messages, then the client's,
- # until both queues are empty.
- while { 1 } {
- set nproced 0
-
- incr nproced [replprocessqueue $masterenv 1]
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set envid [expr $i + 2]
- incr nproced [replprocessqueue $clientenv($i) $envid]
- }
-
- if { $nproced == 0 } {
- break
- }
- }
-
- # Verify the database in the client dir.
- for { set i 0 } { $i < $nclients } { incr i } {
- puts "\tRep0$tnum.b: Verifying contents of client database $i."
- set testdir [get_home $masterenv]
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- open_and_dump_file test0$tnum.db $clientenv($i) $testdir/t1 \
- test001.check dump_file_direction "-first" "-next"
-
- if { [string compare [convert_method $method] -recno] != 0 } {
- filesort $t1 $t3
- }
- error_check_good diff_files($t2,$t3) [filecmp $t2 $t3] 0
-
- verify_dir $clientdir($i) "\tRep0$tnum.c: " 0 0 1
- }
-
- # Make sure all the clients are synced up and ready to be good
- # voting citizens.
- error_check_good master_flush [$masterenv rep_flush] 0
- while { 1 } {
- set nproced 0
- incr nproced [replprocessqueue $masterenv 1 0]
- for { set i 0 } { $i < $nclients } { incr i } {
- incr nproced [replprocessqueue $clientenv($i) \
- [expr $i + 2] 0]
- }
-
- if { $nproced == 0 } {
- break
- }
- }
-
- error_check_good masterenv_close [$masterenv close] 0
-
- for { set i 0 } { $i < $nclients } { incr i } {
- replclear [expr $i + 2]
- }
- #
- # We set up the error list for each client. We know that the
- # first client is the one calling the election, therefore, add
- # the error location on sending the message (electsend) for that one.
- set m "Rep0$tnum"
- set count 0
- foreach c0 { electinit electsend electvote1 electwait1 electvote2 \
- electwait2 } {
- foreach c1 { electinit electvote1 electwait1 electvote2 \
- electwait2 } {
- foreach c2 { electinit electvote1 electwait1 \
- electvote2 electwait2 } {
- set elist [list $c0 $c1 $c2]
- rep005_elect env_cmd clientenv $qdir $m \
- $count $elist
- incr count
- }
- }
- }
-
- for { set i 0 } { $i < $nclients } { incr i } {
- error_check_good clientenv_close($i) [$clientenv($i) close] 0
- }
-
- replclose $testdir/MSGQUEUEDIR
-}
-
-proc rep005_elect { ecmd cenv qdir msg count elist } {
- global elect_timeout
- upvar $ecmd env_cmd
- upvar $cenv clientenv
-
- set elect_timeout 1000000
- set nclients [llength $elist]
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set err_cmd($i) [lindex $elist $i]
- }
- puts "\t$msg.d.$count: Starting election with errors $elist"
- set elect_pipe(0) [start_election $qdir $env_cmd(0) \
- [expr $nclients + 1] 20 $elect_timeout $err_cmd(0)]
-
- tclsleep 1
-
- # Process messages, and verify that the client with the highest
- # priority--client #1--wins.
- set got_newmaster 0
- set tries 10
- while { 1 } {
- set nproced 0
- set he 0
- set nm 0
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set he 0
- set envid [expr $i + 2]
-# puts "Processing queue for client $i"
- incr nproced \
- [replprocessqueue $clientenv($i) $envid 0 he nm]
- if { $he == 1 } {
- # Client #1 has priority 100; everyone else
- if { $i == 1 } {
- set pri 100
- } else {
- set pri 10
- }
- # error_check_bad client(0)_in_elect $i 0
-# puts "Starting election on client $i"
- set elect_pipe($i) [start_election $qdir \
- $env_cmd($i) [expr $nclients + 1] $pri \
- $elect_timeout $err_cmd($i)]
- set got_hold_elect($i) 1
- }
- if { $nm != 0 } {
- error_check_good newmaster_is_master $nm \
- [expr 1 + 2]
- set got_newmaster $nm
-
- # If this env is the new master, it needs to
- # configure itself as such--this is a different
- # env handle from the one that performed the
- # election.
- if { $nm == $envid } {
- error_check_good make_master($i) \
- [$clientenv($i) rep_start -master] \
- 0
- }
- }
- }
-
- # We need to wait around to make doubly sure that the
- # election has finished...
- if { $nproced == 0 } {
- incr tries -1
- if { $tries == 0 } {
- break
- } else {
- tclsleep 1
- }
- }
- }
-
- # Verify that client #1 is actually the winner.
- error_check_good "client 1 wins" $got_newmaster [expr 1 + 2]
-
- cleanup_elections
-
-}
diff --git a/bdb/test/reputils.tcl b/bdb/test/reputils.tcl
deleted file mode 100644
index 340e359f26d..00000000000
--- a/bdb/test/reputils.tcl
+++ /dev/null
@@ -1,659 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: reputils.tcl,v 11.34 2002/08/12 17:54:18 sandstro Exp $
-#
-# Replication testing utilities
-
-# Environment handle for the env containing the replication "communications
-# structure" (really a CDB environment).
-
-# The test environment consists of a queue and a # directory (environment)
-# per replication site. The queue is used to hold messages destined for a
-# particular site and the directory will contain the environment for the
-# site. So the environment looks like:
-# $testdir
-# ___________|______________________________
-# / | \ \
-# MSGQUEUEDIR MASTERDIR CLIENTDIR.0 ... CLIENTDIR.N-1
-# | | ... |
-# 1 2 .. N+1
-#
-# The master is site 1 in the MSGQUEUEDIR and clients 1-N map to message
-# queues 2 - N+1.
-#
-# The globals repenv(1-N) contain the environment handles for the sites
-# with a given id (i.e., repenv(1) is the master's environment.
-
-global queueenv
-
-# Array of DB handles, one per machine ID, for the databases that contain
-# messages.
-global queuedbs
-global machids
-
-global elect_timeout
-set elect_timeout 50000000
-set drop 0
-
-# Create the directory structure for replication testing.
-# Open the master and client environments; store these in the global repenv
-# Return the master's environment: "-env masterenv"
-#
-proc repl_envsetup { envargs largs tnum {nclients 1} {droppct 0} { oob 0 } } {
- source ./include.tcl
- global clientdir
- global drop drop_msg
- global masterdir
- global repenv
- global testdir
-
- env_cleanup $testdir
-
- replsetup $testdir/MSGQUEUEDIR
-
- set masterdir $testdir/MASTERDIR
- file mkdir $masterdir
- if { $droppct != 0 } {
- set drop 1
- set drop_msg [expr 100 / $droppct]
- } else {
- set drop 0
- }
-
- for { set i 0 } { $i < $nclients } { incr i } {
- set clientdir($i) $testdir/CLIENTDIR.$i
- file mkdir $clientdir($i)
- }
-
- # Open a master.
- repladd 1
- #
- # Set log smaller than default to force changing files,
- # but big enough so that the tests that use binary files
- # as keys/data can run.
- #
- set lmax [expr 3 * 1024 * 1024]
- set masterenv [eval {berkdb_env -create -log_max $lmax} $envargs \
- {-home $masterdir -txn -rep_master -rep_transport \
- [list 1 replsend]}]
- error_check_good master_env [is_valid_env $masterenv] TRUE
- set repenv(master) $masterenv
-
- # Open clients
- for { set i 0 } { $i < $nclients } { incr i } {
- set envid [expr $i + 2]
- repladd $envid
- set clientenv [eval {berkdb_env -create} $envargs -txn \
- {-cachesize { 0 10000000 0 }} -lock_max 10000 \
- {-home $clientdir($i) -rep_client -rep_transport \
- [list $envid replsend]}]
- error_check_good client_env [is_valid_env $clientenv] TRUE
- set repenv($i) $clientenv
- }
- set repenv($i) NULL
- append largs " -env $masterenv "
-
- # Process startup messages
- repl_envprocq $tnum $nclients $oob
-
- return $largs
-}
-
-# Process all incoming messages. Iterate until there are no messages left
-# in anyone's queue so that we capture all message exchanges. We verify that
-# the requested number of clients matches the number of client environments
-# we have. The oob parameter indicates if we should process the queue
-# with out-of-order delivery. The replprocess procedure actually does
-# the real work of processing the queue -- this routine simply iterates
-# over the various queues and does the initial setup.
-
-proc repl_envprocq { tnum { nclients 1 } { oob 0 }} {
- global repenv
- global drop
-
- set masterenv $repenv(master)
- for { set i 0 } { 1 } { incr i } {
- if { $repenv($i) == "NULL"} {
- break
- }
- }
- error_check_good i_nclients $nclients $i
-
- set name [format "Repl%03d" $tnum]
- berkdb debug_check
- puts -nonewline "\t$name: Processing master/$i client queues"
- set rand_skip 0
- if { $oob } {
- puts " out-of-order"
- } else {
- puts " in order"
- }
- set do_check 1
- set droprestore $drop
- while { 1 } {
- set nproced 0
-
- if { $oob } {
- set rand_skip [berkdb random_int 2 10]
- }
- incr nproced [replprocessqueue $masterenv 1 $rand_skip]
- for { set i 0 } { $i < $nclients } { incr i } {
- set envid [expr $i + 2]
- if { $oob } {
- set rand_skip [berkdb random_int 2 10]
- }
- set n [replprocessqueue $repenv($i) \
- $envid $rand_skip]
- incr nproced $n
- }
-
- if { $nproced == 0 } {
- # Now that we delay requesting records until
- # we've had a few records go by, we should always
- # see that the number of requests is lower than the
- # number of messages that were enqueued.
- for { set i 0 } { $i < $nclients } { incr i } {
- set clientenv $repenv($i)
- set stats [$clientenv rep_stat]
- set queued [getstats $stats \
- {Total log records queued}]
- error_check_bad queued_stats \
- $queued -1
- set requested [getstats $stats \
- {Log records requested}]
- error_check_bad requested_stats \
- $requested -1
- if { $queued != 0 && $do_check != 0 } {
- error_check_good num_requested \
- [expr $requested < $queued] 1
- }
-
- $clientenv rep_request 1 1
- }
-
- # If we were dropping messages, we might need
- # to flush the log so that we get everything
- # and end up in the right state.
- if { $drop != 0 } {
- set drop 0
- set do_check 0
- $masterenv rep_flush
- berkdb debug_check
- puts "\t$name: Flushing Master"
- } else {
- break
- }
- }
- }
-
- # Reset the clients back to the default state in case we
- # have more processing to do.
- for { set i 0 } { $i < $nclients } { incr i } {
- set clientenv $repenv($i)
- $clientenv rep_request 4 128
- }
- set drop $droprestore
-}
-
-# Verify that the directories in the master are exactly replicated in
-# each of the client environments.
-
-proc repl_envver0 { tnum method { nclients 1 } } {
- global clientdir
- global masterdir
- global repenv
-
- # Verify the database in the client dir.
- # First dump the master.
- set t1 $masterdir/t1
- set t2 $masterdir/t2
- set t3 $masterdir/t3
- set omethod [convert_method $method]
- set name [format "Repl%03d" $tnum]
-
- #
- # We are interested in the keys of whatever databases are present
- # in the master environment, so we just call a no-op check function
- # since we have no idea what the contents of this database really is.
- # We just need to walk the master and the clients and make sure they
- # have the same contents.
- #
- set cwd [pwd]
- cd $masterdir
- set stat [catch {glob test*.db} dbs]
- cd $cwd
- if { $stat == 1 } {
- return
- }
- foreach testfile $dbs {
- open_and_dump_file $testfile $repenv(master) $masterdir/t2 \
- repl_noop dump_file_direction "-first" "-next"
-
- if { [string compare [convert_method $method] -recno] != 0 } {
- filesort $t2 $t3
- file rename -force $t3 $t2
- }
- for { set i 0 } { $i < $nclients } { incr i } {
- puts "\t$name: Verifying client $i database \
- $testfile contents."
- open_and_dump_file $testfile $repenv($i) \
- $t1 repl_noop dump_file_direction "-first" "-next"
-
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t1 $t3
- } else {
- catch {file copy -force $t1 $t3} ret
- }
- error_check_good diff_files($t2,$t3) [filecmp $t2 $t3] 0
- }
- }
-}
-
-# Remove all the elements from the master and verify that these
-# deletions properly propagated to the clients.
-
-proc repl_verdel { tnum method { nclients 1 } } {
- global clientdir
- global masterdir
- global repenv
-
- # Delete all items in the master.
- set name [format "Repl%03d" $tnum]
- set cwd [pwd]
- cd $masterdir
- set stat [catch {glob test*.db} dbs]
- cd $cwd
- if { $stat == 1 } {
- return
- }
- foreach testfile $dbs {
- puts "\t$name: Deleting all items from the master."
- set txn [$repenv(master) txn]
- error_check_good txn_begin [is_valid_txn $txn \
- $repenv(master)] TRUE
- set db [berkdb_open -txn $txn -env $repenv(master) $testfile]
- error_check_good reopen_master [is_valid_db $db] TRUE
- set dbc [$db cursor -txn $txn]
- error_check_good reopen_master_cursor \
- [is_valid_cursor $dbc $db] TRUE
- for { set dbt [$dbc get -first] } { [llength $dbt] > 0 } \
- { set dbt [$dbc get -next] } {
- error_check_good del_item [$dbc del] 0
- }
- error_check_good dbc_close [$dbc close] 0
- error_check_good txn_commit [$txn commit] 0
- error_check_good db_close [$db close] 0
-
- repl_envprocq $tnum $nclients
-
- # Check clients.
- for { set i 0 } { $i < $nclients } { incr i } {
- puts "\t$name: Verifying emptiness of client database $i."
-
- set db [berkdb_open -env $repenv($i) $testfile]
- error_check_good reopen_client($i) \
- [is_valid_db $db] TRUE
- set dbc [$db cursor]
- error_check_good reopen_client_cursor($i) \
- [is_valid_cursor $dbc $db] TRUE
-
- error_check_good client($i)_empty \
- [llength [$dbc get -first]] 0
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
- }
- }
-}
-
-# Replication "check" function for the dump procs that expect to
-# be able to verify the keys and data.
-proc repl_noop { k d } {
- return
-}
-
-# Close all the master and client environments in a replication test directory.
-proc repl_envclose { tnum envargs } {
- source ./include.tcl
- global clientdir
- global encrypt
- global masterdir
- global repenv
- global testdir
-
- if { [lsearch $envargs "-encrypta*"] !=-1 } {
- set encrypt 1
- }
-
- # In order to make sure that we have fully-synced and ready-to-verify
- # databases on all the clients, do a checkpoint on the master and
- # process messages in order to flush all the clients.
- set drop 0
- set do_check 0
- set name [format "Repl%03d" $tnum]
- berkdb debug_check
- puts "\t$name: Checkpointing master."
- error_check_good masterenv_ckp [$repenv(master) txn_checkpoint] 0
-
- # Count clients.
- for { set ncli 0 } { 1 } { incr ncli } {
- if { $repenv($ncli) == "NULL" } {
- break
- }
- }
- repl_envprocq $tnum $ncli
-
- error_check_good masterenv_close [$repenv(master) close] 0
- verify_dir $masterdir "\t$name: " 0 0 1
- for { set i 0 } { $i < $ncli } { incr i } {
- error_check_good client($i)_close [$repenv($i) close] 0
- verify_dir $clientdir($i) "\t$name: " 0 0 1
- }
- replclose $testdir/MSGQUEUEDIR
-
-}
-
-# Close up a replication group
-proc replclose { queuedir } {
- global queueenv queuedbs machids
-
- foreach m $machids {
- set db $queuedbs($m)
- error_check_good dbr_close [$db close] 0
- }
- error_check_good qenv_close [$queueenv close] 0
- set machids {}
-}
-
-# Create a replication group for testing.
-proc replsetup { queuedir } {
- global queueenv queuedbs machids
-
- file mkdir $queuedir
- set queueenv \
- [berkdb_env -create -txn -lock_max 20000 -home $queuedir]
- error_check_good queueenv [is_valid_env $queueenv] TRUE
-
- if { [info exists queuedbs] } {
- unset queuedbs
- }
- set machids {}
-
- return $queueenv
-}
-
-# Send function for replication.
-proc replsend { control rec fromid toid } {
- global queuedbs queueenv machids
- global drop drop_msg
-
- #
- # If we are testing with dropped messages, then we drop every
- # $drop_msg time. If we do that just return 0 and don't do
- # anything.
- #
- if { $drop != 0 } {
- incr drop
- if { $drop == $drop_msg } {
- set drop 1
- return 0
- }
- }
- # XXX
- # -1 is DB_BROADCAST_MID
- if { $toid == -1 } {
- set machlist $machids
- } else {
- if { [info exists queuedbs($toid)] != 1 } {
- error "replsend: machid $toid not found"
- }
- set machlist [list $toid]
- }
-
- foreach m $machlist {
- # XXX should a broadcast include to "self"?
- if { $m == $fromid } {
- continue
- }
-
- set db $queuedbs($m)
- set txn [$queueenv txn]
- $db put -txn $txn -append [list $control $rec $fromid]
- error_check_good replsend_commit [$txn commit] 0
- }
-
- return 0
-}
-
-# Nuke all the pending messages for a particular site.
-proc replclear { machid } {
- global queuedbs queueenv
-
- if { [info exists queuedbs($machid)] != 1 } {
- error "FAIL: replclear: machid $machid not found"
- }
-
- set db $queuedbs($machid)
- set txn [$queueenv txn]
- set dbc [$db cursor -txn $txn]
- for { set dbt [$dbc get -rmw -first] } { [llength $dbt] > 0 } \
- { set dbt [$dbc get -rmw -next] } {
- error_check_good replclear($machid)_del [$dbc del] 0
- }
- error_check_good replclear($machid)_dbc_close [$dbc close] 0
- error_check_good replclear($machid)_txn_commit [$txn commit] 0
-}
-
-# Add a machine to a replication environment.
-proc repladd { machid } {
- global queueenv queuedbs machids
-
- if { [info exists queuedbs($machid)] == 1 } {
- error "FAIL: repladd: machid $machid already exists"
- }
-
- set queuedbs($machid) [berkdb open -auto_commit \
- -env $queueenv -create -recno -renumber repqueue$machid.db]
- error_check_good repqueue_create [is_valid_db $queuedbs($machid)] TRUE
-
- lappend machids $machid
-}
-
-# Process a queue of messages, skipping every "skip_interval" entry.
-# We traverse the entire queue, but since we skip some messages, we
-# may end up leaving things in the queue, which should get picked up
-# on a later run.
-
-proc replprocessqueue { dbenv machid { skip_interval 0 } \
- { hold_electp NONE } { newmasterp NONE } } {
- global queuedbs queueenv errorCode
-
- # hold_electp is a call-by-reference variable which lets our caller
- # know we need to hold an election.
- if { [string compare $hold_electp NONE] != 0 } {
- upvar $hold_electp hold_elect
- }
- set hold_elect 0
-
- # newmasterp is the same idea, only returning the ID of a master
- # given in a DB_REP_NEWMASTER return.
- if { [string compare $newmasterp NONE] != 0 } {
- upvar $newmasterp newmaster
- }
- set newmaster 0
-
- set nproced 0
-
- set txn [$queueenv txn]
- set dbc [$queuedbs($machid) cursor -txn $txn]
-
- error_check_good process_dbc($machid) \
- [is_valid_cursor $dbc $queuedbs($machid)] TRUE
-
- for { set dbt [$dbc get -first] } \
- { [llength $dbt] != 0 } \
- { set dbt [$dbc get -next] } {
- set data [lindex [lindex $dbt 0] 1]
-
- # If skip_interval is nonzero, we want to process messages
- # out of order. We do this in a simple but slimy way--
- # continue walking with the cursor without processing the
- # message or deleting it from the queue, but do increment
- # "nproced". The way this proc is normally used, the
- # precise value of nproced doesn't matter--we just don't
- # assume the queues are empty if it's nonzero. Thus,
- # if we contrive to make sure it's nonzero, we'll always
- # come back to records we've skipped on a later call
- # to replprocessqueue. (If there really are no records,
- # we'll never get here.)
- #
- # Skip every skip_interval'th record (and use a remainder other
- # than zero so that we're guaranteed to really process at least
- # one record on every call).
- if { $skip_interval != 0 } {
- if { $nproced % $skip_interval == 1 } {
- incr nproced
- continue
- }
- }
-
- # We have to play an ugly cursor game here: we currently
- # hold a lock on the page of messages, but rep_process_message
- # might need to lock the page with a different cursor in
- # order to send a response. So save our recno, close
- # the cursor, and then reopen and reset the cursor.
- set recno [lindex [lindex $dbt 0] 0]
- error_check_good dbc_process_close [$dbc close] 0
- error_check_good txn_commit [$txn commit] 0
- set ret [catch {$dbenv rep_process_message \
- [lindex $data 2] [lindex $data 0] [lindex $data 1]} res]
- set txn [$queueenv txn]
- set dbc [$queuedbs($machid) cursor -txn $txn]
- set dbt [$dbc get -set $recno]
-
- if { $ret != 0 } {
- if { [is_substr $res DB_REP_HOLDELECTION] } {
- set hold_elect 1
- } else {
- error "FAIL:[timestamp]\
- rep_process_message returned $res"
- }
- }
-
- incr nproced
-
- $dbc del
-
- if { $ret == 0 && $res != 0 } {
- if { [is_substr $res DB_REP_NEWSITE] } {
- # NEWSITE; do nothing.
- } else {
- set newmaster $res
- # Break as soon as we get a NEWMASTER message;
- # our caller needs to handle it.
- break
- }
- }
-
- if { $hold_elect == 1 } {
- # Break also on a HOLDELECTION, for the same reason.
- break
- }
-
- }
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good txn_commit [$txn commit] 0
-
- # Return the number of messages processed.
- return $nproced
-}
-
-set run_repl_flag "-run_repl"
-
-proc extract_repl_args { args } {
- global run_repl_flag
-
- for { set arg [lindex $args [set i 0]] } \
- { [string length $arg] > 0 } \
- { set arg [lindex $args [incr i]] } {
- if { [string compare $arg $run_repl_flag] == 0 } {
- return [lindex $args [expr $i + 1]]
- }
- }
- return ""
-}
-
-proc delete_repl_args { args } {
- global run_repl_flag
-
- set ret {}
-
- for { set arg [lindex $args [set i 0]] } \
- { [string length $arg] > 0 } \
- { set arg [lindex $args [incr i]] } {
- if { [string compare $arg $run_repl_flag] != 0 } {
- lappend ret $arg
- } else {
- incr i
- }
- }
- return $ret
-}
-
-global elect_serial
-global elections_in_progress
-set elect_serial 0
-
-# Start an election in a sub-process.
-proc start_election { qdir envstring nsites pri timeout {err "none"}} {
- source ./include.tcl
- global elect_serial elect_timeout elections_in_progress machids
-
- incr elect_serial
-
- set t [open "|$tclsh_path >& $testdir/ELECTION_OUTPUT.$elect_serial" w]
-
- puts $t "source $test_path/test.tcl"
- puts $t "replsetup $qdir"
- foreach i $machids { puts $t "repladd $i" }
- puts $t "set env_cmd \{$envstring\}"
- puts $t "set dbenv \[eval \$env_cmd -errfile \
- $testdir/ELECTION_ERRFILE.$elect_serial -errpfx FAIL: \]"
-# puts "Start election err $err, env $envstring"
- puts $t "\$dbenv test abort $err"
- puts $t "set res \[catch \{\$dbenv rep_elect $nsites $pri \
- $elect_timeout\} ret\]"
- if { $err != "none" } {
- puts $t "\$dbenv test abort none"
- puts $t "set res \[catch \{\$dbenv rep_elect $nsites $pri \
- $elect_timeout\} ret\]"
- }
- flush $t
-
- set elections_in_progress($elect_serial) $t
- return $elect_serial
-}
-
-proc close_election { i } {
- global elections_in_progress
- set t $elections_in_progress($i)
- puts $t "\$dbenv close"
- close $t
- unset elections_in_progress($i)
-}
-
-proc cleanup_elections { } {
- global elect_serial elections_in_progress
-
- for { set i 0 } { $i <= $elect_serial } { incr i } {
- if { [info exists elections_in_progress($i)] != 0 } {
- close_election $i
- }
- }
-
- set elect_serial 0
-}
diff --git a/bdb/test/rpc001.tcl b/bdb/test/rpc001.tcl
deleted file mode 100644
index 1b65639014f..00000000000
--- a/bdb/test/rpc001.tcl
+++ /dev/null
@@ -1,449 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rpc001.tcl,v 11.33 2002/07/25 22:57:32 mjc Exp $
-#
-# TEST rpc001
-# TEST Test RPC server timeouts for cursor, txn and env handles.
-# TEST Test RPC specifics, primarily that unsupported functions return
-# TEST errors and such.
-proc rpc001 { } {
- global __debug_on
- global __debug_print
- global errorInfo
- global rpc_svc
- source ./include.tcl
-
- #
- # First test timeouts on server.
- #
- set ttime 5
- set itime 10
- puts "Rpc001: Server timeouts: resource $ttime sec, idle $itime sec"
- if { [string compare $rpc_server "localhost"] == 0 } {
- set dpid [exec $util_path/$rpc_svc \
- -h $rpc_testdir -t $ttime -I $itime &]
- } else {
- set dpid [exec rsh $rpc_server $rpc_path/$rpc_svc \
- -h $rpc_testdir -t $ttime -I $itime&]
- }
- puts "\tRpc001.a: Started server, pid $dpid"
-
- tclsleep 2
- remote_cleanup $rpc_server $rpc_testdir $testdir
- puts "\tRpc001.b: Creating environment"
-
- set testfile "rpc001.db"
- set home [file tail $rpc_testdir]
-
- set env [eval {berkdb_env -create -mode 0644 -home $home \
- -server $rpc_server -client_timeout 10000 -txn}]
- error_check_good lock_env:open [is_valid_env $env] TRUE
-
- puts "\tRpc001.c: Opening a database"
- #
- # NOTE: the type of database doesn't matter, just use btree.
- set db [eval {berkdb_open -auto_commit -create -btree -mode 0644} \
- -env $env $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set curs_list {}
- set txn_list {}
- puts "\tRpc001.d: Basic timeout test"
- puts "\tRpc001.d1: Starting a transaction"
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
- lappend txn_list $txn
-
- puts "\tRpc001.d2: Open a cursor in that transaction"
- set dbc [$db cursor -txn $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- lappend curs_list $dbc
-
- puts "\tRpc001.d3: Duplicate that cursor"
- set dbc [$dbc dup]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- lappend curs_list $dbc
-
- puts "\tRpc001.d4: Starting a nested transaction"
- set txn [$env txn -parent $txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
- set txn_list [linsert $txn_list 0 $txn]
-
- puts "\tRpc001.d5: Create a cursor, no transaction"
- set dbc [$db cursor]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- lappend curs_list $dbc
-
- puts "\tRpc001.d6: Timeout cursor and transactions"
- set sleeptime [expr $ttime + 2]
- tclsleep $sleeptime
-
- #
- # Perform a generic db operations to cause the timeout routine
- # to trigger.
- #
- set stat [catch {$db stat} ret]
- error_check_good dbstat $stat 0
-
- #
- # Check that every handle we opened above is timed out
- #
- foreach c $curs_list {
- set stat [catch {$c close} ret]
- error_check_good dbc_close:$c $stat 1
- error_check_good dbc_timeout:$c \
- [is_substr $errorInfo "DB_NOSERVER_ID"] 1
- }
- foreach t $txn_list {
- set stat [catch {$t commit} ret]
- error_check_good txn_commit:$t $stat 1
- error_check_good txn_timeout:$t \
- [is_substr $errorInfo "DB_NOSERVER_ID"] 1
- }
-
- set txn_list {}
- set ntxns 8
- puts "\tRpc001.e: Nested ($ntxns x $ntxns) transaction activity test"
- puts "\tRpc001.e1: Starting parent transaction"
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
- set txn_list [linsert $txn_list 0 $txn]
- set last_txn $txn
- set parent_txn $txn
-
- #
- # First set a breadth of 'ntxns'
- # We need 2 from this set for testing later on. Just set them
- # up separately first.
- #
- puts "\tRpc001.e2: Creating $ntxns child transactions"
- set child0 [$env txn -parent $parent_txn]
- error_check_good txn_begin [is_valid_txn $child0 $env] TRUE
- set child1 [$env txn -parent $parent_txn]
- error_check_good txn_begin [is_valid_txn $child1 $env] TRUE
-
- for {set i 2} {$i < $ntxns} {incr i} {
- set txn [$env txn -parent $parent_txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
- set txn_list [linsert $txn_list 0 $txn]
- }
-
- #
- # Now make one 'ntxns' deeply nested.
- # Add one more for testing later on separately.
- #
- puts "\tRpc001.e3: Creating $ntxns nested child transactions"
- for {set i 0} {$i < $ntxns} {incr i} {
- set txn [$env txn -parent $last_txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
- set txn_list [linsert $txn_list 0 $txn]
- set last_txn $txn
- }
- set last_parent $last_txn
- set last_txn [$env txn -parent $last_parent]
- error_check_good txn_begin [is_valid_txn $last_txn $env] TRUE
-
- puts "\tRpc001.e4: Open a cursor in deepest transaction"
- set dbc [$db cursor -txn $last_txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- puts "\tRpc001.e5: Duplicate that cursor"
- set dbcdup [$dbc dup]
- error_check_good db_cursor [is_valid_cursor $dbcdup $db] TRUE
- lappend curs_list $dbcdup
-
- puts "\tRpc001.f: Timeout then activate duplicate cursor"
- tclsleep $sleeptime
- set stat [catch {$dbcdup close} ret]
- error_check_good dup_close:$dbcdup $stat 0
- error_check_good dup_close:$dbcdup $ret 0
-
- #
- # Make sure that our parent txn is not timed out. We will
- # try to begin another child tnx using the parent. We expect
- # that to succeed. Immediately commit that txn.
- #
- set stat [catch {$env txn -parent $parent_txn} newchild]
- error_check_good newchildtxn $stat 0
- error_check_good newcommit [$newchild commit] 0
-
- puts "\tRpc001.g: Timeout, then activate cursor"
- tclsleep $sleeptime
- set stat [catch {$dbc close} ret]
- error_check_good dbc_close:$dbc $stat 0
- error_check_good dbc_close:$dbc $ret 0
-
- #
- # Make sure that our parent txn is not timed out. We will
- # try to begin another child tnx using the parent. We expect
- # that to succeed. Immediately commit that txn.
- #
- set stat [catch {$env txn -parent $parent_txn} newchild]
- error_check_good newchildtxn $stat 0
- error_check_good newcommit [$newchild commit] 0
-
- puts "\tRpc001.h: Timeout, then activate child txn"
- tclsleep $sleeptime
- set stat [catch {$child0 commit} ret]
- error_check_good child_commit $stat 0
- error_check_good child_commit:$child0 $ret 0
-
- #
- #
- # Make sure that our nested txn is not timed out. We will
- # try to begin another child tnx using the parent. We expect
- # that to succeed. Immediately commit that txn.
- #
- set stat [catch {$env txn -parent $last_parent} newchild]
- error_check_good newchildtxn $stat 0
- error_check_good newcommit [$newchild commit] 0
-
- puts "\tRpc001.i: Timeout, then activate nested txn"
- tclsleep $sleeptime
- set stat [catch {$last_txn commit} ret]
- error_check_good lasttxn_commit $stat 0
- error_check_good lasttxn_commit:$child0 $ret 0
-
- #
- # Make sure that our child txn is not timed out. We should
- # be able to commit it.
- #
- set stat [catch {$child1 commit} ret]
- error_check_good child_commit:$child1 $stat 0
- error_check_good child_commit:$child1 $ret 0
-
- #
- # Clean up. They were inserted in LIFO order, so we should
- # just be able to commit them all.
- foreach t $txn_list {
- set stat [catch {$t commit} ret]
- error_check_good txn_commit:$t $stat 0
- error_check_good txn_commit:$t $ret 0
- }
-
- set stat [catch {$db close} ret]
- error_check_good db_close $stat 0
-
- rpc_timeoutjoin $env "Rpc001.j" $sleeptime 0
- rpc_timeoutjoin $env "Rpc001.k" $sleeptime 1
-
- #
- # We need a 2nd env just to do an op to timeout the env.
- # Make the flags different so we don't end up sharing a handle.
- #
- set env1 [eval {berkdb_env -create -mode 0644 -home $home \
- -server $rpc_server -client_timeout 10000}]
- error_check_good lock_env:open [is_valid_env $env1] TRUE
-
- puts "\tRpc001.l: Timeout idle env handle"
- set sleeptime [expr $itime + 2]
- tclsleep $sleeptime
-
- set stat [catch {$env1 close} ret]
- error_check_good env1_close $stat 0
-
- set stat [catch {$env close} ret]
- error_check_good env_close $stat 1
- error_check_good env_timeout \
- [is_substr $errorInfo "DB_NOSERVER_ID"] 1
-
- tclkill $dpid
-}
-
-proc rpc_timeoutjoin {env msg sleeptime use_txn} {
- #
- # Check join cursors now.
- #
- puts -nonewline "\t$msg: Test join cursors and timeouts"
- if { $use_txn } {
- puts " (using txns)"
- set txnflag "-auto_commit"
- } else {
- puts " (without txns)"
- set txnflag ""
- }
- #
- # Set up a simple set of join databases
- #
- puts "\t${msg}0: Set up join databases"
- set fruit {
- {blue blueberry}
- {red apple} {red cherry} {red raspberry}
- {yellow lemon} {yellow pear}
- }
- set price {
- {expen blueberry} {expen cherry} {expen raspberry}
- {inexp apple} {inexp lemon} {inexp pear}
- }
- set dessert {
- {blueberry cobbler} {cherry cobbler} {pear cobbler}
- {apple pie} {raspberry pie} {lemon pie}
- }
- set fdb [eval {berkdb_open -create -btree -mode 0644} \
- $txnflag -env $env -dup fruit.db]
- error_check_good dbopen [is_valid_db $fdb] TRUE
- set pdb [eval {berkdb_open -create -btree -mode 0644} \
- $txnflag -env $env -dup price.db]
- error_check_good dbopen [is_valid_db $pdb] TRUE
- set ddb [eval {berkdb_open -create -btree -mode 0644} \
- $txnflag -env $env -dup dessert.db]
- error_check_good dbopen [is_valid_db $ddb] TRUE
- foreach kd $fruit {
- set k [lindex $kd 0]
- set d [lindex $kd 1]
- set ret [eval {$fdb put} $txnflag {$k $d}]
- error_check_good fruit_put $ret 0
- }
- error_check_good sync [$fdb sync] 0
- foreach kd $price {
- set k [lindex $kd 0]
- set d [lindex $kd 1]
- set ret [eval {$pdb put} $txnflag {$k $d}]
- error_check_good price_put $ret 0
- }
- error_check_good sync [$pdb sync] 0
- foreach kd $dessert {
- set k [lindex $kd 0]
- set d [lindex $kd 1]
- set ret [eval {$ddb put} $txnflag {$k $d}]
- error_check_good dessert_put $ret 0
- }
- error_check_good sync [$ddb sync] 0
-
- rpc_join $env $msg $sleeptime $fdb $pdb $ddb $use_txn 0
- rpc_join $env $msg $sleeptime $fdb $pdb $ddb $use_txn 1
-
- error_check_good ddb:close [$ddb close] 0
- error_check_good pdb:close [$pdb close] 0
- error_check_good fdb:close [$fdb close] 0
-}
-
-proc rpc_join {env msg sleep fdb pdb ddb use_txn op} {
- global errorInfo
-
- #
- # Start a parent and child transaction. We'll do our join in
- # the child transaction just to make sure everything gets timed
- # out correctly.
- #
- set curs_list {}
- set txn_list {}
- set msgnum [expr $op * 2 + 1]
- if { $use_txn } {
- puts "\t$msg$msgnum: Set up txns and join cursor"
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
- set txn_list [linsert $txn_list 0 $txn]
- set child0 [$env txn -parent $txn]
- error_check_good txn_begin [is_valid_txn $child0 $env] TRUE
- set txn_list [linsert $txn_list 0 $child0]
- set child1 [$env txn -parent $txn]
- error_check_good txn_begin [is_valid_txn $child1 $env] TRUE
- set txn_list [linsert $txn_list 0 $child1]
- set txncmd "-txn $child0"
- } else {
- puts "\t$msg$msgnum: Set up join cursor"
- set txncmd ""
- }
-
- #
- # Start a cursor, (using txn child0 in the fruit and price dbs, if
- # needed). # Just pick something simple to join on.
- # Then call join on the dessert db.
- #
- set fkey yellow
- set pkey inexp
- set fdbc [eval $fdb cursor $txncmd]
- error_check_good fdb_cursor [is_valid_cursor $fdbc $fdb] TRUE
- set ret [$fdbc get -set $fkey]
- error_check_bad fget:set [llength $ret] 0
- set k [lindex [lindex $ret 0] 0]
- error_check_good fget:set:key $k $fkey
- set curs_list [linsert $curs_list 0 $fdbc]
-
- set pdbc [eval $pdb cursor $txncmd]
- error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- set ret [$pdbc get -set $pkey]
- error_check_bad pget:set [llength $ret] 0
- set k [lindex [lindex $ret 0] 0]
- error_check_good pget:set:key $k $pkey
- set curs_list [linsert $curs_list 0 $pdbc]
-
- set jdbc [$ddb join $fdbc $pdbc]
- error_check_good join_cursor [is_valid_cursor $jdbc $ddb] TRUE
- set ret [$jdbc get]
- error_check_bad jget [llength $ret] 0
-
- set msgnum [expr $op * 2 + 2]
- if { $op == 1 } {
- puts -nonewline "\t$msg$msgnum: Timeout all cursors"
- if { $use_txn } {
- puts " and txns"
- } else {
- puts ""
- }
- } else {
- puts "\t$msg$msgnum: Timeout, then activate join cursor"
- }
-
- tclsleep $sleep
-
- if { $op == 1 } {
- #
- # Perform a generic db operations to cause the timeout routine
- # to trigger.
- #
- set stat [catch {$fdb stat} ret]
- error_check_good fdbstat $stat 0
-
- #
- # Check that join cursor is timed out.
- #
- set stat [catch {$jdbc close} ret]
- error_check_good dbc_close:$jdbc $stat 1
- error_check_good dbc_timeout:$jdbc \
- [is_substr $errorInfo "DB_NOSERVER_ID"] 1
-
- #
- # Now the server may or may not timeout constituent
- # cursors when it times out the join cursor. So, just
- # sleep again and then they should timeout.
- #
- tclsleep $sleep
- set stat [catch {$fdb stat} ret]
- error_check_good fdbstat $stat 0
-
- foreach c $curs_list {
- set stat [catch {$c close} ret]
- error_check_good dbc_close:$c $stat 1
- error_check_good dbc_timeout:$c \
- [is_substr $errorInfo "DB_NOSERVER_ID"] 1
- }
-
- foreach t $txn_list {
- set stat [catch {$t commit} ret]
- error_check_good txn_commit:$t $stat 1
- error_check_good txn_timeout:$t \
- [is_substr $errorInfo "DB_NOSERVER_ID"] 1
- }
- } else {
- set stat [catch {$jdbc get} ret]
- error_check_good jget.stat $stat 0
- error_check_bad jget [llength $ret] 0
- set curs_list [linsert $curs_list 0 $jdbc]
- foreach c $curs_list {
- set stat [catch {$c close} ret]
- error_check_good dbc_close:$c $stat 0
- error_check_good dbc_close:$c $ret 0
- }
-
- foreach t $txn_list {
- set stat [catch {$t commit} ret]
- error_check_good txn_commit:$t $stat 0
- error_check_good txn_commit:$t $ret 0
- }
- }
-}
diff --git a/bdb/test/rpc002.tcl b/bdb/test/rpc002.tcl
deleted file mode 100644
index 4b69265bf3a..00000000000
--- a/bdb/test/rpc002.tcl
+++ /dev/null
@@ -1,143 +0,0 @@
-# Sel the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rpc002.tcl,v 1.17 2002/07/16 20:53:03 bostic Exp $
-#
-# TEST rpc002
-# TEST Test invalid RPC functions and make sure we error them correctly
-proc rpc002 { } {
- global __debug_on
- global __debug_print
- global errorInfo
- global rpc_svc
- source ./include.tcl
-
- set testfile "rpc002.db"
- set home [file tail $rpc_testdir]
- #
- # First start the server.
- #
- puts "Rpc002: Unsupported interface test"
- if { [string compare $rpc_server "localhost"] == 0 } {
- set dpid [exec $util_path/$rpc_svc -h $rpc_testdir &]
- } else {
- set dpid [exec rsh $rpc_server $rpc_path/$rpc_svc \
- -h $rpc_testdir &]
- }
- puts "\tRpc002.a: Started server, pid $dpid"
- tclsleep 2
- remote_cleanup $rpc_server $rpc_testdir $testdir
-
- puts "\tRpc002.b: Unsupported env options"
- #
- # Test each "pre-open" option for env's. These need to be
- # tested on the 'berkdb_env' line.
- #
- set rlist {
- { "-data_dir $rpc_testdir" "Rpc002.b0"}
- { "-log_buffer 512" "Rpc002.b1"}
- { "-log_dir $rpc_testdir" "Rpc002.b2"}
- { "-log_max 100" "Rpc002.b3"}
- { "-lock_conflict {3 {0 0 0 0 0 1 0 1 1}}" "Rpc002.b4"}
- { "-lock_detect default" "Rpc002.b5"}
- { "-lock_max 100" "Rpc002.b6"}
- { "-mmapsize 100" "Rpc002.b7"}
- { "-shm_key 100" "Rpc002.b9"}
- { "-tmp_dir $rpc_testdir" "Rpc002.b10"}
- { "-txn_max 100" "Rpc002.b11"}
- { "-txn_timestamp 100" "Rpc002.b12"}
- { "-verbose {recovery on}" "Rpc002.b13"}
- }
-
- set e "berkdb_env_noerr -create -mode 0644 -home $home \
- -server $rpc_server -client_timeout 10000 -txn"
- foreach pair $rlist {
- set cmd [lindex $pair 0]
- set msg [lindex $pair 1]
- puts "\t$msg: $cmd"
-
- set stat [catch {eval $e $cmd} ret]
- error_check_good $cmd $stat 1
- error_check_good $cmd.err \
- [is_substr $errorInfo "meaningless in an RPC env"] 1
- }
-
- #
- # Open an env with all the subsystems (-txn implies all
- # the rest)
- #
- puts "\tRpc002.c: Unsupported env related interfaces"
- set env [eval {berkdb_env_noerr -create -mode 0644 -home $home \
- -server $rpc_server -client_timeout 10000 -txn}]
- error_check_good envopen [is_valid_env $env] TRUE
- set dbcmd "berkdb_open_noerr -create -btree -mode 0644 -env $env \
- $testfile"
- set db [eval $dbcmd]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- #
- # Test each "post-open" option relating to envs, txns, locks,
- # logs and mpools.
- #
- set rlist {
- { " lock_detect default" "Rpc002.c0"}
- { " lock_get read 1 $env" "Rpc002.c1"}
- { " lock_id" "Rpc002.c2"}
- { " lock_stat" "Rpc002.c3"}
- { " lock_vec 1 {get $env read}" "Rpc002.c4"}
- { " log_archive" "Rpc002.c5"}
- { " log_file {0 0}" "Rpc002.c6"}
- { " log_flush" "Rpc002.c7"}
- { " log_cursor" "Rpc002.c8"}
- { " log_stat" "Rpc002.c9"}
- { " mpool -create -pagesize 512" "Rpc002.c10"}
- { " mpool_stat" "Rpc002.c11"}
- { " mpool_sync {0 0}" "Rpc002.c12"}
- { " mpool_trickle 50" "Rpc002.c13"}
- { " txn_checkpoint -min 1" "Rpc002.c14"}
- { " txn_stat" "Rpc002.c15"}
- }
-
- foreach pair $rlist {
- set cmd [lindex $pair 0]
- set msg [lindex $pair 1]
- puts "\t$msg: $cmd"
-
- set stat [catch {eval $env $cmd} ret]
- error_check_good $cmd $stat 1
- error_check_good $cmd.err \
- [is_substr $errorInfo "meaningless in an RPC env"] 1
- }
- error_check_good dbclose [$db close] 0
-
- #
- # The database operations that aren't supported are few
- # because mostly they are the ones Tcl doesn't support
- # either so we have no way to get at them. Test what we can.
- #
- puts "\tRpc002.d: Unsupported database related interfaces"
- #
- # NOTE: the type of database doesn't matter, just use btree.
- #
- puts "\tRpc002.d0: -cachesize"
- set dbcmd "berkdb_open_noerr -create -btree -mode 0644 -env $env \
- -cachesize {0 65536 0} $testfile"
- set stat [catch {eval $dbcmd} ret]
- error_check_good dbopen_cache $stat 1
- error_check_good dbopen_cache_err \
- [is_substr $errorInfo "meaningless in an RPC env"] 1
-
- puts "\tRpc002.d1: Try to upgrade a database"
- #
- # NOTE: the type of database doesn't matter, just use btree.
- set stat [catch {eval {berkdb upgrade -env} $env $testfile} ret]
- error_check_good dbupgrade $stat 1
- error_check_good dbupgrade_err \
- [is_substr $errorInfo "meaningless in an RPC env"] 1
-
- error_check_good envclose [$env close] 0
-
- tclkill $dpid
-}
diff --git a/bdb/test/rpc003.tcl b/bdb/test/rpc003.tcl
deleted file mode 100644
index 76f0dca6c07..00000000000
--- a/bdb/test/rpc003.tcl
+++ /dev/null
@@ -1,166 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rpc003.tcl,v 11.9 2002/07/16 20:53:03 bostic Exp $
-#
-# Test RPC and secondary indices.
-proc rpc003 { } {
- source ./include.tcl
- global dict nsecondaries
- global rpc_svc
-
- #
- # First set up the files. Secondary indices only work readonly
- # over RPC. So we need to create the databases first without
- # RPC. Then run checking over RPC.
- #
- puts "Rpc003: Secondary indices over RPC"
- if { [string compare $rpc_server "localhost"] != 0 } {
- puts "Cannot run to non-local RPC server. Skipping."
- return
- }
- cleanup $testdir NULL
- puts "\tRpc003.a: Creating local secondary index databases"
-
- # Primary method/args.
- set pmethod btree
- set pomethod [convert_method $pmethod]
- set pargs ""
- set methods {dbtree dbtree}
- set argses [convert_argses $methods ""]
- set omethods [convert_methods $methods]
-
- set nentries 500
-
- puts "\tRpc003.b: ($pmethod/$methods) $nentries equal key/data pairs"
- set pname "primary003.db"
- set snamebase "secondary003"
-
- # Open an environment
- # XXX if one is not supplied!
- set env [berkdb_env -create -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- # Open the primary.
- set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
- error_check_good primary_open [is_valid_db $pdb] TRUE
-
- # Open and associate the secondaries
- set sdbs {}
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -create -env} $env \
- [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
- error_check_good second_open($i) [is_valid_db $sdb] TRUE
-
- error_check_good db_associate($i) \
- [$pdb associate [callback_n $i] $sdb] 0
- lappend sdbs $sdb
- }
-
- set did [open $dict]
- for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
- if { [is_record_based $pmethod] == 1 } {
- set key [expr $n + 1]
- set datum $str
- } else {
- set key $str
- gets $did datum
- }
- set keys($n) $key
- set data($n) [pad_data $pmethod $datum]
-
- set ret [eval {$pdb put} {$key [chop_data $pmethod $datum]}]
- error_check_good put($n) $ret 0
- }
- close $did
- foreach sdb $sdbs {
- error_check_good secondary_close [$sdb close] 0
- }
- error_check_good primary_close [$pdb close] 0
- error_check_good env_close [$env close] 0
-
- #
- # We have set up our databases, so now start the server and
- # read them over RPC.
- #
- set dpid [exec $util_path/$rpc_svc -h $rpc_testdir &]
- puts "\tRpc003.c: Started server, pid $dpid"
- tclsleep 2
-
- set home [file tail $rpc_testdir]
- set env [eval {berkdb_env_noerr -create -mode 0644 -home $home \
- -server $rpc_server}]
- error_check_good lock_env:open [is_valid_env $env] TRUE
-
- #
- # Attempt to send in a NULL callback to associate. It will fail
- # if the primary and secondary are not both read-only.
- #
- set msg "\tRpc003.d"
- puts "$msg: Using r/w primary and r/w secondary"
- set popen "berkdb_open_noerr -env $env $pomethod $pargs $pname"
- set sopen "berkdb_open_noerr -create -env $env \
- [lindex $omethods 0] [lindex $argses 0] $snamebase.0.db"
- rpc003_assoc_err $popen $sopen $msg
-
- set msg "\tRpc003.e"
- puts "$msg: Using r/w primary and read-only secondary"
- set popen "berkdb_open_noerr -env $env $pomethod $pargs $pname"
- set sopen "berkdb_open_noerr -env $env -rdonly \
- [lindex $omethods 0] [lindex $argses 0] $snamebase.0.db"
- rpc003_assoc_err $popen $sopen $msg
-
- set msg "\tRpc003.f"
- puts "$msg: Using read-only primary and r/w secondary"
- set popen "berkdb_open_noerr -env $env $pomethod -rdonly $pargs $pname"
- set sopen "berkdb_open_noerr -create -env $env \
- [lindex $omethods 0] [lindex $argses 0] $snamebase.0.db"
- rpc003_assoc_err $popen $sopen $msg
-
- # Open and associate the secondaries
- puts "\tRpc003.g: Checking secondaries, both read-only"
- set pdb [eval {berkdb_open_noerr -env} $env \
- -rdonly $pomethod $pargs $pname]
- error_check_good primary_open2 [is_valid_db $pdb] TRUE
-
- set sdbs {}
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -env} $env -rdonly \
- [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
- error_check_good second_open2($i) [is_valid_db $sdb] TRUE
- error_check_good db_associate2($i) \
- [eval {$pdb associate} "" $sdb] 0
- lappend sdbs $sdb
- }
- check_secondaries $pdb $sdbs $nentries keys data "Rpc003.h"
-
- foreach sdb $sdbs {
- error_check_good secondary_close [$sdb close] 0
- }
- error_check_good primary_close [$pdb close] 0
- error_check_good env_close [$env close] 0
-
- tclkill $dpid
-}
-
-proc rpc003_assoc_err { popen sopen msg } {
- set pdb [eval $popen]
- error_check_good assoc_err_popen [is_valid_db $pdb] TRUE
-
- puts "$msg.0: NULL callback"
- set sdb [eval $sopen]
- error_check_good assoc_err_sopen [is_valid_db $sdb] TRUE
- set stat [catch {eval {$pdb associate} "" $sdb} ret]
- error_check_good db_associate:rdonly $stat 1
- error_check_good db_associate:inval [is_substr $ret invalid] 1
-
- puts "$msg.1: non-NULL callback"
- set stat [catch {eval $pdb associate [callback_n 0] $sdb} ret]
- error_check_good db_associate:callback $stat 1
- error_check_good db_associate:rpc \
- [is_substr $ret "not supported in RPC"] 1
- error_check_good assoc_sclose [$sdb close] 0
- error_check_good assoc_pclose [$pdb close] 0
-}
diff --git a/bdb/test/rpc004.tcl b/bdb/test/rpc004.tcl
deleted file mode 100644
index ca1462f3a89..00000000000
--- a/bdb/test/rpc004.tcl
+++ /dev/null
@@ -1,76 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rpc004.tcl,v 11.6 2002/07/16 20:53:03 bostic Exp $
-#
-# TEST rpc004
-# TEST Test RPC server and security
-proc rpc004 { } {
- global __debug_on
- global __debug_print
- global errorInfo
- global passwd
- global rpc_svc
- source ./include.tcl
-
- puts "Rpc004: RPC server + security"
- cleanup $testdir NULL
- if { [string compare $rpc_server "localhost"] == 0 } {
- set dpid [exec $util_path/$rpc_svc \
- -h $rpc_testdir -P $passwd &]
- } else {
- set dpid [exec rsh $rpc_server $rpc_path/$rpc_svc \
- -h $rpc_testdir -P $passwd &]
- }
- puts "\tRpc004.a: Started server, pid $dpid"
-
- tclsleep 2
- remote_cleanup $rpc_server $rpc_testdir $testdir
- puts "\tRpc004.b: Creating environment"
-
- set testfile "rpc004.db"
- set testfile1 "rpc004a.db"
- set home [file tail $rpc_testdir]
-
- set env [eval {berkdb_env -create -mode 0644 -home $home \
- -server $rpc_server -encryptaes $passwd -txn}]
- error_check_good lock_env:open [is_valid_env $env] TRUE
-
- puts "\tRpc004.c: Opening a non-encrypted database"
- #
- # NOTE: the type of database doesn't matter, just use btree.
- set db [eval {berkdb_open -auto_commit -create -btree -mode 0644} \
- -env $env $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- puts "\tRpc004.d: Opening an encrypted database"
- set db1 [eval {berkdb_open -auto_commit -create -btree -mode 0644} \
- -env $env -encrypt $testfile1]
- error_check_good dbopen [is_valid_db $db1] TRUE
-
- set txn [$env txn]
- error_check_good txn [is_valid_txn $txn $env] TRUE
- puts "\tRpc004.e: Put/get on both databases"
- set key "key"
- set data "data"
-
- set ret [$db put -txn $txn $key $data]
- error_check_good db_put $ret 0
- set ret [$db get -txn $txn $key]
- error_check_good db_get $ret [list [list $key $data]]
- set ret [$db1 put -txn $txn $key $data]
- error_check_good db1_put $ret 0
- set ret [$db1 get -txn $txn $key]
- error_check_good db1_get $ret [list [list $key $data]]
-
- error_check_good txn_commit [$txn commit] 0
- error_check_good db_close [$db close] 0
- error_check_good db1_close [$db1 close] 0
- error_check_good env_close [$env close] 0
-
- # Cleanup our environment because it's encrypted
- remote_cleanup $rpc_server $rpc_testdir $testdir
- tclkill $dpid
-}
diff --git a/bdb/test/rpc005.tcl b/bdb/test/rpc005.tcl
deleted file mode 100644
index f46e7355e5a..00000000000
--- a/bdb/test/rpc005.tcl
+++ /dev/null
@@ -1,137 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rpc005.tcl,v 11.4 2002/07/16 20:53:03 bostic Exp $
-#
-# TEST rpc005
-# TEST Test RPC server handle ID sharing
-proc rpc005 { } {
- global __debug_on
- global __debug_print
- global errorInfo
- global rpc_svc
- source ./include.tcl
-
- puts "Rpc005: RPC server handle sharing"
- if { [string compare $rpc_server "localhost"] == 0 } {
- set dpid [exec $util_path/$rpc_svc \
- -h $rpc_testdir &]
- } else {
- set dpid [exec rsh $rpc_server $rpc_path/$rpc_svc \
- -h $rpc_testdir &]
- }
- puts "\tRpc005.a: Started server, pid $dpid"
-
- tclsleep 2
- remote_cleanup $rpc_server $rpc_testdir $testdir
- puts "\tRpc005.b: Creating environment"
-
- set testfile "rpc005.db"
- set testfile1 "rpc005a.db"
- set subdb1 "subdb1"
- set subdb2 "subdb2"
- set home [file tail $rpc_testdir]
-
- set env [eval {berkdb_env -create -mode 0644 -home $home \
- -server $rpc_server -txn}]
- error_check_good lock_env:open [is_valid_env $env] TRUE
-
- puts "\tRpc005.c: Compare identical and different configured envs"
- set env_ident [eval {berkdb_env -home $home \
- -server $rpc_server -txn}]
- error_check_good lock_env:open [is_valid_env $env_ident] TRUE
-
- set env_diff [eval {berkdb_env -home $home \
- -server $rpc_server -txn nosync}]
- error_check_good lock_env:open [is_valid_env $env_diff] TRUE
-
- error_check_good ident:id [$env rpcid] [$env_ident rpcid]
- error_check_bad diff:id [$env rpcid] [$env_diff rpcid]
-
- error_check_good envclose [$env_diff close] 0
- error_check_good envclose [$env_ident close] 0
-
- puts "\tRpc005.d: Opening a database"
- set db [eval {berkdb_open -auto_commit -create -btree -mode 0644} \
- -env $env $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- puts "\tRpc005.e: Compare identical and different configured dbs"
- set db_ident [eval {berkdb_open -btree} -env $env $testfile]
- error_check_good dbopen [is_valid_db $db_ident] TRUE
-
- set db_diff [eval {berkdb_open -btree} -env $env -rdonly $testfile]
- error_check_good dbopen [is_valid_db $db_diff] TRUE
-
- set db_diff2 [eval {berkdb_open -btree} -env $env -rdonly $testfile]
- error_check_good dbopen [is_valid_db $db_diff2] TRUE
-
- error_check_good ident:id [$db rpcid] [$db_ident rpcid]
- error_check_bad diff:id [$db rpcid] [$db_diff rpcid]
- error_check_good ident2:id [$db_diff rpcid] [$db_diff2 rpcid]
-
- error_check_good db_close [$db_ident close] 0
- error_check_good db_close [$db_diff close] 0
- error_check_good db_close [$db_diff2 close] 0
- error_check_good db_close [$db close] 0
-
- puts "\tRpc005.f: Compare with a database and subdatabases"
- set db [eval {berkdb_open -auto_commit -create -btree -mode 0644} \
- -env $env $testfile1 $subdb1]
- error_check_good dbopen [is_valid_db $db] TRUE
- set dbid [$db rpcid]
-
- set db2 [eval {berkdb_open -auto_commit -create -btree -mode 0644} \
- -env $env $testfile1 $subdb2]
- error_check_good dbopen [is_valid_db $db2] TRUE
- set db2id [$db2 rpcid]
- error_check_bad 2subdb:id $dbid $db2id
-
- set db_ident [eval {berkdb_open -btree} -env $env $testfile1 $subdb1]
- error_check_good dbopen [is_valid_db $db_ident] TRUE
- set identid [$db_ident rpcid]
-
- set db_ident2 [eval {berkdb_open -btree} -env $env $testfile1 $subdb2]
- error_check_good dbopen [is_valid_db $db_ident2] TRUE
- set ident2id [$db_ident2 rpcid]
-
- set db_diff1 [eval {berkdb_open -btree} -env $env -rdonly \
- $testfile1 $subdb1]
- error_check_good dbopen [is_valid_db $db_diff1] TRUE
- set diff1id [$db_diff1 rpcid]
-
- set db_diff2 [eval {berkdb_open -btree} -env $env -rdonly \
- $testfile1 $subdb2]
- error_check_good dbopen [is_valid_db $db_diff2] TRUE
- set diff2id [$db_diff2 rpcid]
-
- set db_diff [eval {berkdb_open -unknown} -env $env -rdonly $testfile1]
- error_check_good dbopen [is_valid_db $db_diff] TRUE
- set diffid [$db_diff rpcid]
-
- set db_diff2a [eval {berkdb_open -btree} -env $env -rdonly \
- $testfile1 $subdb2]
- error_check_good dbopen [is_valid_db $db_diff2a] TRUE
- set diff2aid [$db_diff2a rpcid]
-
- error_check_good ident:id $dbid $identid
- error_check_good ident2:id $db2id $ident2id
- error_check_bad diff:id $dbid $diffid
- error_check_bad diff2:id $db2id $diffid
- error_check_bad diff3:id $diff2id $diffid
- error_check_bad diff4:id $diff1id $diffid
- error_check_good diff2a:id $diff2id $diff2aid
-
- error_check_good db_close [$db_ident close] 0
- error_check_good db_close [$db_ident2 close] 0
- error_check_good db_close [$db_diff close] 0
- error_check_good db_close [$db_diff1 close] 0
- error_check_good db_close [$db_diff2 close] 0
- error_check_good db_close [$db_diff2a close] 0
- error_check_good db_close [$db2 close] 0
- error_check_good db_close [$db close] 0
- error_check_good env_close [$env close] 0
- tclkill $dpid
-}
diff --git a/bdb/test/rsrc001.tcl b/bdb/test/rsrc001.tcl
deleted file mode 100644
index 1d57769fda2..00000000000
--- a/bdb/test/rsrc001.tcl
+++ /dev/null
@@ -1,221 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rsrc001.tcl,v 11.23 2002/01/11 15:53:33 bostic Exp $
-#
-# TEST rsrc001
-# TEST Recno backing file test. Try different patterns of adding
-# TEST records and making sure that the corresponding file matches.
-proc rsrc001 { } {
- source ./include.tcl
-
- puts "Rsrc001: Basic recno backing file writeback tests"
-
- # We run this test essentially twice, once with a db file
- # and once without (an in-memory database).
- set rec1 "This is record 1"
- set rec2 "This is record 2 This is record 2"
- set rec3 "This is record 3 This is record 3 This is record 3"
- set rec4 [replicate "This is record 4 " 512]
-
- foreach testfile { "$testdir/rsrc001.db" "" } {
-
- cleanup $testdir NULL
-
- if { $testfile == "" } {
- puts "Rsrc001: Testing with in-memory database."
- } else {
- puts "Rsrc001: Testing with disk-backed database."
- }
-
- # Create backing file for the empty-file test.
- set oid1 [open $testdir/rsrc.txt w]
- close $oid1
-
- puts "\tRsrc001.a: Put to empty file."
- set db [eval {berkdb_open -create -mode 0644\
- -recno -source $testdir/rsrc.txt} $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set txn ""
-
- set ret [eval {$db put} $txn {1 $rec1}]
- error_check_good put_to_empty $ret 0
- error_check_good db_close [$db close] 0
-
- # Now fill out the backing file and create the check file.
- set oid1 [open $testdir/rsrc.txt a]
- set oid2 [open $testdir/check.txt w]
-
- # This one was already put into rsrc.txt.
- puts $oid2 $rec1
-
- # These weren't.
- puts $oid1 $rec2
- puts $oid2 $rec2
- puts $oid1 $rec3
- puts $oid2 $rec3
- puts $oid1 $rec4
- puts $oid2 $rec4
- close $oid1
- close $oid2
-
- puts -nonewline "\tRsrc001.b: Read file, rewrite last record;"
- puts " write it out and diff"
- set db [eval {berkdb_open -create -mode 0644\
- -recno -source $testdir/rsrc.txt} $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Read the last record; replace it (but we won't change it).
- # Then close the file and diff the two files.
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- set rec [$dbc get -last]
- error_check_good get_last [llength [lindex $rec 0]] 2
- set key [lindex [lindex $rec 0] 0]
- set data [lindex [lindex $rec 0] 1]
-
- # Get the last record from the text file
- set oid [open $testdir/rsrc.txt]
- set laststr ""
- while { [gets $oid str] != -1 } {
- set laststr $str
- }
- close $oid
- set data [sanitize_record $data]
- error_check_good getlast $data $laststr
-
- set ret [eval {$db put} $txn {$key $data}]
- error_check_good replace_last $ret 0
-
- error_check_good curs_close [$dbc close] 0
- error_check_good db_sync [$db sync] 0
- error_check_good db_sync [$db sync] 0
- error_check_good \
- Rsrc001:diff($testdir/rsrc.txt,$testdir/check.txt) \
- [filecmp $testdir/rsrc.txt $testdir/check.txt] 0
-
- puts -nonewline "\tRsrc001.c: "
- puts "Append some records in tree and verify in file."
- set oid [open $testdir/check.txt a]
- for {set i 1} {$i < 10} {incr i} {
- set rec [replicate "New Record $i" $i]
- puts $oid $rec
- incr key
- set ret [eval {$db put} $txn {-append $rec}]
- error_check_good put_append $ret $key
- }
- error_check_good db_sync [$db sync] 0
- error_check_good db_sync [$db sync] 0
- close $oid
- set ret [filecmp $testdir/rsrc.txt $testdir/check.txt]
- error_check_good \
- Rsrc001:diff($testdir/{rsrc.txt,check.txt}) $ret 0
-
- puts "\tRsrc001.d: Append by record number"
- set oid [open $testdir/check.txt a]
- for {set i 1} {$i < 10} {incr i} {
- set rec [replicate "New Record (set 2) $i" $i]
- puts $oid $rec
- incr key
- set ret [eval {$db put} $txn {$key $rec}]
- error_check_good put_byno $ret 0
- }
-
- error_check_good db_sync [$db sync] 0
- error_check_good db_sync [$db sync] 0
- close $oid
- set ret [filecmp $testdir/rsrc.txt $testdir/check.txt]
- error_check_good \
- Rsrc001:diff($testdir/{rsrc.txt,check.txt}) $ret 0
-
- puts "\tRsrc001.e: Put beyond end of file."
- set oid [open $testdir/check.txt a]
- for {set i 1} {$i < 10} {incr i} {
- puts $oid ""
- incr key
- }
- set rec "Last Record"
- puts $oid $rec
- incr key
-
- set ret [eval {$db put} $txn {$key $rec}]
- error_check_good put_byno $ret 0
-
- puts "\tRsrc001.f: Put beyond end of file, after reopen."
-
- error_check_good db_close [$db close] 0
- set db [eval {berkdb_open -create -mode 0644\
- -recno -source $testdir/rsrc.txt} $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set rec "Last record with reopen"
- puts $oid $rec
-
- incr key
- set ret [eval {$db put} $txn {$key $rec}]
- error_check_good put_byno_with_reopen $ret 0
-
- puts "\tRsrc001.g:\
- Put several beyond end of file, after reopen with snapshot."
- error_check_good db_close [$db close] 0
- set db [eval {berkdb_open -create -mode 0644\
- -snapshot -recno -source $testdir/rsrc.txt} $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set rec "Really really last record with reopen"
- puts $oid ""
- puts $oid ""
- puts $oid ""
- puts $oid $rec
-
- incr key
- incr key
- incr key
- incr key
-
- set ret [eval {$db put} $txn {$key $rec}]
- error_check_good put_byno_with_reopen $ret 0
-
- error_check_good db_sync [$db sync] 0
- error_check_good db_sync [$db sync] 0
-
- close $oid
- set ret [filecmp $testdir/rsrc.txt $testdir/check.txt]
- error_check_good \
- Rsrc001:diff($testdir/{rsrc.txt,check.txt}) $ret 0
-
- puts "\tRsrc001.h: Verify proper syncing of changes on close."
- error_check_good Rsrc001:db_close [$db close] 0
- set db [eval {berkdb_open -create -mode 0644 -recno \
- -source $testdir/rsrc.txt} $testfile]
- set oid [open $testdir/check.txt a]
- for {set i 1} {$i < 10} {incr i} {
- set rec [replicate "New Record $i" $i]
- puts $oid $rec
- set ret [eval {$db put} $txn {-append $rec}]
- # Don't bother checking return; we don't know what
- # the key number is, and we'll pick up a failure
- # when we compare.
- }
- error_check_good Rsrc001:db_close [$db close] 0
- close $oid
- set ret [filecmp $testdir/rsrc.txt $testdir/check.txt]
- error_check_good Rsrc001:diff($testdir/{rsrc,check}.txt) $ret 0
- }
-}
-
-# Strip CRs from a record.
-# Needed on Windows when a file is created as text (with CR/LF)
-# but read as binary (where CR is read as a separate character)
-proc sanitize_record { rec } {
- source ./include.tcl
-
- if { $is_windows_test != 1 } {
- return $rec
- }
- regsub -all \15 $rec "" data
- return $data
-}
diff --git a/bdb/test/rsrc002.tcl b/bdb/test/rsrc002.tcl
deleted file mode 100644
index 0cb3cf752e6..00000000000
--- a/bdb/test/rsrc002.tcl
+++ /dev/null
@@ -1,66 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rsrc002.tcl,v 11.14 2002/01/11 15:53:33 bostic Exp $
-#
-# TEST rsrc002
-# TEST Recno backing file test #2: test of set_re_delim. Specify a backing
-# TEST file with colon-delimited records, and make sure they are correctly
-# TEST interpreted.
-proc rsrc002 { } {
- source ./include.tcl
-
- puts "Rsrc002: Alternate variable-length record delimiters."
-
- # We run this test essentially twice, once with a db file
- # and once without (an in-memory database).
- foreach testfile { "$testdir/rsrc002.db" "" } {
-
- cleanup $testdir NULL
-
- # Create the starting files
- set oid1 [open $testdir/rsrc.txt w]
- set oid2 [open $testdir/check.txt w]
- puts -nonewline $oid1 "ostrich:emu:kiwi:moa:cassowary:rhea:"
- puts -nonewline $oid2 "ostrich:emu:kiwi:penguin:cassowary:rhea:"
- close $oid1
- close $oid2
-
- if { $testfile == "" } {
- puts "Rsrc002: Testing with in-memory database."
- } else {
- puts "Rsrc002: Testing with disk-backed database."
- }
-
- puts "\tRsrc002.a: Read file, verify correctness."
- set db [eval {berkdb_open -create -mode 0644 -delim 58 \
- -recno -source $testdir/rsrc.txt} $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Read the last record; replace it (but we won't change it).
- # Then close the file and diff the two files.
- set txn ""
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- set rec [$dbc get -first]
- error_check_good get_first $rec [list [list 1 "ostrich"]]
- set rec [$dbc get -next]
- error_check_good get_next $rec [list [list 2 "emu"]]
-
- puts "\tRsrc002.b: Write record, verify correctness."
-
- eval {$dbc get -set 4}
- set ret [$dbc put -current "penguin"]
- error_check_good dbc_put $ret 0
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
-
- error_check_good \
- Rsrc002:diff($testdir/rsrc.txt,$testdir/check.txt) \
- [filecmp $testdir/rsrc.txt $testdir/check.txt] 0
- }
-}
diff --git a/bdb/test/rsrc003.tcl b/bdb/test/rsrc003.tcl
deleted file mode 100644
index f357a1e7f80..00000000000
--- a/bdb/test/rsrc003.tcl
+++ /dev/null
@@ -1,173 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rsrc003.tcl,v 11.5 2002/01/11 15:53:33 bostic Exp $
-#
-# TEST rsrc003
-# TEST Recno backing file test. Try different patterns of adding
-# TEST records and making sure that the corresponding file matches.
-proc rsrc003 { } {
- source ./include.tcl
- global fixed_len
-
- puts "Rsrc003: Basic recno backing file writeback tests fixed length"
-
- # We run this test essentially twice, once with a db file
- # and once without (an in-memory database).
- #
- # Then run with big fixed-length records
- set rec1 "This is record 1"
- set rec2 "This is record 2"
- set rec3 "This is record 3"
- set bigrec1 [replicate "This is record 1 " 512]
- set bigrec2 [replicate "This is record 2 " 512]
- set bigrec3 [replicate "This is record 3 " 512]
-
- set orig_fixed_len $fixed_len
- set rlist {
- {{$rec1 $rec2 $rec3} "small records" }
- {{$bigrec1 $bigrec2 $bigrec3} "large records" }}
-
- foreach testfile { "$testdir/rsrc003.db" "" } {
-
- foreach rec $rlist {
- cleanup $testdir NULL
-
- set recs [lindex $rec 0]
- set msg [lindex $rec 1]
- # Create the starting files
- # Note that for the rest of the test, we are going
- # to append a LF when we 'put' via DB to maintain
- # file structure and allow us to use 'gets'.
- set oid1 [open $testdir/rsrc.txt w]
- set oid2 [open $testdir/check.txt w]
- foreach record $recs {
- set r [subst $record]
- set fixed_len [string length $r]
- puts $oid1 $r
- puts $oid2 $r
- }
- close $oid1
- close $oid2
-
- set reclen [expr $fixed_len + 1]
- if { $reclen > [string length $rec1] } {
- set repl 512
- } else {
- set repl 2
- }
- if { $testfile == "" } {
- puts \
-"Rsrc003: Testing with in-memory database with $msg."
- } else {
- puts \
-"Rsrc003: Testing with disk-backed database with $msg."
- }
-
- puts -nonewline \
- "\tRsrc003.a: Read file, rewrite last record;"
- puts " write it out and diff"
- set db [eval {berkdb_open -create -mode 0644 -recno \
- -len $reclen -source $testdir/rsrc.txt} $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Read the last record; replace it (don't change it).
- # Then close the file and diff the two files.
- set txn ""
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor \
- [is_valid_cursor $dbc $db] TRUE
-
- set rec [$dbc get -last]
- error_check_good get_last [llength [lindex $rec 0]] 2
- set key [lindex [lindex $rec 0] 0]
- set data [lindex [lindex $rec 0] 1]
-
- # Get the last record from the text file
- set oid [open $testdir/rsrc.txt]
- set laststr ""
- while { [gets $oid str] != -1 } {
- append str \12
- set laststr $str
- }
- close $oid
- set data [sanitize_record $data]
- error_check_good getlast $data $laststr
-
- set ret [eval {$db put} $txn {$key $data}]
- error_check_good replace_last $ret 0
-
- error_check_good curs_close [$dbc close] 0
- error_check_good db_sync [$db sync] 0
- error_check_good db_sync [$db sync] 0
- error_check_good \
- diff1($testdir/rsrc.txt,$testdir/check.txt) \
- [filecmp $testdir/rsrc.txt $testdir/check.txt] 0
-
- puts -nonewline "\tRsrc003.b: "
- puts "Append some records in tree and verify in file."
- set oid [open $testdir/check.txt a]
- for {set i 1} {$i < 10} {incr i} {
- set rec [chop_data -frecno [replicate \
- "This is New Record $i" $repl]]
- puts $oid $rec
- append rec \12
- incr key
- set ret [eval {$db put} $txn {-append $rec}]
- error_check_good put_append $ret $key
- }
- error_check_good db_sync [$db sync] 0
- error_check_good db_sync [$db sync] 0
- close $oid
- set ret [filecmp $testdir/rsrc.txt $testdir/check.txt]
- error_check_good \
- diff2($testdir/{rsrc.txt,check.txt}) $ret 0
-
- puts "\tRsrc003.c: Append by record number"
- set oid [open $testdir/check.txt a]
- for {set i 1} {$i < 10} {incr i} {
- set rec [chop_data -frecno [replicate \
- "New Record (set 2) $i" $repl]]
- puts $oid $rec
- append rec \12
- incr key
- set ret [eval {$db put} $txn {$key $rec}]
- error_check_good put_byno $ret 0
- }
-
- error_check_good db_sync [$db sync] 0
- error_check_good db_sync [$db sync] 0
- close $oid
- set ret [filecmp $testdir/rsrc.txt $testdir/check.txt]
- error_check_good \
- diff3($testdir/{rsrc.txt,check.txt}) $ret 0
-
- puts \
-"\tRsrc003.d: Verify proper syncing of changes on close."
- error_check_good Rsrc003:db_close [$db close] 0
- set db [eval {berkdb_open -create -mode 0644 -recno \
- -len $reclen -source $testdir/rsrc.txt} $testfile]
- set oid [open $testdir/check.txt a]
- for {set i 1} {$i < 10} {incr i} {
- set rec [chop_data -frecno [replicate \
- "New Record (set 3) $i" $repl]]
- puts $oid $rec
- append rec \12
- set ret [eval {$db put} $txn {-append $rec}]
- # Don't bother checking return;
- # we don't know what
- # the key number is, and we'll pick up a failure
- # when we compare.
- }
- error_check_good Rsrc003:db_close [$db close] 0
- close $oid
- set ret [filecmp $testdir/rsrc.txt $testdir/check.txt]
- error_check_good \
- diff5($testdir/{rsrc,check}.txt) $ret 0
- }
- }
- set fixed_len $orig_fixed_len
- return
-}
diff --git a/bdb/test/rsrc004.tcl b/bdb/test/rsrc004.tcl
deleted file mode 100644
index f6c2f997eb8..00000000000
--- a/bdb/test/rsrc004.tcl
+++ /dev/null
@@ -1,52 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: rsrc004.tcl,v 11.3 2002/01/11 15:53:33 bostic Exp $
-#
-# TEST rsrc004
-# TEST Recno backing file test for EOF-terminated records.
-proc rsrc004 { } {
- source ./include.tcl
-
- foreach isfixed { 0 1 } {
- cleanup $testdir NULL
-
- # Create the backing text file.
- set oid1 [open $testdir/rsrc.txt w]
- if { $isfixed == 1 } {
- puts -nonewline $oid1 "record 1xxx"
- puts -nonewline $oid1 "record 2xxx"
- } else {
- puts $oid1 "record 1xxx"
- puts $oid1 "record 2xxx"
- }
- puts -nonewline $oid1 "record 3"
- close $oid1
-
- set args "-create -mode 0644 -recno -source $testdir/rsrc.txt"
- if { $isfixed == 1 } {
- append args " -len [string length "record 1xxx"]"
- set match "record 3 "
- puts "Rsrc004: EOF-terminated recs: fixed length"
- } else {
- puts "Rsrc004: EOF-terminated recs: variable length"
- set match "record 3"
- }
-
- puts "\tRsrc004.a: Read file, verify correctness."
- set db [eval berkdb_open $args "$testdir/rsrc004.db"]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Read the last record
- set dbc [eval {$db cursor} ""]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- set rec [$dbc get -last]
- error_check_good get_last $rec [list [list 3 $match]]
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
- }
-}
diff --git a/bdb/test/scr001/chk.code b/bdb/test/scr001/chk.code
deleted file mode 100644
index eb01d8614b3..00000000000
--- a/bdb/test/scr001/chk.code
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.code,v 1.10 2002/02/04 16:03:26 bostic Exp $
-#
-# Check to make sure that the code samples in the documents build.
-
-d=../..
-
-[ -d $d/docs_src ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-[ -f ../libdb.a ] || (cd .. && make libdb.a) || {
- echo 'FAIL: unable to find or build libdb.a'
- exit 1
-}
-
-for i in `find $d/docs_src -name '*.cs'`; do
- echo " compiling $i"
- sed -e 's/m4_include(\(.*\))/#include <\1>/g' \
- -e 's/m4_[a-z]*[(\[)]*//g' \
- -e 's/(\[//g' \
- -e '/argv/!s/])//g' \
- -e 's/dnl//g' \
- -e 's/__GT__/>/g' \
- -e 's/__LB__/[/g' \
- -e 's/__LT__/</g' \
- -e 's/__RB__/]/g' < $i > t.c
- if cc -Wall -Werror -I.. t.c ../libdb.a -o t; then
- :
- else
- echo "FAIL: unable to compile $i"
- exit 1
- fi
-done
-
-exit 0
diff --git a/bdb/test/scr002/chk.def b/bdb/test/scr002/chk.def
deleted file mode 100644
index 7d5e6670f63..00000000000
--- a/bdb/test/scr002/chk.def
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.def,v 1.9 2002/03/27 04:32:57 bostic Exp $
-#
-# Check to make sure we haven't forgotten to add any interfaces
-# to the Win32 libdb.def file.
-
-d=../..
-
-# Test must be run from the top-level directory, not from a test directory.
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-f=$d/build_win32/libdb.def
-t1=__1
-t2=__2
-
-exitv=0
-
-sed '/; /d' $f |
- egrep @ |
- awk '{print $1}' |
- sed -e '/db_xa_switch/d' \
- -e '/^__/d' -e '/^;/d' |
- sort > $t1
-
-egrep __P $d/dbinc_auto/ext_prot.in |
- sed '/^[a-z]/!d' |
- awk '{print $2}' |
- sed 's/^\*//' |
- sed '/^__/d' | sort > $t2
-
-if cmp -s $t1 $t2 ; then
- :
-else
- echo "<<< libdb.def >>> DB include files"
- diff $t1 $t2
- echo "FAIL: missing items in libdb.def file."
- exitv=1
-fi
-
-# Check to make sure we don't have any extras in the libdb.def file.
-sed '/; /d' $f |
- egrep @ |
- awk '{print $1}' |
- sed -e '/__db_global_values/d' > $t1
-
-for i in `cat $t1`; do
- if egrep $i $d/*/*.c > /dev/null; then
- :
- else
- echo "$f: $i not found in DB sources"
- fi
-done > $t2
-
-test -s $t2 && {
- cat $t2
- echo "FAIL: found unnecessary items in libdb.def file."
- exitv=1
-}
-
-exit $exitv
diff --git a/bdb/test/scr003/chk.define b/bdb/test/scr003/chk.define
deleted file mode 100644
index f73355eddf6..00000000000
--- a/bdb/test/scr003/chk.define
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.define,v 1.21 2002/03/27 04:32:58 bostic Exp $
-#
-# Check to make sure that all #defines are actually used.
-
-d=../..
-
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-exitv=0
-t1=__1
-t2=__2
-t3=__3
-
-egrep '^#define' $d/dbinc/*.h $d/dbinc/*.in |
- sed -e '/db_185.in/d' -e '/xa.h/d' |
- awk '{print $2}' |
- sed -e '/^B_DELETE/d' \
- -e '/^B_MAX/d' \
- -e '/^CIRCLEQ_/d' \
- -e '/^DB_BTREEOLDVER/d' \
- -e '/^DB_HASHOLDVER/d' \
- -e '/^DB_LOCKVERSION/d' \
- -e '/^DB_MAX_PAGES/d' \
- -e '/^DB_QAMOLDVER/d' \
- -e '/^DB_TXNVERSION/d' \
- -e '/^DB_UNUSED/d' \
- -e '/^DEFINE_DB_CLASS/d' \
- -e '/^HASH_UNUSED/d' \
- -e '/^LIST_/d' \
- -e '/^LOG_OP/d' \
- -e '/^MINFILL/d' \
- -e '/^MUTEX_FIELDS/d' \
- -e '/^NCACHED2X/d' \
- -e '/^NCACHED30/d' \
- -e '/^PAIR_MASK/d' \
- -e '/^P_16_COPY/d' \
- -e '/^P_32_COPY/d' \
- -e '/^P_32_SWAP/d' \
- -e '/^P_TO_UINT16/d' \
- -e '/^QPAGE_CHKSUM/d' \
- -e '/^QPAGE_NORMAL/d' \
- -e '/^QPAGE_SEC/d' \
- -e '/^SH_CIRCLEQ_/d' \
- -e '/^SH_LIST_/d' \
- -e '/^SH_TAILQ_/d' \
- -e '/^SIZEOF_PAGE/d' \
- -e '/^TAILQ_/d' \
- -e '/^WRAPPED_CLASS/d' \
- -e '/^__BIT_TYPES_DEFINED__/d' \
- -e '/^__DBC_INTERNAL/d' \
- -e '/^i_/d' \
- -e '/_H_/d' \
- -e 's/(.*//' | sort > $t1
-
-find $d -name '*.c' -o -name '*.cpp' > $t2
-for i in `cat $t1`; do
- if egrep -w $i `cat $t2` > /dev/null; then
- :;
- else
- f=`egrep -l "#define.*$i" $d/dbinc/*.h $d/dbinc/*.in |
- sed 's;\.\.\/\.\.\/dbinc/;;' | tr -s "[:space:]" " "`
- echo "FAIL: $i: $f"
- fi
-done | sort -k 2 > $t3
-
-test -s $t3 && {
- cat $t3
- echo "FAIL: found unused #defines"
- exit 1
-}
-
-exit $exitv
diff --git a/bdb/test/scr004/chk.javafiles b/bdb/test/scr004/chk.javafiles
deleted file mode 100644
index d30c5e3e779..00000000000
--- a/bdb/test/scr004/chk.javafiles
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.javafiles,v 1.5 2002/01/30 19:50:52 bostic Exp $
-#
-# Check to make sure we haven't forgotten to add any Java files to the list
-# of source files in the Makefile.
-
-d=../..
-
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-f=$d/dist/Makefile.in
-j=$d/java/src/com/sleepycat
-
-t1=__1
-t2=__2
-
-find $j/db/ $j/examples $d/rpc_server/java -name \*.java -print |
- sed -e 's/^.*\///' | sort > $t1
-tr ' \t' '\n' < $f | sed -e '/\.java$/!d' -e 's/^.*\///' | sort > $t2
-
-cmp $t1 $t2 > /dev/null || {
- echo "<<< java source files >>> Makefile"
- diff $t1 $t2
- exit 1
-}
-
-exit 0
diff --git a/bdb/test/scr005/chk.nl b/bdb/test/scr005/chk.nl
deleted file mode 100644
index 47c7ff74d4b..00000000000
--- a/bdb/test/scr005/chk.nl
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.nl,v 1.6 2002/01/07 15:12:12 bostic Exp $
-#
-# Check to make sure that there are no trailing newlines in __db_err calls.
-
-d=../..
-
-[ -f $d/README ] || {
- echo "FAIL: chk.nl can't find the source directory."
- exit 1
-}
-
-cat << END_OF_CODE > t.c
-#include <sys/types.h>
-
-#include <errno.h>
-#include <stdio.h>
-
-int chk(FILE *, char *);
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- FILE *fp;
- int exitv;
-
- for (exitv = 0; *++argv != NULL;) {
- if ((fp = fopen(*argv, "r")) == NULL) {
- fprintf(stderr, "%s: %s\n", *argv, strerror(errno));
- return (1);
- }
- if (chk(fp, *argv))
- exitv = 1;
- (void)fclose(fp);
- }
- return (exitv);
-}
-
-int
-chk(fp, name)
- FILE *fp;
- char *name;
-{
- int ch, exitv, line, q;
-
- exitv = 0;
- for (ch = 'a', line = 1;;) {
- if ((ch = getc(fp)) == EOF)
- return (exitv);
- if (ch == '\n') {
- ++line;
- continue;
- }
- if (ch != '_') continue;
- if ((ch = getc(fp)) != '_') continue;
- if ((ch = getc(fp)) != 'd') continue;
- if ((ch = getc(fp)) != 'b') continue;
- if ((ch = getc(fp)) != '_') continue;
- if ((ch = getc(fp)) != 'e') continue;
- if ((ch = getc(fp)) != 'r') continue;
- if ((ch = getc(fp)) != 'r') continue;
- while ((ch = getc(fp)) != '"') {
- if (ch == EOF)
- return (exitv);
- if (ch == '\n')
- ++line;
- }
- while ((ch = getc(fp)) != '"')
- switch (ch) {
- case EOF:
- return (exitv);
- case '\\n':
- ++line;
- break;
- case '.':
- if ((ch = getc(fp)) != '"')
- ungetc(ch, fp);
- else {
- fprintf(stderr,
- "%s: <period> at line %d\n", name, line);
- exitv = 1;
- }
- break;
- case '\\\\':
- if ((ch = getc(fp)) != 'n')
- ungetc(ch, fp);
- else if ((ch = getc(fp)) != '"')
- ungetc(ch, fp);
- else {
- fprintf(stderr,
- "%s: <newline> at line %d\n", name, line);
- exitv = 1;
- }
- break;
- }
- }
- return (exitv);
-}
-END_OF_CODE
-
-cc t.c -o t
-if ./t $d/*/*.[ch] $d/*/*.cpp $d/*/*.in ; then
- :
-else
- echo "FAIL: found __db_err calls ending with periods/newlines."
- exit 1
-fi
-
-exit 0
diff --git a/bdb/test/scr006/chk.offt b/bdb/test/scr006/chk.offt
deleted file mode 100644
index 6800268d2a2..00000000000
--- a/bdb/test/scr006/chk.offt
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.offt,v 1.9 2001/10/26 13:40:15 bostic Exp $
-#
-# Make sure that no off_t's have snuck into the release.
-
-d=../..
-
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-t=__1
-
-egrep -w off_t $d/*/*.[ch] $d/*/*.in |
-sed -e "/#undef off_t/d" \
- -e "/mp_fopen.c:.*can't use off_t's here/d" \
- -e "/mp_fopen.c:.*size or type off_t's or/d" \
- -e "/mp_fopen.c:.*where an off_t is 32-bits/d" \
- -e "/mutex\/tm.c:/d" \
- -e "/os_map.c:.*(off_t)0))/d" \
- -e "/os_rw.c:.*(off_t)db_iop->pgno/d" \
- -e "/os_seek.c:.*off_t offset;/d" \
- -e "/os_seek.c:.*offset = /d" \
- -e "/test_perf\/perf_misc.c:/d" \
- -e "/test_server\/dbs.c:/d" \
- -e "/test_vxworks\/vx_mutex.c:/d" > $t
-
-test -s $t && {
- cat $t
- echo "FAIL: found questionable off_t usage"
- exit 1
-}
-
-exit 0
diff --git a/bdb/test/scr007/chk.proto b/bdb/test/scr007/chk.proto
deleted file mode 100644
index ae406fa23fe..00000000000
--- a/bdb/test/scr007/chk.proto
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.proto,v 1.8 2002/03/27 04:32:59 bostic Exp $
-#
-# Check to make sure that prototypes are actually needed.
-
-d=../..
-
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-t1=__1
-t2=__2
-t3=__3
-
-egrep '__P' $d/dbinc_auto/*.h |
- sed -e 's/[ ][ ]*__P.*//' \
- -e 's/^.*[ *]//' \
- -e '/__db_cprint/d' \
- -e '/__db_lprint/d' \
- -e '/__db_noop_log/d' \
- -e '/__db_prnpage/d' \
- -e '/__db_txnlist_print/d' \
- -e '/__db_util_arg/d' \
- -e '/__ham_func2/d' \
- -e '/__ham_func3/d' \
- -e '/_getpgnos/d' \
- -e '/_print$/d' \
- -e '/_read$/d' > $t1
-
-find $d -name '*.in' -o -name '*.[ch]' -o -name '*.cpp' > $t2
-for i in `cat $t1`; do
- c=$(egrep -low $i $(cat $t2) | wc -l)
- echo "$i: $c"
-done | egrep ' 1$' > $t3
-
-test -s $t3 && {
- cat $t3
- echo "FAIL: found unnecessary prototypes."
- exit 1
-}
-
-exit 0
diff --git a/bdb/test/scr008/chk.pubdef b/bdb/test/scr008/chk.pubdef
deleted file mode 100644
index 4f59e831b25..00000000000
--- a/bdb/test/scr008/chk.pubdef
+++ /dev/null
@@ -1,179 +0,0 @@
-#!/bin/sh -
-#
-# Reconcile the list of public defines with the man pages and the Java files.
-
-d=../..
-
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-p=$d/dist/pubdef.in
-
-exitv=0
-
-# Check that pubdef.in has everything listed in m4.links.
-f=$d/docs_src/m4/m4.links
-sed -n \
- -e 's/^\$1, \(DB_[^,]*\).*/\1/p' \
- -e d < $f |
-while read name; do
- if `egrep -w "$name" $p > /dev/null`; then
- :
- else
- echo "$f: $name is missing from $p"
- exitv=1
- fi
-done
-
-# Check that m4.links has everything listed in pubdef.in.
-f=$d/docs_src/m4/m4.links
-sed '/^#/d' $p |
-while read name isdoc isinc isjava; do
- if `egrep -w "^.1, $name" $f > /dev/null`; then
- [ "X$isdoc" != "XD" ] && {
- echo "$name should not appear in $f"
- exitv=1
- }
- else
- [ "X$isdoc" = "XD" ] && {
- echo "$name does not appear in $f"
- exitv=1;
- }
- fi
-done
-
-# Check that pubdef.in has everything listed in db.in.
-f=$d/dbinc/db.in
-sed -n \
- -e 's/^#define[ ]*\(DB_[A-Z_0-9]*\).*/\1/p' \
- -e 's/^[ ]*\(DB_[A-Z_]*\)=[0-9].*/\1/p' \
- -e d < $f |
-while read name; do
- if `egrep -w "$name" $p > /dev/null`; then
- :
- else
- echo "$f: $name is missing from $p"
- exitv=1
- fi
-done
-
-# Check that db.in has everything listed in pubdef.in.
-f=$d/dbinc/db.in
-sed '/^#/d' $p |
-while read name isdoc isinc isjava; do
- if `egrep -w "#define[ ]$name|[ ][ ]*$name=[0-9][0-9]*" \
- $f > /dev/null`; then
- [ "X$isinc" != "XI" ] && {
- echo "$name should not appear in $f"
- exitv=1
- }
- else
- [ "X$isinc" = "XI" ] && {
- echo "$name does not appear in $f"
- exitv=1
- }
- fi
-done
-
-# Check that pubdef.in has everything listed in DbConstants.java.
-f=$d/java/src/com/sleepycat/db/DbConstants.java
-sed -n -e 's/.*static final int[ ]*\([^ ]*\).*/\1/p' < $f |
-while read name; do
- if `egrep -w "$name" $p > /dev/null`; then
- :
- else
- echo "$f: $name is missing from $p"
- exitv=1
- fi
-done
-
-# Check that DbConstants.java has everything listed in pubdef.in.
-f=$d/java/src/com/sleepycat/db/DbConstants.java
-sed '/^#/d' $p |
-while read name isdoc isinc isjava; do
- if `egrep -w "static final int[ ]$name =" $f > /dev/null`; then
- [ "X$isjava" != "XJ" ] && {
- echo "$name should not appear in $f"
- exitv=1
- }
- else
- [ "X$isjava" = "XJ" ] && {
- echo "$name does not appear in $f"
- exitv=1
- }
- fi
-done
-
-# Check that pubdef.in has everything listed in Db.java.
-f=$d/java/src/com/sleepycat/db/Db.java
-sed -n -e 's/.*static final int[ ]*\([^ ;]*\).*/\1/p' < $f |
-while read name; do
- if `egrep -w "$name" $p > /dev/null`; then
- :
- else
- echo "$f: $name is missing from $p"
- exitv=1;
- fi
-done
-sed -n -e 's/^[ ]*\([^ ]*\) = DbConstants\..*/\1/p' < $f |
-while read name; do
- if `egrep -w "$name" $p > /dev/null`; then
- :
- else
- echo "$f: $name is missing from $p"
- exitv=1
- fi
-done
-
-# Check that Db.java has all of the Java case values listed in pubdef.in.
-# Any J entries should appear twice -- once as a static final int, with
-# no initialization value, and once assigned to the DbConstants value. Any
-# C entries should appear once as a static final int, with an initialization
-# value.
-f=$d/java/src/com/sleepycat/db/Db.java
-sed '/^#/d' $p |
-while read name isdoc isinc isjava; do
- if `egrep -w "static final int[ ]$name;$" $f > /dev/null`; then
- [ "X$isjava" != "XJ" ] && {
- echo "$name should not appear in $f"
- exitv=1
- }
- else
- [ "X$isjava" = "XJ" ] && {
- echo "$name does not appear in $f"
- exitv=1
- }
- fi
-done
-sed '/^#/d' $p |
-while read name isdoc isinc isjava; do
- if `egrep -w "= DbConstants.$name;" $f > /dev/null`; then
- [ "X$isjava" != "XJ" ] && {
- echo "$name should not appear in $f"
- exitv=1
- }
- else
- [ "X$isjava" = "XJ" ] && {
- echo "$name does not appear in $f"
- exitv=1
- }
- fi
-done
-sed '/^#/d' $p |
-while read name isdoc isinc isjava; do
- if `egrep "static final int[ ]$name =.*;" $f > /dev/null`; then
- [ "X$isjava" != "XC" ] && {
- echo "$name should not appear in $f"
- exitv=1
- }
- else
- [ "X$isjava" = "XC" ] && {
- echo "$name does not appear in $f"
- exitv=1
- }
- fi
-done
-
-exit $exitv
diff --git a/bdb/test/scr009/chk.srcfiles b/bdb/test/scr009/chk.srcfiles
deleted file mode 100644
index 4f09a2890f6..00000000000
--- a/bdb/test/scr009/chk.srcfiles
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.srcfiles,v 1.10 2002/02/04 22:25:33 bostic Exp $
-#
-# Check to make sure we haven't forgotten to add any files to the list
-# of source files Win32 uses to build its dsp files.
-
-d=../..
-
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-f=$d/dist/srcfiles.in
-t1=__1
-t2=__2
-
-sed -e '/^[ #]/d' \
- -e '/^$/d' < $f |
- awk '{print $1}' > $t1
-find $d -type f |
- sed -e 's/^\.\.\/\.\.\///' \
- -e '/^build[^_]/d' \
- -e '/^test\//d' \
- -e '/^test_server/d' \
- -e '/^test_thread/d' \
- -e '/^test_vxworks/d' |
- egrep '\.c$|\.cpp$|\.def$|\.rc$' |
- sed -e '/perl.DB_File\/version.c/d' |
- sort > $t2
-
-cmp $t1 $t2 > /dev/null || {
- echo "<<< srcfiles.in >>> existing files"
- diff $t1 $t2
- exit 1
-}
-
-exit 0
diff --git a/bdb/test/scr010/chk.str b/bdb/test/scr010/chk.str
deleted file mode 100644
index 2b5698c0ff2..00000000000
--- a/bdb/test/scr010/chk.str
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.str,v 1.5 2001/10/12 17:55:36 bostic Exp $
-#
-# Check spelling in quoted strings.
-
-d=../..
-
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-t1=__t1
-
-sed -e '/^#include/d' \
- -e '/revid/d' \
- -e '/"/!d' \
- -e 's/^[^"]*//' \
- -e 's/%s/ /g' \
- -e 's/[^"]*$//' \
- -e 's/\\[nt]/ /g' $d/*/*.c $d/*/*.cpp |
-spell | sort | comm -23 /dev/stdin spell.ok > $t1
-
-test -s $t1 && {
- cat $t1
- echo "FAIL: found questionable spelling in strings."
- exit 1
-}
-
-exit 0
diff --git a/bdb/test/scr010/spell.ok b/bdb/test/scr010/spell.ok
deleted file mode 100644
index 18af8d1306d..00000000000
--- a/bdb/test/scr010/spell.ok
+++ /dev/null
@@ -1,825 +0,0 @@
-AES
-AJVX
-ALLDB
-API
-APP
-AccessExample
-Acflmo
-Aclmop
-Ahlm
-Ahm
-BCFILprRsvVxX
-BCc
-BDBXXXXXX
-BH
-BI
-BII
-BINTERNAL
-BTREE
-Bc
-BerkeleyDB
-BtRecExample
-Btree
-CD
-CDB
-CDS
-CDdFILTVvX
-CFILpRsv
-CFLprsvVxX
-CFh
-CHKSUM
-CLpsvxX
-CONFIG
-CdFILTvX
-ClassNotFoundException
-Config
-DBC
-DBENV
-DBP
-DBS
-DBSDIR
-DBT
-DBTYPE
-DBcursor
-DONOTINDEX
-DS
-DUP
-DUPMASTER
-DUPSORT
-Db
-DbAppendRecno
-DbAttachImpl
-DbBtreeCompare
-DbBtreePrefix
-DbBtreeStat
-DbDeadlockException
-DbDupCompare
-DbEnv
-DbEnvFeedback
-DbErrcall
-DbException
-DbFeedback
-DbHash
-DbHashStat
-DbKeyRange
-DbLock
-DbLockNotGrantedException
-DbLockRequest
-DbLockStat
-DbLogStat
-DbLogc
-DbLsn
-DbMemoryException
-DbMpoolFStat
-DbMpoolFile
-DbMpoolStat
-DbPreplist
-DbQueueStat
-DbRecoveryInit
-DbRepStat
-DbRepTransport
-DbRunRecoveryException
-DbSecondaryKeyCreate
-DbTxn
-DbTxnRecover
-DbTxnStat
-DbUtil
-DbXAResource
-DbXid
-Dbc
-Dbt
-Dde
-Deref'ing
-EIO
-EIRT
-EIi
-ENV
-EnvExample
-EnvInfoDelete
-Exp
-FIXEDLEN
-Fd
-Ff
-Fh
-FileNotFoundException
-GetFileInformationByHandle
-GetJavaVM
-GetJoin
-HOFFSET
-HOLDELECTION
-Hashtable
-ILo
-ILprR
-INDX
-INIT
-IREAD
-ISSET
-IWR
-IWRITE
-Ik
-KEYEMPTY
-KEYEXIST
-KeyRange
-LBTREE
-LOCKDOWN
-LOGC
-LRECNO
-LRU
-LSN
-Lcom
-Ljava
-Ll
-LockExample
-LogRegister
-LpRsS
-LprRsS
-MEM
-MMDDhhmm
-MPOOL
-MPOOLFILE
-MapViewOfFile
-Maxid
-Mb
-Mbytes
-Metadata
-Metapage
-Mpool
-MpoolExample
-Mutex
-NEWMASTER
-NEWSITE
-NG
-NODUP
-NODUPDATA
-NOLOCKING
-NOMMAP
-NOMORE
-NOORDERCHK
-NOPANIC
-NOSERVER
-NOSYNC
-NOTFOUND
-NOTGRANTED
-NOTYPE
-NOWAIT
-NP
-NoP
-NoqV
-NqV
-NrV
-NsV
-OLDVERSION
-ORDERCHKONLY
-Offpage
-OpenFileMapping
-OutputStream
-PGNO
-PID
-PREV
-Pgno
-RECNO
-RECNOSYNC
-RECNUM
-RINTERNAL
-RMW
-RPC
-RT
-RUNRECOVERY
-Recno
-RepElectResult
-RepProcessMessage
-SERVERPROG
-SERVERVERS
-SETFD
-SHA
-SS
-Shm
-Sleepycat
-Subdatabase
-TDS
-TESTDIR
-TID
-TMP
-TMPDIR
-TODO
-TPS
-TXN
-TXNID
-TXNs
-Tcl
-TempFolder
-TestKeyRange
-TestLogc
-TpcbExample
-Tt
-Txn
-Txnid
-Txns
-UID
-UNAVAIL
-USERMEM
-Unencrypted
-UnmapViewOfFile
-VM
-VX
-Vv
-VvW
-VvXxZ
-Vvw
-Vx
-VxWorks
-Waitsfor
-XA
-XAException
-Xid
-XxZ
-YIELDCPU
-YY
-abc
-abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
-abcdef
-abs
-addpage
-addr
-addrem
-adj
-afterop
-ahr
-alldb
-alloc
-alsVv
-amx
-anum
-appl
-appname
-archivedir
-arg
-args
-ata
-badkey
-berkdb
-berkeley
-bfname
-bfree
-bigpages
-bnum
-bostic
-bqual
-bsize
-bt
-btcompare
-btrec
-btree
-buf
-bylsn
-bypage
-byteswap
-byteswapped
-bytevalue
-cachesize
-cadjust
-callpgin
-cd
-cdb
-cdel
-ceVv
-ceh
-celmNrtVZ
-celmNtV
-celmNtVZ
-cget
-charkey
-charset
-chgpg
-chkpoint
-chkpt
-chksum
-ckp
-cksum
-clearerr
-clientrun
-cmdargs
-cnt
-compareproc
-compat
-conf
-config
-copypage
-cp
-crdel
-creat
-curadj
-curlsn
-datalen
-db
-dbc
-dbclient
-dbclose
-dbe
-dbenv
-dbkill
-dbm
-dbmclose
-dbminit
-dbobj
-dbopen
-dbp
-dbreg
-dbremove
-dbrename
-dbs
-dbt
-dbtruncate
-dbverify
-dd
-def
-del
-delext
-delim
-dev
-df
-dh
-dir
-dirfno
-dist
-dists
-dlen
-ds
-dsize
-dup
-dup'ed
-dupcompare
-dups
-dupset
-dupsort
-efh
-eid
-electinit
-electsend
-electvote
-electwait
-encryptaes
-encryptany
-endian
-env
-envid
-envremove
-eof
-errcall
-errfile
-errno
-errpfx
-excl
-extentsize
-faststat
-fclose
-fcntl
-fcreate
-fd
-ff
-ffactor
-fget
-fh
-fid
-fileid
-fileopen
-firstkey
-fiv
-flushcommit
-foo
-fopen
-formatID
-fput
-freelist
-fset
-fstat
-fsync
-ftype
-func
-fv
-gbytes
-gc'ed
-gen
-getBranchQualifier
-getFormatId
-getGlobalTransactionId
-gettime
-gettimeofday
-gettype
-getval
-gid
-groupalloc
-gtrid
-hashproc
-hcreate
-hdestroy
-hdr
-hostname
-hsearch
-icursor
-idletimeout
-ids
-idup
-iitem
-inc
-incfirst
-indx
-init
-inlen
-inp
-insdel
-int
-intValue
-io
-iread
-isdeleted
-itemorder
-iter
-iwr
-iwrite
-javax
-kb
-kbyte
-kbytes
-keyfirst
-keygroup
-keygroups
-keygrp
-keylast
-keyrange
-killinterval
-killiteration
-killtest
-klNpP
-klNprRV
-klNprRs
-krinsky
-lM
-lP
-lang
-lastid
-ld
-len
-lf
-lg
-libdb
-lk
-llsn
-localhost
-localtime
-lockid
-logc
-logclean
-logfile
-logflush
-logsonly
-lorder
-lpgno
-lsVv
-lsn
-lsynch
-lt
-lu
-luB
-luGB
-luKB
-luKb
-luM
-luMB
-luMb
-lx
-mNP
-mNs
-machid
-makedup
-malloc
-margo
-maxcommitperflush
-maxkey
-maxlockers
-maxlocks
-maxnactive
-maxnlockers
-maxnlocks
-maxnobjects
-maxobjects
-maxops
-maxtimeout
-maxtxns
-mbytes
-mem
-memp
-metadata
-metaflags
-metagroup
-metalsn
-metapage
-metasub
-methodID
-mincommitperflush
-minkey
-minlocks
-minwrite
-minwrites
-mis
-mjc
-mkdir
-mlock
-mmap
-mmapped
-mmapsize
-mmetalsn
-mmpgno
-mp
-mpf
-mpgno
-mpool
-msg
-munmap
-mutex
-mutexes
-mutexlocks
-mv
-mvptr
-mydrive
-mydrivexxx
-nO
-nP
-nTV
-nTt
-naborts
-nactive
-nbegins
-nbytes
-ncaches
-ncommits
-nconflicts
-ndata
-ndbm
-ndeadlocks
-ndx
-needswap
-nelem
-nevict
-newalloc
-newclient
-newfile
-newitem
-newmaster
-newname
-newpage
-newpgno
-newsite
-nextdup
-nextkey
-nextlsn
-nextnodup
-nextpgno
-ng
-nitems
-nkeys
-nlockers
-nlocks
-nlsn
-nmodes
-nnext
-nnextlsn
-nnowaits
-nobjects
-nodup
-nodupdata
-nogrant
-nolocking
-nommap
-noop
-nooverwrite
-nopanic
-nosort
-nosync
-notfound
-notgranted
-nowait
-nowaits
-npages
-npgno
-nrec
-nrecords
-nreleases
-nrequests
-nrestores
-nsites
-ntasks
-nthreads
-num
-numdup
-obj
-offpage
-ok
-olddata
-olditem
-oldname
-opd
-opflags
-opmods
-orig
-os
-osynch
-outlen
-ovfl
-ovflpoint
-ovflsize
-ovref
-pageimage
-pagelsn
-pageno
-pagesize
-pagesizes
-pagfno
-panic'ing
-paniccall
-panicstate
-parentid
-passwd
-perf
-perfdb
-pflag
-pg
-pgcookie
-pgdbt
-pget
-pgfree
-pgin
-pgno
-pgnum
-pgout
-pgsize
-pid
-pkey
-plist
-pn
-postdestroy
-postlog
-postlogmeta
-postopen
-postsync
-prR
-prec
-predestroy
-preopen
-prev
-prevlsn
-prevnodup
-prheader
-pri
-printlog
-proc
-procs
-pthread
-pthreads
-ptype
-pv
-qV
-qam
-qs
-qtest
-rRV
-rRs
-rV
-rand
-rcuradj
-rdonly
-readd
-readonly
-realloc
-rec
-reclength
-recno
-recnum
-recnums
-recs
-refcount
-regionmax
-regop
-regsize
-relink
-repl
-revsplitoff
-rf
-rkey
-rlsn
-rm
-rmid
-rmw
-ro
-rootent
-rootlsn
-rpc
-rpcid
-rs
-rsplit
-runlog
-rw
-rwrw
-rwrwrw
-sS
-sV
-sVv
-scount
-secon
-secs
-sendproc
-seq
-setto
-setval
-sh
-shalloc
-shm
-shmat
-shmctl
-shmdt
-shmem
-shmget
-shr
-sleepycat
-splitdata
-splitmeta
-srand
-stat
-str
-strcmp
-strdup
-strerror
-strlen
-subdatabase
-subdb
-sv
-svc
-tV
-tVZ
-tas
-tcl
-tcp
-thr
-threadID
-tid
-tiebreaker
-timestamp
-tlen
-tm
-tmp
-tmpdir
-tmutex
-tnum
-tp
-tpcb
-treeorder
-ttpcbddlk
-ttpcbi
-ttpcbr
-ttype
-tx
-txn
-txnarray
-txnid
-txns
-txt
-ubell
-ud
-uid
-ulen
-uncorrect
-undeleting
-unmap
-unpinned
-upd
-upi
-usec
-usecs
-usr
-util
-vVxXZ
-vZ
-val
-var
-vec
-ver
-vflag
-vrfy
-vw
-vx
-vxmutex
-vxtmp
-waitsfor
-walkdupint
-walkpages
-wb
-wc
-wcount
-wordlist
-writeable
-wrnosync
-wt
-xa
-xid
-xxx
-yieldcpu
diff --git a/bdb/test/scr011/chk.tags b/bdb/test/scr011/chk.tags
deleted file mode 100644
index 14a3c4e011d..00000000000
--- a/bdb/test/scr011/chk.tags
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.tags,v 1.10 2001/10/12 17:55:36 bostic Exp $
-#
-# Check to make sure we don't need any more symbolic links to tags files.
-
-d=../..
-
-# Test must be run from the top-level directory, not from a test directory.
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-t1=__1
-t2=__2
-
-(cd $d && ls -F | egrep / | sort |
- sed -e 's/\///' \
- -e '/^CVS$/d' \
- -e '/^build_vxworks$/d' \
- -e '/^build_win32$/d' \
- -e '/^docs$/d' \
- -e '/^docs_book$/d' \
- -e '/^docs_src$/d' \
- -e '/^java$/d' \
- -e '/^perl$/d' \
- -e '/^test$/d' \
- -e '/^test_cxx$/d' \
- -e '/^test_purify$/d' \
- -e '/^test_thread$/d' \
- -e '/^test_vxworks$/d') > $t1
-
-(cd $d && ls */tags | sed 's/\/tags$//' | sort) > $t2
-if diff $t1 $t2 > /dev/null; then
- exit 0
-else
- echo "<<< source tree >>> tags files"
- diff $t1 $t2
- exit 1
-fi
diff --git a/bdb/test/scr012/chk.vx_code b/bdb/test/scr012/chk.vx_code
deleted file mode 100644
index 8d7ca608f93..00000000000
--- a/bdb/test/scr012/chk.vx_code
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.vx_code,v 1.6 2002/03/27 20:20:25 bostic Exp $
-#
-# Check to make sure the auto-generated utility code in the VxWorks build
-# directory compiles.
-
-d=../..
-
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-[ -f ../libdb.a ] || (cd .. && make libdb.a) || {
- echo 'FAIL: unable to find or build libdb.a'
- exit 1
-}
-
-rm -f t.c t1.c t2.c
-
-header()
-{
- echo "int"
- echo "main(int argc, char *argv[])"
- echo "{return ($1(argv[1]));}"
-}
-
-(echo "int"
- echo "main(int argc, char *argv[])"
- echo "{"
- echo "int i;") > t1.c
-
-for i in db_archive db_checkpoint db_deadlock db_dump db_load \
- db_printlog db_recover db_stat db_upgrade db_verify dbdemo; do
- echo " compiling build_vxworks/$i"
- (cat $d/build_vxworks/$i/$i.c; header $i) > t.c
- if cc -Wall -I.. -I$d t.c \
- $d/clib/getopt.c \
- $d/common/util_arg.c \
- $d/common/util_cache.c \
- $d/common/util_log.c \
- $d/common/util_sig.c ../libdb.a -o t; then
- :
- else
- echo "FAIL: unable to compile $i"
- exit 1
- fi
-
- cat $d/build_vxworks/$i/$i.c >> t2.c
- echo "i = $i(argv[1]);" >> t1.c
-done
-
-(cat t2.c t1.c; echo "return (0); }") > t.c
-
-echo " compiling build_vxworks utility composite"
-if cc -Dlint -Wall -I.. -I$d t.c \
- $d/clib/getopt.c \
- $d/common/util_arg.c \
- $d/common/util_cache.c \
- $d/common/util_log.c \
- $d/common/util_sig.c ../libdb.a -o t; then
- :
-else
- echo "FAIL: unable to compile utility composite"
- exit 1
-fi
-
-exit 0
diff --git a/bdb/test/scr013/chk.stats b/bdb/test/scr013/chk.stats
deleted file mode 100644
index 3a404699668..00000000000
--- a/bdb/test/scr013/chk.stats
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.stats,v 1.6 2002/08/19 18:35:18 bostic Exp $
-#
-# Check to make sure all of the stat structure members are included in
-# all of the possible formats.
-
-# Top-level directory.
-d=../..
-
-# Path names are from a top-level directory.
-[ -f $d/README ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-exitv=0
-t=__tmp
-
-# Extract the field names for a structure from the db.h file.
-inc_fields()
-{
- sed -e "/struct $1 {/,/^};$/p" \
- -e d < $d/dbinc/db.in |
- sed -e 1d \
- -e '$d' \
- -e '/;/!d' \
- -e 's/;.*//' \
- -e 's/^[ ].*[ \*]//'
-}
-
-cat << END_OF_IGNORE > IGNORE
-bt_maxkey
-bt_metaflags
-hash_metaflags
-qs_metaflags
-qs_ndata
-END_OF_IGNORE
-
-# Check to make sure the elements of a structure from db.h appear in
-# the other files.
-inc()
-{
- for i in `inc_fields $1`; do
- if egrep -w $i IGNORE > /dev/null; then
- echo " $1: ignoring $i"
- continue
- fi
- for j in $2; do
- if egrep -w $i $d/$j > /dev/null; then
- :;
- else
- echo " $1: $i not found in $j."
- exitv=1
- fi
- done
- done
-}
-
-inc "__db_bt_stat" \
- "tcl/tcl_db.c db_stat/db_stat.c docs_src/db/db_stat.so"
-inc "__db_h_stat" \
- "tcl/tcl_db.c db_stat/db_stat.c docs_src/db/db_stat.so"
-inc "__db_qam_stat" \
- "tcl/tcl_db.c db_stat/db_stat.c docs_src/db/db_stat.so"
-inc __db_lock_stat \
- "tcl/tcl_lock.c db_stat/db_stat.c docs_src/lock/lock_stat.so"
-inc __db_log_stat \
- "tcl/tcl_log.c db_stat/db_stat.c docs_src/log/log_stat.so"
-inc __db_mpool_stat \
- "tcl/tcl_mp.c db_stat/db_stat.c docs_src/memp/memp_stat.so"
-inc __db_txn_stat \
- "tcl/tcl_txn.c db_stat/db_stat.c docs_src/txn/txn_stat.so"
-
-# Check to make sure the elements from a man page appears in db.in.
-man()
-{
- for i in `cat $t`; do
- if egrep -w $i IGNORE > /dev/null; then
- echo " $1: ignoring $i"
- continue
- fi
- if egrep -w $i $d/dbinc/db.in > /dev/null; then
- :;
- else
- echo " $1: $i not found in db.h."
- exitv=1
- fi
- done
-}
-
-sed -e '/m4_stat(/!d' \
- -e 's/.*m4_stat(\([^)]*\)).*/\1/' < $d/docs_src/db/db_stat.so > $t
-man "checking db_stat.so against db.h"
-
-sed -e '/m4_stat(/!d' \
- -e 's/.*m4_stat(\([^)]*\)).*/\1/' \
- -e 's/.* //' < $d/docs_src/lock/lock_stat.so > $t
-man "checking lock_stat.so against db.h"
-
-sed -e '/m4_stat[12](/!d' \
- -e 's/.*m4_stat[12](\([^)]*\)).*/\1/' < $d/docs_src/log/log_stat.so > $t
-man "checking log_stat.so against db.h"
-
-sed -e '/m4_stat[123](/!d' \
- -e 's/.*m4_stat[123](\([^)]*\)).*/\1/' < $d/docs_src/memp/memp_stat.so > $t
-man "checking memp_stat.so against db.h"
-
-sed -e '/m4_stat(/!d' \
- -e 's/.*m4_stat(.*, \([^)]*\)).*/\1/' \
- -e 's/__[LR]B__//g' < $d/docs_src/txn/txn_stat.so > $t
-man "checking txn_stat.so against db.h"
-
-exit $exitv
diff --git a/bdb/test/scr014/chk.err b/bdb/test/scr014/chk.err
deleted file mode 100644
index 72b4a62719f..00000000000
--- a/bdb/test/scr014/chk.err
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.err,v 1.3 2002/03/27 04:33:05 bostic Exp $
-#
-# Check to make sure all of the error values have corresponding error
-# message strings in db_strerror().
-
-# Top-level directory.
-d=../..
-
-# Path names are from a top-level directory.
-[ -f $d/README ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-t1=__tmp1
-t2=__tmp2
-
-egrep -- "define.*DB_.*-309" $d/dbinc/db.in | awk '{print $2}' > $t1
-sed -e '/^db_strerror/,/^}/{' \
- -e '/ case DB_/{' \
- -e 's/:.*//' \
- -e 's/.* //' \
- -e p \
- -e '}' \
- -e '}' \
- -e d \
- < $d/common/db_err.c > $t2
-
-cmp $t1 $t2 > /dev/null ||
-(echo "<<< db.h >>> db_strerror" && diff $t1 $t2 && exit 1)
-
-exit 0
diff --git a/bdb/test/scr015/README b/bdb/test/scr015/README
deleted file mode 100644
index 75a356eea06..00000000000
--- a/bdb/test/scr015/README
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id: README,v 1.1 2001/05/31 23:09:11 dda Exp $
-
-Use the scripts testall or testone to run all, or just one of the C++
-tests. You must be in this directory to run them. For example,
-
- $ export LIBS="-L/usr/include/BerkeleyDB/lib"
- $ export CXXFLAGS="-I/usr/include/BerkeleyDB/include"
- $ export LD_LIBRARY_PATH="/usr/include/BerkeleyDB/lib"
- $ ./testone TestAppendRecno
- $ ./testall
-
-The scripts will use c++ in your path. Set environment variables $CXX
-to override this. It will also honor any $CXXFLAGS and $LIBS
-variables that are set, except that -c are silently removed from
-$CXXFLAGS (since we do the compilation in one step).
-
-To run successfully, you will probably need to set $LD_LIBRARY_PATH
-to be the directory containing libdb_cxx-X.Y.so
-
-As an alternative, use the --prefix=<DIR> option, a la configure
-to set the top of the BerkeleyDB install directory. This forces
-the proper options to be added to $LIBS, $CXXFLAGS $LD_LIBRARY_PATH.
-For example,
-
- $ ./testone --prefix=/usr/include/BerkeleyDB TestAppendRecno
- $ ./testall --prefix=/usr/include/BerkeleyDB
-
-The test framework is pretty simple. Any <name>.cpp file in this
-directory that is not mentioned in the 'ignore' file represents a
-test. If the test is not compiled successfully, the compiler output
-is left in <name>.compileout . Otherwise, the java program is run in
-a clean subdirectory using as input <name>.testin, or if that doesn't
-exist, /dev/null. Output and error from the test run are put into
-<name>.out, <name>.err . If <name>.testout, <name>.testerr exist,
-they are used as reference files and any differences are reported.
-If either of the reference files does not exist, /dev/null is used.
diff --git a/bdb/test/scr015/TestConstruct01.cpp b/bdb/test/scr015/TestConstruct01.cpp
deleted file mode 100644
index 7ae328d458c..00000000000
--- a/bdb/test/scr015/TestConstruct01.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestConstruct01.cpp,v 1.5 2002/01/23 14:26:40 bostic Exp $
- */
-
-/*
- * Do some regression tests for constructors.
- * Run normally (without arguments) it is a simple regression test.
- * Run with a numeric argument, it repeats the regression a number
- * of times, to try to determine if there are memory leaks.
- */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <iostream.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
-#endif
-
-#include <iomanip.h>
-#include <db_cxx.h>
-
-#define ERR(a) \
- do { \
- cout << "FAIL: " << (a) << "\n"; sysexit(1); \
- } while (0)
-
-#define ERR2(a1,a2) \
- do { \
- cout << "FAIL: " << (a1) << ": " << (a2) << "\n"; sysexit(1); \
- } while (0)
-
-#define ERR3(a1,a2,a3) \
- do { \
- cout << "FAIL: " << (a1) << ": " << (a2) << ": " << (a3) << "\n"; sysexit(1); \
- } while (0)
-
-#define CHK(a) \
- do { \
- int _ret; \
- if ((_ret = (a)) != 0) { \
- ERR3("DB function " #a " has bad return", _ret, DbEnv::strerror(_ret)); \
- } \
- } while (0)
-
-#ifdef VERBOSE
-#define DEBUGOUT(a) cout << a << "\n"
-#else
-#define DEBUGOUT(a)
-#endif
-
-#define CONSTRUCT01_DBNAME "construct01.db"
-#define CONSTRUCT01_DBDIR "."
-#define CONSTRUCT01_DBFULLPATH (CONSTRUCT01_DBDIR "/" CONSTRUCT01_DBNAME)
-
-int itemcount; // count the number of items in the database
-
-// A good place to put a breakpoint...
-//
-void sysexit(int status)
-{
- exit(status);
-}
-
-void check_file_removed(const char *name, int fatal)
-{
- unlink(name);
-#if 0
- if (access(name, 0) == 0) {
- if (fatal)
- cout << "FAIL: ";
- cout << "File \"" << name << "\" still exists after run\n";
- if (fatal)
- sysexit(1);
- }
-#endif
-}
-
-// Check that key/data for 0 - count-1 are already present,
-// and write a key/data for count. The key and data are
-// both "0123...N" where N == count-1.
-//
-// For some reason on Windows, we need to open using the full pathname
-// of the file when there is no environment, thus the 'has_env'
-// variable.
-//
-void rundb(Db *db, int count, int has_env)
-{
- const char *name;
-
- if (has_env)
- name = CONSTRUCT01_DBNAME;
- else
- name = CONSTRUCT01_DBFULLPATH;
-
- db->set_error_stream(&cerr);
-
- // We don't really care about the pagesize, but we do want
- // to make sure adjusting Db specific variables works before
- // opening the db.
- //
- CHK(db->set_pagesize(1024));
- CHK(db->open(NULL, name, NULL, DB_BTREE, count ? 0 : DB_CREATE, 0664));
-
- // The bit map of keys we've seen
- long bitmap = 0;
-
- // The bit map of keys we expect to see
- long expected = (1 << (count+1)) - 1;
-
- char outbuf[10];
- int i;
- for (i=0; i<count; i++) {
- outbuf[i] = '0' + i;
- }
- outbuf[i++] = '\0';
- Dbt key(outbuf, i);
- Dbt data(outbuf, i);
-
- DEBUGOUT("Put: " << outbuf);
- CHK(db->put(0, &key, &data, DB_NOOVERWRITE));
-
- // Acquire a cursor for the table.
- Dbc *dbcp;
- CHK(db->cursor(NULL, &dbcp, 0));
-
- // Walk through the table, checking
- Dbt readkey;
- Dbt readdata;
- while (dbcp->get(&readkey, &readdata, DB_NEXT) == 0) {
- char *key_string = (char *)readkey.get_data();
- char *data_string = (char *)readdata.get_data();
- DEBUGOUT("Got: " << key_string << ": " << data_string);
- int len = strlen(key_string);
- long bit = (1 << len);
- if (len > count) {
- ERR("reread length is bad");
- }
- else if (strcmp(data_string, key_string) != 0) {
- ERR("key/data don't match");
- }
- else if ((bitmap & bit) != 0) {
- ERR("key already seen");
- }
- else if ((expected & bit) == 0) {
- ERR("key was not expected");
- }
- else {
- bitmap |= bit;
- expected &= ~(bit);
- for (i=0; i<len; i++) {
- if (key_string[i] != ('0' + i)) {
- cout << " got " << key_string
- << " (" << (int)key_string[i] << ")"
- << ", wanted " << i
- << " (" << (int)('0' + i) << ")"
- << " at position " << i << "\n";
- ERR("key is corrupt");
- }
- }
- }
- }
- if (expected != 0) {
- cout << " expected more keys, bitmap is: " << expected << "\n";
- ERR("missing keys in database");
- }
- CHK(dbcp->close());
- CHK(db->close(0));
-}
-
-void t1(int except_flag)
-{
- cout << " Running test 1:\n";
- Db db(0, except_flag);
- rundb(&db, itemcount++, 0);
- cout << " finished.\n";
-}
-
-void t2(int except_flag)
-{
- cout << " Running test 2:\n";
- Db db(0, except_flag);
- rundb(&db, itemcount++, 0);
- cout << " finished.\n";
-}
-
-void t3(int except_flag)
-{
- cout << " Running test 3:\n";
- Db db(0, except_flag);
- rundb(&db, itemcount++, 0);
- cout << " finished.\n";
-}
-
-void t4(int except_flag)
-{
- cout << " Running test 4:\n";
- DbEnv env(except_flag);
- CHK(env.open(CONSTRUCT01_DBDIR, DB_CREATE | DB_INIT_MPOOL, 0));
- Db db(&env, 0);
- CHK(db.close(0));
- CHK(env.close(0));
- cout << " finished.\n";
-}
-
-void t5(int except_flag)
-{
- cout << " Running test 5:\n";
- DbEnv env(except_flag);
- CHK(env.open(CONSTRUCT01_DBDIR, DB_CREATE | DB_INIT_MPOOL, 0));
- Db db(&env, 0);
- rundb(&db, itemcount++, 1);
- // Note we cannot reuse the old Db!
- Db anotherdb(&env, 0);
-
- anotherdb.set_errpfx("test5");
- rundb(&anotherdb, itemcount++, 1);
- CHK(env.close(0));
- cout << " finished.\n";
-}
-
-void t6(int except_flag)
-{
- cout << " Running test 6:\n";
-
- /* From user [#2939] */
- int err;
-
- DbEnv* penv = new DbEnv(DB_CXX_NO_EXCEPTIONS);
- penv->set_cachesize(0, 32 * 1024, 0);
- penv->open(CONSTRUCT01_DBDIR, DB_CREATE | DB_PRIVATE | DB_INIT_MPOOL, 0);
-
- //LEAK: remove this block and leak disappears
- Db* pdb = new Db(penv,0);
- if ((err = pdb->close(0)) != 0) {
- fprintf(stderr, "Error closing Db: %s\n", db_strerror(err));
- }
- delete pdb;
- //LEAK: remove this block and leak disappears
-
- if ((err = penv->close(0)) != 0) {
- fprintf(stderr, "Error closing DbEnv: %s\n", db_strerror(err));
- }
- delete penv;
-
- // Make sure we get a message from C++ layer reminding us to close.
- cerr << "expected error: ";
- {
- DbEnv foo(DB_CXX_NO_EXCEPTIONS);
- foo.open(CONSTRUCT01_DBDIR, DB_CREATE, 0);
- }
- cerr << "should have received error.\n";
- cout << " finished.\n";
-}
-
-// remove any existing environment or database
-void removeall()
-{
- {
- DbEnv tmpenv(DB_CXX_NO_EXCEPTIONS);
- (void)tmpenv.remove(CONSTRUCT01_DBDIR, DB_FORCE);
- }
-
- check_file_removed(CONSTRUCT01_DBFULLPATH, 1);
- for (int i=0; i<8; i++) {
- char buf[20];
- sprintf(buf, "__db.00%d", i);
- check_file_removed(buf, 1);
- }
-}
-
-int doall(int except_flag)
-{
- itemcount = 0;
- try {
- // before and after the run, removing any
- // old environment/database.
- //
- removeall();
- t1(except_flag);
- t2(except_flag);
- t3(except_flag);
- t4(except_flag);
- t5(except_flag);
- t6(except_flag);
-
- removeall();
- return 0;
- }
- catch (DbException &dbe) {
- ERR2("EXCEPTION RECEIVED", dbe.what());
- }
- return 1;
-}
-
-int main(int argc, char *argv[])
-{
- int iterations = 1;
- if (argc > 1) {
- iterations = atoi(argv[1]);
- if (iterations < 0) {
- ERR("Usage: construct01 count");
- }
- }
- for (int i=0; i<iterations; i++) {
- if (iterations != 0) {
- cout << "(" << i << "/" << iterations << ") ";
- }
- cout << "construct01 running:\n";
- if (doall(DB_CXX_NO_EXCEPTIONS) != 0) {
- ERR("SOME TEST FAILED FOR NO-EXCEPTION TEST");
- }
- else if (doall(0) != 0) {
- ERR("SOME TEST FAILED FOR EXCEPTION TEST");
- }
- else {
- cout << "\nALL TESTS SUCCESSFUL\n";
- }
- }
- return 0;
-}
diff --git a/bdb/test/scr015/TestConstruct01.testerr b/bdb/test/scr015/TestConstruct01.testerr
deleted file mode 100644
index 1ba627d103b..00000000000
--- a/bdb/test/scr015/TestConstruct01.testerr
+++ /dev/null
@@ -1,4 +0,0 @@
-expected error: DbEnv::_destroy_check: open DbEnv object destroyed
-should have received error.
-expected error: DbEnv::_destroy_check: open DbEnv object destroyed
-should have received error.
diff --git a/bdb/test/scr015/TestConstruct01.testout b/bdb/test/scr015/TestConstruct01.testout
deleted file mode 100644
index 9b840f9fcf4..00000000000
--- a/bdb/test/scr015/TestConstruct01.testout
+++ /dev/null
@@ -1,27 +0,0 @@
-(0/1) construct01 running:
- Running test 1:
- finished.
- Running test 2:
- finished.
- Running test 3:
- finished.
- Running test 4:
- finished.
- Running test 5:
- finished.
- Running test 6:
- finished.
- Running test 1:
- finished.
- Running test 2:
- finished.
- Running test 3:
- finished.
- Running test 4:
- finished.
- Running test 5:
- finished.
- Running test 6:
- finished.
-
-ALL TESTS SUCCESSFUL
diff --git a/bdb/test/scr015/TestExceptInclude.cpp b/bdb/test/scr015/TestExceptInclude.cpp
deleted file mode 100644
index 28bc498222f..00000000000
--- a/bdb/test/scr015/TestExceptInclude.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestExceptInclude.cpp,v 1.4 2002/07/05 22:17:59 dda Exp $
- */
-
-/* We should be able to include cxx_except.h without db_cxx.h,
- * and use the DbException class. We do need db.h to get a few
- * typedefs defined that the DbException classes use.
- *
- * This program does nothing, it's just here to make sure
- * the compilation works.
- */
-#include <db.h>
-#include <cxx_except.h>
-
-int main(int argc, char *argv[])
-{
- DbException *dbe = new DbException("something");
- DbMemoryException *dbme = new DbMemoryException("anything");
-
- dbe = dbme;
-}
-
diff --git a/bdb/test/scr015/TestGetSetMethods.cpp b/bdb/test/scr015/TestGetSetMethods.cpp
deleted file mode 100644
index 81ef914eac3..00000000000
--- a/bdb/test/scr015/TestGetSetMethods.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestGetSetMethods.cpp,v 1.4 2002/01/11 15:53:59 bostic Exp $
- */
-
-/*
- * Do some regression tests for simple get/set access methods
- * on DbEnv, DbTxn, Db. We don't currently test that they have
- * the desired effect, only that they operate and return correctly.
- */
-
-#include <db_cxx.h>
-#include <iostream.h>
-
-int main(int argc, char *argv[])
-{
- try {
- DbEnv *dbenv = new DbEnv(0);
- DbTxn *dbtxn;
- u_int8_t conflicts[10];
-
- dbenv->set_error_stream(&cerr);
- dbenv->set_timeout(0x90000000,
- DB_SET_LOCK_TIMEOUT);
- dbenv->set_lg_bsize(0x1000);
- dbenv->set_lg_dir(".");
- dbenv->set_lg_max(0x10000000);
- dbenv->set_lg_regionmax(0x100000);
- dbenv->set_lk_conflicts(conflicts, sizeof(conflicts));
- dbenv->set_lk_detect(DB_LOCK_DEFAULT);
- // exists, but is deprecated:
- // dbenv->set_lk_max(0);
- dbenv->set_lk_max_lockers(100);
- dbenv->set_lk_max_locks(10);
- dbenv->set_lk_max_objects(1000);
- dbenv->set_mp_mmapsize(0x10000);
- dbenv->set_tas_spins(1000);
-
- // Need to open the environment so we
- // can get a transaction.
- //
- dbenv->open(".", DB_CREATE | DB_INIT_TXN |
- DB_INIT_LOCK | DB_INIT_LOG |
- DB_INIT_MPOOL,
- 0644);
-
- dbenv->txn_begin(NULL, &dbtxn, DB_TXN_NOWAIT);
- dbtxn->set_timeout(0xA0000000, DB_SET_TXN_TIMEOUT);
- dbtxn->abort();
-
- dbenv->close(0);
-
- // We get a db, one for each type.
- // That's because once we call (for instance)
- // set_bt_maxkey, DB 'knows' that this is a
- // Btree Db, and it cannot be used to try Hash
- // or Recno functions.
- //
- Db *db_bt = new Db(NULL, 0);
- db_bt->set_bt_maxkey(10000);
- db_bt->set_bt_minkey(100);
- db_bt->set_cachesize(0, 0x100000, 0);
- db_bt->close(0);
-
- Db *db_h = new Db(NULL, 0);
- db_h->set_h_ffactor(0x10);
- db_h->set_h_nelem(100);
- db_h->set_lorder(0);
- db_h->set_pagesize(0x10000);
- db_h->close(0);
-
- Db *db_re = new Db(NULL, 0);
- db_re->set_re_delim('@');
- db_re->set_re_pad(10);
- db_re->set_re_source("re.in");
- db_re->close(0);
-
- Db *db_q = new Db(NULL, 0);
- db_q->set_q_extentsize(200);
- db_q->close(0);
-
- }
- catch (DbException &dbe) {
- cerr << "Db Exception: " << dbe.what() << "\n";
- }
- return 0;
-}
diff --git a/bdb/test/scr015/TestKeyRange.cpp b/bdb/test/scr015/TestKeyRange.cpp
deleted file mode 100644
index 980d2f518e0..00000000000
--- a/bdb/test/scr015/TestKeyRange.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/*NOTE: AccessExample changed to test Db.key_range.
- * We made a global change of /AccessExample/TestKeyRange/,
- * the only other changes are marked with comments that
- * are notated as 'ADDED'.
- */
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestKeyRange.cpp,v 1.4 2002/01/23 14:26:41 bostic Exp $
- */
-
-#ifndef NO_SYSTEM_INCLUDES
-#include <sys/types.h>
-
-#include <iostream.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
-#endif
-
-#include <iomanip.h>
-#include <db_cxx.h>
-
-class TestKeyRange
-{
-public:
- TestKeyRange();
- void run();
-
-private:
- static const char FileName[];
-
- // no need for copy and assignment
- TestKeyRange(const TestKeyRange &);
- void operator = (const TestKeyRange &);
-};
-
-static void usage(); // forward
-
-int main(int argc, char *argv[])
-{
- if (argc > 1) {
- usage();
- }
-
- // Use a try block just to report any errors.
- // An alternate approach to using exceptions is to
- // use error models (see DbEnv::set_error_model()) so
- // that error codes are returned for all Berkeley DB methods.
- //
- try {
- TestKeyRange app;
- app.run();
- return 0;
- }
- catch (DbException &dbe) {
- cerr << "TestKeyRange: " << dbe.what() << "\n";
- return 1;
- }
-}
-
-static void usage()
-{
- cerr << "usage: TestKeyRange\n";
- exit(1);
-}
-
-const char TestKeyRange::FileName[] = "access.db";
-
-TestKeyRange::TestKeyRange()
-{
-}
-
-void TestKeyRange::run()
-{
- // Remove the previous database.
- (void)unlink(FileName);
-
- // Create the database object.
- // There is no environment for this simple example.
- Db db(0, 0);
-
- db.set_error_stream(&cerr);
- db.set_errpfx("TestKeyRange");
- db.set_pagesize(1024); /* Page size: 1K. */
- db.set_cachesize(0, 32 * 1024, 0);
- db.open(NULL, FileName, NULL, DB_BTREE, DB_CREATE, 0664);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- char buf[1024];
- char rbuf[1024];
- char *t;
- char *p;
- int ret;
- int len;
- Dbt *firstkey = NULL;
- char firstbuf[1024];
-
- for (;;) {
- cout << "input>";
- cout.flush();
-
- cin.getline(buf, sizeof(buf));
- if (cin.eof())
- break;
-
- if ((len = strlen(buf)) <= 0)
- continue;
- for (t = rbuf, p = buf + (len - 1); p >= buf;)
- *t++ = *p--;
- *t++ = '\0';
-
- Dbt key(buf, len + 1);
- Dbt data(rbuf, len + 1);
- if (firstkey == NULL) {
- strcpy(firstbuf, buf);
- firstkey = new Dbt(firstbuf, len + 1);
- }
-
- ret = db.put(0, &key, &data, DB_NOOVERWRITE);
- if (ret == DB_KEYEXIST) {
- cout << "Key " << buf << " already exists.\n";
- }
- cout << "\n";
- }
-
- // We put a try block around this section of code
- // to ensure that our database is properly closed
- // in the event of an error.
- //
- try {
- // Acquire a cursor for the table.
- Dbc *dbcp;
- db.cursor(NULL, &dbcp, 0);
-
- /*ADDED...*/
- DB_KEY_RANGE range;
- memset(&range, 0, sizeof(range));
-
- db.key_range(NULL, firstkey, &range, 0);
- printf("less: %f\n", range.less);
- printf("equal: %f\n", range.equal);
- printf("greater: %f\n", range.greater);
- /*end ADDED*/
-
- Dbt key;
- Dbt data;
-
- // Walk through the table, printing the key/data pairs.
- while (dbcp->get(&key, &data, DB_NEXT) == 0) {
- char *key_string = (char *)key.get_data();
- char *data_string = (char *)data.get_data();
- cout << key_string << " : " << data_string << "\n";
- }
- dbcp->close();
- }
- catch (DbException &dbe) {
- cerr << "TestKeyRange: " << dbe.what() << "\n";
- }
-
- db.close(0);
-}
diff --git a/bdb/test/scr015/TestKeyRange.testin b/bdb/test/scr015/TestKeyRange.testin
deleted file mode 100644
index a2b6bd74e7b..00000000000
--- a/bdb/test/scr015/TestKeyRange.testin
+++ /dev/null
@@ -1,8 +0,0 @@
-first line is alphabetically somewhere in the middle.
-Blah blah
-let's have exactly eight lines of input.
-stuff
-more stuff
-and even more stuff
-lastly
-but not leastly.
diff --git a/bdb/test/scr015/TestKeyRange.testout b/bdb/test/scr015/TestKeyRange.testout
deleted file mode 100644
index 25b2e1a835c..00000000000
--- a/bdb/test/scr015/TestKeyRange.testout
+++ /dev/null
@@ -1,19 +0,0 @@
-input>
-input>
-input>
-input>
-input>
-input>
-input>
-input>
-input>less: 0.375000
-equal: 0.125000
-greater: 0.500000
-Blah blah : halb halB
-and even more stuff : ffuts erom neve dna
-but not leastly. : .yltsael ton tub
-first line is alphabetically somewhere in the middle. : .elddim eht ni erehwemos yllacitebahpla si enil tsrif
-lastly : yltsal
-let's have exactly eight lines of input. : .tupni fo senil thgie yltcaxe evah s'tel
-more stuff : ffuts erom
-stuff : ffuts
diff --git a/bdb/test/scr015/TestLogc.cpp b/bdb/test/scr015/TestLogc.cpp
deleted file mode 100644
index 94fcfa0b3ec..00000000000
--- a/bdb/test/scr015/TestLogc.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestLogc.cpp,v 1.6 2002/01/23 14:26:41 bostic Exp $
- */
-
-/*
- * A basic regression test for the Logc class.
- */
-
-#include <db_cxx.h>
-#include <iostream.h>
-
-static void show_dbt(ostream &os, Dbt *dbt)
-{
- int i;
- int size = dbt->get_size();
- unsigned char *data = (unsigned char *)dbt->get_data();
-
- os << "size: " << size << " data: ";
- for (i=0; i<size && i<10; i++) {
- os << (int)data[i] << " ";
- }
- if (i<size)
- os << "...";
-}
-
-int main(int argc, char *argv[])
-{
- try {
- DbEnv *env = new DbEnv(0);
- env->open(".", DB_CREATE | DB_INIT_LOG | DB_INIT_MPOOL, 0);
-
- // Do some database activity to get something into the log.
- Db *db1 = new Db(env, 0);
- db1->open(NULL, "first.db", NULL, DB_BTREE, DB_CREATE, 0);
- Dbt *key = new Dbt((char *)"a", 1);
- Dbt *data = new Dbt((char *)"b", 1);
- db1->put(NULL, key, data, 0);
- key->set_data((char *)"c");
- data->set_data((char *)"d");
- db1->put(NULL, key, data, 0);
- db1->close(0);
-
- Db *db2 = new Db(env, 0);
- db2->open(NULL, "second.db", NULL, DB_BTREE, DB_CREATE, 0);
- key->set_data((char *)"w");
- data->set_data((char *)"x");
- db2->put(NULL, key, data, 0);
- key->set_data((char *)"y");
- data->set_data((char *)"z");
- db2->put(NULL, key, data, 0);
- db2->close(0);
-
- // Now get a log cursor and walk through.
- DbLogc *logc;
-
- env->log_cursor(&logc, 0);
- int ret = 0;
- DbLsn lsn;
- Dbt *dbt = new Dbt();
- u_int32_t flags = DB_FIRST;
-
- int count = 0;
- while ((ret = logc->get(&lsn, dbt, flags)) == 0) {
-
- // We ignore the contents of the log record,
- // it's not portable. Even the exact count
- // is may change when the underlying implementation
- // changes, we'll just make sure at the end we saw
- // 'enough'.
- //
- // cout << "logc.get: " << count;
- // show_dbt(cout, dbt);
- // cout << "\n";
- //
- count++;
- flags = DB_NEXT;
- }
- if (ret != DB_NOTFOUND) {
- cerr << "*** FAIL: logc.get returned: "
- << DbEnv::strerror(ret) << "\n";
- }
- logc->close(0);
-
- // There has to be at *least* four log records,
- // since we did four separate database operations.
- //
- if (count < 4)
- cerr << "*** FAIL: not enough log records\n";
-
- cout << "TestLogc done.\n";
- }
- catch (DbException &dbe) {
- cerr << "*** FAIL: " << dbe.what() <<"\n";
- }
- return 0;
-}
diff --git a/bdb/test/scr015/TestLogc.testout b/bdb/test/scr015/TestLogc.testout
deleted file mode 100644
index afac3af7eda..00000000000
--- a/bdb/test/scr015/TestLogc.testout
+++ /dev/null
@@ -1 +0,0 @@
-TestLogc done.
diff --git a/bdb/test/scr015/TestSimpleAccess.cpp b/bdb/test/scr015/TestSimpleAccess.cpp
deleted file mode 100644
index 2450b9b3030..00000000000
--- a/bdb/test/scr015/TestSimpleAccess.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestSimpleAccess.cpp,v 1.5 2002/01/23 14:26:41 bostic Exp $
- */
-
-/*
- * Do some regression tests for constructors.
- * Run normally (without arguments) it is a simple regression test.
- * Run with a numeric argument, it repeats the regression a number
- * of times, to try to determine if there are memory leaks.
- */
-
-#include <db_cxx.h>
-#include <iostream.h>
-
-int main(int argc, char *argv[])
-{
- try {
- Db *db = new Db(NULL, 0);
- db->open(NULL, "my.db", NULL, DB_BTREE, DB_CREATE, 0644);
-
- // populate our massive database.
- // all our strings include null for convenience.
- // Note we have to cast for idiomatic
- // usage, since newer gcc requires it.
- Dbt *keydbt = new Dbt((char *)"key", 4);
- Dbt *datadbt = new Dbt((char *)"data", 5);
- db->put(NULL, keydbt, datadbt, 0);
-
- // Now, retrieve. We could use keydbt over again,
- // but that wouldn't be typical in an application.
- Dbt *goodkeydbt = new Dbt((char *)"key", 4);
- Dbt *badkeydbt = new Dbt((char *)"badkey", 7);
- Dbt *resultdbt = new Dbt();
- resultdbt->set_flags(DB_DBT_MALLOC);
-
- int ret;
-
- if ((ret = db->get(NULL, goodkeydbt, resultdbt, 0)) != 0) {
- cout << "get: " << DbEnv::strerror(ret) << "\n";
- }
- else {
- char *result = (char *)resultdbt->get_data();
- cout << "got data: " << result << "\n";
- }
-
- if ((ret = db->get(NULL, badkeydbt, resultdbt, 0)) != 0) {
- // We expect this...
- cout << "get using bad key: "
- << DbEnv::strerror(ret) << "\n";
- }
- else {
- char *result = (char *)resultdbt->get_data();
- cout << "*** got data using bad key!!: "
- << result << "\n";
- }
- cout << "finished test\n";
- }
- catch (DbException &dbe) {
- cerr << "Db Exception: " << dbe.what();
- }
- return 0;
-}
diff --git a/bdb/test/scr015/TestSimpleAccess.testout b/bdb/test/scr015/TestSimpleAccess.testout
deleted file mode 100644
index dc88d4788e4..00000000000
--- a/bdb/test/scr015/TestSimpleAccess.testout
+++ /dev/null
@@ -1,3 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-finished test
diff --git a/bdb/test/scr015/TestTruncate.cpp b/bdb/test/scr015/TestTruncate.cpp
deleted file mode 100644
index d5c0dc6de29..00000000000
--- a/bdb/test/scr015/TestTruncate.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestTruncate.cpp,v 1.5 2002/01/23 14:26:41 bostic Exp $
- */
-
-/*
- * Do some regression tests for constructors.
- * Run normally (without arguments) it is a simple regression test.
- * Run with a numeric argument, it repeats the regression a number
- * of times, to try to determine if there are memory leaks.
- */
-
-#include <db_cxx.h>
-#include <iostream.h>
-
-int main(int argc, char *argv[])
-{
- try {
- Db *db = new Db(NULL, 0);
- db->open(NULL, "my.db", NULL, DB_BTREE, DB_CREATE, 0644);
-
- // populate our massive database.
- // all our strings include null for convenience.
- // Note we have to cast for idiomatic
- // usage, since newer gcc requires it.
- Dbt *keydbt = new Dbt((char*)"key", 4);
- Dbt *datadbt = new Dbt((char*)"data", 5);
- db->put(NULL, keydbt, datadbt, 0);
-
- // Now, retrieve. We could use keydbt over again,
- // but that wouldn't be typical in an application.
- Dbt *goodkeydbt = new Dbt((char*)"key", 4);
- Dbt *badkeydbt = new Dbt((char*)"badkey", 7);
- Dbt *resultdbt = new Dbt();
- resultdbt->set_flags(DB_DBT_MALLOC);
-
- int ret;
-
- if ((ret = db->get(NULL, goodkeydbt, resultdbt, 0)) != 0) {
- cout << "get: " << DbEnv::strerror(ret) << "\n";
- }
- else {
- char *result = (char *)resultdbt->get_data();
- cout << "got data: " << result << "\n";
- }
-
- if ((ret = db->get(NULL, badkeydbt, resultdbt, 0)) != 0) {
- // We expect this...
- cout << "get using bad key: "
- << DbEnv::strerror(ret) << "\n";
- }
- else {
- char *result = (char *)resultdbt->get_data();
- cout << "*** got data using bad key!!: "
- << result << "\n";
- }
-
- // Now, truncate and make sure that it's really gone.
- cout << "truncating data...\n";
- u_int32_t nrecords;
- db->truncate(NULL, &nrecords, 0);
- cout << "truncate returns " << nrecords << "\n";
- if ((ret = db->get(NULL, goodkeydbt, resultdbt, 0)) != 0) {
- // We expect this...
- cout << "after truncate get: "
- << DbEnv::strerror(ret) << "\n";
- }
- else {
- char *result = (char *)resultdbt->get_data();
- cout << "got data: " << result << "\n";
- }
-
- db->close(0);
- cout << "finished test\n";
- }
- catch (DbException &dbe) {
- cerr << "Db Exception: " << dbe.what();
- }
- return 0;
-}
diff --git a/bdb/test/scr015/TestTruncate.testout b/bdb/test/scr015/TestTruncate.testout
deleted file mode 100644
index 0a4bc98165d..00000000000
--- a/bdb/test/scr015/TestTruncate.testout
+++ /dev/null
@@ -1,6 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-truncating data...
-truncate returns 1
-after truncate get: DB_NOTFOUND: No matching key/data pair found
-finished test
diff --git a/bdb/test/scr015/chk.cxxtests b/bdb/test/scr015/chk.cxxtests
deleted file mode 100644
index 5c21e27208c..00000000000
--- a/bdb/test/scr015/chk.cxxtests
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.cxxtests,v 1.5 2002/07/05 22:17:59 dda Exp $
-#
-# Check to make sure that regression tests for C++ run.
-
-TEST_CXX_SRCDIR=../test/scr015 # must be a relative directory
-
-# All paths must be relative to a subdirectory of the build directory
-LIBS="-L.. -ldb -ldb_cxx"
-CXXFLAGS="-I.. -I../../dbinc"
-
-# Test must be run from a local build directory, not from a test
-# directory.
-cd ..
-[ -f db_config.h ] || {
- echo 'FAIL: chk.cxxtests must be run from a local build directory.'
- exit 1
-}
-[ -d ../docs_src ] || {
- echo 'FAIL: chk.cxxtests must be run from a local build directory.'
- exit 1
-}
-[ -f libdb.a ] || make libdb.a || {
- echo 'FAIL: unable to build libdb.a'
- exit 1
-}
-[ -f libdb_cxx.a ] || make libdb_cxx.a || {
- echo 'FAIL: unable to build libdb_cxx.a'
- exit 1
-}
-CXX=`sed -e '/^CXX=/!d' -e 's/^CXX=//' -e 's/.*mode=compile *//' Makefile`
-echo " ====== cxx tests using $CXX"
-testnames=`cd $TEST_CXX_SRCDIR; ls *.cpp | sed -e 's/\.cpp$//'`
-
-for testname in $testnames; do
- if grep -x $testname $TEST_CXX_SRCDIR/ignore > /dev/null; then
- echo " **** cxx test $testname ignored"
- continue
- fi
-
- echo " ==== cxx test $testname"
- rm -rf TESTCXX; mkdir TESTCXX
- cd ./TESTCXX
- testprefix=../$TEST_CXX_SRCDIR/$testname
-
- ${CXX} ${CXXFLAGS} -o $testname $testprefix.cpp ${LIBS} > ../$testname.compileout 2>&1 || {
- echo "FAIL: compilation of $testname failed, see ../$testname.compileout"
- exit 1
- }
- rm -f ../$testname.compileout
- infile=$testprefix.testin
- [ -f $infile ] || infile=/dev/null
- goodoutfile=$testprefix.testout
- [ -f $goodoutfile ] || goodoutfile=/dev/null
- gooderrfile=$testprefix.testerr
- [ -f $gooderrfile ] || gooderrfile=/dev/null
- ./$testname <$infile >../$testname.out 2>../$testname.err
- cmp ../$testname.out $goodoutfile > /dev/null || {
- echo "FAIL: $testname output differs: see ../$testname.out, $goodoutfile"
- exit 1
- }
- cmp ../$testname.err $gooderrfile > /dev/null || {
- echo "FAIL: $testname error differs: see ../$testname.err, $gooderrfile"
- exit 1
- }
- cd ..
- rm -f $testname.err $testname.out
-done
-rm -rf TESTCXX
-exit 0
diff --git a/bdb/test/scr015/ignore b/bdb/test/scr015/ignore
deleted file mode 100644
index 55ce82ae372..00000000000
--- a/bdb/test/scr015/ignore
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# $Id: ignore,v 1.3 2001/10/12 13:02:32 dda Exp $
-#
-# A list of tests to ignore
diff --git a/bdb/test/scr015/testall b/bdb/test/scr015/testall
deleted file mode 100644
index a2d493a8b22..00000000000
--- a/bdb/test/scr015/testall
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh -
-# $Id: testall,v 1.3 2001/09/13 14:49:36 dda Exp $
-#
-# Run all the C++ regression tests
-
-ecode=0
-prefixarg=""
-stdinarg=""
-while :
-do
- case "$1" in
- --prefix=* )
- prefixarg="$1"; shift;;
- --stdin )
- stdinarg="$1"; shift;;
- * )
- break
- esac
-done
-files="`find . -name \*.cpp -print`"
-for file in $files; do
- name=`echo $file | sed -e 's:^\./::' -e 's/\.cpp$//'`
- if grep $name ignore > /dev/null; then
- echo " **** cxx test $name ignored"
- else
- echo " ==== cxx test $name"
- if ! sh ./testone $prefixarg $stdinarg $name; then
- ecode=1
- fi
- fi
-done
-exit $ecode
diff --git a/bdb/test/scr015/testone b/bdb/test/scr015/testone
deleted file mode 100644
index 3bbba3f90f0..00000000000
--- a/bdb/test/scr015/testone
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/bin/sh -
-# $Id: testone,v 1.5 2002/07/05 22:17:59 dda Exp $
-#
-# Run just one C++ regression test, the single argument
-# is the basename of the test, e.g. TestRpcServer
-
-error()
-{
- echo '' >&2
- echo "C++ regression error: $@" >&2
- echo '' >&2
- ecode=1
-}
-
-# compares the result against the good version,
-# reports differences, and removes the result file
-# if there are no differences.
-#
-compare_result()
-{
- good="$1"
- latest="$2"
- if [ ! -e "$good" ]; then
- echo "Note: $good does not exist"
- return
- fi
- tmpout=/tmp/blddb$$.tmp
- diff "$good" "$latest" > $tmpout
- if [ -s $tmpout ]; then
- nbad=`grep '^[0-9]' $tmpout | wc -l`
- error "$good and $latest differ in $nbad places."
- else
- rm $latest
- fi
- rm -f $tmpout
-}
-
-ecode=0
-stdinflag=n
-gdbflag=n
-CXX=${CXX:-c++}
-LIBS=${LIBS:-}
-
-# remove any -c option in the CXXFLAGS
-CXXFLAGS="`echo " ${CXXFLAGS} " | sed -e 's/ -c //g'`"
-
-# determine the prefix of the install tree
-prefix=""
-while :
-do
- case "$1" in
- --prefix=* )
- prefix="`echo $1 | sed -e 's/--prefix=//'`"; shift
- LIBS="-L$prefix/lib -ldb_cxx $LIBS"
- CXXFLAGS="-I$prefix/include $CXXFLAGS"
- export LD_LIBRARY_PATH="$prefix/lib:$LD_LIBRARY_PATH"
- ;;
- --stdin )
- stdinflag=y; shift
- ;;
- --gdb )
- CXXFLAGS="-g $CXXFLAGS"
- gdbflag=y; shift
- ;;
- * )
- break
- ;;
- esac
-done
-
-if [ "$#" = 0 ]; then
- echo 'Usage: testone [ --prefix=<dir> | --stdin ] TestName'
- exit 1
-fi
-name="$1"
-
-# compile
-rm -rf TESTDIR; mkdir TESTDIR
-cd ./TESTDIR
-
-${CXX} ${CXXFLAGS} -o $name ../$name.cpp ${LIBS} > ../$name.compileout 2>&1
-if [ $? != 0 -o -s ../$name.compileout ]; then
- error "compilation of $name failed, see $name.compileout"
- exit 1
-fi
-rm -f ../$name.compileout
-
-# find input and error file
-infile=../$name.testin
-if [ ! -f $infile ]; then
- infile=/dev/null
-fi
-
-# run and diff results
-rm -rf TESTDIR
-if [ "$gdbflag" = y ]; then
- if [ -s $infile ]; then
- echo "Input file is $infile"
- fi
- gdb ./$name
- exit 0
-elif [ "$stdinflag" = y ]; then
- ./$name >../$name.out 2>../$name.err
-else
- ./$name <$infile >../$name.out 2>../$name.err
-fi
-cd ..
-
-testerr=$name.testerr
-if [ ! -f $testerr ]; then
- testerr=/dev/null
-fi
-
-testout=$name.testout
-if [ ! -f $testout ]; then
- testout=/dev/null
-fi
-
-compare_result $testout $name.out
-compare_result $testerr $name.err
-rm -rf TESTDIR
-exit $ecode
diff --git a/bdb/test/scr016/CallbackTest.java b/bdb/test/scr016/CallbackTest.java
deleted file mode 100644
index eede964a027..00000000000
--- a/bdb/test/scr016/CallbackTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.sleepycat.test;
-import com.sleepycat.db.*;
-
-public class CallbackTest
-{
- public static void main(String args[])
- {
- try {
- Db db = new Db(null, 0);
- db.set_bt_compare(new BtreeCompare());
- db.open(null, "test.db", "", Db.DB_BTREE, Db.DB_CREATE, 0666);
- StringDbt[] keys = new StringDbt[10];
- StringDbt[] datas = new StringDbt[10];
- for (int i = 0; i<10; i++) {
- int val = (i * 3) % 10;
- keys[i] = new StringDbt("key" + val);
- datas[i] = new StringDbt("data" + val);
- System.out.println("put " + val);
- db.put(null, keys[i], datas[i], 0);
- }
- }
- catch (DbException dbe) {
- System.err.println("FAIL: " + dbe);
- }
- catch (java.io.FileNotFoundException fnfe) {
- System.err.println("FAIL: " + fnfe);
- }
-
- }
-
-
-}
-
-class BtreeCompare
- implements DbBtreeCompare
-{
- /* A weird comparator, for example.
- * In fact, it may not be legal, since it's not monotonically increasing.
- */
- public int bt_compare(Db db, Dbt dbt1, Dbt dbt2)
- {
- System.out.println("compare function called");
- byte b1[] = dbt1.get_data();
- byte b2[] = dbt2.get_data();
- System.out.println(" " + (new String(b1)) + ", " + (new String(b2)));
- int len1 = b1.length;
- int len2 = b2.length;
- if (len1 != len2)
- return (len1 < len2) ? 1 : -1;
- int value = 1;
- for (int i=0; i<len1; i++) {
- if (b1[i] != b2[i])
- return (b1[i] < b2[i]) ? value : -value;
- value *= -1;
- }
- return 0;
- }
-}
-
-class StringDbt extends Dbt
-{
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
-}
diff --git a/bdb/test/scr016/CallbackTest.testout b/bdb/test/scr016/CallbackTest.testout
deleted file mode 100644
index 68797d4a2de..00000000000
--- a/bdb/test/scr016/CallbackTest.testout
+++ /dev/null
@@ -1,60 +0,0 @@
-put 0
-put 3
-compare function called
- key3, key0
-put 6
-compare function called
- key6, key3
-put 9
-compare function called
- key9, key6
-put 2
-compare function called
- key2, key9
-compare function called
- key2, key0
-compare function called
- key2, key6
-compare function called
- key2, key3
-compare function called
- key2, key0
-put 5
-compare function called
- key5, key3
-compare function called
- key5, key9
-compare function called
- key5, key6
-put 8
-compare function called
- key8, key5
-compare function called
- key8, key9
-compare function called
- key8, key6
-put 1
-compare function called
- key1, key9
-compare function called
- key1, key0
-compare function called
- key1, key5
-compare function called
- key1, key2
-compare function called
- key1, key0
-put 4
-compare function called
- key4, key5
-compare function called
- key4, key2
-compare function called
- key4, key3
-put 7
-compare function called
- key7, key4
-compare function called
- key7, key8
-compare function called
- key7, key6
diff --git a/bdb/test/scr016/README b/bdb/test/scr016/README
deleted file mode 100644
index 226a8aa3b77..00000000000
--- a/bdb/test/scr016/README
+++ /dev/null
@@ -1,37 +0,0 @@
-# $Id: README,v 1.2 2001/05/31 23:09:10 dda Exp $
-
-Use the scripts testall or testone to run all, or just one of the Java
-tests. You must be in this directory to run them. For example,
-
- $ export LD_LIBRARY_PATH=/usr/local/Berkeley3.3/lib
- $ ./testone TestAppendRecno
- $ ./testall
-
-The scripts will use javac and java in your path. Set environment
-variables $JAVAC and $JAVA to override this. It will also and honor
-any $CLASSPATH that is already set, prepending ../../../../classes to
-it, which is where the test .class files are put, and where the DB
-.class files can normally be found after a build on Unix and Windows.
-If none of these variables are set, everything will probably work
-with whatever java/javac is in your path.
-
-To run successfully, you will probably need to set $LD_LIBRARY_PATH
-to be the directory containing libdb_java-X.Y.so
-
-As an alternative, use the --prefix=<DIR> option, a la configure
-to set the top of the BerkeleyDB install directory. This forces
-the proper options to be added to $LD_LIBRARY_PATH.
-For example,
-
- $ ./testone --prefix=/usr/include/BerkeleyDB TestAppendRecno
- $ ./testall --prefix=/usr/include/BerkeleyDB
-
-The test framework is pretty simple. Any <name>.java file in this
-directory that is not mentioned in the 'ignore' file represents a
-test. If the test is not compiled successfully, the compiler output
-is left in <name>.compileout . Otherwise, the java program is run in
-a clean subdirectory using as input <name>.testin, or if that doesn't
-exist, /dev/null. Output and error from the test run are put into
-<name>.out, <name>.err . If <name>.testout, <name>.testerr exist,
-they are used as reference files and any differences are reported.
-If either of the reference files does not exist, /dev/null is used.
diff --git a/bdb/test/scr016/TestAppendRecno.java b/bdb/test/scr016/TestAppendRecno.java
deleted file mode 100644
index f4ea70ca084..00000000000
--- a/bdb/test/scr016/TestAppendRecno.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestAppendRecno.java,v 1.4 2002/08/16 19:35:53 dda Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestAppendRecno
- implements DbAppendRecno
-{
- private static final String FileName = "access.db";
- int callback_count = 0;
- Db table = null;
-
- public TestAppendRecno()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestAppendRecno\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestAppendRecno app = new TestAppendRecno();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestAppendRecno: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestAppendRecno: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- table = new Db(null, 0);
- table.set_error_stream(System.err);
- table.set_errpfx("TestAppendRecno");
- table.set_append_recno(this);
-
- table.open(null, FileName, null, Db.DB_RECNO, Db.DB_CREATE, 0644);
- for (int i=0; i<10; i++) {
- System.out.println("\n*** Iteration " + i );
- try {
- RecnoDbt key = new RecnoDbt(77+i);
- StringDbt data = new StringDbt("data" + i + "_xyz");
- table.put(null, key, data, Db.DB_APPEND);
- }
- catch (DbException dbe) {
- System.out.println("dbe: " + dbe);
- }
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- RecnoDbt key = new RecnoDbt();
- StringDbt data = new StringDbt();
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getRecno() + " : " + data.getString());
- }
- iterator.close();
- table.close(0);
- System.out.println("Test finished.");
- }
-
- public void db_append_recno(Db db, Dbt dbt, int recno)
- throws DbException
- {
- int count = callback_count++;
-
- System.out.println("====\ncallback #" + count);
- System.out.println("db is table: " + (db == table));
- System.out.println("recno = " + recno);
-
- // This gives variable output.
- //System.out.println("dbt = " + dbt);
- if (dbt instanceof RecnoDbt) {
- System.out.println("dbt = " +
- ((RecnoDbt)dbt).getRecno());
- }
- else if (dbt instanceof StringDbt) {
- System.out.println("dbt = " +
- ((StringDbt)dbt).getString());
- }
- else {
- // Note: the dbts are created out of whole
- // cloth by Berkeley DB, not us!
- System.out.println("internally created dbt: " +
- new StringDbt(dbt) + ", size " +
- dbt.get_size());
- }
-
- switch (count) {
- case 0:
- // nothing
- break;
-
- case 1:
- dbt.set_size(dbt.get_size() - 1);
- break;
-
- case 2:
- System.out.println("throwing...");
- throw new DbException("append_recno thrown");
- //not reached
-
- case 3:
- // Should result in an error (size unchanged).
- dbt.set_offset(1);
- break;
-
- case 4:
- dbt.set_offset(1);
- dbt.set_size(dbt.get_size() - 1);
- break;
-
- case 5:
- dbt.set_offset(1);
- dbt.set_size(dbt.get_size() - 2);
- break;
-
- case 6:
- dbt.set_data(new String("abc").getBytes());
- dbt.set_size(3);
- break;
-
- case 7:
- // Should result in an error.
- dbt.set_data(null);
- break;
-
- case 8:
- // Should result in an error.
- dbt.set_data(new String("abc").getBytes());
- dbt.set_size(4);
- break;
-
- default:
- break;
- }
- }
-
-
- // Here's an example of how you can extend a Dbt to store recno's.
- //
- static /*inner*/
- class RecnoDbt extends Dbt
- {
- RecnoDbt()
- {
- this(0); // let other constructor do most of the work
- }
-
- RecnoDbt(int value)
- {
- set_flags(Db.DB_DBT_USERMEM); // do not allocate on retrieval
- arr = new byte[4];
- set_data(arr); // use our local array for data
- set_ulen(4); // size of return storage
- setRecno(value);
- }
-
- public String toString() /*override*/
- {
- return String.valueOf(getRecno());
- }
-
- void setRecno(int value)
- {
- set_recno_key_data(value);
- set_size(arr.length);
- }
-
- int getRecno()
- {
- return get_recno_key_data();
- }
-
- byte arr[];
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt(Dbt dbt)
- {
- set_data(dbt.get_data());
- set_size(dbt.get_size());
- }
-
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
-
- public String toString() /*override*/
- {
- return getString();
- }
- }
-}
-
diff --git a/bdb/test/scr016/TestAppendRecno.testout b/bdb/test/scr016/TestAppendRecno.testout
deleted file mode 100644
index 970174e7a96..00000000000
--- a/bdb/test/scr016/TestAppendRecno.testout
+++ /dev/null
@@ -1,82 +0,0 @@
-
-*** Iteration 0
-====
-callback #0
-db is table: true
-recno = 1
-internally created dbt: data0_xyz, size 9
-
-*** Iteration 1
-====
-callback #1
-db is table: true
-recno = 2
-internally created dbt: data1_xyz, size 9
-
-*** Iteration 2
-====
-callback #2
-db is table: true
-recno = 3
-internally created dbt: data2_xyz, size 9
-throwing...
-dbe: com.sleepycat.db.DbException: append_recno thrown
-
-*** Iteration 3
-====
-callback #3
-db is table: true
-recno = 3
-internally created dbt: data3_xyz, size 9
-dbe: com.sleepycat.db.DbException: Dbt.size + Dbt.offset greater than array length
-
-*** Iteration 4
-====
-callback #4
-db is table: true
-recno = 3
-internally created dbt: data4_xyz, size 9
-
-*** Iteration 5
-====
-callback #5
-db is table: true
-recno = 4
-internally created dbt: data5_xyz, size 9
-
-*** Iteration 6
-====
-callback #6
-db is table: true
-recno = 5
-internally created dbt: data6_xyz, size 9
-
-*** Iteration 7
-====
-callback #7
-db is table: true
-recno = 6
-internally created dbt: data7_xyz, size 9
-dbe: com.sleepycat.db.DbException: Dbt.data is null
-
-*** Iteration 8
-====
-callback #8
-db is table: true
-recno = 6
-internally created dbt: data8_xyz, size 9
-dbe: com.sleepycat.db.DbException: Dbt.size + Dbt.offset greater than array length
-
-*** Iteration 9
-====
-callback #9
-db is table: true
-recno = 6
-internally created dbt: data9_xyz, size 9
-1 : data0_xyz
-2 : data1_xy
-3 : ata4_xyz
-4 : ata5_xy
-5 : abc
-6 : data9_xyz
-Test finished.
diff --git a/bdb/test/scr016/TestAssociate.java b/bdb/test/scr016/TestAssociate.java
deleted file mode 100644
index 4105b9cb0a1..00000000000
--- a/bdb/test/scr016/TestAssociate.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestAssociate.java,v 1.4 2002/08/16 19:35:54 dda Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.Hashtable;
-
-public class TestAssociate
- implements DbDupCompare
-{
- private static final String FileName = "access.db";
- public static Db saveddb1 = null;
- public static Db saveddb2 = null;
-
- public TestAssociate()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestAssociate\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestAssociate app = new TestAssociate();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestAssociate: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestAssociate: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- public static int counter = 0;
- public static String results[] = { "abc", "def", "ghi", "JKL", "MNO", null };
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on error.
- //
- static public String askForLine(Reader reader,
- PrintStream out, String prompt)
- {
- /*
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- */
- return results[counter++];
- }
-
- // Not terribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- static public String getLine(Reader reader)
- {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- }
- catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- static public String shownull(Object o)
- {
- if (o == null)
- return "null";
- else
- return "not null";
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- DbEnv dbenv = new DbEnv(0);
- dbenv.open("./", Db.DB_CREATE|Db.DB_INIT_MPOOL, 0644);
- (new java.io.File(FileName)).delete();
- Db table = new Db(dbenv, 0);
- Db table2 = new Db(dbenv, 0);
- table2.set_dup_compare(this);
- table2.set_flags(Db.DB_DUPSORT);
- table.set_error_stream(System.err);
- table2.set_error_stream(System.err);
- table.set_errpfx("TestAssociate");
- table2.set_errpfx("TestAssociate(table2)");
- System.out.println("Primary database is " + shownull(table));
- System.out.println("Secondary database is " + shownull(table2));
- saveddb1 = table;
- saveddb2 = table2;
- table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- table2.open(null, FileName + "2", null,
- Db.DB_BTREE, Db.DB_CREATE, 0644);
- table.associate(null, table2, new Capitalize(), 0);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- Reader reader = new StringReader("abc\ndef\njhi");
-
- for (;;) {
- String line = askForLine(reader, System.out, "input> ");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line);
- StringDbt data = new StringDbt(reversed);
-
- try
- {
- int err;
- if ((err = table.put(null,
- key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- System.out.println("");
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table2.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt();
- StringDbt data = new StringDbt();
- StringDbt pkey = new StringDbt();
-
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getString() + " : " + data.getString());
- }
-
- key.setString("BC");
- System.out.println("get BC returns " + table2.get(null, key, data, 0));
- System.out.println(" values: " + key.getString() + " : " + data.getString());
- System.out.println("pget BC returns " + table2.pget(null, key, pkey, data, 0));
- System.out.println(" values: " + key.getString() + " : " + pkey.getString() + " : " + data.getString());
- key.setString("KL");
- System.out.println("get KL returns " + table2.get(null, key, data, 0));
- System.out.println(" values: " + key.getString() + " : " + data.getString());
- System.out.println("pget KL returns " + table2.pget(null, key, pkey, data, 0));
- System.out.println(" values: " + key.getString() + " : " + pkey.getString() + " : " + data.getString());
-
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
-
- public String toString()
- {
- return "StringDbt=" + getString();
- }
- }
-
- /* creates a stupid secondary index as follows:
- For an N letter key, we use N-1 letters starting at
- position 1. If the new letters are already capitalized,
- we return the old array, but with offset set to 1.
- If the letters are not capitalized, we create a new,
- capitalized array. This is pretty stupid for
- an application, but it tests all the paths in the runtime.
- */
- public static class Capitalize implements DbSecondaryKeyCreate
- {
- public int secondary_key_create(Db secondary, Dbt key, Dbt value,
- Dbt result)
- throws DbException
- {
- String which = "unknown db";
- if (saveddb1.equals(secondary)) {
- which = "primary";
- }
- else if (saveddb2.equals(secondary)) {
- which = "secondary";
- }
- System.out.println("secondary_key_create, Db: " + shownull(secondary) + "(" + which + "), key: " + show_dbt(key) + ", data: " + show_dbt(value));
- int len = key.get_size();
- byte[] arr = key.get_data();
- boolean capped = true;
-
- if (len < 1)
- throw new DbException("bad key");
-
- if (len < 2)
- return Db.DB_DONOTINDEX;
-
- result.set_size(len - 1);
- for (int i=1; capped && i<len; i++) {
- if (!Character.isUpperCase((char)arr[i]))
- capped = false;
- }
- if (capped) {
- System.out.println(" creating key(1): " + new String(arr, 1, len-1));
- result.set_data(arr);
- result.set_offset(1);
- }
- else {
- System.out.println(" creating key(2): " + (new String(arr)).substring(1).
- toUpperCase());
- result.set_data((new String(arr)).substring(1).
- toUpperCase().getBytes());
- }
- return 0;
- }
- }
-
- public int dup_compare(Db db, Dbt dbt1, Dbt dbt2)
- {
- System.out.println("compare");
- int sz1 = dbt1.get_size();
- int sz2 = dbt2.get_size();
- if (sz1 < sz2)
- return -1;
- if (sz1 > sz2)
- return 1;
- byte[] data1 = dbt1.get_data();
- byte[] data2 = dbt2.get_data();
- for (int i=0; i<sz1; i++)
- if (data1[i] != data2[i])
- return (data1[i] < data2[i] ? -1 : 1);
- return 0;
- }
-
- public static int nseen = 0;
- public static Hashtable ht = new Hashtable();
-
- public static String show_dbt(Dbt dbt)
- {
- String name;
-
- if (dbt == null)
- return "null dbt";
-
- name = (String)ht.get(dbt);
- if (name == null) {
- name = "Dbt" + (nseen++);
- ht.put(dbt, name);
- }
-
- byte[] value = dbt.get_data();
- if (value == null)
- return name + "(null)";
- else
- return name + "(\"" + new String(value) + "\")";
- }
-}
-
-
diff --git a/bdb/test/scr016/TestAssociate.testout b/bdb/test/scr016/TestAssociate.testout
deleted file mode 100644
index 34414b660d1..00000000000
--- a/bdb/test/scr016/TestAssociate.testout
+++ /dev/null
@@ -1,30 +0,0 @@
-Primary database is not null
-Secondary database is not null
-secondary_key_create, Db: not null(secondary), key: Dbt0("abc"), data: Dbt1("cba")
- creating key(2): BC
-
-secondary_key_create, Db: not null(secondary), key: Dbt2("def"), data: Dbt3("fed")
- creating key(2): EF
-
-secondary_key_create, Db: not null(secondary), key: Dbt4("ghi"), data: Dbt5("ihg")
- creating key(2): HI
-
-secondary_key_create, Db: not null(secondary), key: Dbt6("JKL"), data: Dbt7("LKJ")
- creating key(1): KL
-
-secondary_key_create, Db: not null(secondary), key: Dbt8("MNO"), data: Dbt9("ONM")
- creating key(1): NO
-
-BC : cba
-EF : fed
-HI : ihg
-KL : LKJ
-NO : ONM
-get BC returns 0
- values: BC : cba
-pget BC returns 0
- values: BC : abc : cba
-get KL returns 0
- values: KL : LKJ
-pget KL returns 0
- values: KL : JKL : LKJ
diff --git a/bdb/test/scr016/TestClosedDb.java b/bdb/test/scr016/TestClosedDb.java
deleted file mode 100644
index 3bd6e5380f8..00000000000
--- a/bdb/test/scr016/TestClosedDb.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestClosedDb.java,v 1.4 2002/01/23 14:29:51 bostic Exp $
- */
-
-/*
- * Close the Db, and make sure operations after that fail gracefully.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestClosedDb
-{
- public static void main(String[] args)
- {
- try {
- Db db = new Db(null, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- // populate our massive database.
- Dbt keydbt = new Dbt("key".getBytes());
- Dbt datadbt = new Dbt("data".getBytes());
- db.put(null, keydbt, datadbt, 0);
-
- // Now, retrieve. We could use keydbt over again,
- // but that wouldn't be typical in an application.
- Dbt goodkeydbt = new Dbt("key".getBytes());
- Dbt badkeydbt = new Dbt("badkey".getBytes());
- Dbt resultdbt = new Dbt();
- resultdbt.set_flags(Db.DB_DBT_MALLOC);
-
- int ret;
-
- // Close the db - subsequent operations should fail
- // by throwing an exception.
- db.close(0);
- try {
- db.get(null, goodkeydbt, resultdbt, 0);
- System.out.println("Error - did not expect to get this far.");
- }
- catch (DbException dbe) {
- System.out.println("Got expected Db Exception: " + dbe);
- }
- System.out.println("finished test");
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
-
- }
-
-}
diff --git a/bdb/test/scr016/TestClosedDb.testout b/bdb/test/scr016/TestClosedDb.testout
deleted file mode 100644
index ce13883f63a..00000000000
--- a/bdb/test/scr016/TestClosedDb.testout
+++ /dev/null
@@ -1,2 +0,0 @@
-Got expected Db Exception: com.sleepycat.db.DbException: null object: Invalid argument
-finished test
diff --git a/bdb/test/scr016/TestConstruct01.java b/bdb/test/scr016/TestConstruct01.java
deleted file mode 100644
index b60073ebc0d..00000000000
--- a/bdb/test/scr016/TestConstruct01.java
+++ /dev/null
@@ -1,474 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestConstruct01.java,v 1.6 2002/01/23 14:29:51 bostic Exp $
- */
-
-/*
- * Do some regression tests for constructors.
- * Run normally (without arguments) it is a simple regression test.
- * Run with a numeric argument, it repeats the regression a number
- * of times, to try to determine if there are memory leaks.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-
-public class TestConstruct01
-{
- public static final String CONSTRUCT01_DBNAME = "construct01.db";
- public static final String CONSTRUCT01_DBDIR = "/tmp";
- public static final String CONSTRUCT01_DBFULLPATH =
- CONSTRUCT01_DBDIR + "/" + CONSTRUCT01_DBNAME;
-
- private int itemcount; // count the number of items in the database
- public static boolean verbose_flag = false;
-
- public static void ERR(String a)
- {
- System.out.println("FAIL: " + a);
- System.err.println("FAIL: " + a);
- sysexit(1);
- }
-
- public static void DEBUGOUT(String s)
- {
- System.out.println(s);
- }
-
- public static void VERBOSEOUT(String s)
- {
- if (verbose_flag)
- System.out.println(s);
- }
-
- public static void sysexit(int code)
- {
- System.exit(code);
- }
-
- private static void check_file_removed(String name, boolean fatal,
- boolean force_remove_first)
- {
- File f = new File(name);
- if (force_remove_first) {
- f.delete();
- }
- if (f.exists()) {
- if (fatal)
- System.out.print("FAIL: ");
- System.out.print("File \"" + name + "\" still exists after run\n");
- if (fatal)
- sysexit(1);
- }
- }
-
-
- // Check that key/data for 0 - count-1 are already present,
- // and write a key/data for count. The key and data are
- // both "0123...N" where N == count-1.
- //
- // For some reason on Windows, we need to open using the full pathname
- // of the file when there is no environment, thus the 'has_env'
- // variable.
- //
- void rundb(Db db, int count, boolean has_env, TestOptions options)
- throws DbException, FileNotFoundException
- {
- String name;
-
- if (has_env)
- name = CONSTRUCT01_DBNAME;
- else
- name = CONSTRUCT01_DBFULLPATH;
-
- db.set_error_stream(System.err);
-
- // We don't really care about the pagesize, but we do want
- // to make sure adjusting Db specific variables works before
- // opening the db.
- //
- db.set_pagesize(1024);
- db.open(null, name, null, Db.DB_BTREE,
- (count != 0) ? 0 : Db.DB_CREATE, 0664);
-
-
- // The bit map of keys we've seen
- long bitmap = 0;
-
- // The bit map of keys we expect to see
- long expected = (1 << (count+1)) - 1;
-
- byte outbuf[] = new byte[count+1];
- int i;
- for (i=0; i<count; i++) {
- outbuf[i] = (byte)('0' + i);
- //outbuf[i] = System.out.println((byte)('0' + i);
- }
- outbuf[i++] = (byte)'x';
-
- /*
- System.out.println("byte: " + ('0' + 0) + ", after: " +
- (int)'0' + "=" + (int)('0' + 0) +
- "," + (byte)outbuf[0]);
- */
-
- Dbt key = new Dbt(outbuf, 0, i);
- Dbt data = new Dbt(outbuf, 0, i);
-
- //DEBUGOUT("Put: " + (char)outbuf[0] + ": " + new String(outbuf));
- db.put(null, key, data, Db.DB_NOOVERWRITE);
-
- // Acquire a cursor for the table.
- Dbc dbcp = db.cursor(null, 0);
-
- // Walk through the table, checking
- Dbt readkey = new Dbt();
- Dbt readdata = new Dbt();
- Dbt whoknows = new Dbt();
-
- readkey.set_flags(options.dbt_alloc_flags);
- readdata.set_flags(options.dbt_alloc_flags);
-
- //DEBUGOUT("Dbc.get");
- while (dbcp.get(readkey, readdata, Db.DB_NEXT) == 0) {
- String key_string = new String(readkey.get_data());
- String data_string = new String(readdata.get_data());
- //DEBUGOUT("Got: " + key_string + ": " + data_string);
- int len = key_string.length();
- if (len <= 0 || key_string.charAt(len-1) != 'x') {
- ERR("reread terminator is bad");
- }
- len--;
- long bit = (1 << len);
- if (len > count) {
- ERR("reread length is bad: expect " + count + " got "+ len + " (" + key_string + ")" );
- }
- else if (!data_string.equals(key_string)) {
- ERR("key/data don't match");
- }
- else if ((bitmap & bit) != 0) {
- ERR("key already seen");
- }
- else if ((expected & bit) == 0) {
- ERR("key was not expected");
- }
- else {
- bitmap |= bit;
- expected &= ~(bit);
- for (i=0; i<len; i++) {
- if (key_string.charAt(i) != ('0' + i)) {
- System.out.print(" got " + key_string
- + " (" + (int)key_string.charAt(i)
- + "), wanted " + i
- + " (" + (int)('0' + i)
- + ") at position " + i + "\n");
- ERR("key is corrupt");
- }
- }
- }
- }
- if (expected != 0) {
- System.out.print(" expected more keys, bitmap is: " + expected + "\n");
- ERR("missing keys in database");
- }
- dbcp.close();
- db.close(0);
- }
-
- void t1(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- rundb(db, itemcount++, false, options);
- }
-
- void t2(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- rundb(db, itemcount++, false, options);
- // rundb(db, itemcount++, false, options);
- // rundb(db, itemcount++, false, options);
- }
-
- void t3(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- // rundb(db, itemcount++, false, options);
- db.set_errpfx("test3");
- for (int i=0; i<100; i++)
- db.set_errpfx("str" + i);
- rundb(db, itemcount++, false, options);
- }
-
- void t4(TestOptions options)
- throws DbException, FileNotFoundException
- {
- DbEnv env = new DbEnv(0);
- env.open(CONSTRUCT01_DBDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0);
- Db db = new Db(env, 0);
- /**/
- //rundb(db, itemcount++, true, options);
- db.set_errpfx("test4");
- rundb(db, itemcount++, true, options);
- /**/
- env.close(0);
- }
-
- void t5(TestOptions options)
- throws DbException, FileNotFoundException
- {
- DbEnv env = new DbEnv(0);
- env.open(CONSTRUCT01_DBDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0);
- Db db = new Db(env, 0);
- // rundb(db, itemcount++, true, options);
- db.set_errpfx("test5");
- rundb(db, itemcount++, true, options);
- /*
- env.close(0);
-
- // reopen the environment, don't recreate
- env.open(CONSTRUCT01_DBDIR, Db.DB_INIT_MPOOL, 0);
- // Note we cannot reuse the old Db!
- */
- Db anotherdb = new Db(env, 0);
-
- // rundb(anotherdb, itemcount++, true, options);
- anotherdb.set_errpfx("test5");
- rundb(anotherdb, itemcount++, true, options);
- env.close(0);
- }
-
- void t6(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- DbEnv dbenv = new DbEnv(0);
- db.close(0);
- dbenv.close(0);
-
- System.gc();
- System.runFinalization();
- }
-
- // By design, t7 leaves a db and dbenv open; it should be detected.
- void t7(TestOptions options)
- throws DbException, FileNotFoundException
- {
- Db db = new Db(null, 0);
- DbEnv dbenv = new DbEnv(0);
-
- System.gc();
- System.runFinalization();
- }
-
- // remove any existing environment or database
- void removeall(boolean use_db)
- {
- {
- if (use_db) {
- try {
- /**/
- //memory leak for this:
- Db tmpdb = new Db(null, 0);
- tmpdb.remove(CONSTRUCT01_DBFULLPATH, null, 0);
- /**/
- DbEnv tmpenv = new DbEnv(0);
- tmpenv.remove(CONSTRUCT01_DBDIR, Db.DB_FORCE);
- }
- catch (DbException dbe) {
- System.err.println("error during remove: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- //expected error:
- // System.err.println("error during remove: " + fnfe);
- }
- }
- }
- check_file_removed(CONSTRUCT01_DBFULLPATH, true, !use_db);
- for (int i=0; i<8; i++) {
- String fname = "__db.00" + i;
- check_file_removed(fname, true, !use_db);
- }
- }
-
- boolean doall(TestOptions options)
- {
- itemcount = 0;
- try {
- removeall((options.testmask & 1) != 0);
- for (int item=1; item<32; item++) {
- if ((options.testmask & (1 << item)) != 0) {
- VERBOSEOUT(" Running test " + item + ":");
- switch (item) {
- case 1:
- t1(options);
- break;
- case 2:
- t2(options);
- break;
- case 3:
- t3(options);
- break;
- case 4:
- t4(options);
- break;
- case 5:
- t5(options);
- break;
- case 6:
- t6(options);
- break;
- case 7:
- t7(options);
- break;
- default:
- ERR("unknown test case: " + item);
- break;
- }
- VERBOSEOUT(" finished.\n");
- }
- }
- removeall((options.testmask & 1) != 0);
- options.successcounter++;
- return true;
- }
- catch (DbException dbe) {
- ERR("EXCEPTION RECEIVED: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- ERR("EXCEPTION RECEIVED: " + fnfe);
- }
- return false;
- }
-
- public static void main(String args[])
- {
- int iterations = 200;
- int mask = 0x7f;
-
- // Make sure the database file is removed before we start.
- check_file_removed(CONSTRUCT01_DBFULLPATH, true, true);
-
- for (int argcnt=0; argcnt<args.length; argcnt++) {
- String arg = args[argcnt];
- if (arg.charAt(0) == '-') {
- // keep on lower bit, which means to remove db between tests.
- mask = 1;
- for (int pos=1; pos<arg.length(); pos++) {
- char ch = arg.charAt(pos);
- if (ch >= '0' && ch <= '9') {
- mask |= (1 << (ch - '0'));
- }
- else if (ch == 'v') {
- verbose_flag = true;
- }
- else {
- ERR("Usage: construct01 [-testdigits] count");
- }
- }
- VERBOSEOUT("mask = " + mask);
-
- }
- else {
- try {
- iterations = Integer.parseInt(arg);
- if (iterations < 0) {
- ERR("Usage: construct01 [-testdigits] count");
- }
- }
- catch (NumberFormatException nfe) {
- ERR("EXCEPTION RECEIVED: " + nfe);
- }
- }
- }
-
- // Run GC before and after the test to give
- // a baseline for any Java memory used.
- //
- System.gc();
- System.runFinalization();
- VERBOSEOUT("gc complete");
- long starttotal = Runtime.getRuntime().totalMemory();
- long startfree = Runtime.getRuntime().freeMemory();
-
- TestConstruct01 con = new TestConstruct01();
- int[] dbt_flags = { 0, Db.DB_DBT_MALLOC, Db.DB_DBT_REALLOC };
- String[] dbt_flags_name = { "default", "malloc", "realloc" };
-
- TestOptions options = new TestOptions();
- options.testmask = mask;
-
- for (int flagiter = 0; flagiter < dbt_flags.length; flagiter++) {
- options.dbt_alloc_flags = dbt_flags[flagiter];
-
- VERBOSEOUT("Running with DBT alloc flags: " +
- dbt_flags_name[flagiter]);
- for (int i=0; i<iterations; i++) {
- if (iterations != 0) {
- VERBOSEOUT("(" + i + "/" + iterations + ") ");
- }
- VERBOSEOUT("construct01 running:");
- if (!con.doall(options)) {
- ERR("SOME TEST FAILED");
- }
- else {
- VERBOSEOUT("\nTESTS SUCCESSFUL");
- }
-
- // We continually run GC during the test to keep
- // the Java memory usage low. That way we can
- // monitor the total memory usage externally
- // (e.g. via ps) and verify that we aren't leaking
- // memory in the JNI or DB layer.
- //
- System.gc();
- System.runFinalization();
- VERBOSEOUT("gc complete");
- }
- }
-
- if (options.successcounter == 600) {
- System.out.println("ALL TESTS SUCCESSFUL");
- }
- else {
- System.out.println("***FAIL: " + (600 - options.successcounter) +
- " tests did not complete");
- }
- long endtotal = Runtime.getRuntime().totalMemory();
- long endfree = Runtime.getRuntime().freeMemory();
-
- System.out.println("delta for total mem: " + magnitude(endtotal - starttotal));
- System.out.println("delta for free mem: " + magnitude(endfree - startfree));
-
- return;
- }
-
- static String magnitude(long value)
- {
- final long max = 10000000;
- for (long scale = 10; scale <= max; scale *= 10) {
- if (value < scale && value > -scale)
- return "<" + scale;
- }
- return ">" + max;
- }
-
-}
-
-class TestOptions
-{
- int testmask = 0; // which tests to run
- int dbt_alloc_flags = 0; // DB_DBT_* flags to use
- int successcounter =0;
-}
-
diff --git a/bdb/test/scr016/TestConstruct01.testerr b/bdb/test/scr016/TestConstruct01.testerr
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/bdb/test/scr016/TestConstruct01.testerr
+++ /dev/null
diff --git a/bdb/test/scr016/TestConstruct01.testout b/bdb/test/scr016/TestConstruct01.testout
deleted file mode 100644
index 5d2041cd197..00000000000
--- a/bdb/test/scr016/TestConstruct01.testout
+++ /dev/null
@@ -1,3 +0,0 @@
-ALL TESTS SUCCESSFUL
-delta for total mem: <10
-delta for free mem: <10000
diff --git a/bdb/test/scr016/TestConstruct02.java b/bdb/test/scr016/TestConstruct02.java
deleted file mode 100644
index 5bbb55ccd56..00000000000
--- a/bdb/test/scr016/TestConstruct02.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestConstruct02.java,v 1.6 2002/08/16 19:35:54 dda Exp $
- */
-
-/*
- * Do some regression tests for constructors.
- * Run normally (without arguments) it is a simple regression test.
- * Run with a numeric argument, it repeats the regression a number
- * of times, to try to determine if there are memory leaks.
- */
-
-package com.sleepycat.test;
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-
-public class TestConstruct02
-{
- public static final String CONSTRUCT02_DBNAME = "construct02.db";
- public static final String CONSTRUCT02_DBDIR = "./";
- public static final String CONSTRUCT02_DBFULLPATH =
- CONSTRUCT02_DBDIR + "/" + CONSTRUCT02_DBNAME;
-
- private int itemcount; // count the number of items in the database
- public static boolean verbose_flag = false;
-
- private DbEnv dbenv = new DbEnv(0);
-
- public TestConstruct02()
- throws DbException, FileNotFoundException
- {
- dbenv.open(CONSTRUCT02_DBDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0666);
- }
-
- public void close()
- {
- try {
- dbenv.close(0);
- removeall(true, true);
- }
- catch (DbException dbe) {
- ERR("DbException: " + dbe);
- }
- }
-
- public static void ERR(String a)
- {
- System.out.println("FAIL: " + a);
- sysexit(1);
- }
-
- public static void DEBUGOUT(String s)
- {
- System.out.println(s);
- }
-
- public static void VERBOSEOUT(String s)
- {
- if (verbose_flag)
- System.out.println(s);
- }
-
- public static void sysexit(int code)
- {
- System.exit(code);
- }
-
- private static void check_file_removed(String name, boolean fatal,
- boolean force_remove_first)
- {
- File f = new File(name);
- if (force_remove_first) {
- f.delete();
- }
- if (f.exists()) {
- if (fatal)
- System.out.print("FAIL: ");
- System.out.print("File \"" + name + "\" still exists after run\n");
- if (fatal)
- sysexit(1);
- }
- }
-
-
- // Check that key/data for 0 - count-1 are already present,
- // and write a key/data for count. The key and data are
- // both "0123...N" where N == count-1.
- //
- void rundb(Db db, int count)
- throws DbException, FileNotFoundException
- {
- if (count >= 64)
- throw new IllegalArgumentException("rundb count arg >= 64");
-
- // The bit map of keys we've seen
- long bitmap = 0;
-
- // The bit map of keys we expect to see
- long expected = (1 << (count+1)) - 1;
-
- byte outbuf[] = new byte[count+1];
- int i;
- for (i=0; i<count; i++) {
- outbuf[i] = (byte)('0' + i);
- }
- outbuf[i++] = (byte)'x';
-
- Dbt key = new Dbt(outbuf, 0, i);
- Dbt data = new Dbt(outbuf, 0, i);
-
- db.put(null, key, data, Db.DB_NOOVERWRITE);
-
- // Acquire a cursor for the table.
- Dbc dbcp = db.cursor(null, 0);
-
- // Walk through the table, checking
- Dbt readkey = new Dbt();
- Dbt readdata = new Dbt();
- Dbt whoknows = new Dbt();
-
- readkey.set_flags(Db.DB_DBT_MALLOC);
- readdata.set_flags(Db.DB_DBT_MALLOC);
-
- while (dbcp.get(readkey, readdata, Db.DB_NEXT) == 0) {
- byte[] key_bytes = readkey.get_data();
- byte[] data_bytes = readdata.get_data();
-
- int len = key_bytes.length;
- if (len != data_bytes.length) {
- ERR("key and data are different");
- }
- for (i=0; i<len-1; i++) {
- byte want = (byte)('0' + i);
- if (key_bytes[i] != want || data_bytes[i] != want) {
- System.out.println(" got " + new String(key_bytes) +
- "/" + new String(data_bytes));
- ERR("key or data is corrupt");
- }
- }
- if (len <= 0 ||
- key_bytes[len-1] != (byte)'x' ||
- data_bytes[len-1] != (byte)'x') {
- ERR("reread terminator is bad");
- }
- len--;
- long bit = (1 << len);
- if (len > count) {
- ERR("reread length is bad: expect " + count + " got "+ len);
- }
- else if ((bitmap & bit) != 0) {
- ERR("key already seen");
- }
- else if ((expected & bit) == 0) {
- ERR("key was not expected");
- }
- bitmap |= bit;
- expected &= ~(bit);
- }
- if (expected != 0) {
- System.out.print(" expected more keys, bitmap is: " +
- expected + "\n");
- ERR("missing keys in database");
- }
- dbcp.close();
- }
-
- void t1()
- throws DbException, FileNotFoundException
- {
- Db db = new Db(dbenv, 0);
- db.set_error_stream(System.err);
- db.set_pagesize(1024);
- db.open(null, CONSTRUCT02_DBNAME, null, Db.DB_BTREE,
- Db.DB_CREATE, 0664);
-
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- db.close(0);
-
- // Reopen no longer allowed, so we create a new db.
- db = new Db(dbenv, 0);
- db.set_error_stream(System.err);
- db.set_pagesize(1024);
- db.open(null, CONSTRUCT02_DBNAME, null, Db.DB_BTREE,
- Db.DB_CREATE, 0664);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- rundb(db, itemcount++);
- db.close(0);
- }
-
- // remove any existing environment or database
- void removeall(boolean use_db, boolean remove_env)
- {
- {
- try {
- if (remove_env) {
- DbEnv tmpenv = new DbEnv(0);
- tmpenv.remove(CONSTRUCT02_DBDIR, Db.DB_FORCE);
- }
- else if (use_db) {
- /**/
- //memory leak for this:
- Db tmpdb = new Db(null, 0);
- tmpdb.remove(CONSTRUCT02_DBFULLPATH, null, 0);
- /**/
- }
- }
- catch (DbException dbe) {
- System.err.println("error during remove: " + dbe);
- }
- catch (FileNotFoundException dbe) {
- System.err.println("error during remove: " + dbe);
- }
- }
- check_file_removed(CONSTRUCT02_DBFULLPATH, true, !use_db);
- if (remove_env) {
- for (int i=0; i<8; i++) {
- String fname = "__db.00" + i;
- check_file_removed(fname, true, !use_db);
- }
- }
- }
-
- boolean doall()
- {
- itemcount = 0;
- try {
- VERBOSEOUT(" Running test 1:\n");
- t1();
- VERBOSEOUT(" finished.\n");
- removeall(true, false);
- return true;
- }
- catch (DbException dbe) {
- ERR("EXCEPTION RECEIVED: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- ERR("EXCEPTION RECEIVED: " + fnfe);
- }
- return false;
- }
-
- public static void main(String args[])
- {
- int iterations = 200;
-
- for (int argcnt=0; argcnt<args.length; argcnt++) {
- String arg = args[argcnt];
- try {
- iterations = Integer.parseInt(arg);
- if (iterations < 0) {
- ERR("Usage: construct02 [-testdigits] count");
- }
- }
- catch (NumberFormatException nfe) {
- ERR("EXCEPTION RECEIVED: " + nfe);
- }
- }
-
- System.gc();
- System.runFinalization();
- VERBOSEOUT("gc complete");
- long starttotal = Runtime.getRuntime().totalMemory();
- long startfree = Runtime.getRuntime().freeMemory();
- TestConstruct02 con = null;
-
- try {
- con = new TestConstruct02();
- }
- catch (DbException dbe) {
- System.err.println("Exception: " + dbe);
- System.exit(1);
- }
- catch (java.io.FileNotFoundException fnfe) {
- System.err.println("Exception: " + fnfe);
- System.exit(1);
- }
-
- for (int i=0; i<iterations; i++) {
- if (iterations != 0) {
- VERBOSEOUT("(" + i + "/" + iterations + ") ");
- }
- VERBOSEOUT("construct02 running:\n");
- if (!con.doall()) {
- ERR("SOME TEST FAILED");
- }
- System.gc();
- System.runFinalization();
- VERBOSEOUT("gc complete");
-
- }
- con.close();
-
- System.out.print("ALL TESTS SUCCESSFUL\n");
-
- long endtotal = Runtime.getRuntime().totalMemory();
- long endfree = Runtime.getRuntime().freeMemory();
-
- System.out.println("delta for total mem: " + magnitude(endtotal - starttotal));
- System.out.println("delta for free mem: " + magnitude(endfree - startfree));
-
- return;
- }
-
- static String magnitude(long value)
- {
- final long max = 10000000;
- for (long scale = 10; scale <= max; scale *= 10) {
- if (value < scale && value > -scale)
- return "<" + scale;
- }
- return ">" + max;
- }
-}
diff --git a/bdb/test/scr016/TestConstruct02.testout b/bdb/test/scr016/TestConstruct02.testout
deleted file mode 100644
index 5d2041cd197..00000000000
--- a/bdb/test/scr016/TestConstruct02.testout
+++ /dev/null
@@ -1,3 +0,0 @@
-ALL TESTS SUCCESSFUL
-delta for total mem: <10
-delta for free mem: <10000
diff --git a/bdb/test/scr016/TestDbtFlags.java b/bdb/test/scr016/TestDbtFlags.java
deleted file mode 100644
index 98527e6b3e7..00000000000
--- a/bdb/test/scr016/TestDbtFlags.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestDbtFlags.java,v 1.4 2002/08/16 19:35:54 dda Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestDbtFlags
-{
- private static final String FileName = "access.db";
- private int flag_value;
- private int buf_size;
- private int cur_input_line = 0;
-
- /*zippy quotes for test input*/
- static final String[] input_lines = {
- "If we shadows have offended",
- "Think but this, and all is mended",
- "That you have but slumber'd here",
- "While these visions did appear",
- "And this weak and idle theme",
- "No more yielding but a dream",
- "Gentles, do not reprehend",
- "if you pardon, we will mend",
- "And, as I am an honest Puck, if we have unearned luck",
- "Now to 'scape the serpent's tongue, we will make amends ere long;",
- "Else the Puck a liar call; so, good night unto you all.",
- "Give me your hands, if we be friends, and Robin shall restore amends."
- };
-
- public TestDbtFlags(int flag_value, int buf_size)
- {
- this.flag_value = flag_value;
- this.buf_size = buf_size;
- }
-
- public static void runWithFlags(int flag_value, int size)
- {
- String msg = "=-=-=-= Test with DBT flags " + flag_value +
- " bufsize " + size;
- System.out.println(msg);
- System.err.println(msg);
-
- try
- {
- TestDbtFlags app = new TestDbtFlags(flag_value, size);
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestDbtFlags: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestDbtFlags: " + fnfe.toString());
- System.exit(1);
- }
- }
-
- public static void main(String argv[])
- {
- runWithFlags(Db.DB_DBT_MALLOC, -1);
- runWithFlags(Db.DB_DBT_REALLOC, -1);
- runWithFlags(Db.DB_DBT_USERMEM, 20);
- runWithFlags(Db.DB_DBT_USERMEM, 50);
- runWithFlags(Db.DB_DBT_USERMEM, 200);
- runWithFlags(0, -1);
-
- System.exit(0);
- }
-
- String get_input_line()
- {
- if (cur_input_line >= input_lines.length)
- return null;
- return input_lines[cur_input_line++];
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- Db table = new Db(null, 0);
- table.set_error_stream(System.err);
- table.set_errpfx("TestDbtFlags");
- table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- for (;;) {
- //System.err.println("input line " + cur_input_line);
- String line = get_input_line();
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line, flag_value);
- StringDbt data = new StringDbt(reversed, flag_value);
-
- try
- {
- int err;
- if ((err = table.put(null,
- key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- key.check_flags();
- data.check_flags();
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt(flag_value, buf_size);
- StringDbt data = new StringDbt(flag_value, buf_size);
-
- int iteration_count = 0;
- int dbreturn = 0;
-
- while (dbreturn == 0) {
- //System.err.println("iteration " + iteration_count);
- try {
- if ((dbreturn = iterator.get(key, data, Db.DB_NEXT)) == 0) {
- System.out.println(key.get_string() + " : " + data.get_string());
- }
- }
- catch (DbMemoryException dme) {
- /* In a real application, we'd normally increase
- * the size of the buffer. Since we've created
- * this error condition for testing, we'll just report it.
- * We still need to skip over this record, and we don't
- * want to mess with our original Dbt's, since we want
- * to see more errors. So create some temporary
- * mallocing Dbts to get this record.
- */
- System.err.println("exception, iteration " + iteration_count +
- ": " + dme);
- System.err.println(" key size: " + key.get_size() +
- " ulen: " + key.get_ulen());
- System.err.println(" data size: " + key.get_size() +
- " ulen: " + key.get_ulen());
-
- dme.get_dbt().set_size(buf_size);
- StringDbt tempkey = new StringDbt(Db.DB_DBT_MALLOC, -1);
- StringDbt tempdata = new StringDbt(Db.DB_DBT_MALLOC, -1);
- if ((dbreturn = iterator.get(tempkey, tempdata, Db.DB_NEXT)) != 0) {
- System.err.println("cannot get expected next record");
- return;
- }
- System.out.println(tempkey.get_string() + " : " +
- tempdata.get_string());
- }
- iteration_count++;
- }
- key.check_flags();
- data.check_flags();
-
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- int saved_flags;
-
- StringDbt(int flags, int buf_size)
- {
- this.saved_flags = flags;
- set_flags(saved_flags);
- if (buf_size != -1) {
- set_data(new byte[buf_size]);
- set_ulen(buf_size);
- }
- }
-
- StringDbt(String value, int flags)
- {
- this.saved_flags = flags;
- set_flags(saved_flags);
- set_string(value);
- }
-
- void set_string(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- check_flags();
- }
-
- String get_string()
- {
- check_flags();
- return new String(get_data(), 0, get_size());
- }
-
- void check_flags()
- {
- int actual_flags = get_flags();
- if (actual_flags != saved_flags) {
- System.err.println("flags botch: expected " + saved_flags +
- ", got " + actual_flags);
- }
- }
- }
-}
diff --git a/bdb/test/scr016/TestDbtFlags.testerr b/bdb/test/scr016/TestDbtFlags.testerr
deleted file mode 100644
index 7666868ebd4..00000000000
--- a/bdb/test/scr016/TestDbtFlags.testerr
+++ /dev/null
@@ -1,54 +0,0 @@
-=-=-=-= Test with DBT flags 4 bufsize -1
-=-=-=-= Test with DBT flags 16 bufsize -1
-=-=-=-= Test with DBT flags 32 bufsize 20
-exception, iteration 0: Dbt not large enough for available data
- key size: 28 ulen: 20
- data size: 28 ulen: 20
-exception, iteration 1: Dbt not large enough for available data
- key size: 53 ulen: 20
- data size: 53 ulen: 20
-exception, iteration 2: Dbt not large enough for available data
- key size: 55 ulen: 20
- data size: 55 ulen: 20
-exception, iteration 3: Dbt not large enough for available data
- key size: 25 ulen: 20
- data size: 25 ulen: 20
-exception, iteration 4: Dbt not large enough for available data
- key size: 69 ulen: 20
- data size: 69 ulen: 20
-exception, iteration 5: Dbt not large enough for available data
- key size: 27 ulen: 20
- data size: 27 ulen: 20
-exception, iteration 6: Dbt not large enough for available data
- key size: 28 ulen: 20
- data size: 28 ulen: 20
-exception, iteration 7: Dbt not large enough for available data
- key size: 65 ulen: 20
- data size: 65 ulen: 20
-exception, iteration 8: Dbt not large enough for available data
- key size: 32 ulen: 20
- data size: 32 ulen: 20
-exception, iteration 9: Dbt not large enough for available data
- key size: 33 ulen: 20
- data size: 33 ulen: 20
-exception, iteration 10: Dbt not large enough for available data
- key size: 30 ulen: 20
- data size: 30 ulen: 20
-exception, iteration 11: Dbt not large enough for available data
- key size: 27 ulen: 20
- data size: 27 ulen: 20
-=-=-=-= Test with DBT flags 32 bufsize 50
-exception, iteration 1: Dbt not large enough for available data
- key size: 53 ulen: 50
- data size: 53 ulen: 50
-exception, iteration 2: Dbt not large enough for available data
- key size: 55 ulen: 50
- data size: 55 ulen: 50
-exception, iteration 4: Dbt not large enough for available data
- key size: 69 ulen: 50
- data size: 69 ulen: 50
-exception, iteration 7: Dbt not large enough for available data
- key size: 65 ulen: 50
- data size: 65 ulen: 50
-=-=-=-= Test with DBT flags 32 bufsize 200
-=-=-=-= Test with DBT flags 0 bufsize -1
diff --git a/bdb/test/scr016/TestDbtFlags.testout b/bdb/test/scr016/TestDbtFlags.testout
deleted file mode 100644
index b8deb1bcc16..00000000000
--- a/bdb/test/scr016/TestDbtFlags.testout
+++ /dev/null
@@ -1,78 +0,0 @@
-=-=-=-= Test with DBT flags 4 bufsize -1
-And this weak and idle theme : emeht eldi dna kaew siht dnA
-And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA
-Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE
-Gentles, do not reprehend : dneherper ton od ,seltneG
-Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG
-If we shadows have offended : dedneffo evah swodahs ew fI
-No more yielding but a dream : maerd a tub gnidleiy erom oN
-Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN
-That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT
-Think but this, and all is mended : dednem si lla dna ,siht tub knihT
-While these visions did appear : raeppa did snoisiv eseht elihW
-if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi
-=-=-=-= Test with DBT flags 16 bufsize -1
-And this weak and idle theme : emeht eldi dna kaew siht dnA
-And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA
-Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE
-Gentles, do not reprehend : dneherper ton od ,seltneG
-Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG
-If we shadows have offended : dedneffo evah swodahs ew fI
-No more yielding but a dream : maerd a tub gnidleiy erom oN
-Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN
-That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT
-Think but this, and all is mended : dednem si lla dna ,siht tub knihT
-While these visions did appear : raeppa did snoisiv eseht elihW
-if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi
-=-=-=-= Test with DBT flags 32 bufsize 20
-And this weak and idle theme : emeht eldi dna kaew siht dnA
-And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA
-Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE
-Gentles, do not reprehend : dneherper ton od ,seltneG
-Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG
-If we shadows have offended : dedneffo evah swodahs ew fI
-No more yielding but a dream : maerd a tub gnidleiy erom oN
-Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN
-That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT
-Think but this, and all is mended : dednem si lla dna ,siht tub knihT
-While these visions did appear : raeppa did snoisiv eseht elihW
-if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi
-=-=-=-= Test with DBT flags 32 bufsize 50
-And this weak and idle theme : emeht eldi dna kaew siht dnA
-And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA
-Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE
-Gentles, do not reprehend : dneherper ton od ,seltneG
-Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG
-If we shadows have offended : dedneffo evah swodahs ew fI
-No more yielding but a dream : maerd a tub gnidleiy erom oN
-Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN
-That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT
-Think but this, and all is mended : dednem si lla dna ,siht tub knihT
-While these visions did appear : raeppa did snoisiv eseht elihW
-if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi
-=-=-=-= Test with DBT flags 32 bufsize 200
-And this weak and idle theme : emeht eldi dna kaew siht dnA
-And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA
-Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE
-Gentles, do not reprehend : dneherper ton od ,seltneG
-Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG
-If we shadows have offended : dedneffo evah swodahs ew fI
-No more yielding but a dream : maerd a tub gnidleiy erom oN
-Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN
-That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT
-Think but this, and all is mended : dednem si lla dna ,siht tub knihT
-While these visions did appear : raeppa did snoisiv eseht elihW
-if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi
-=-=-=-= Test with DBT flags 0 bufsize -1
-And this weak and idle theme : emeht eldi dna kaew siht dnA
-And, as I am an honest Puck, if we have unearned luck : kcul denraenu evah ew fi ,kcuP tsenoh na ma I sa ,dnA
-Else the Puck a liar call; so, good night unto you all. : .lla uoy otnu thgin doog ,os ;llac rail a kcuP eht eslE
-Gentles, do not reprehend : dneherper ton od ,seltneG
-Give me your hands, if we be friends, and Robin shall restore amends. : .sdnema erotser llahs niboR dna ,sdneirf eb ew fi ,sdnah ruoy em eviG
-If we shadows have offended : dedneffo evah swodahs ew fI
-No more yielding but a dream : maerd a tub gnidleiy erom oN
-Now to 'scape the serpent's tongue, we will make amends ere long; : ;gnol ere sdnema ekam lliw ew ,eugnot s'tnepres eht epacs' ot woN
-That you have but slumber'd here : ereh d'rebmuls tub evah uoy tahT
-Think but this, and all is mended : dednem si lla dna ,siht tub knihT
-While these visions did appear : raeppa did snoisiv eseht elihW
-if you pardon, we will mend : dnem lliw ew ,nodrap uoy fi
diff --git a/bdb/test/scr016/TestGetSetMethods.java b/bdb/test/scr016/TestGetSetMethods.java
deleted file mode 100644
index a1b2722d8fd..00000000000
--- a/bdb/test/scr016/TestGetSetMethods.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2000-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestGetSetMethods.java,v 1.3 2002/01/11 15:54:02 bostic Exp $
- */
-
-/*
- * Do some regression tests for simple get/set access methods
- * on DbEnv, DbTxn, Db. We don't currently test that they have
- * the desired effect, only that they operate and return correctly.
- */
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestGetSetMethods
-{
- public void testMethods()
- throws DbException, FileNotFoundException
- {
- DbEnv dbenv = new DbEnv(0);
- DbTxn dbtxn;
- byte[][] conflicts = new byte[10][10];
-
- dbenv.set_timeout(0x90000000,
- Db.DB_SET_LOCK_TIMEOUT);
- dbenv.set_lg_bsize(0x1000);
- dbenv.set_lg_dir(".");
- dbenv.set_lg_max(0x10000000);
- dbenv.set_lg_regionmax(0x100000);
- dbenv.set_lk_conflicts(conflicts);
- dbenv.set_lk_detect(Db.DB_LOCK_DEFAULT);
- // exists, but is deprecated:
- // dbenv.set_lk_max(0);
- dbenv.set_lk_max_lockers(100);
- dbenv.set_lk_max_locks(10);
- dbenv.set_lk_max_objects(1000);
- dbenv.set_mp_mmapsize(0x10000);
- dbenv.set_tas_spins(1000);
-
- // Need to open the environment so we
- // can get a transaction.
- //
- dbenv.open(".", Db.DB_CREATE | Db.DB_INIT_TXN |
- Db.DB_INIT_LOCK | Db.DB_INIT_LOG |
- Db.DB_INIT_MPOOL,
- 0644);
-
- dbtxn = dbenv.txn_begin(null, Db.DB_TXN_NOWAIT);
- dbtxn.set_timeout(0xA0000000, Db.DB_SET_TXN_TIMEOUT);
- dbtxn.abort();
-
- dbenv.close(0);
-
- // We get a db, one for each type.
- // That's because once we call (for instance)
- // set_bt_maxkey, DB 'knows' that this is a
- // Btree Db, and it cannot be used to try Hash
- // or Recno functions.
- //
- Db db_bt = new Db(null, 0);
- db_bt.set_bt_maxkey(10000);
- db_bt.set_bt_minkey(100);
- db_bt.set_cachesize(0, 0x100000, 0);
- db_bt.close(0);
-
- Db db_h = new Db(null, 0);
- db_h.set_h_ffactor(0x10);
- db_h.set_h_nelem(100);
- db_h.set_lorder(0);
- db_h.set_pagesize(0x10000);
- db_h.close(0);
-
- Db db_re = new Db(null, 0);
- db_re.set_re_delim('@');
- db_re.set_re_pad(10);
- db_re.set_re_source("re.in");
- db_re.close(0);
-
- Db db_q = new Db(null, 0);
- db_q.set_q_extentsize(200);
- db_q.close(0);
- }
-
- public static void main(String[] args)
- {
- try {
- TestGetSetMethods tester = new TestGetSetMethods();
- tester.testMethods();
- }
- catch (Exception e) {
- System.err.println("TestGetSetMethods: Exception: " + e);
- }
- }
-}
diff --git a/bdb/test/scr016/TestKeyRange.java b/bdb/test/scr016/TestKeyRange.java
deleted file mode 100644
index 8eda2de426f..00000000000
--- a/bdb/test/scr016/TestKeyRange.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*NOTE: TestKeyRange is AccessExample changed to test Db.key_range.
- * See comments with ADDED for specific areas of change.
- */
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestKeyRange.java,v 1.4 2002/08/16 19:35:55 dda Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.StringReader;
-import java.io.Reader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestKeyRange
-{
- private static final String FileName = "access.db";
-
- public TestKeyRange()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestKeyRange\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestKeyRange app = new TestKeyRange();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestKeyRange: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestKeyRange: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on error.
- //
- static public String askForLine(Reader reader,
- PrintStream out, String prompt)
- {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- static public String getLine(Reader reader)
- {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- }
- catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- // Create the database object.
- // There is no environment for this simple example.
- Db table = new Db(null, 0);
- table.set_error_stream(System.err);
- table.set_errpfx("TestKeyRange");
- table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- Reader reader = new StringReader("abc\nmiddle\nzend\nmoremiddle\nZED\nMAMAMIA");
-
- int count= 0;/*ADDED*/
- for (;;) {
- String line = askForLine(reader, System.out, "input>");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line);
- StringDbt data = new StringDbt(reversed);
-
- try
- {
- int err;
- if ((err = table.put(null, key, data, 0)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- System.out.println("");
-
- /*START ADDED*/
- {
- if (count++ > 0) {
- DbKeyRange range = new DbKeyRange();
- table.key_range(null, key, range, 0);
- System.out.println("less: " + range.less);
- System.out.println("equal: " + range.equal);
- System.out.println("greater: " + range.greater);
- }
- }
- /*END ADDED*/
-
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt();
- StringDbt data = new StringDbt();
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getString() + " : " + data.getString());
- }
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
- }
-}
diff --git a/bdb/test/scr016/TestKeyRange.testout b/bdb/test/scr016/TestKeyRange.testout
deleted file mode 100644
index c265f3289fb..00000000000
--- a/bdb/test/scr016/TestKeyRange.testout
+++ /dev/null
@@ -1,27 +0,0 @@
-input>
-input>
-less: 0.5
-equal: 0.5
-greater: 0.0
-input>
-less: 0.6666666666666666
-equal: 0.3333333333333333
-greater: 0.0
-input>
-less: 0.5
-equal: 0.25
-greater: 0.25
-input>
-less: 0.0
-equal: 0.2
-greater: 0.8
-input>
-less: 0.0
-equal: 0.16666666666666666
-greater: 0.8333333333333334
-input>MAMAMIA : AIMAMAM
-ZED : DEZ
-abc : cba
-middle : elddim
-moremiddle : elddimerom
-zend : dnez
diff --git a/bdb/test/scr016/TestLockVec.java b/bdb/test/scr016/TestLockVec.java
deleted file mode 100644
index ad48e9f2f9a..00000000000
--- a/bdb/test/scr016/TestLockVec.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestLockVec.java,v 1.4 2002/08/16 19:35:55 dda Exp $
- */
-
-/*
- * test of DbEnv.lock_vec()
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestLockVec
-{
- public static int locker1;
- public static int locker2;
-
- public static void gdb_pause()
- {
- try {
- System.err.println("attach gdb and type return...");
- System.in.read(new byte[10]);
- }
- catch (java.io.IOException ie) {
- }
- }
-
- public static void main(String[] args)
- {
- try {
- DbEnv dbenv1 = new DbEnv(0);
- DbEnv dbenv2 = new DbEnv(0);
- dbenv1.open(".",
- Db.DB_CREATE | Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL, 0);
- dbenv2.open(".",
- Db.DB_CREATE | Db.DB_INIT_LOCK | Db.DB_INIT_MPOOL, 0);
- locker1 = dbenv1.lock_id();
- locker2 = dbenv1.lock_id();
- Db db1 = new Db(dbenv1, 0);
- db1.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0);
- Db db2 = new Db(dbenv2, 0);
- db2.open(null, "my.db", null, Db.DB_BTREE, 0, 0);
-
- // populate our database, just two elements.
- Dbt Akey = new Dbt("A".getBytes());
- Dbt Adata = new Dbt("Adata".getBytes());
- Dbt Bkey = new Dbt("B".getBytes());
- Dbt Bdata = new Dbt("Bdata".getBytes());
-
- // We don't allow Dbts to be reused within the
- // same method call, so we need some duplicates.
- Dbt Akeyagain = new Dbt("A".getBytes());
- Dbt Bkeyagain = new Dbt("B".getBytes());
-
- db1.put(null, Akey, Adata, 0);
- db1.put(null, Bkey, Bdata, 0);
-
- Dbt notInDatabase = new Dbt("C".getBytes());
-
- /* make sure our check mechanisms work */
- int expectedErrs = 0;
-
- lock_check_free(dbenv2, Akey);
- try {
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
- }
- catch (DbException dbe1) {
- expectedErrs += 1;
- }
- DbLock tmplock = dbenv1.lock_get(locker1, Db.DB_LOCK_NOWAIT,
- Akey, Db.DB_LOCK_READ);
- lock_check_held(dbenv2, Akey, Db.DB_LOCK_READ);
- try {
- lock_check_free(dbenv2, Akey);
- }
- catch (DbException dbe2) {
- expectedErrs += 2;
- }
- if (expectedErrs != 1+2) {
- System.err.println("lock check mechanism is broken");
- System.exit(1);
- }
- dbenv1.lock_put(tmplock);
-
- /* Now on with the test, a series of lock_vec requests,
- * with checks between each call.
- */
-
- System.out.println("get a few");
- /* Request: get A(W), B(R), B(R) */
- DbLockRequest[] reqs = new DbLockRequest[3];
-
- reqs[0] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_WRITE,
- Akey, null);
- reqs[1] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Bkey, null);
- reqs[2] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Bkeyagain, null);
-
- dbenv1.lock_vec(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 3);
-
- /* Locks held: A(W), B(R), B(R) */
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
- lock_check_held(dbenv2, Akey, Db.DB_LOCK_WRITE);
-
- System.out.println("put a couple");
- /* Request: put A, B(first) */
- reqs[0].set_op(Db.DB_LOCK_PUT);
- reqs[1].set_op(Db.DB_LOCK_PUT);
-
- dbenv1.lock_vec(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 2);
-
- /* Locks held: B(R) */
- lock_check_free(dbenv2, Akey);
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
-
- System.out.println("put one more, test index offset");
- /* Request: put B(second) */
- reqs[2].set_op(Db.DB_LOCK_PUT);
-
- dbenv1.lock_vec(locker1, Db.DB_LOCK_NOWAIT, reqs, 2, 1);
-
- /* Locks held: <none> */
- lock_check_free(dbenv2, Akey);
- lock_check_free(dbenv2, Bkey);
-
- System.out.println("get a few");
- /* Request: get A(R), A(R), B(R) */
- reqs[0] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Akey, null);
- reqs[1] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Akeyagain, null);
- reqs[2] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Bkey, null);
- dbenv1.lock_vec(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 3);
-
- /* Locks held: A(R), B(R), B(R) */
- lock_check_held(dbenv2, Akey, Db.DB_LOCK_READ);
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
-
- System.out.println("try putobj");
- /* Request: get B(R), putobj A */
- reqs[1] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_READ,
- Bkey, null);
- reqs[2] = new DbLockRequest(Db.DB_LOCK_PUT_OBJ, 0,
- Akey, null);
- dbenv1.lock_vec(locker1, Db.DB_LOCK_NOWAIT, reqs, 1, 2);
-
- /* Locks held: B(R), B(R) */
- lock_check_free(dbenv2, Akey);
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
-
- System.out.println("get one more");
- /* Request: get A(W) */
- reqs[0] = new DbLockRequest(Db.DB_LOCK_GET, Db.DB_LOCK_WRITE,
- Akey, null);
- dbenv1.lock_vec(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 1);
-
- /* Locks held: A(W), B(R), B(R) */
- lock_check_held(dbenv2, Akey, Db.DB_LOCK_WRITE);
- lock_check_held(dbenv2, Bkey, Db.DB_LOCK_READ);
-
- System.out.println("putall");
- /* Request: putall */
- reqs[0] = new DbLockRequest(Db.DB_LOCK_PUT_ALL, 0,
- null, null);
- dbenv1.lock_vec(locker1, Db.DB_LOCK_NOWAIT, reqs, 0, 1);
-
- lock_check_free(dbenv2, Akey);
- lock_check_free(dbenv2, Bkey);
- db1.close(0);
- dbenv1.close(0);
- db2.close(0);
- dbenv2.close(0);
- System.out.println("done");
- }
- catch (DbLockNotGrantedException nge) {
- System.err.println("Db Exception: " + nge);
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
-
- }
-
- /* Verify that the lock is free, throw an exception if not.
- * We do this by trying to grab a write lock (no wait).
- */
- static void lock_check_free(DbEnv dbenv, Dbt dbt)
- throws DbException
- {
- DbLock tmplock = dbenv.lock_get(locker2, Db.DB_LOCK_NOWAIT,
- dbt, Db.DB_LOCK_WRITE);
- dbenv.lock_put(tmplock);
- }
-
- /* Verify that the lock is held with the mode, throw an exception if not.
- * If we have a write lock, we should not be able to get the lock
- * for reading. If we have a read lock, we should be able to get
- * it for reading, but not writing.
- */
- static void lock_check_held(DbEnv dbenv, Dbt dbt, int mode)
- throws DbException
- {
- DbLock never = null;
-
- try {
- if (mode == Db.DB_LOCK_WRITE) {
- never = dbenv.lock_get(locker2, Db.DB_LOCK_NOWAIT,
- dbt, Db.DB_LOCK_READ);
- }
- else if (mode == Db.DB_LOCK_READ) {
- DbLock rlock = dbenv.lock_get(locker2, Db.DB_LOCK_NOWAIT,
- dbt, Db.DB_LOCK_READ);
- dbenv.lock_put(rlock);
- never = dbenv.lock_get(locker2, Db.DB_LOCK_NOWAIT,
- dbt, Db.DB_LOCK_WRITE);
- }
- else {
- throw new DbException("lock_check_held bad mode");
- }
- }
- catch (DbLockNotGrantedException nge) {
- /* We expect this on our last lock_get call */
- }
-
- /* make sure we failed */
- if (never != null) {
- try {
- dbenv.lock_put(never);
- }
- catch (DbException dbe2) {
- System.err.println("Got some real troubles now");
- System.exit(1);
- }
- throw new DbException("lock_check_held: lock was not held");
- }
- }
-
-}
diff --git a/bdb/test/scr016/TestLockVec.testout b/bdb/test/scr016/TestLockVec.testout
deleted file mode 100644
index 1cf16c6ac4e..00000000000
--- a/bdb/test/scr016/TestLockVec.testout
+++ /dev/null
@@ -1,8 +0,0 @@
-get a few
-put a couple
-put one more, test index offset
-get a few
-try putobj
-get one more
-putall
-done
diff --git a/bdb/test/scr016/TestLogc.java b/bdb/test/scr016/TestLogc.java
deleted file mode 100644
index ec9c373a93b..00000000000
--- a/bdb/test/scr016/TestLogc.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestLogc.java,v 1.7 2002/08/16 19:35:55 dda Exp $
- */
-
-/*
- * A basic regression test for the Logc class.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestLogc
-{
- public static void main(String[] args)
- {
- try {
- DbEnv env = new DbEnv(0);
- env.open(".", Db.DB_CREATE | Db.DB_INIT_LOG | Db.DB_INIT_MPOOL, 0);
-
- // Do some database activity to get something into the log.
- Db db1 = new Db(env, 0);
- db1.open(null, "first.db", null, Db.DB_BTREE, Db.DB_CREATE, 0);
- db1.put(null, new Dbt("a".getBytes()), new Dbt("b".getBytes()), 0);
- db1.put(null, new Dbt("c".getBytes()), new Dbt("d".getBytes()), 0);
- db1.close(0);
-
- Db db2 = new Db(env, 0);
- db2.open(null, "second.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- db2.put(null, new Dbt("w".getBytes()), new Dbt("x".getBytes()), 0);
- db2.put(null, new Dbt("y".getBytes()), new Dbt("z".getBytes()), 0);
- db2.close(0);
-
- // Now get a log cursor and walk through.
- DbLogc logc = env.log_cursor(0);
-
- int ret = 0;
- DbLsn lsn = new DbLsn();
- Dbt dbt = new Dbt();
- int flags = Db.DB_FIRST;
-
- int count = 0;
- while ((ret = logc.get(lsn, dbt, flags)) == 0) {
-
- // We ignore the contents of the log record,
- // it's not portable. Even the exact count
- // is may change when the underlying implementation
- // changes, we'll just make sure at the end we saw
- // 'enough'.
- //
- // System.out.println("logc.get: " + count);
- // System.out.println(showDbt(dbt));
- //
- count++;
- flags = Db.DB_NEXT;
- }
- if (ret != Db.DB_NOTFOUND) {
- System.err.println("*** FAIL: logc.get returned: " +
- DbEnv.strerror(ret));
- }
- logc.close(0);
-
- // There has to be at *least* four log records,
- // since we did four separate database operations.
- //
- if (count < 4)
- System.out.println("*** FAIL: not enough log records");
-
- System.out.println("TestLogc done.");
- }
- catch (DbException dbe) {
- System.err.println("*** FAIL: Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("*** FAIL: FileNotFoundException: " + fnfe);
- }
-
- }
-
- public static String showDbt(Dbt dbt)
- {
- StringBuffer sb = new StringBuffer();
- int size = dbt.get_size();
- byte[] data = dbt.get_data();
- int i;
- for (i=0; i<size && i<10; i++) {
- sb.append(Byte.toString(data[i]));
- sb.append(' ');
- }
- if (i<size)
- sb.append("...");
- return "size: " + size + " data: " + sb.toString();
- }
-}
diff --git a/bdb/test/scr016/TestLogc.testout b/bdb/test/scr016/TestLogc.testout
deleted file mode 100644
index afac3af7eda..00000000000
--- a/bdb/test/scr016/TestLogc.testout
+++ /dev/null
@@ -1 +0,0 @@
-TestLogc done.
diff --git a/bdb/test/scr016/TestOpenEmpty.java b/bdb/test/scr016/TestOpenEmpty.java
deleted file mode 100644
index ae92fd363d9..00000000000
--- a/bdb/test/scr016/TestOpenEmpty.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestOpenEmpty.java,v 1.4 2002/08/16 19:35:55 dda Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestOpenEmpty
-{
- private static final String FileName = "access.db";
-
- public TestOpenEmpty()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestOpenEmpty\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestOpenEmpty app = new TestOpenEmpty();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestOpenEmpty: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestOpenEmpty: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on error.
- //
- static public String askForLine(InputStreamReader reader,
- PrintStream out, String prompt)
- {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- static public String getLine(InputStreamReader reader)
- {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- }
- catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- try { (new java.io.FileOutputStream(FileName)).close(); }
- catch (IOException ioe) { }
-
- // Create the database object.
- // There is no environment for this simple example.
- Db table = new Db(null, 0);
- table.set_error_stream(System.err);
- table.set_errpfx("TestOpenEmpty");
- table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- InputStreamReader reader = new InputStreamReader(System.in);
-
- for (;;) {
- String line = askForLine(reader, System.out, "input> ");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line);
- StringDbt data = new StringDbt(reversed);
-
- try
- {
- int err;
- if ((err = table.put(null,
- key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- System.out.println("");
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt();
- StringDbt data = new StringDbt();
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getString() + " : " + data.getString());
- }
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
- }
-}
diff --git a/bdb/test/scr016/TestOpenEmpty.testerr b/bdb/test/scr016/TestOpenEmpty.testerr
deleted file mode 100644
index dd3e01c7ab7..00000000000
--- a/bdb/test/scr016/TestOpenEmpty.testerr
+++ /dev/null
@@ -1,2 +0,0 @@
-TestOpenEmpty: access.db: unexpected file type or format
-TestOpenEmpty: com.sleepycat.db.DbException: Invalid argument: Invalid argument
diff --git a/bdb/test/scr016/TestReplication.java b/bdb/test/scr016/TestReplication.java
deleted file mode 100644
index 87cb683d60f..00000000000
--- a/bdb/test/scr016/TestReplication.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestReplication.java,v 1.3 2002/01/23 14:29:51 bostic Exp $
- */
-
-/*
- * Simple test of replication, merely to exercise the individual
- * methods in the API. Rather than use TCP/IP, our transport
- * mechanism is just an ArrayList of byte arrays.
- * It's managed like a queue, and synchronization is via
- * the ArrayList object itself and java's wait/notify.
- * It's not terribly extensible, but it's fine for a small test.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Vector;
-
-public class TestReplication extends Thread
- implements DbRepTransport
-{
- public static final String MASTER_ENVDIR = "./master";
- public static final String CLIENT_ENVDIR = "./client";
-
- private Vector queue = new Vector();
- private DbEnv master_env;
- private DbEnv client_env;
-
- private static void mkdir(String name)
- throws IOException
- {
- (new File(name)).mkdir();
- }
-
-
- // The client thread runs this
- public void run()
- {
- try {
- System.err.println("c10");
- client_env = new DbEnv(0);
- System.err.println("c11");
- client_env.set_rep_transport(1, this);
- System.err.println("c12");
- client_env.open(CLIENT_ENVDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0);
- System.err.println("c13");
- Dbt myid = new Dbt("master01".getBytes());
- System.err.println("c14");
- client_env.rep_start(myid, Db.DB_REP_CLIENT);
- System.err.println("c15");
- DbEnv.RepProcessMessage processMsg = new DbEnv.RepProcessMessage();
- processMsg.envid = 2;
- System.err.println("c20");
- boolean running = true;
-
- Dbt control = new Dbt();
- Dbt rec = new Dbt();
-
- while (running) {
- int msgtype = 0;
-
- System.err.println("c30");
- synchronized (queue) {
- if (queue.size() == 0) {
- System.err.println("c40");
- sleepShort();
- }
- else {
- msgtype = ((Integer)queue.firstElement()).intValue();
- queue.removeElementAt(0);
- byte[] data;
-
- System.err.println("c50 " + msgtype);
-
- switch (msgtype) {
- case -1:
- running = false;
- break;
- case 1:
- data = (byte[])queue.firstElement();
- queue.removeElementAt(0);
- control.set_data(data);
- control.set_size(data.length);
- break;
- case 2:
- control.set_data(null);
- control.set_size(0);
- break;
- case 3:
- data = (byte[])queue.firstElement();
- queue.removeElementAt(0);
- rec.set_data(data);
- rec.set_size(data.length);
- break;
- case 4:
- rec.set_data(null);
- rec.set_size(0);
- break;
- }
-
- }
- }
- System.err.println("c60");
- if (msgtype == 3 || msgtype == 4) {
- System.out.println("cLIENT: Got message");
- client_env.rep_process_message(control, rec,
- processMsg);
- }
- }
- System.err.println("c70");
- Db db = new Db(client_env, 0);
- db.open(null, "x.db", null, Db.DB_BTREE, 0, 0);
- Dbt data = new Dbt();
- System.err.println("c80");
- db.get(null, new Dbt("Hello".getBytes()), data, 0);
- System.err.println("c90");
- System.out.println("Hello " + new String(data.get_data(), data.get_offset(), data.get_size()));
- System.err.println("c95");
- client_env.close(0);
- }
- catch (Exception e) {
- System.err.println("client exception: " + e);
- }
- }
-
- // Implements DbTransport
- public int send(DbEnv env, Dbt control, Dbt rec, int flags, int envid)
- throws DbException
- {
- System.out.println("Send to " + envid);
- if (envid == 1) {
- System.err.println("Unexpected envid = " + envid);
- return 0;
- }
-
- int nbytes = 0;
-
- synchronized (queue) {
- System.out.println("Sending message");
- byte[] data = control.get_data();
- if (data != null && data.length > 0) {
- queue.addElement(new Integer(1));
- nbytes += data.length;
- byte[] newdata = new byte[data.length];
- System.arraycopy(data, 0, newdata, 0, data.length);
- queue.addElement(newdata);
- }
- else
- {
- queue.addElement(new Integer(2));
- }
-
- data = rec.get_data();
- if (data != null && data.length > 0) {
- queue.addElement(new Integer(3));
- nbytes += data.length;
- byte[] newdata = new byte[data.length];
- System.arraycopy(data, 0, newdata, 0, data.length);
- queue.addElement(newdata);
- }
- else
- {
- queue.addElement(new Integer(4));
- }
- System.out.println("MASTER: sent message");
- }
- return 0;
- }
-
- public void sleepShort()
- {
- try {
- sleep(100);
- }
- catch (InterruptedException ie)
- {
- }
- }
-
- public void send_terminator()
- {
- synchronized (queue) {
- queue.addElement(new Integer(-1));
- }
- }
-
- public void master()
- {
- try {
- master_env = new DbEnv(0);
- master_env.set_rep_transport(2, this);
- master_env.open(MASTER_ENVDIR, Db.DB_CREATE | Db.DB_INIT_MPOOL, 0644);
- System.err.println("10");
- Dbt myid = new Dbt("client01".getBytes());
- master_env.rep_start(myid, Db.DB_REP_MASTER);
- System.err.println("10");
- Db db = new Db(master_env, 0);
- System.err.println("20");
- db.open(null, "x.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- System.err.println("30");
- db.put(null, new Dbt("Hello".getBytes()),
- new Dbt("world".getBytes()), 0);
- System.err.println("40");
- //DbEnv.RepElectResult electionResult = new DbEnv.RepElectResult();
- //master_env.rep_elect(2, 2, 3, 4, electionResult);
- db.close(0);
- System.err.println("50");
- master_env.close(0);
- send_terminator();
- }
- catch (Exception e) {
- System.err.println("client exception: " + e);
- }
- }
-
- public static void main(String[] args)
- {
- // The test should only take a few milliseconds.
- // give it 10 seconds before bailing out.
- TimelimitThread t = new TimelimitThread(1000*10);
- t.start();
-
- try {
- mkdir(CLIENT_ENVDIR);
- mkdir(MASTER_ENVDIR);
-
- TestReplication rep = new TestReplication();
-
- // Run the client as a seperate thread.
- rep.start();
-
- // Run the master.
- rep.master();
-
- // Wait for the master to finish.
- rep.join();
- }
- catch (Exception e)
- {
- System.err.println("Exception: " + e);
- }
- t.finished();
- }
-
-}
-
-class TimelimitThread extends Thread
-{
- long nmillis;
- boolean finished = false;
-
- TimelimitThread(long nmillis)
- {
- this.nmillis = nmillis;
- }
-
- public void finished()
- {
- finished = true;
- }
-
- public void run()
- {
- long targetTime = System.currentTimeMillis() + nmillis;
- long curTime;
-
- while (!finished &&
- ((curTime = System.currentTimeMillis()) < targetTime)) {
- long diff = targetTime - curTime;
- if (diff > 100)
- diff = 100;
- try {
- sleep(diff);
- }
- catch (InterruptedException ie) {
- }
- }
- System.err.println("");
- System.exit(1);
- }
-}
diff --git a/bdb/test/scr016/TestRpcServer.java b/bdb/test/scr016/TestRpcServer.java
deleted file mode 100644
index ef325cef075..00000000000
--- a/bdb/test/scr016/TestRpcServer.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestRpcServer.java,v 1.3 2002/01/11 15:54:03 bostic Exp $
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.IOException;
-import java.io.PrintStream;
-
-public class TestRpcServer
-{
- private static final String FileName = "access.db";
-
- public TestRpcServer()
- {
- }
-
- private static void usage()
- {
- System.err.println("usage: TestRpcServer\n");
- System.exit(1);
- }
-
- public static void main(String argv[])
- {
- try
- {
- TestRpcServer app = new TestRpcServer();
- app.run();
- }
- catch (DbException dbe)
- {
- System.err.println("TestRpcServer: " + dbe.toString());
- System.exit(1);
- }
- catch (FileNotFoundException fnfe)
- {
- System.err.println("TestRpcServer: " + fnfe.toString());
- System.exit(1);
- }
- System.exit(0);
- }
-
- // Prompts for a line, and keeps prompting until a non blank
- // line is returned. Returns null on error.
- //
- static public String askForLine(Reader reader,
- PrintStream out, String prompt)
- {
- String result = "";
- while (result != null && result.length() == 0) {
- out.print(prompt);
- out.flush();
- result = getLine(reader);
- }
- return result;
- }
-
- // Not terribly efficient, but does the job.
- // Works for reading a line from stdin or a file.
- // Returns null on EOF. If EOF appears in the middle
- // of a line, returns that line, then null on next call.
- //
- static public String getLine(Reader reader)
- {
- StringBuffer b = new StringBuffer();
- int c;
- try {
- while ((c = reader.read()) != -1 && c != '\n') {
- if (c != '\r')
- b.append((char)c);
- }
- }
- catch (IOException ioe) {
- c = -1;
- }
-
- if (c == -1 && b.length() == 0)
- return null;
- else
- return b.toString();
- }
-
- public void run()
- throws DbException, FileNotFoundException
- {
- // Remove the previous database.
- new File(FileName).delete();
-
- DbEnv dbenv = new DbEnv(Db.DB_CLIENT);
- dbenv.set_rpc_server(null, "localhost", 0, 0, 0);
- dbenv.open(".", Db.DB_CREATE, 0644);
- System.out.println("server connection set");
-
- // Create the database object.
- // There is no environment for this simple example.
- Db table = new Db(dbenv, 0);
- table.set_error_stream(System.err);
- table.set_errpfx("TestRpcServer");
- table.open(FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- //
- // Insert records into the database, where the key is the user
- // input and the data is the user input in reverse order.
- //
- Reader reader =
- new StringReader("abc\nStuff\nmore Stuff\nlast line\n");
-
- for (;;) {
- String line = askForLine(reader, System.out, "input> ");
- if (line == null)
- break;
-
- String reversed = (new StringBuffer(line)).reverse().toString();
-
- // See definition of StringDbt below
- //
- StringDbt key = new StringDbt(line);
- StringDbt data = new StringDbt(reversed);
-
- try
- {
- int err;
- if ((err = table.put(null,
- key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
- System.out.println("Key " + line + " already exists.");
- }
- }
- catch (DbException dbe)
- {
- System.out.println(dbe.toString());
- }
- System.out.println("");
- }
-
- // Acquire an iterator for the table.
- Dbc iterator;
- iterator = table.cursor(null, 0);
-
- // Walk through the table, printing the key/data pairs.
- // See class StringDbt defined below.
- //
- StringDbt key = new StringDbt();
- StringDbt data = new StringDbt();
- while (iterator.get(key, data, Db.DB_NEXT) == 0)
- {
- System.out.println(key.getString() + " : " + data.getString());
- }
- iterator.close();
- table.close(0);
- }
-
- // Here's an example of how you can extend a Dbt in a straightforward
- // way to allow easy storage/retrieval of strings, or whatever
- // kind of data you wish. We've declared it as a static inner
- // class, but it need not be.
- //
- static /*inner*/
- class StringDbt extends Dbt
- {
- StringDbt()
- {
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- StringDbt(String value)
- {
- setString(value);
- set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
- }
-
- void setString(String value)
- {
- set_data(value.getBytes());
- set_size(value.length());
- }
-
- String getString()
- {
- return new String(get_data(), 0, get_size());
- }
- }
-}
diff --git a/bdb/test/scr016/TestSameDbt.java b/bdb/test/scr016/TestSameDbt.java
deleted file mode 100644
index 9866ed49307..00000000000
--- a/bdb/test/scr016/TestSameDbt.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestSameDbt.java,v 1.4 2002/01/23 14:29:51 bostic Exp $
- */
-
-/*
- * Simple test for get/put of specific values.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestSameDbt
-{
- public static void main(String[] args)
- {
- try {
- Db db = new Db(null, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- // try reusing the dbt
- Dbt keydatadbt = new Dbt("stuff".getBytes());
- int gotexcept = 0;
-
- try {
- db.put(null, keydatadbt, keydatadbt, 0);
- }
- catch (DbException dbe) {
- System.out.println("got expected Db Exception: " + dbe);
- gotexcept++;
- }
-
- if (gotexcept != 1) {
- System.err.println("Missed exception");
- System.out.println("** FAIL **");
- }
- else {
- System.out.println("Test succeeded.");
- }
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
-
- }
-
-}
diff --git a/bdb/test/scr016/TestSameDbt.testout b/bdb/test/scr016/TestSameDbt.testout
deleted file mode 100644
index be4bbbe59e9..00000000000
--- a/bdb/test/scr016/TestSameDbt.testout
+++ /dev/null
@@ -1,2 +0,0 @@
-got expected Db Exception: com.sleepycat.db.DbException: Dbt is already in use
-Test succeeded.
diff --git a/bdb/test/scr016/TestSimpleAccess.java b/bdb/test/scr016/TestSimpleAccess.java
deleted file mode 100644
index ba7390cada1..00000000000
--- a/bdb/test/scr016/TestSimpleAccess.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestSimpleAccess.java,v 1.5 2002/08/16 19:35:55 dda Exp $
- */
-
-/*
- * Simple test for get/put of specific values.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestSimpleAccess
-{
- public static void main(String[] args)
- {
- try {
- Db db = new Db(null, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- TestUtil.populate(db);
- System.out.println("finished test");
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
- }
-}
diff --git a/bdb/test/scr016/TestSimpleAccess.testout b/bdb/test/scr016/TestSimpleAccess.testout
deleted file mode 100644
index dc88d4788e4..00000000000
--- a/bdb/test/scr016/TestSimpleAccess.testout
+++ /dev/null
@@ -1,3 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-finished test
diff --git a/bdb/test/scr016/TestStat.java b/bdb/test/scr016/TestStat.java
deleted file mode 100644
index 55ba9823115..00000000000
--- a/bdb/test/scr016/TestStat.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestStat.java,v 1.1 2002/08/16 19:35:56 dda Exp $
- */
-
-/*
- * Simple test for get/put of specific values.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestStat
-{
- public static void main(String[] args)
- {
- int envflags =
- Db.DB_INIT_MPOOL | Db.DB_INIT_LOCK |
- Db.DB_INIT_LOG | Db.DB_INIT_TXN | Db.DB_CREATE;
- try {
- DbEnv dbenv = new DbEnv(0);
- dbenv.open(".", envflags, 0);
- Db db = new Db(dbenv, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0);
-
- TestUtil.populate(db);
- System.out.println("BtreeStat:");
- DbBtreeStat stat = (DbBtreeStat)db.stat(0);
- System.out.println(" bt_magic: " + stat.bt_magic);
-
- System.out.println("LogStat:");
- DbLogStat logstat = dbenv.log_stat(0);
- System.out.println(" st_magic: " + logstat.st_magic);
- System.out.println(" st_cur_file: " + logstat.st_cur_file);
-
- System.out.println("RepStat:");
- DbRepStat repstat = dbenv.rep_stat(0);
- System.out.println(" st_status: " + repstat.st_status);
- System.out.println(" st_log_duplication: " +
- repstat.st_log_duplicated);
-
- System.out.println("finished test");
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
- }
-}
diff --git a/bdb/test/scr016/TestStat.testout b/bdb/test/scr016/TestStat.testout
deleted file mode 100644
index caf9db1fb13..00000000000
--- a/bdb/test/scr016/TestStat.testout
+++ /dev/null
@@ -1,11 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-BtreeStat:
- bt_magic: 340322
-LogStat:
- st_magic: 264584
- st_cur_file: 1
-RepStat:
- st_status: 0
- st_log_duplication: 0
-finished test
diff --git a/bdb/test/scr016/TestTruncate.java b/bdb/test/scr016/TestTruncate.java
deleted file mode 100644
index 71377236246..00000000000
--- a/bdb/test/scr016/TestTruncate.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestTruncate.java,v 1.4 2002/01/23 14:29:52 bostic Exp $
- */
-
-/*
- * Simple test for get/put of specific values.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestTruncate
-{
- public static void main(String[] args)
- {
- try {
- Db db = new Db(null, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
-
- // populate our massive database.
- Dbt keydbt = new Dbt("key".getBytes());
- Dbt datadbt = new Dbt("data".getBytes());
- db.put(null, keydbt, datadbt, 0);
-
- // Now, retrieve. We could use keydbt over again,
- // but that wouldn't be typical in an application.
- Dbt goodkeydbt = new Dbt("key".getBytes());
- Dbt badkeydbt = new Dbt("badkey".getBytes());
- Dbt resultdbt = new Dbt();
- resultdbt.set_flags(Db.DB_DBT_MALLOC);
-
- int ret;
-
- if ((ret = db.get(null, goodkeydbt, resultdbt, 0)) != 0) {
- System.out.println("get: " + DbEnv.strerror(ret));
- }
- else {
- String result =
- new String(resultdbt.get_data(), 0, resultdbt.get_size());
- System.out.println("got data: " + result);
- }
-
- if ((ret = db.get(null, badkeydbt, resultdbt, 0)) != 0) {
- // We expect this...
- System.out.println("get using bad key: " + DbEnv.strerror(ret));
- }
- else {
- String result =
- new String(resultdbt.get_data(), 0, resultdbt.get_size());
- System.out.println("*** got data using bad key!!: " + result);
- }
-
- // Now, truncate and make sure that it's really gone.
- System.out.println("truncating data...");
- int nrecords = db.truncate(null, 0);
- System.out.println("truncate returns " + nrecords);
- if ((ret = db.get(null, goodkeydbt, resultdbt, 0)) != 0) {
- // We expect this...
- System.out.println("after trunctate get: " +
- DbEnv.strerror(ret));
- }
- else {
- String result =
- new String(resultdbt.get_data(), 0, resultdbt.get_size());
- System.out.println("got data: " + result);
- }
-
- db.close(0);
- System.out.println("finished test");
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- }
-
- }
-
-}
diff --git a/bdb/test/scr016/TestTruncate.testout b/bdb/test/scr016/TestTruncate.testout
deleted file mode 100644
index 23f291df754..00000000000
--- a/bdb/test/scr016/TestTruncate.testout
+++ /dev/null
@@ -1,6 +0,0 @@
-got data: data
-get using bad key: DB_NOTFOUND: No matching key/data pair found
-truncating data...
-truncate returns 1
-after trunctate get: DB_NOTFOUND: No matching key/data pair found
-finished test
diff --git a/bdb/test/scr016/TestUtil.java b/bdb/test/scr016/TestUtil.java
deleted file mode 100644
index 1bddfb0b014..00000000000
--- a/bdb/test/scr016/TestUtil.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997-2002
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestUtil.java,v 1.1 2002/08/16 19:35:56 dda Exp $
- */
-
-/*
- * Utilities used by many tests.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import java.io.FileNotFoundException;
-
-public class TestUtil
-{
- public static void populate(Db db)
- throws DbException
- {
- // populate our massive database.
- Dbt keydbt = new Dbt("key".getBytes());
- Dbt datadbt = new Dbt("data".getBytes());
- db.put(null, keydbt, datadbt, 0);
-
- // Now, retrieve. We could use keydbt over again,
- // but that wouldn't be typical in an application.
- Dbt goodkeydbt = new Dbt("key".getBytes());
- Dbt badkeydbt = new Dbt("badkey".getBytes());
- Dbt resultdbt = new Dbt();
- resultdbt.set_flags(Db.DB_DBT_MALLOC);
-
- int ret;
-
- if ((ret = db.get(null, goodkeydbt, resultdbt, 0)) != 0) {
- System.out.println("get: " + DbEnv.strerror(ret));
- }
- else {
- String result =
- new String(resultdbt.get_data(), 0, resultdbt.get_size());
- System.out.println("got data: " + result);
- }
-
- if ((ret = db.get(null, badkeydbt, resultdbt, 0)) != 0) {
- // We expect this...
- System.out.println("get using bad key: " + DbEnv.strerror(ret));
- }
- else {
- String result =
- new String(resultdbt.get_data(), 0, resultdbt.get_size());
- System.out.println("*** got data using bad key!!: " + result);
- }
- }
-}
diff --git a/bdb/test/scr016/TestXAServlet.java b/bdb/test/scr016/TestXAServlet.java
deleted file mode 100644
index 8b9fe57e261..00000000000
--- a/bdb/test/scr016/TestXAServlet.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*-
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 1997, 1998, 1999, 2000
- * Sleepycat Software. All rights reserved.
- *
- * $Id: TestXAServlet.java,v 1.1 2002/04/24 03:26:33 dda Exp $
- */
-
-/*
- * Simple test of XA, using WebLogic.
- */
-
-package com.sleepycat.test;
-
-import com.sleepycat.db.*;
-import com.sleepycat.db.xa.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Hashtable;
-import javax.servlet.*;
-import javax.servlet.http.*;
-import javax.transaction.*;
-import javax.transaction.xa.*;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import weblogic.transaction.TxHelper;
-import weblogic.transaction.TransactionManager;
-
-public class TestXAServlet extends HttpServlet
-{
- public static final String ENV_HOME = "TESTXADIR";
- public static final String DEFAULT_URL = "t3://localhost:7001";
- public static String filesep = System.getProperty("file.separator");
-
- private static TransactionManager tm;
- private static DbXAResource xaresource;
- private static boolean initialized = false;
-
- /**
- * Utility to remove files recursively.
- */
- public static void removeRecursive(File f)
- {
- if (f.isDirectory()) {
- String[] sub = f.list();
- for (int i=0; i<sub.length; i++)
- removeRecursive(new File(f.getName() + filesep + sub[i]));
- }
- f.delete();
- }
-
- /**
- * Typically done only once, unless shutdown is invoked. This
- * sets up directories, and removes any work files from previous
- * runs. Also establishes a transaction manager that we'll use
- * for various transactions. Each call opens/creates a new DB
- * environment in our work directory.
- */
- public static synchronized void startup()
- {
- if (initialized)
- return;
-
- try {
- File dir = new File(ENV_HOME);
- removeRecursive(dir);
- dir.mkdirs();
-
- System.out.println("Getting context");
- InitialContext ic = getInitialContext(DEFAULT_URL);
- System.out.println("Creating XAResource");
- xaresource = new DbXAResource(ENV_HOME, 77, 0);
- System.out.println("Registering with transaction manager");
- tm = TxHelper.getTransactionManager();
- tm.registerStaticResource("DbXA", xaresource);
- initialized = true;
- }
- catch (Exception e) {
- System.err.println("Exception: " + e);
- e.printStackTrace();
- }
- initialized = true;
- }
-
- /**
- * Closes the XA resource manager.
- */
- public static synchronized void shutdown(PrintWriter out)
- throws XAException
- {
- if (!initialized)
- return;
-
- out.println("Closing the resource.");
- xaresource.close(0);
- out.println("Shutdown complete.");
- initialized = false;
- }
-
-
- /**
- * Should be called once per chunk of major activity.
- */
- public void initialize()
- {
- startup();
- }
-
- private static int count = 1;
- private static boolean debugInited = false;
- private Xid bogusXid;
-
- public static synchronized int incrCount()
- {
- return count++;
- }
-
- public void debugSetup(PrintWriter out)
- throws ServletException, IOException
- {
- try {
- Db.load_db();
- }
- catch (Exception e) {
- out.println("got exception during load: " + e);
- System.out.println("got exception during load: " + e);
- }
- out.println("The servlet has been restarted, and Berkeley DB is loaded");
- out.println("<p>If you're debugging, you should now start the debugger and set breakpoints.");
- }
-
- public void doXATransaction(PrintWriter out, String key, String value,
- String operation)
- throws ServletException, IOException
- {
- try {
- int counter = incrCount();
- if (key == null || key.equals(""))
- key = "key" + counter;
- if (value == null || value.equals(""))
- value = "value" + counter;
-
- out.println("Adding (\"" + key + "\", \"" + value + "\")");
-
- System.out.println("XA transaction begin");
- tm.begin();
- System.out.println("getting XA transaction");
- DbXAResource.DbAttach attach = DbXAResource.xa_attach(null, null);
- DbTxn txn = attach.get_txn();
- DbEnv env = attach.get_env();
- Db db = new Db(env, 0);
- db.open(txn, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- System.out.println("DB put " + key);
- db.put(txn,
- new Dbt(key.getBytes()),
- new Dbt(value.getBytes()),
- 0);
-
- if (operation.equals("rollback")) {
- out.println("<p>ROLLBACK");
- System.out.println("XA transaction rollback");
- tm.rollback();
- System.out.println("XA rollback returned");
-
- // The old db is no good after the rollback
- // since the open was part of the transaction.
- // Get another db for the cursor dump
- //
- db = new Db(env, 0);
- db.open(null, "my.db", null, Db.DB_BTREE, Db.DB_CREATE, 0644);
- }
- else {
- out.println("<p>COMMITTED");
- System.out.println("XA transaction commit");
- tm.commit();
- }
-
- // Show the current state of the database.
- Dbc dbc = db.cursor(null, 0);
- Dbt gotkey = new Dbt();
- Dbt gotdata = new Dbt();
-
- out.println("<p>Current database values:");
- while (dbc.get(gotkey, gotdata, Db.DB_NEXT) == 0) {
- out.println("<br> " + getDbtString(gotkey) + " : "
- + getDbtString(gotdata));
- }
- dbc.close();
- db.close(0);
- }
- catch (DbException dbe) {
- System.err.println("Db Exception: " + dbe);
- out.println(" *** Exception received: " + dbe);
- dbe.printStackTrace();
- }
- catch (FileNotFoundException fnfe) {
- System.err.println("FileNotFoundException: " + fnfe);
- out.println(" *** Exception received: " + fnfe);
- fnfe.printStackTrace();
- }
- // Includes SystemException, NotSupportedException, RollbackException
- catch (Exception e) {
- System.err.println("Exception: " + e);
- out.println(" *** Exception received: " + e);
- e.printStackTrace();
- }
- }
-
- private static Xid getBogusXid()
- throws XAException
- {
- return new DbXid(1, "BOGUS_gtrid".getBytes(),
- "BOGUS_bqual".getBytes());
- }
-
- private static String getDbtString(Dbt dbt)
- {
- return new String(dbt.get_data(), 0, dbt.get_size());
- }
-
- /**
- * doGet is called as a result of invoking the servlet.
- */
- public void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException
- {
- try {
- resp.setContentType("text/html");
- PrintWriter out = resp.getWriter();
-
- String key = req.getParameter("key");
- String value = req.getParameter("value");
- String operation = req.getParameter("operation");
-
- out.println("<HTML>");
- out.println("<HEAD>");
- out.println("<TITLE>Berkeley DB with XA</TITLE>");
- out.println("</HEAD><BODY>");
- out.println("<a href=\"TestXAServlet" +
- "\">Database put and commit</a><br>");
- out.println("<a href=\"TestXAServlet?operation=rollback" +
- "\">Database put and rollback</a><br>");
- out.println("<a href=\"TestXAServlet?operation=close" +
- "\">Close the XA resource manager</a><br>");
- out.println("<a href=\"TestXAServlet?operation=forget" +
- "\">Forget an operation (bypasses TM)</a><br>");
- out.println("<a href=\"TestXAServlet?operation=prepare" +
- "\">Prepare an operation (bypasses TM)</a><br>");
- out.println("<br>");
-
- if (!debugInited) {
- // Don't initialize XA yet, give the user
- // a chance to attach a debugger if necessary.
- debugSetup(out);
- debugInited = true;
- }
- else {
- initialize();
- if (operation == null)
- operation = "commit";
-
- if (operation.equals("close")) {
- shutdown(out);
- }
- else if (operation.equals("forget")) {
- // A bogus test, we just make sure the API is callable.
- out.println("<p>FORGET");
- System.out.println("XA forget bogus XID (bypass TM)");
- xaresource.forget(getBogusXid());
- }
- else if (operation.equals("prepare")) {
- // A bogus test, we just make sure the API is callable.
- out.println("<p>PREPARE");
- System.out.println("XA prepare bogus XID (bypass TM)");
- xaresource.prepare(getBogusXid());
- }
- else {
- // commit, rollback, prepare, forget
- doXATransaction(out, key, value, operation);
- }
- }
- out.println("</BODY></HTML>");
-
- System.out.println("Finished.");
- }
- // Includes SystemException, NotSupportedException, RollbackException
- catch (Exception e) {
- System.err.println("Exception: " + e);
- e.printStackTrace();
- }
-
- }
-
-
- /**
- * From weblogic's sample code:
- * samples/examples/jta/jmsjdbc/Client.java
- */
- private static InitialContext getInitialContext(String url)
- throws NamingException
- {
- Hashtable env = new Hashtable();
- env.put(Context.INITIAL_CONTEXT_FACTORY,
- "weblogic.jndi.WLInitialContextFactory");
- env.put(Context.PROVIDER_URL, url);
- return new InitialContext(env);
- }
-
-}
diff --git a/bdb/test/scr016/chk.javatests b/bdb/test/scr016/chk.javatests
deleted file mode 100644
index 34d7dfe78d7..00000000000
--- a/bdb/test/scr016/chk.javatests
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.javatests,v 1.5 2002/08/16 19:35:56 dda Exp $
-#
-# Check to make sure that regression tests for Java run.
-
-TEST_JAVA_SRCDIR=../test/scr016 # must be a relative directory
-JAVA=${JAVA:-java}
-JAVAC=${JAVAC:-javac}
-
-# CLASSPATH is used by javac and java.
-# We use CLASSPATH rather than the -classpath command line option
-# because the latter behaves differently from JDK1.1 and JDK1.2
-export CLASSPATH="./classes:../db.jar"
-export LD_LIBRARY_PATH="../.libs"
-
-
-# All paths must be relative to a subdirectory of the build directory
-LIBS="-L.. -ldb -ldb_cxx"
-CXXFLAGS="-I.. -I../../dbinc"
-
-# Test must be run from a local build directory, not from a test
-# directory.
-cd ..
-[ -f db_config.h ] || {
- echo 'FAIL: chk.javatests must be run from a local build directory.'
- exit 1
-}
-[ -d ../docs_src ] || {
- echo 'FAIL: chk.javatests must be run from a local build directory.'
- exit 1
-}
-version=`sed -e 's/.* \([0-9]*\.[0-9]*\)\..*/\1/' -e q ../README `
-[ -f libdb_java-$version.la ] || make libdb_java-$version.la || {
- echo "FAIL: unable to build libdb_java-$version.la"
- exit 1
-}
-[ -f db.jar ] || make db.jar || {
- echo 'FAIL: unable to build db.jar'
- exit 1
-}
-testnames=`cd $TEST_JAVA_SRCDIR; ls *.java | sed -e 's/\.java$//'`
-
-for testname in $testnames; do
- if grep -x $testname $TEST_JAVA_SRCDIR/ignore > /dev/null; then
- echo " **** java test $testname ignored"
- continue
- fi
-
- echo " ==== java test $testname"
- rm -rf TESTJAVA; mkdir -p TESTJAVA/classes
- cd ./TESTJAVA
- testprefix=../$TEST_JAVA_SRCDIR/$testname
- ${JAVAC} -d ./classes $testprefix.java ../$TEST_JAVA_SRCDIR/TestUtil.java > ../$testname.compileout 2>&1 || {
-pwd
- echo "FAIL: compilation of $testname failed, see ../$testname.compileout"
- exit 1
- }
- rm -f ../$testname.compileout
- infile=$testprefix.testin
- [ -f $infile ] || infile=/dev/null
- goodoutfile=$testprefix.testout
- [ -f $goodoutfile ] || goodoutfile=/dev/null
- gooderrfile=$testprefix.testerr
- [ -f $gooderrfile ] || gooderrfile=/dev/null
- ${JAVA} com.sleepycat.test.$testname <$infile >../$testname.out 2>../$testname.err
- cmp ../$testname.out $goodoutfile > /dev/null || {
- echo "FAIL: $testname output differs: see ../$testname.out, $goodoutfile"
- exit 1
- }
- cmp ../$testname.err $gooderrfile > /dev/null || {
- echo "FAIL: $testname error differs: see ../$testname.err, $gooderrfile"
- exit 1
- }
- cd ..
- rm -f $testname.err $testname.out
-done
-rm -rf TESTJAVA
-exit 0
diff --git a/bdb/test/scr016/ignore b/bdb/test/scr016/ignore
deleted file mode 100644
index 1dfaf6adea4..00000000000
--- a/bdb/test/scr016/ignore
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# $Id: ignore,v 1.4 2002/08/16 19:35:56 dda Exp $
-#
-# A list of tests to ignore
-
-# TestRpcServer is not debugged
-TestRpcServer
-
-# TestReplication is not debugged
-TestReplication
-
-# These are currently not working
-TestAppendRecno
-TestAssociate
-TestLogc
-TestConstruct02
-
-# TestUtil is used by the other tests, it does not stand on its own
-TestUtil
-
-# XA needs a special installation, it is not part of testall
-TestXAServlet
diff --git a/bdb/test/scr016/testall b/bdb/test/scr016/testall
deleted file mode 100644
index a4e1b5a8c70..00000000000
--- a/bdb/test/scr016/testall
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh -
-# $Id: testall,v 1.4 2001/09/13 14:49:37 dda Exp $
-#
-# Run all the Java regression tests
-
-ecode=0
-prefixarg=""
-stdinarg=""
-while :
-do
- case "$1" in
- --prefix=* )
- prefixarg="$1"; shift;;
- --stdin )
- stdinarg="$1"; shift;;
- * )
- break
- esac
-done
-files="`find . -name \*.java -print`"
-for file in $files; do
- name=`echo $file | sed -e 's:^\./::' -e 's/\.java$//'`
- if grep $name ignore > /dev/null; then
- echo " **** java test $name ignored"
- else
- echo " ==== java test $name"
- if ! sh ./testone $prefixarg $stdinarg $name; then
- ecode=1
- fi
- fi
-done
-exit $ecode
diff --git a/bdb/test/scr016/testone b/bdb/test/scr016/testone
deleted file mode 100644
index 5f5d2e0017d..00000000000
--- a/bdb/test/scr016/testone
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/bin/sh -
-# $Id: testone,v 1.5 2002/08/16 19:35:56 dda Exp $
-#
-# Run just one Java regression test, the single argument
-# is the classname within this package.
-
-error()
-{
- echo '' >&2
- echo "Java regression error: $@" >&2
- echo '' >&2
- ecode=1
-}
-
-# compares the result against the good version,
-# reports differences, and removes the result file
-# if there are no differences.
-#
-compare_result()
-{
- good="$1"
- latest="$2"
- if [ ! -e "$good" ]; then
- echo "Note: $good does not exist"
- return
- fi
- tmpout=/tmp/blddb$$.tmp
- diff "$good" "$latest" > $tmpout
- if [ -s $tmpout ]; then
- nbad=`grep '^[0-9]' $tmpout | wc -l`
- error "$good and $latest differ in $nbad places."
- else
- rm $latest
- fi
- rm -f $tmpout
-}
-
-ecode=0
-stdinflag=n
-JAVA=${JAVA:-java}
-JAVAC=${JAVAC:-javac}
-
-# classdir is relative to TESTDIR subdirectory
-classdir=./classes
-
-# CLASSPATH is used by javac and java.
-# We use CLASSPATH rather than the -classpath command line option
-# because the latter behaves differently from JDK1.1 and JDK1.2
-export CLASSPATH="$classdir:$CLASSPATH"
-
-# determine the prefix of the install tree
-prefix=""
-while :
-do
- case "$1" in
- --prefix=* )
- prefix="`echo $1 | sed -e 's/--prefix=//'`"; shift
- export LD_LIBRARY_PATH="$prefix/lib:$LD_LIBRARY_PATH"
- export CLASSPATH="$prefix/lib/db.jar:$CLASSPATH"
- ;;
- --stdin )
- stdinflag=y; shift
- ;;
- * )
- break
- ;;
- esac
-done
-
-if [ "$#" = 0 ]; then
- echo 'Usage: testone [ --prefix=<dir> | --stdin ] TestName'
- exit 1
-fi
-name="$1"
-
-# class must be public
-if ! grep "public.*class.*$name" $name.java > /dev/null; then
- error "public class $name is not declared in file $name.java"
- exit 1
-fi
-
-# compile
-rm -rf TESTDIR; mkdir TESTDIR
-cd ./TESTDIR
-mkdir -p $classdir
-${JAVAC} -d $classdir ../$name.java ../TestUtil.java > ../$name.compileout 2>&1
-if [ $? != 0 -o -s ../$name.compileout ]; then
- error "compilation of $name failed, see $name.compileout"
- exit 1
-fi
-rm -f ../$name.compileout
-
-# find input and error file
-infile=../$name.testin
-if [ ! -f $infile ]; then
- infile=/dev/null
-fi
-
-# run and diff results
-rm -rf TESTDIR
-if [ "$stdinflag" = y ]
-then
- ${JAVA} com.sleepycat.test.$name $TEST_ARGS >../$name.out 2>../$name.err
-else
- ${JAVA} com.sleepycat.test.$name $TEST_ARGS <$infile >../$name.out 2>../$name.err
-fi
-cd ..
-
-testerr=$name.testerr
-if [ ! -f $testerr ]; then
- testerr=/dev/null
-fi
-
-testout=$name.testout
-if [ ! -f $testout ]; then
- testout=/dev/null
-fi
-
-compare_result $testout $name.out
-compare_result $testerr $name.err
-rm -rf TESTDIR
-exit $ecode
diff --git a/bdb/test/scr017/O.BH b/bdb/test/scr017/O.BH
deleted file mode 100644
index cd499d38779..00000000000
--- a/bdb/test/scr017/O.BH
+++ /dev/null
@@ -1,196 +0,0 @@
-abc_10_efg
-abc_10_efg
-abc_11_efg
-abc_11_efg
-abc_12_efg
-abc_12_efg
-abc_13_efg
-abc_13_efg
-abc_14_efg
-abc_14_efg
-abc_15_efg
-abc_15_efg
-abc_16_efg
-abc_16_efg
-abc_17_efg
-abc_17_efg
-abc_18_efg
-abc_18_efg
-abc_19_efg
-abc_19_efg
-abc_1_efg
-abc_1_efg
-abc_20_efg
-abc_20_efg
-abc_21_efg
-abc_21_efg
-abc_22_efg
-abc_22_efg
-abc_23_efg
-abc_23_efg
-abc_24_efg
-abc_24_efg
-abc_25_efg
-abc_25_efg
-abc_26_efg
-abc_26_efg
-abc_27_efg
-abc_27_efg
-abc_28_efg
-abc_28_efg
-abc_29_efg
-abc_29_efg
-abc_2_efg
-abc_2_efg
-abc_30_efg
-abc_30_efg
-abc_31_efg
-abc_31_efg
-abc_32_efg
-abc_32_efg
-abc_33_efg
-abc_33_efg
-abc_34_efg
-abc_34_efg
-abc_36_efg
-abc_36_efg
-abc_37_efg
-abc_37_efg
-abc_38_efg
-abc_38_efg
-abc_39_efg
-abc_39_efg
-abc_3_efg
-abc_3_efg
-abc_40_efg
-abc_40_efg
-abc_41_efg
-abc_41_efg
-abc_42_efg
-abc_42_efg
-abc_43_efg
-abc_43_efg
-abc_44_efg
-abc_44_efg
-abc_45_efg
-abc_45_efg
-abc_46_efg
-abc_46_efg
-abc_47_efg
-abc_47_efg
-abc_48_efg
-abc_48_efg
-abc_49_efg
-abc_49_efg
-abc_4_efg
-abc_4_efg
-abc_50_efg
-abc_50_efg
-abc_51_efg
-abc_51_efg
-abc_52_efg
-abc_52_efg
-abc_53_efg
-abc_53_efg
-abc_54_efg
-abc_54_efg
-abc_55_efg
-abc_55_efg
-abc_56_efg
-abc_56_efg
-abc_57_efg
-abc_57_efg
-abc_58_efg
-abc_58_efg
-abc_59_efg
-abc_59_efg
-abc_5_efg
-abc_5_efg
-abc_60_efg
-abc_60_efg
-abc_61_efg
-abc_61_efg
-abc_62_efg
-abc_62_efg
-abc_63_efg
-abc_63_efg
-abc_64_efg
-abc_64_efg
-abc_65_efg
-abc_65_efg
-abc_66_efg
-abc_66_efg
-abc_67_efg
-abc_67_efg
-abc_68_efg
-abc_68_efg
-abc_69_efg
-abc_69_efg
-abc_6_efg
-abc_6_efg
-abc_70_efg
-abc_70_efg
-abc_71_efg
-abc_71_efg
-abc_72_efg
-abc_72_efg
-abc_73_efg
-abc_73_efg
-abc_74_efg
-abc_74_efg
-abc_75_efg
-abc_75_efg
-abc_76_efg
-abc_76_efg
-abc_77_efg
-abc_77_efg
-abc_78_efg
-abc_78_efg
-abc_79_efg
-abc_79_efg
-abc_7_efg
-abc_7_efg
-abc_80_efg
-abc_80_efg
-abc_81_efg
-abc_81_efg
-abc_82_efg
-abc_82_efg
-abc_83_efg
-abc_83_efg
-abc_84_efg
-abc_84_efg
-abc_85_efg
-abc_85_efg
-abc_86_efg
-abc_86_efg
-abc_87_efg
-abc_87_efg
-abc_88_efg
-abc_88_efg
-abc_89_efg
-abc_89_efg
-abc_8_efg
-abc_8_efg
-abc_90_efg
-abc_90_efg
-abc_91_efg
-abc_91_efg
-abc_92_efg
-abc_92_efg
-abc_93_efg
-abc_93_efg
-abc_94_efg
-abc_94_efg
-abc_95_efg
-abc_95_efg
-abc_96_efg
-abc_96_efg
-abc_97_efg
-abc_97_efg
-abc_98_efg
-abc_98_efg
-abc_99_efg
-abc_99_efg
-abc_9_efg
-abc_9_efg
diff --git a/bdb/test/scr017/O.R b/bdb/test/scr017/O.R
deleted file mode 100644
index d78a04727d8..00000000000
--- a/bdb/test/scr017/O.R
+++ /dev/null
@@ -1,196 +0,0 @@
-1
-abc_1_efg
-2
-abc_2_efg
-3
-abc_3_efg
-4
-abc_4_efg
-5
-abc_5_efg
-6
-abc_6_efg
-7
-abc_7_efg
-8
-abc_8_efg
-9
-abc_9_efg
-10
-abc_10_efg
-11
-abc_11_efg
-12
-abc_12_efg
-13
-abc_13_efg
-14
-abc_14_efg
-15
-abc_15_efg
-16
-abc_16_efg
-17
-abc_17_efg
-18
-abc_18_efg
-19
-abc_19_efg
-20
-abc_20_efg
-21
-abc_21_efg
-22
-abc_22_efg
-23
-abc_23_efg
-24
-abc_24_efg
-25
-abc_25_efg
-26
-abc_26_efg
-27
-abc_27_efg
-28
-abc_28_efg
-29
-abc_29_efg
-30
-abc_30_efg
-31
-abc_31_efg
-32
-abc_32_efg
-33
-abc_33_efg
-34
-abc_34_efg
-35
-abc_36_efg
-36
-abc_37_efg
-37
-abc_38_efg
-38
-abc_39_efg
-39
-abc_40_efg
-40
-abc_41_efg
-41
-abc_42_efg
-42
-abc_43_efg
-43
-abc_44_efg
-44
-abc_45_efg
-45
-abc_46_efg
-46
-abc_47_efg
-47
-abc_48_efg
-48
-abc_49_efg
-49
-abc_50_efg
-50
-abc_51_efg
-51
-abc_52_efg
-52
-abc_53_efg
-53
-abc_54_efg
-54
-abc_55_efg
-55
-abc_56_efg
-56
-abc_57_efg
-57
-abc_58_efg
-58
-abc_59_efg
-59
-abc_60_efg
-60
-abc_61_efg
-61
-abc_62_efg
-62
-abc_63_efg
-63
-abc_64_efg
-64
-abc_65_efg
-65
-abc_66_efg
-66
-abc_67_efg
-67
-abc_68_efg
-68
-abc_69_efg
-69
-abc_70_efg
-70
-abc_71_efg
-71
-abc_72_efg
-72
-abc_73_efg
-73
-abc_74_efg
-74
-abc_75_efg
-75
-abc_76_efg
-76
-abc_77_efg
-77
-abc_78_efg
-78
-abc_79_efg
-79
-abc_80_efg
-80
-abc_81_efg
-81
-abc_82_efg
-82
-abc_83_efg
-83
-abc_84_efg
-84
-abc_85_efg
-85
-abc_86_efg
-86
-abc_87_efg
-87
-abc_88_efg
-88
-abc_89_efg
-89
-abc_90_efg
-90
-abc_91_efg
-91
-abc_92_efg
-92
-abc_93_efg
-93
-abc_94_efg
-94
-abc_95_efg
-95
-abc_96_efg
-96
-abc_97_efg
-97
-abc_98_efg
-98
-abc_99_efg
diff --git a/bdb/test/scr017/chk.db185 b/bdb/test/scr017/chk.db185
deleted file mode 100644
index c2a07c51d26..00000000000
--- a/bdb/test/scr017/chk.db185
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.db185,v 1.2 2001/10/12 17:55:38 bostic Exp $
-#
-# Check to make sure we can run DB 1.85 code.
-
-[ -f ../libdb.a ] || (cd .. && make libdb.a) || {
- echo 'FAIL: unable to find or build libdb.a'
- exit 1
-}
-
-if cc -g -Wall -I.. t.c ../libdb.a -o t; then
- :
-else
- echo "FAIL: unable to compile test program t.c"
- exit 1
-fi
-
-if ./t; then
- :
-else
- echo "FAIL: test program failed"
- exit 1
-fi
-
-exit 0
diff --git a/bdb/test/scr017/t.c b/bdb/test/scr017/t.c
deleted file mode 100644
index f03b33880d6..00000000000
--- a/bdb/test/scr017/t.c
+++ /dev/null
@@ -1,188 +0,0 @@
-#include <sys/types.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "db_185.h"
-
-void err(char *);
-int mycmp(const DBT *, const DBT *);
-void ops(DB *, int);
-
-int
-main()
-{
- DB *dbp;
- HASHINFO h_info;
- BTREEINFO b_info;
- RECNOINFO r_info;
-
- printf("\tBtree...\n");
- memset(&b_info, 0, sizeof(b_info));
- b_info.flags = R_DUP;
- b_info.cachesize = 100 * 1024;
- b_info.psize = 512;
- b_info.lorder = 4321;
- b_info.compare = mycmp;
- (void)remove("a.db");
- if ((dbp =
- dbopen("a.db", O_CREAT | O_RDWR, 0664, DB_BTREE, &b_info)) == NULL)
- err("dbopen: btree");
- ops(dbp, DB_BTREE);
-
- printf("\tHash...\n");
- memset(&h_info, 0, sizeof(h_info));
- h_info.bsize = 512;
- h_info.ffactor = 6;
- h_info.nelem = 1000;
- h_info.cachesize = 100 * 1024;
- h_info.lorder = 1234;
- (void)remove("a.db");
- if ((dbp =
- dbopen("a.db", O_CREAT | O_RDWR, 0664, DB_HASH, &h_info)) == NULL)
- err("dbopen: hash");
- ops(dbp, DB_HASH);
-
- printf("\tRecno...\n");
- memset(&r_info, 0, sizeof(r_info));
- r_info.flags = R_FIXEDLEN;
- r_info.cachesize = 100 * 1024;
- r_info.psize = 1024;
- r_info.reclen = 37;
- (void)remove("a.db");
- if ((dbp =
- dbopen("a.db", O_CREAT | O_RDWR, 0664, DB_RECNO, &r_info)) == NULL)
- err("dbopen: recno");
- ops(dbp, DB_RECNO);
-
- return (0);
-}
-
-int
-mycmp(a, b)
- const DBT *a, *b;
-{
- size_t len;
- u_int8_t *p1, *p2;
-
- len = a->size > b->size ? b->size : a->size;
- for (p1 = a->data, p2 = b->data; len--; ++p1, ++p2)
- if (*p1 != *p2)
- return ((long)*p1 - (long)*p2);
- return ((long)a->size - (long)b->size);
-}
-
-void
-ops(dbp, type)
- DB *dbp;
- int type;
-{
- FILE *outfp;
- DBT key, data;
- recno_t recno;
- int i, ret;
- char buf[64];
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- for (i = 1; i < 100; ++i) { /* Test DB->put. */
- sprintf(buf, "abc_%d_efg", i);
- if (type == DB_RECNO) {
- recno = i;
- key.data = &recno;
- key.size = sizeof(recno);
- } else {
- key.data = data.data = buf;
- key.size = data.size = strlen(buf);
- }
-
- data.data = buf;
- data.size = strlen(buf);
- if (dbp->put(dbp, &key, &data, 0))
- err("DB->put");
- }
-
- if (type == DB_RECNO) { /* Test DB->get. */
- recno = 97;
- key.data = &recno;
- key.size = sizeof(recno);
- } else {
- key.data = buf;
- key.size = strlen(buf);
- }
- sprintf(buf, "abc_%d_efg", 97);
- if (dbp->get(dbp, &key, &data, 0) != 0)
- err("DB->get");
- if (memcmp(data.data, buf, strlen(buf)))
- err("DB->get: wrong data returned");
-
- if (type == DB_RECNO) { /* Test DB->put no-overwrite. */
- recno = 42;
- key.data = &recno;
- key.size = sizeof(recno);
- } else {
- key.data = buf;
- key.size = strlen(buf);
- }
- sprintf(buf, "abc_%d_efg", 42);
- if (dbp->put(dbp, &key, &data, R_NOOVERWRITE) == 0)
- err("DB->put: no-overwrite succeeded");
-
- if (type == DB_RECNO) { /* Test DB->del. */
- recno = 35;
- key.data = &recno;
- key.size = sizeof(recno);
- } else {
- sprintf(buf, "abc_%d_efg", 35);
- key.data = buf;
- key.size = strlen(buf);
- }
- if (dbp->del(dbp, &key, 0))
- err("DB->del");
-
- /* Test DB->seq. */
- if ((outfp = fopen("output", "w")) == NULL)
- err("fopen: output");
- while ((ret = dbp->seq(dbp, &key, &data, R_NEXT)) == 0) {
- if (type == DB_RECNO)
- fprintf(outfp, "%d\n", *(int *)key.data);
- else
- fprintf(outfp,
- "%.*s\n", (int)key.size, (char *)key.data);
- fprintf(outfp, "%.*s\n", (int)data.size, (char *)data.data);
- }
- if (ret != 1)
- err("DB->seq");
- fclose(outfp);
- switch (type) {
- case DB_BTREE:
- ret = system("cmp output O.BH");
- break;
- case DB_HASH:
- ret = system("sort output | cmp - O.BH");
- break;
- case DB_RECNO:
- ret = system("cmp output O.R");
- break;
- }
- if (ret != 0)
- err("output comparison failed");
-
- if (dbp->sync(dbp, 0)) /* Test DB->sync. */
- err("DB->sync");
-
- if (dbp->close(dbp)) /* Test DB->close. */
- err("DB->close");
-}
-
-void
-err(s)
- char *s;
-{
- fprintf(stderr, "\t%s: %s\n", s, strerror(errno));
- exit (1);
-}
diff --git a/bdb/test/scr018/chk.comma b/bdb/test/scr018/chk.comma
deleted file mode 100644
index 42df48d1881..00000000000
--- a/bdb/test/scr018/chk.comma
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.comma,v 1.1 2001/11/03 18:43:49 bostic Exp $
-#
-# Look for trailing commas in declarations. Some compilers can't handle:
-# enum {
-# foo,
-# bar,
-# };
-
-[ -f ../libdb.a ] || (cd .. && make libdb.a) || {
- echo 'FAIL: unable to find or build libdb.a'
- exit 1
-}
-
-if cc -g -Wall -I.. t.c ../libdb.a -o t; then
- :
-else
- echo "FAIL: unable to compile test program t.c"
- exit 1
-fi
-
-if ./t ../../*/*.[ch] ../../*/*.in; then
- :
-else
- echo "FAIL: test program failed"
- exit 1
-fi
-
-exit 0
diff --git a/bdb/test/scr018/t.c b/bdb/test/scr018/t.c
deleted file mode 100644
index 4056a605928..00000000000
--- a/bdb/test/scr018/t.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <sys/types.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-#include <strings.h>
-
-int
-chk(f)
- char *f;
-{
- int ch, l, r;
-
- if (freopen(f, "r", stdin) == NULL) {
- fprintf(stderr, "%s: %s\n", f, strerror(errno));
- exit (1);
- }
- for (l = 1, r = 0; (ch = getchar()) != EOF;) {
- if (ch != ',')
- goto next;
- do { ch = getchar(); } while (isblank(ch));
- if (ch != '\n')
- goto next;
- ++l;
- do { ch = getchar(); } while (isblank(ch));
- if (ch != '}')
- goto next;
- r = 1;
- printf("%s: line %d\n", f, l);
-
-next: if (ch == '\n')
- ++l;
- }
- return (r);
-}
-
-int
-main(int argc, char *argv[])
-{
- int r;
-
- for (r = 0; *++argv != NULL;)
- if (chk(*argv))
- r = 1;
- return (r);
-}
diff --git a/bdb/test/scr019/chk.include b/bdb/test/scr019/chk.include
deleted file mode 100644
index 444217bedb4..00000000000
--- a/bdb/test/scr019/chk.include
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.include,v 1.3 2002/03/27 04:33:09 bostic Exp $
-#
-# Check for inclusion of files already included in db_int.h.
-
-d=../..
-
-# Test must be run from the top-level directory, not from a test directory.
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-t1=__1
-t2=__2
-
-egrep -- '#include[ ]' $d/dbinc/db_int.in |
-sed -e '/[ ]db\.h'/d \
- -e 's/^#include.//' \
- -e 's/[<>"]//g' \
- -e 's/[ ].*//' > $t1
-
-for i in `cat $t1`; do
- (cd $d && egrep "^#include[ ].*[<\"]$i[>\"]" */*.[ch])
-done |
-sed -e '/^build/d' \
- -e '/^db_dump185/d' \
- -e '/^examples_c/d' \
- -e '/^libdb_java.*errno.h/d' \
- -e '/^libdb_java.*java_util.h/d' \
- -e '/^test_/d' \
- -e '/^mutex\/tm.c/d' > $t2
-
-[ -s $t2 ] && {
- echo 'FAIL: found extraneous includes in the source'
- cat $t2
- exit 1
-}
-exit 0
diff --git a/bdb/test/scr020/chk.inc b/bdb/test/scr020/chk.inc
deleted file mode 100644
index 189126b10c3..00000000000
--- a/bdb/test/scr020/chk.inc
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.inc,v 1.1 2002/02/10 17:14:33 bostic Exp $
-#
-# Check for inclusion of db_config.h after "const" or other includes.
-
-d=../..
-
-# Test must be run from the top-level directory, not from a test directory.
-[ -f $d/LICENSE ] || {
- echo 'FAIL: cannot find source distribution directory.'
- exit 1
-}
-
-t1=__1
-t2=__2
-
-(cd $d && find . -name '*.[chys]' -o -name '*.cpp' |
- xargs egrep -l '#include.*db_config.h') > $t1
-
-:> $t2
-for i in `cat $t1`; do
- egrep -w 'db_config.h|const' /dev/null $d/$i | head -1 >> $t2
-done
-
-if egrep const $t2 > /dev/null; then
- echo 'FAIL: found const before include of db_config.h'
- egrep const $t2
- exit 1
-fi
-
-:> $t2
-for i in `cat $t1`; do
- egrep -w '#include' /dev/null $d/$i | head -1 >> $t2
-done
-
-if egrep -v db_config.h $t2 > /dev/null; then
- echo 'FAIL: found includes before include of db_config.h'
- egrep -v db_config.h $t2
- exit 1
-fi
-
-exit 0
diff --git a/bdb/test/scr021/chk.flags b/bdb/test/scr021/chk.flags
deleted file mode 100644
index 1b2bb62cca7..00000000000
--- a/bdb/test/scr021/chk.flags
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.flags,v 1.8 2002/08/14 02:19:55 bostic Exp $
-#
-# Check flag name-spaces.
-
-d=../..
-
-t1=__1
-
-# Check for DB_ENV flags.
-(grep 'F_ISSET([^ ]*dbenv,' $d/*/*.[chys];
- grep 'F_SET([^ ]*dbenv,' $d/*/*.[chys];
- grep 'F_CLR([^ ]*dbenv,' $d/*/*.[chys]) |
- sed -e '/DB_ENV_/d' -e '/F_SET([^ ]*dbenv, db_env_reset)/d' > $t1
-[ -s $t1 ] && {
- cat $t1
- exit 1
-}
-
-grep 'DB_ENV_' $d/*/*.c |
-sed -e '/F_.*dbenv,/d' \
- -e '/DB_ENV_TEST_RECOVERY(.*DB_TEST_/d' \
- -e '/\/libdb_java\//d' > $t1
-[ -s $t1 ] && {
- cat $t1
- exit 1
-}
-
-# Check for DB flags.
-(grep 'F_ISSET([^ ]*dbp,' $d/*/*.[chys];
- grep 'F_SET([^ ]*dbp,' $d/*/*.[chys];
- grep 'F_CLR([^ ]*dbp,' $d/*/*.[chys]) |
- sed -e '/DB_AM_/d' \
- -e '/db.c:.*F_SET.*F_ISSET(subdbp,/d' > $t1
-[ -s $t1 ] && {
- cat $t1
- exit 1
-}
-
-grep 'DB_AM_' $d/*/*.c |
-sed -e '/F_.*dbp/d' \
- -e '/"DB->open", dbp->flags, DB_AM_DUP,/d' \
- -e '/"DB_NODUPDATA" behavior for databases with/d' \
- -e '/If DB_AM_OPEN_CALLED is not set, then we/d' \
- -e '/This was checked in set_flags when DB_AM_ENCRYPT/d' \
- -e '/XA_ABORT, we can safely set DB_AM_RECOVER/d' \
- -e '/ DB_AM_RECNUM\./d' \
- -e '/ DB_AM_RECOVER set\./d' \
- -e '/isdup = dbp->flags & DB_AM_DUP/d' \
- -e '/otherwise we simply do/d' \
- -e '/pginfo/d' \
- -e '/setting DB_AM_RECOVER, we guarantee that we don/d' \
- -e '/:[ {]*DB_AM_/d' > $t1
-[ -s $t1 ] && {
- cat $t1
- exit 1
-}
-
-# Check for DBC flags.
-(grep 'F_ISSET([^ ]*dbc,' $d/*/*.[chys];
- grep 'F_SET([^ ]*dbc,' $d/*/*.[chys];
- grep 'F_CLR([^ ]*dbc,' $d/*/*.[chys]) |
- sed -e '/DBC_/d' > $t1
-[ -s $t1 ] && {
- cat $t1
- exit 1
-}
-
-grep 'DBC_' $d/*/*.c |
-sed -e '/F_.*dbc/d' \
- -e '/DBC_INTERNAL/d' \
- -e '/DBC_LOGGING/d' \
- -e '/Do the actual get. Set DBC_TRANSIENT/d' \
- -e '/If DBC_WRITEDUP is set, the cursor is an in/d' \
- -e '/The DBC_TRANSIENT flag indicates that we/d' \
- -e '/This function replaces the DBC_CONTINUE and DBC_KEYSET/d' \
- -e '/db_cam.c:.*F_CLR(opd, DBC_ACTIVE);/d' \
- -e '/{ DBC_/d' > $t1
-[ -s $t1 ] && {
- cat $t1
- exit 1
-}
-
-# Check for bad use of macros.
-egrep 'case .*F_SET\(|case .*F_CLR\(' $d/*/*.c > $t1
-egrep 'for .*F_SET\(|for .*F_CLR\(' $d/*/*.c >> $t1
-egrep 'if .*F_SET\(|if .*F_CLR\(' $d/*/*.c >> $t1
-egrep 'switch .*F_SET\(|switch .*F_CLR\(' $d/*/*.c >> $t1
-egrep 'while .*F_SET\(|while .*F_CLR\(' $d/*/*.c >> $t1
-[ -s $t1 ] && {
- echo 'if statement followed by non-test macro'
- cat $t1
- exit 1
-}
-
-exit 0
diff --git a/bdb/test/scr022/chk.rr b/bdb/test/scr022/chk.rr
deleted file mode 100644
index df230315299..00000000000
--- a/bdb/test/scr022/chk.rr
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh -
-#
-# $Id: chk.rr,v 1.1 2002/04/19 15:13:05 bostic Exp $
-
-d=../..
-
-t1=__1
-
-# Check for DB_RUNRECOVERY being specified instead of a call to db_panic.
-egrep DB_RUNRECOVERY $d/*/*.c |
- sed -e '/common\/db_err.c:/d' \
- -e '/libdb_java\/java_util.c:/d' \
- -e '/db_dispatch.c:.*if (ret == DB_RUNRECOVERY/d' \
- -e '/txn.c:.* \* DB_RUNRECOVERY and we need to/d' \
- -e '/__db_panic(.*, DB_RUNRECOVERY)/d' > $t1
-[ -s $t1 ] && {
- echo "DB_RUNRECOVERY used; should be a call to db_panic."
- cat $t1
- exit 1
-}
-
-exit 0
diff --git a/bdb/test/sdb001.tcl b/bdb/test/sdb001.tcl
deleted file mode 100644
index a03160e0ab7..00000000000
--- a/bdb/test/sdb001.tcl
+++ /dev/null
@@ -1,156 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb001.tcl,v 11.18 2002/06/10 15:39:36 sue Exp $
-#
-# TEST subdb001 Tests mixing db and subdb operations
-# TEST Tests mixing db and subdb operations
-# TEST Create a db, add data, try to create a subdb.
-# TEST Test naming db and subdb with a leading - for correct parsing
-# TEST Existence check -- test use of -excl with subdbs
-# TEST
-# TEST Test non-subdb and subdb operations
-# TEST Test naming (filenames begin with -)
-# TEST Test existence (cannot create subdb of same name with -excl)
-proc subdb001 { method args } {
- source ./include.tcl
- global errorInfo
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_queue $method] == 1 } {
- puts "Subdb001: skipping for method $method"
- return
- }
- puts "Subdb001: $method ($args) subdb and non-subdb tests"
-
- set testfile $testdir/subdb001.db
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- set env NULL
- incr eindex
- set env [lindex $args $eindex]
- puts "Subdb001 skipping for env $env"
- return
- }
- # Create the database and open the dictionary
- set subdb subdb0
- cleanup $testdir NULL
- puts "\tSubdb001.a: Non-subdb database and subdb operations"
- #
- # Create a db with no subdbs. Add some data. Close. Try to
- # open/add with a subdb. Should fail.
- #
- puts "\tSubdb001.a.0: Create db, add data, close, try subdb"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
- while { [gets $did str] != -1 && $count < 5 } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) $str
- } else {
- set key $str
- }
- set ret [eval \
- {$db put} $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $str]]]
- incr count
- }
- close $did
- error_check_good db_close [$db close] 0
- set ret [catch {eval {berkdb_open_noerr -create -mode 0644} $args \
- {$omethod $testfile $subdb}} db]
- error_check_bad dbopen $ret 0
- #
- # Create a db with no subdbs. Add no data. Close. Try to
- # open/add with a subdb. Should fail.
- #
- set testfile $testdir/subdb001a.db
- puts "\tSubdb001.a.1: Create db, close, try subdb"
- #
- # !!!
- # Using -truncate is illegal when opening for subdbs, but we
- # can use it here because we are not using subdbs for this
- # create.
- #
- set db [eval {berkdb_open -create -truncate -mode 0644} $args \
- {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- set ret [catch {eval {berkdb_open_noerr -create -mode 0644} $args \
- {$omethod $testfile $subdb}} db]
- error_check_bad dbopen $ret 0
-
- if { [is_queue $method] == 1 } {
- puts "Subdb001: skipping remainder of test for method $method"
- return
- }
-
- #
- # Test naming, db and subdb names beginning with -.
- #
- puts "\tSubdb001.b: Naming"
- set cwd [pwd]
- cd $testdir
- set testfile1 -subdb001.db
- set subdb -subdb
- puts "\tSubdb001.b.0: Create db and subdb with -name, no --"
- set ret [catch {eval {berkdb_open -create -mode 0644} $args \
- {$omethod $testfile1 $subdb}} db]
- error_check_bad dbopen $ret 0
- puts "\tSubdb001.b.1: Create db and subdb with -name, with --"
- set db [eval {berkdb_open -create -mode 0644} $args \
- {$omethod -- $testfile1 $subdb}]
- error_check_good dbopen [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- cd $cwd
-
- #
- # Create 1 db with 1 subdb. Try to create another subdb of
- # the same name. Should fail.
- #
- puts "\tSubdb001.c: Truncate check"
- set testfile $testdir/subdb001c.db
- set subdb subdb
- set stat [catch {eval {berkdb_open_noerr -create -truncate -mode 0644} \
- $args {$omethod $testfile $subdb}} ret]
- error_check_bad dbopen $stat 0
- error_check_good trunc [is_substr $ret \
- "illegal with multiple databases"] 1
-
- puts "\tSubdb001.d: Existence check"
- set testfile $testdir/subdb001d.db
- set subdb subdb
- set ret [catch {eval {berkdb_open -create -excl -mode 0644} $args \
- {$omethod $testfile $subdb}} db]
- error_check_good dbopen [is_valid_db $db] TRUE
- set ret [catch {eval {berkdb_open_noerr -create -excl -mode 0644} \
- $args {$omethod $testfile $subdb}} db1]
- error_check_bad dbopen $ret 0
- error_check_good db_close [$db close] 0
-
- return
-}
diff --git a/bdb/test/sdb002.tcl b/bdb/test/sdb002.tcl
deleted file mode 100644
index 4757e12afc7..00000000000
--- a/bdb/test/sdb002.tcl
+++ /dev/null
@@ -1,221 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb002.tcl,v 11.35 2002/08/23 18:01:53 sandstro Exp $
-#
-# TEST subdb002
-# TEST Tests basic subdb functionality
-# TEST Small keys, small data
-# TEST Put/get per key
-# TEST Dump file
-# TEST Close, reopen
-# TEST Dump file
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; retrieve each.
-# TEST After all are entered, retrieve all; compare output to original.
-# TEST Close file, reopen, do retrieve and re-verify.
-# TEST Then repeat using an environment.
-proc subdb002 { method {nentries 10000} args } {
- global passwd
-
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- set env NULL
- incr eindex
- set env [lindex $args $eindex]
- puts "Subdb002 skipping for env $env"
- return
- }
- set largs $args
- subdb002_main $method $nentries $largs
- append largs " -chksum "
- subdb002_main $method $nentries $largs
- append largs "-encryptaes $passwd "
- subdb002_main $method $nentries $largs
-}
-
-proc subdb002_main { method nentries largs } {
- source ./include.tcl
- global encrypt
-
- set largs [convert_args $method $largs]
- set omethod [convert_method $method]
-
- env_cleanup $testdir
-
- puts "Subdb002: $method ($largs) basic subdb tests"
- set testfile $testdir/subdb002.db
- subdb002_body $method $omethod $nentries $largs $testfile NULL
-
- # Run convert_encrypt so that old_encrypt will be reset to
- # the proper value and cleanup will work.
- convert_encrypt $largs
- set encargs ""
- set largs [split_encargs $largs encargs]
-
- cleanup $testdir NULL
- if { [is_queue $omethod] == 1 } {
- set sdb002_env berkdb_env_noerr
- } else {
- set sdb002_env berkdb_env
- }
- set env [eval {$sdb002_env -create -cachesize {0 10000000 0} \
- -mode 0644 -txn} -home $testdir $encargs]
- error_check_good env_open [is_valid_env $env] TRUE
- puts "Subdb002: $method ($largs) basic subdb tests in an environment"
-
- # We're in an env--use default path to database rather than specifying
- # it explicitly.
- set testfile subdb002.db
- subdb002_body $method $omethod $nentries $largs $testfile $env
- error_check_good env_close [$env close] 0
-}
-
-proc subdb002_body { method omethod nentries largs testfile env } {
- global encrypt
- global passwd
- source ./include.tcl
-
- # Create the database and open the dictionary
- set subdb subdb0
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
-
- if { [is_queue $omethod] == 1 } {
- set sdb002_open berkdb_open_noerr
- } else {
- set sdb002_open berkdb_open
- }
-
- if { $env == "NULL" } {
- set ret [catch {eval {$sdb002_open -create -mode 0644} $largs \
- {$omethod $testfile $subdb}} db]
- } else {
- set ret [catch {eval {$sdb002_open -create -mode 0644} $largs \
- {-env $env $omethod $testfile $subdb}} db]
- }
-
- #
- # If -queue method, we need to make sure that trying to
- # create a subdb fails.
- if { [is_queue $method] == 1 } {
- error_check_bad dbopen $ret 0
- puts "Subdb002: skipping remainder of test for method $method"
- return
- }
-
- error_check_good dbopen $ret 0
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- set checkfunc subdb002_recno.check
- append gflags " -recno"
- } else {
- set checkfunc subdb002.check
- }
- puts "\tSubdb002.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) [pad_data $method $str]
- } else {
- set key $str
- }
- set ret [eval \
- {$db put} $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $str]]]
- incr count
- }
- close $did
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tSubdb002.b: dump file"
- dump_file $db $txn $t1 $checkfunc
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good Subdb002:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tSubdb002.c: close, open, and dump file"
- # Now, reopen the file and run the last test again.
- open_and_dump_subfile $testfile $env $t1 $checkfunc \
- dump_file_direction "-first" "-next" $subdb
- if { [is_record_based $method] != 1 } {
- filesort $t1 $t3
- }
-
- error_check_good Subdb002:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- puts "\tSubdb002.d: close, open, and dump file in reverse direction"
- open_and_dump_subfile $testfile $env $t1 $checkfunc \
- dump_file_direction "-last" "-prev" $subdb
-
- if { [is_record_based $method] != 1 } {
- filesort $t1 $t3
- }
-
- error_check_good Subdb002:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tSubdb002.e: db_dump with subdatabase"
- set outfile $testdir/subdb002.dump
- set dumpargs " -f $outfile -s $subdb "
- if { $encrypt > 0 } {
- append dumpargs " -P $passwd "
- }
- if { $env != "NULL" } {
- append dumpargs " -h $testdir "
- }
- append dumpargs " $testfile"
- set stat [catch {eval {exec $util_path/db_dump} $dumpargs} ret]
- error_check_good dbdump.subdb $stat 0
-}
-
-# Check function for Subdb002; keys and data are identical
-proc subdb002.check { key data } {
- error_check_good "key/data mismatch" $data $key
-}
-
-proc subdb002_recno.check { key data } {
- global dict
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data $kvals($key)
-}
diff --git a/bdb/test/sdb003.tcl b/bdb/test/sdb003.tcl
deleted file mode 100644
index 5d1536d8c84..00000000000
--- a/bdb/test/sdb003.tcl
+++ /dev/null
@@ -1,179 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb003.tcl,v 11.24 2002/06/10 15:39:37 sue Exp $
-#
-# TEST subdb003
-# TEST Tests many subdbs
-# TEST Creates many subdbs and puts a small amount of
-# TEST data in each (many defaults to 2000)
-# TEST
-# TEST Use the first 10,000 entries from the dictionary as subdbnames.
-# TEST Insert each with entry as name of subdatabase and a partial list
-# TEST as key/data. After all are entered, retrieve all; compare output
-# TEST to original. Close file, reopen, do retrieve and re-verify.
-proc subdb003 { method {nentries 1000} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_queue $method] == 1 } {
- puts "Subdb003: skipping for method $method"
- return
- }
-
- puts "Subdb003: $method ($args) many subdb tests"
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb003.db
- set env NULL
- } else {
- set testfile subdb003.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- if { $nentries == 1000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- # Create the database and open the dictionary
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- set pflags ""
- set gflags ""
- set txn ""
- set fcount 0
-
- if { [is_record_based $method] == 1 } {
- set checkfunc subdb003_recno.check
- append gflags " -recno"
- } else {
- set checkfunc subdb003.check
- }
-
- # Here is the loop where we put and get each key/data pair
- set ndataent 10
- set fdid [open $dict]
- while { [gets $fdid str] != -1 && $fcount < $nentries } {
- set subdb $str
- set db [eval {berkdb_open -create -mode 0644} \
- $args {$omethod $testfile $subdb}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set count 0
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $ndataent } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) [pad_data $method $str]
- } else {
- set key $str
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get $ret [list [list $key \
- [pad_data $method $str]]]
- incr count
- }
- close $did
- incr fcount
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $ndataent} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set q q
- filehead $ndataent $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good Subdb003:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again.
- open_and_dump_subfile $testfile $env $t1 $checkfunc \
- dump_file_direction "-first" "-next" $subdb
- if { [is_record_based $method] != 1 } {
- filesort $t1 $t3
- }
-
- error_check_good Subdb003:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- open_and_dump_subfile $testfile $env $t1 $checkfunc \
- dump_file_direction "-last" "-prev" $subdb
-
- if { [is_record_based $method] != 1 } {
- filesort $t1 $t3
- }
-
- error_check_good Subdb003:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
- if { [expr $fcount % 100] == 0 } {
- puts -nonewline "$fcount "
- flush stdout
- }
- }
- close $fdid
- puts ""
-}
-
-# Check function for Subdb003; keys and data are identical
-proc subdb003.check { key data } {
- error_check_good "key/data mismatch" $data $key
-}
-
-proc subdb003_recno.check { key data } {
- global dict
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data $kvals($key)
-}
diff --git a/bdb/test/sdb004.tcl b/bdb/test/sdb004.tcl
deleted file mode 100644
index d3d95f1fde0..00000000000
--- a/bdb/test/sdb004.tcl
+++ /dev/null
@@ -1,241 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb004.tcl,v 11.22 2002/07/11 18:53:45 sandstro Exp $
-#
-# TEST subdb004
-# TEST Tests large subdb names
-# TEST subdb name = filecontents,
-# TEST key = filename, data = filecontents
-# TEST Put/get per key
-# TEST Dump file
-# TEST Dump subdbs, verify data and subdb name match
-# TEST
-# TEST Create 1 db with many large subdbs. Use the contents as subdb names.
-# TEST Take the source files and dbtest executable and enter their names as
-# TEST the key with their contents as data. After all are entered, retrieve
-# TEST all; compare output to original. Close file, reopen, do retrieve and
-# TEST re-verify.
-proc subdb004 { method args} {
- global names
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_queue $method] == 1 || [is_fixed_length $method] == 1 } {
- puts "Subdb004: skipping for method $method"
- return
- }
-
- puts "Subdb004: $method ($args) \
- filecontents=subdbname filename=key filecontents=data pairs"
-
- set txnenv 0
- set envargs ""
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb004.db
- set env NULL
- } else {
- set testfile subdb004.db
- incr eindex
- set env [lindex $args $eindex]
- set envargs " -env $env "
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- append envargs " -auto_commit "
- }
- set testdir [get_home $env]
- }
- # Create the database and open the dictionary
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
-
- cleanup $testdir $env
- set pflags ""
- set gflags ""
- set txn ""
- if { [is_record_based $method] == 1 } {
- set checkfunc subdb004_recno.check
- append gflags "-recno"
- } else {
- set checkfunc subdb004.check
- }
-
- # Here is the loop where we put and get each key/data pair
- # Note that the subdatabase name is passed in as a char *, not
- # in a DBT, so it may not contain nulls; use only source files.
- set file_list [glob $src_root/*/*.c]
- set fcount [llength $file_list]
- if { $txnenv == 1 && $fcount > 100 } {
- set file_list [lrange $file_list 0 99]
- set fcount 100
- }
-
- set count 0
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $fcount} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- } else {
- set oid [open $t2.tmp w]
- foreach f $file_list {
- puts $oid $f
- }
- close $oid
- filesort $t2.tmp $t2
- }
- puts "\tSubdb004.a: Set/Check each subdb"
- foreach f $file_list {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- set names([expr $count + 1]) $f
- } else {
- set key $f
- }
- # Should really catch errors
- set fid [open $f r]
- fconfigure $fid -translation binary
- set data [read $fid]
- set subdb $data
- close $fid
- set db [eval {berkdb_open -create -mode 0644} \
- $args {$omethod $testfile $subdb}]
- error_check_good dbopen [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval \
- {$db put} $txn $pflags {$key [chop_data $method $data]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Should really catch errors
- set fid [open $t4 w]
- fconfigure $fid -translation binary
- if [catch {eval {$db get} $gflags {$key}} data] {
- puts -nonewline $fid $data
- } else {
- # Data looks like {{key data}}
- set key [lindex [lindex $data 0] 0]
- set data [lindex [lindex $data 0] 1]
- puts -nonewline $fid $data
- }
- close $fid
-
- error_check_good Subdb004:diff($f,$t4) \
- [filecmp $f $t4] 0
-
- incr count
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- # puts "\tSubdb004.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_bin_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- }
-
- #
- # Now for each file, check that the subdb name is the same
- # as the data in that subdb and that the filename is the key.
- #
- puts "\tSubdb004.b: Compare subdb names with key/data"
- set db [eval {berkdb_open -rdonly} $envargs {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set c [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $c $db] TRUE
-
- for {set d [$c get -first] } { [llength $d] != 0 } \
- {set d [$c get -next] } {
- set subdbname [lindex [lindex $d 0] 0]
- set subdb [eval {berkdb_open} $args {$testfile $subdbname}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Output the subdb name
- set ofid [open $t3 w]
- fconfigure $ofid -translation binary
- if { [string compare "\0" \
- [string range $subdbname end end]] == 0 } {
- set slen [expr [string length $subdbname] - 2]
- set subdbname [string range $subdbname 1 $slen]
- }
- puts -nonewline $ofid $subdbname
- close $ofid
-
- # Output the data
- set subc [eval {$subdb cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $subc $subdb] TRUE
- set d [$subc get -first]
- error_check_good dbc_get [expr [llength $d] != 0] 1
- set key [lindex [lindex $d 0] 0]
- set data [lindex [lindex $d 0] 1]
-
- set ofid [open $t1 w]
- fconfigure $ofid -translation binary
- puts -nonewline $ofid $data
- close $ofid
-
- $checkfunc $key $t1
- $checkfunc $key $t3
-
- error_check_good Subdb004:diff($t3,$t1) \
- [filecmp $t3 $t1] 0
- error_check_good curs_close [$subc close] 0
- error_check_good db_close [$subdb close] 0
- }
- error_check_good curs_close [$c close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- if { [is_record_based $method] != 1 } {
- fileremove $t2.tmp
- }
-}
-
-# Check function for subdb004; key should be file name; data should be contents
-proc subdb004.check { binfile tmpfile } {
- source ./include.tcl
-
- error_check_good Subdb004:datamismatch($binfile,$tmpfile) \
- [filecmp $binfile $tmpfile] 0
-}
-proc subdb004_recno.check { binfile tmpfile } {
- global names
- source ./include.tcl
-
- set fname $names($binfile)
- error_check_good key"$binfile"_exists [info exists names($binfile)] 1
- error_check_good Subdb004:datamismatch($fname,$tmpfile) \
- [filecmp $fname $tmpfile] 0
-}
diff --git a/bdb/test/sdb005.tcl b/bdb/test/sdb005.tcl
deleted file mode 100644
index 98cea5b348b..00000000000
--- a/bdb/test/sdb005.tcl
+++ /dev/null
@@ -1,146 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb005.tcl,v 11.18 2002/07/11 18:53:46 sandstro Exp $
-#
-# TEST subdb005
-# TEST Tests cursor operations in subdbs
-# TEST Put/get per key
-# TEST Verify cursor operations work within subdb
-# TEST Verify cursor operations do not work across subdbs
-# TEST
-#
-# We should test this on all btrees, all hash, and a combination thereof
-proc subdb005 {method {nentries 100} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_queue $method] == 1 } {
- puts "Subdb005: skipping for method $method"
- return
- }
-
- puts "Subdb005: $method ( $args ) subdb cursor operations test"
- set txnenv 0
- set envargs ""
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb005.db
- set env NULL
- } else {
- set testfile subdb005.db
- incr eindex
- set env [lindex $args $eindex]
- set envargs " -env $env "
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- append envargs " -auto_commit "
- if { $nentries == 100 } {
- set nentries 20
- }
- }
- set testdir [get_home $env]
- }
-
- cleanup $testdir $env
- set txn ""
- set psize 8192
- set duplist {-1 -1 -1 -1 -1}
- build_all_subdb \
- $testfile [list $method] $psize $duplist $nentries $args
- set numdb [llength $duplist]
- #
- # Get a cursor in each subdb and move past the end of each
- # subdb. Make sure we don't end up in another subdb.
- #
- puts "\tSubdb005.a: Cursor ops - first/prev and last/next"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- for {set i 0} {$i < $numdb} {incr i} {
- set db [eval {berkdb_open -unknown} $args {$testfile sub$i.db}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set db_handle($i) $db
- # Used in 005.c test
- lappend subdbnames sub$i.db
-
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- set d [$dbc get -first]
- error_check_good dbc_get [expr [llength $d] != 0] 1
-
- # Used in 005.b test
- set db_key($i) [lindex [lindex $d 0] 0]
-
- set d [$dbc get -prev]
- error_check_good dbc_get [expr [llength $d] == 0] 1
- set d [$dbc get -last]
- error_check_good dbc_get [expr [llength $d] != 0] 1
- set d [$dbc get -next]
- error_check_good dbc_get [expr [llength $d] == 0] 1
- error_check_good dbc_close [$dbc close] 0
- }
- #
- # Get a key from each subdb and try to get this key in a
- # different subdb. Make sure it fails
- #
- puts "\tSubdb005.b: Get keys in different subdb's"
- for {set i 0} {$i < $numdb} {incr i} {
- set n [expr $i + 1]
- if {$n == $numdb} {
- set n 0
- }
- set db $db_handle($i)
- if { [is_record_based $method] == 1 } {
- set d [eval {$db get -recno} $txn {$db_key($n)}]
- error_check_good \
- db_get [expr [llength $d] == 0] 1
- } else {
- set d [eval {$db get} $txn {$db_key($n)}]
- error_check_good db_get [expr [llength $d] == 0] 1
- }
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- #
- # Clean up
- #
- for {set i 0} {$i < $numdb} {incr i} {
- error_check_good db_close [$db_handle($i) close] 0
- }
-
- #
- # Check contents of DB for subdb names only. Makes sure that
- # every subdbname is there and that nothing else is there.
- #
- puts "\tSubdb005.c: Check DB is read-only"
- error_check_bad dbopen [catch \
- {berkdb_open_noerr -unknown $testfile} ret] 0
-
- puts "\tSubdb005.d: Check contents of DB for subdb names only"
- set db [eval {berkdb_open -unknown -rdonly} $envargs {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set subdblist [$db get -glob *]
- foreach kd $subdblist {
- # subname also used in subdb005.e,f below
- set subname [lindex $kd 0]
- set i [lsearch $subdbnames $subname]
- error_check_good subdb_search [expr $i != -1] 1
- set subdbnames [lreplace $subdbnames $i $i]
- }
- error_check_good subdb_done [llength $subdbnames] 0
-
- error_check_good db_close [$db close] 0
- return
-}
diff --git a/bdb/test/sdb006.tcl b/bdb/test/sdb006.tcl
deleted file mode 100644
index fd6066b08d6..00000000000
--- a/bdb/test/sdb006.tcl
+++ /dev/null
@@ -1,169 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb006.tcl,v 11.20 2002/06/20 19:01:02 sue Exp $
-#
-# TEST subdb006
-# TEST Tests intra-subdb join
-# TEST
-# TEST We'll test 2-way, 3-way, and 4-way joins and figure that if those work,
-# TEST everything else does as well. We'll create test databases called
-# TEST sub1.db, sub2.db, sub3.db, and sub4.db. The number on the database
-# TEST describes the duplication -- duplicates are of the form 0, N, 2N, 3N,
-# TEST ... where N is the number of the database. Primary.db is the primary
-# TEST database, and sub0.db is the database that has no matching duplicates.
-# TEST All of these are within a single database.
-#
-# We should test this on all btrees, all hash, and a combination thereof
-proc subdb006 {method {nentries 100} args } {
- source ./include.tcl
- global rand_init
-
- # NB: these flags are internal only, ok
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] } {
- puts "\tSubdb006 skipping for method $method."
- return
- }
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb006.db
- set env NULL
- } else {
- set testfile subdb006.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- if { $nentries == 100 } {
- # !!!
- # nentries must be greater than the number
- # of do_join_subdb calls below.
- #
- set nentries 35
- }
- }
- set testdir [get_home $env]
- }
- berkdb srand $rand_init
-
- set oargs $args
- foreach opt {" -dup" " -dupsort"} {
- append args $opt
-
- puts "Subdb006: $method ( $args ) Intra-subdb join"
- set txn ""
- #
- # Get a cursor in each subdb and move past the end of each
- # subdb. Make sure we don't end up in another subdb.
- #
- puts "\tSubdb006.a: Intra-subdb join"
-
- if { $env != "NULL" } {
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set psize 8192
- set duplist {0 50 25 16 12}
- set numdb [llength $duplist]
- build_all_subdb $testfile [list $method] $psize \
- $duplist $nentries $args
-
- # Build the primary
- puts "Subdb006: Building the primary database $method"
- set oflags "-create -mode 0644 [conv $omethod \
- [berkdb random_int 1 2]]"
- set db [eval {berkdb_open} $oflags $oargs $testfile primary.db]
- error_check_good dbopen [is_valid_db $db] TRUE
- for { set i 0 } { $i < 1000 } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set key [format "%04d" $i]
- set ret [eval {$db put} $txn {$key stub}]
- error_check_good "primary put" $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- error_check_good "primary close" [$db close] 0
- set did [open $dict]
- gets $did str
- do_join_subdb $testfile primary.db "1 0" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "2 0" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "3 0" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4 0" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "2" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "3" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "1 2" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "1 2 3" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "1 2 3 4" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "2 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "3 2 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4 3 2 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "1 3" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "3 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "1 4" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "2 3" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "3 2" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "2 4" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4 2" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "3 4" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4 3" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "2 3 4" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "3 4 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4 2 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "0 2 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "3 2 0" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4 3 2 1" $str $oargs
- gets $did str
- do_join_subdb $testfile primary.db "4 3 0 1" $str $oargs
-
- close $did
- }
-}
diff --git a/bdb/test/sdb007.tcl b/bdb/test/sdb007.tcl
deleted file mode 100644
index 0f9488a92a1..00000000000
--- a/bdb/test/sdb007.tcl
+++ /dev/null
@@ -1,132 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb007.tcl,v 11.20 2002/07/11 18:53:46 sandstro Exp $
-#
-# TEST subdb007
-# TEST Tests page size difference errors between subdbs.
-# TEST Test 3 different scenarios for page sizes.
-# TEST 1. Create/open with a default page size, 2nd subdb create with
-# TEST specified different one, should error.
-# TEST 2. Create/open with specific page size, 2nd subdb create with
-# TEST different one, should error.
-# TEST 3. Create/open with specified page size, 2nd subdb create with
-# TEST same specified size, should succeed.
-# TEST (4th combo of using all defaults is a basic test, done elsewhere)
-proc subdb007 { method args } {
- source ./include.tcl
-
- set db2args [convert_args -btree $args]
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_queue $method] == 1 } {
- puts "Subdb007: skipping for method $method"
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Subdb007: skipping for specific page sizes"
- return
- }
-
- puts "Subdb007: $method ($args) subdb tests with different page sizes"
-
- set txnenv 0
- set envargs ""
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb007.db
- set env NULL
- } else {
- set testfile subdb007.db
- incr eindex
- set env [lindex $args $eindex]
- set envargs " -env $env "
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- append envargs " -auto_commit "
- append db2args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set sub1 "sub1"
- set sub2 "sub2"
- cleanup $testdir $env
- set txn ""
-
- puts "\tSubdb007.a.0: create subdb with default page size"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {$omethod $testfile $sub1}]
- error_check_good subdb [is_valid_db $db] TRUE
- #
- # Figure out what the default page size is so that we can
- # guarantee we create it with a different value.
- set statret [$db stat]
- set pgsz 0
- foreach pair $statret {
- set fld [lindex $pair 0]
- if { [string compare $fld {Page size}] == 0 } {
- set pgsz [lindex $pair 1]
- }
- }
- error_check_good dbclose [$db close] 0
-
- if { $pgsz == 512 } {
- set pgsz2 2048
- } else {
- set pgsz2 512
- }
-
- puts "\tSubdb007.a.1: create 2nd subdb with specified page size"
- set stat [catch {eval {berkdb_open_noerr -create -btree} \
- $db2args {-pagesize $pgsz2 $testfile $sub2}} ret]
- error_check_good subdb:pgsz $stat 1
- error_check_good subdb:fail [is_substr $ret \
- "Different pagesize specified"] 1
-
- set ret [eval {berkdb dbremove} $envargs {$testfile}]
-
- puts "\tSubdb007.b.0: create subdb with specified page size"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {-pagesize $pgsz2 $omethod $testfile $sub1}]
- error_check_good subdb [is_valid_db $db] TRUE
- set statret [$db stat]
- set newpgsz 0
- foreach pair $statret {
- set fld [lindex $pair 0]
- if { [string compare $fld {Page size}] == 0 } {
- set newpgsz [lindex $pair 1]
- }
- }
- error_check_good pgsize $pgsz2 $newpgsz
- error_check_good dbclose [$db close] 0
-
- puts "\tSubdb007.b.1: create 2nd subdb with different page size"
- set stat [catch {eval {berkdb_open_noerr -create -btree} \
- $db2args {-pagesize $pgsz $testfile $sub2}} ret]
- error_check_good subdb:pgsz $stat 1
- error_check_good subdb:fail [is_substr $ret \
- "Different pagesize specified"] 1
-
- set ret [eval {berkdb dbremove} $envargs {$testfile}]
-
- puts "\tSubdb007.c.0: create subdb with specified page size"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {-pagesize $pgsz2 $omethod $testfile $sub1}]
- error_check_good subdb [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
-
- puts "\tSubdb007.c.1: create 2nd subdb with same specified page size"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {-pagesize $pgsz2 $omethod $testfile $sub2}]
- error_check_good subdb [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
-
-}
diff --git a/bdb/test/sdb008.tcl b/bdb/test/sdb008.tcl
deleted file mode 100644
index 1c46aed2087..00000000000
--- a/bdb/test/sdb008.tcl
+++ /dev/null
@@ -1,121 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb008.tcl,v 11.25 2002/07/11 18:53:46 sandstro Exp $
-# TEST subdb008
-# TEST Tests lorder difference errors between subdbs.
-# TEST Test 3 different scenarios for lorder.
-# TEST 1. Create/open with specific lorder, 2nd subdb create with
-# TEST different one, should error.
-# TEST 2. Create/open with a default lorder 2nd subdb create with
-# TEST specified different one, should error.
-# TEST 3. Create/open with specified lorder, 2nd subdb create with
-# TEST same specified lorder, should succeed.
-# TEST (4th combo of using all defaults is a basic test, done elsewhere)
-proc subdb008 { method args } {
- source ./include.tcl
-
- set db2args [convert_args -btree $args]
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_queue $method] == 1 } {
- puts "Subdb008: skipping for method $method"
- return
- }
- set txnenv 0
- set envargs ""
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb008.db
- set env NULL
- } else {
- set testfile subdb008.db
- incr eindex
- set env [lindex $args $eindex]
- set envargs "-env $env"
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- append db2args " -auto_commit "
- append envargs " -auto_commit "
- }
- set testdir [get_home $env]
- }
- puts "Subdb008: $method ($args) subdb tests with different lorders"
-
- set sub1 "sub1"
- set sub2 "sub2"
- cleanup $testdir $env
-
- puts "\tSubdb008.b.0: create subdb with specified lorder"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {-lorder 4321 $omethod $testfile $sub1}]
- error_check_good subdb [is_valid_db $db] TRUE
- # Figure out what the default lorder is so that we can
- # guarantee we create it with a different value later.
- set is_swap [$db is_byteswapped]
- if { $is_swap } {
- set other 4321
- } else {
- set other 1234
- }
- error_check_good dbclose [$db close] 0
-
- puts "\tSubdb008.b.1: create 2nd subdb with different lorder"
- set stat [catch {eval {berkdb_open_noerr -create $omethod} \
- $args {-lorder 1234 $testfile $sub2}} ret]
- error_check_good subdb:lorder $stat 1
- error_check_good subdb:fail [is_substr $ret \
- "Different lorder specified"] 1
-
- set ret [eval {berkdb dbremove} $envargs {$testfile}]
-
- puts "\tSubdb008.c.0: create subdb with opposite specified lorder"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {-lorder 1234 $omethod $testfile $sub1}]
- error_check_good subdb [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
-
- puts "\tSubdb008.c.1: create 2nd subdb with different lorder"
- set stat [catch {eval {berkdb_open_noerr -create $omethod} \
- $args {-lorder 4321 $testfile $sub2}} ret]
- error_check_good subdb:lorder $stat 1
- error_check_good subdb:fail [is_substr $ret \
- "Different lorder specified"] 1
-
- set ret [eval {berkdb dbremove} $envargs {$testfile}]
-
- puts "\tSubdb008.d.0: create subdb with default lorder"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {$omethod $testfile $sub1}]
- error_check_good subdb [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
-
- puts "\tSubdb008.d.1: create 2nd subdb with different lorder"
- set stat [catch {eval {berkdb_open_noerr -create -btree} \
- $db2args {-lorder $other $testfile $sub2}} ret]
- error_check_good subdb:lorder $stat 1
- error_check_good subdb:fail [is_substr $ret \
- "Different lorder specified"] 1
-
- set ret [eval {berkdb dbremove} $envargs {$testfile}]
-
- puts "\tSubdb008.e.0: create subdb with specified lorder"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {-lorder $other $omethod $testfile $sub1}]
- error_check_good subdb [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
-
- puts "\tSubdb008.e.1: create 2nd subdb with same specified lorder"
- set db [eval {berkdb_open -create -mode 0644} \
- $args {-lorder $other $omethod $testfile $sub2}]
- error_check_good subdb [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
-
-}
diff --git a/bdb/test/sdb009.tcl b/bdb/test/sdb009.tcl
deleted file mode 100644
index 4e4869643ef..00000000000
--- a/bdb/test/sdb009.tcl
+++ /dev/null
@@ -1,108 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb009.tcl,v 11.9 2002/07/11 18:53:46 sandstro Exp $
-#
-# TEST subdb009
-# TEST Test DB->rename() method for subdbs
-proc subdb009 { method args } {
- global errorCode
- source ./include.tcl
-
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- puts "Subdb009: $method ($args): Test of DB->rename()"
-
- if { [is_queue $method] == 1 } {
- puts "\tSubdb009: Skipping for method $method."
- return
- }
-
- set txnenv 0
- set envargs ""
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb009.db
- set env NULL
- } else {
- set testfile subdb009.db
- incr eindex
- set env [lindex $args $eindex]
- set envargs " -env $env "
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- append envargs " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set oldsdb OLDDB
- set newsdb NEWDB
-
- # Make sure we're starting from a clean slate.
- cleanup $testdir $env
- error_check_bad "$testfile exists" [file exists $testfile] 1
-
- puts "\tSubdb009.a: Create/rename file"
- puts "\t\tSubdb009.a.1: create"
- set db [eval {berkdb_open -create -mode 0644}\
- $omethod $args {$testfile $oldsdb}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # The nature of the key and data are unimportant; use numeric key
- # so record-based methods don't need special treatment.
- set txn ""
- set key 1
- set data [pad_data $method data]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- error_check_good dbput [eval {$db put} $txn {$key $data}] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good dbclose [$db close] 0
-
- puts "\t\tSubdb009.a.2: rename"
- error_check_good rename_file [eval {berkdb dbrename} $envargs \
- {$testfile $oldsdb $newsdb}] 0
-
- puts "\t\tSubdb009.a.3: check"
- # Open again with create to make sure we've really completely
- # disassociated the subdb from the old name.
- set odb [eval {berkdb_open -create -mode 0644}\
- $omethod $args $testfile $oldsdb]
- error_check_good odb_open [is_valid_db $odb] TRUE
- set odbt [$odb get $key]
- error_check_good odb_close [$odb close] 0
-
- set ndb [eval {berkdb_open -create -mode 0644}\
- $omethod $args $testfile $newsdb]
- error_check_good ndb_open [is_valid_db $ndb] TRUE
- set ndbt [$ndb get $key]
- error_check_good ndb_close [$ndb close] 0
-
- # The DBT from the "old" database should be empty, not the "new" one.
- error_check_good odbt_empty [llength $odbt] 0
- error_check_bad ndbt_empty [llength $ndbt] 0
- error_check_good ndbt [lindex [lindex $ndbt 0] 1] $data
-
- # Now there's both an old and a new. Rename the "new" to the "old"
- # and make sure that fails.
- puts "\tSubdb009.b: Make sure rename fails instead of overwriting"
- set ret [catch {eval {berkdb dbrename} $envargs $testfile \
- $oldsdb $newsdb} res]
- error_check_bad rename_overwrite $ret 0
- error_check_good rename_overwrite_ret [is_substr $errorCode EEXIST] 1
-
- puts "\tSubdb009 succeeded."
-}
diff --git a/bdb/test/sdb010.tcl b/bdb/test/sdb010.tcl
deleted file mode 100644
index 51f25976c56..00000000000
--- a/bdb/test/sdb010.tcl
+++ /dev/null
@@ -1,166 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb010.tcl,v 11.14 2002/07/11 18:53:47 sandstro Exp $
-#
-# TEST subdb010
-# TEST Test DB->remove() method and DB->truncate() for subdbs
-proc subdb010 { method args } {
- global errorCode
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Subdb010: Test of DB->remove() and DB->truncate"
-
- if { [is_queue $method] == 1 } {
- puts "\tSubdb010: Skipping for method $method."
- return
- }
-
- set txnenv 0
- set envargs ""
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb010.db
- set tfpath $testfile
- set env NULL
- } else {
- set testfile subdb010.db
- incr eindex
- set env [lindex $args $eindex]
- set envargs " -env $env "
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- append envargs " -auto_commit "
- }
- set testdir [get_home $env]
- set tfpath $testdir/$testfile
- }
- cleanup $testdir $env
-
- set txn ""
- set testdb DATABASE
- set testdb2 DATABASE2
-
- set db [eval {berkdb_open -create -mode 0644} $omethod \
- $args $testfile $testdb]
- error_check_good db_open [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
-
- puts "\tSubdb010.a: Test of DB->remove()"
- error_check_good file_exists_before [file exists $tfpath] 1
- error_check_good db_remove [eval {berkdb dbremove} $envargs \
- $testfile $testdb] 0
-
- # File should still exist.
- error_check_good file_exists_after [file exists $tfpath] 1
-
- # But database should not.
- set ret [catch {eval berkdb_open $omethod $args $testfile $testdb} res]
- error_check_bad open_failed ret 0
- error_check_good open_failed_ret [is_substr $errorCode ENOENT] 1
-
- puts "\tSubdb010.b: Setup for DB->truncate()"
- # The nature of the key and data are unimportant; use numeric key
- # so record-based methods don't need special treatment.
- set key1 1
- set key2 2
- set data1 [pad_data $method data1]
- set data2 [pad_data $method data2]
-
- set db [eval {berkdb_open -create -mode 0644} $omethod \
- $args {$testfile $testdb}]
- error_check_good db_open [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- error_check_good dbput [eval {$db put} $txn {$key1 $data1}] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set db2 [eval {berkdb_open -create -mode 0644} $omethod \
- $args $testfile $testdb2]
- error_check_good db_open [is_valid_db $db2] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- error_check_good dbput [eval {$db2 put} $txn {$key2 $data2}] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- error_check_good db_close [$db close] 0
- error_check_good db_close [$db2 close] 0
-
- puts "\tSubdb010.c: truncate"
- #
- # Return value should be 1, the count of how many items were
- # destroyed when we truncated.
- set db [eval {berkdb_open -create -mode 0644} $omethod \
- $args $testfile $testdb]
- error_check_good db_open [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- error_check_good trunc_subdb [eval {$db truncate} $txn] 1
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tSubdb010.d: check"
- set db [eval {berkdb_open} $args {$testfile $testdb}]
- error_check_good db_open [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- set kd [$dbc get -first]
- error_check_good trunc_dbcget [llength $kd] 0
- error_check_good dbcclose [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set db2 [eval {berkdb_open} $args {$testfile $testdb2}]
- error_check_good db_open [is_valid_db $db2] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db2 cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db2] TRUE
- set kd [$dbc get -first]
- error_check_bad notrunc_dbcget1 [llength $kd] 0
- set db2kd [list [list $key2 $data2]]
- error_check_good key2 $kd $db2kd
- set kd [$dbc get -next]
- error_check_good notrunc_dbget2 [llength $kd] 0
- error_check_good dbcclose [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- error_check_good db_close [$db close] 0
- error_check_good db_close [$db2 close] 0
- puts "\tSubdb010 succeeded."
-}
diff --git a/bdb/test/sdb011.tcl b/bdb/test/sdb011.tcl
deleted file mode 100644
index 862e32f73ed..00000000000
--- a/bdb/test/sdb011.tcl
+++ /dev/null
@@ -1,143 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb011.tcl,v 11.9 2002/07/11 18:53:47 sandstro Exp $
-#
-# TEST subdb011
-# TEST Test deleting Subdbs with overflow pages
-# TEST Create 1 db with many large subdbs.
-# TEST Test subdatabases with overflow pages.
-proc subdb011 { method {ndups 13} {nsubdbs 10} args} {
- global names
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_queue $method] == 1 || [is_fixed_length $method] == 1 } {
- puts "Subdb011: skipping for method $method"
- return
- }
- set txnenv 0
- set envargs ""
- set max_files 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/subdb011.db
- set env NULL
- set tfpath $testfile
- } else {
- set testfile subdb011.db
- incr eindex
- set env [lindex $args $eindex]
- set envargs " -env $env "
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- append envargs " -auto_commit "
- set max_files 50
- if { $ndups == 13 } {
- set ndups 7
- }
- }
- set testdir [get_home $env]
- set tfpath $testdir/$testfile
- }
-
- # Create the database and open the dictionary
-
- cleanup $testdir $env
- set txn ""
-
- # Here is the loop where we put and get each key/data pair
- set file_list [get_file_list]
- if { $max_files != 0 && [llength $file_list] > $max_files } {
- set fend [expr $max_files - 1]
- set file_list [lrange $file_list 0 $fend]
- }
- set flen [llength $file_list]
- puts "Subdb011: $method ($args) $ndups overflow dups with \
- $flen filename=key filecontents=data pairs"
-
- puts "\tSubdb011.a: Create each of $nsubdbs subdbs and dups"
- set slist {}
- set i 0
- set count 0
- foreach f $file_list {
- set i [expr $i % $nsubdbs]
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- set names([expr $count + 1]) $f
- } else {
- set key $f
- }
- # Should really catch errors
- set fid [open $f r]
- fconfigure $fid -translation binary
- set filecont [read $fid]
- set subdb subdb$i
- lappend slist $subdb
- close $fid
- set db [eval {berkdb_open -create -mode 0644} \
- $args {$omethod $testfile $subdb}]
- error_check_good dbopen [is_valid_db $db] TRUE
- for {set dup 0} {$dup < $ndups} {incr dup} {
- set data $dup:$filecont
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key \
- [chop_data $method $data]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- error_check_good dbclose [$db close] 0
- incr i
- incr count
- }
-
- puts "\tSubdb011.b: Verify overflow pages"
- foreach subdb $slist {
- set db [eval {berkdb_open -create -mode 0644} \
- $args {$omethod $testfile $subdb}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set stat [$db stat]
-
- # What everyone else calls overflow pages, hash calls "big
- # pages", so we need to special-case hash here. (Hash
- # overflow pages are additional pages after the first in a
- # bucket.)
- if { [string compare [$db get_type] hash] == 0 } {
- error_check_bad overflow \
- [is_substr $stat "{{Number of big pages} 0}"] 1
- } else {
- error_check_bad overflow \
- [is_substr $stat "{{Overflow pages} 0}"] 1
- }
- error_check_good dbclose [$db close] 0
- }
-
- puts "\tSubdb011.c: Delete subdatabases"
- for {set i $nsubdbs} {$i > 0} {set i [expr $i - 1]} {
- #
- # Randomly delete a subdatabase
- set sindex [berkdb random_int 0 [expr $i - 1]]
- set subdb [lindex $slist $sindex]
- #
- # Delete the one we did from the list
- set slist [lreplace $slist $sindex $sindex]
- error_check_good file_exists_before [file exists $tfpath] 1
- error_check_good db_remove [eval {berkdb dbremove} $envargs \
- {$testfile $subdb}] 0
- }
-}
-
diff --git a/bdb/test/sdb012.tcl b/bdb/test/sdb012.tcl
deleted file mode 100644
index 9c05d977daf..00000000000
--- a/bdb/test/sdb012.tcl
+++ /dev/null
@@ -1,428 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdb012.tcl,v 1.3 2002/08/08 15:38:10 bostic Exp $
-#
-# TEST subdb012
-# TEST Test subdbs with locking and transactions
-# TEST Tests creating and removing subdbs while handles
-# TEST are open works correctly, and in the face of txns.
-#
-proc subdb012 { method args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_queue $method] == 1 } {
- puts "Subdb012: skipping for method $method"
- return
- }
-
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Subdb012 skipping for env $env"
- return
- }
- set encargs ""
- set largs [split_encargs $args encargs]
-
- puts "Subdb012: $method ($largs $encargs) subdb txn/locking tests"
-
- #
- # sdb012_body takes a txn list containing 4 elements.
- # {txn command for first subdb
- # txn command for second subdb
- # txn command for first subdb removal
- # txn command for second subdb removal}
- #
- # The allowed commands are 'none' 'one', 'auto', 'abort', 'commit'.
- # 'none' is a special case meaning run without a txn. In the
- # case where all 4 items are 'none', we run in a lock-only env.
- # 'one' is a special case meaning we create the subdbs together
- # in one single transaction. It is indicated as the value for t1,
- # and the value in t2 indicates if that single txn should be
- # aborted or committed. It is not used and has no meaning
- # in the removal case. 'auto' means use the -auto_commit flag
- # to the operation, and 'abort' and 'commit' do the obvious.
- #
- # First test locking w/o txns. If any in tlist are 'none',
- # all must be none.
- #
- # Now run through the txn-based operations
- set count 0
- set sdb "Subdb012."
- set teststr "abcdefghijklmnopqrstuvwxyz"
- set testlet [split $teststr {}]
- foreach t1 { none one abort auto commit } {
- foreach t2 { none abort auto commit } {
- if { $t1 == "one" } {
- if { $t2 == "none" || $t2 == "auto"} {
- continue
- }
- }
- set tlet [lindex $testlet $count]
- foreach r1 { none abort auto commit } {
- foreach r2 { none abort auto commit } {
- set tlist [list $t1 $t2 $r1 $r2]
- sdb012_body $testdir $omethod $largs \
- $encargs $sdb$tlet $tlist
- }
- }
- incr count
- }
- }
-
-}
-
-proc s012 { method args } {
- source ./include.tcl
-
- set omethod [convert_method $method]
-
- set encargs ""
- set largs ""
-
- puts "Subdb012: $method ($largs $encargs) subdb txn/locking tests"
-
- set sdb "Subdb012."
- set tlet X
- set tlist $args
- error_check_good tlist [llength $tlist] 4
- sdb012_body $testdir $omethod $largs $encargs $sdb$tlet $tlist
-}
-
-#
-# This proc checks the tlist values and returns the flags
-# that should be used when opening the env. If we are running
-# with no txns, then just -lock, otherwise -txn.
-#
-proc sdb012_subsys { tlist } {
- set t1 [lindex $tlist 0]
- #
- # If we have no txns, all elements of the list should be none.
- # In that case we only run with locking turned on.
- # Otherwise, we use the full txn subsystems.
- #
- set allnone {none none none none}
- if { $allnone == $tlist } {
- set subsys "-lock"
- } else {
- set subsys "-txn"
- }
- return $subsys
-}
-
-#
-# This proc parses the tlist and returns a list of 4 items that
-# should be used in operations. I.e. it will begin the txns as
-# needed, or return a -auto_commit flag, etc.
-#
-proc sdb012_tflags { env tlist } {
- set ret ""
- set t1 ""
- foreach t $tlist {
- switch $t {
- one {
- set t1 [$env txn]
- error_check_good txnbegin [is_valid_txn $t1 $env] TRUE
- lappend ret "-txn $t1"
- lappend ret "-txn $t1"
- }
- auto {
- lappend ret "-auto_commit"
- }
- abort -
- commit {
- #
- # If the previous command was a "one", skip over
- # this commit/abort. Otherwise start a new txn
- # for the removal case.
- #
- if { $t1 == "" } {
- set txn [$env txn]
- error_check_good txnbegin [is_valid_txn $txn \
- $env] TRUE
- lappend ret "-txn $txn"
- } else {
- set t1 ""
- }
- }
- none {
- lappend ret ""
- }
- default {
- error "Txn command $t not implemented"
- }
- }
- }
- return $ret
-}
-
-#
-# This proc parses the tlist and returns a list of 4 items that
-# should be used in the txn conclusion operations. I.e. it will
-# give "" if using auto_commit (i.e. no final txn op), or a single
-# abort/commit if both subdb's are in one txn.
-#
-proc sdb012_top { tflags tlist } {
- set ret ""
- set t1 ""
- #
- # We know both lists have 4 items. Iterate over them
- # using multiple value lists so we know which txn goes
- # with each op.
- #
- # The tflags list is needed to extract the txn command
- # out for the operation. The tlist list is needed to
- # determine what operation we are doing.
- #
- foreach t $tlist tf $tflags {
- switch $t {
- one {
- set t1 [lindex $tf 1]
- }
- auto {
- lappend ret "sdb012_nop"
- }
- abort -
- commit {
- #
- # If the previous command was a "one" (i.e. t1
- # is set), append a correct command and then
- # an empty one.
- #
- if { $t1 == "" } {
- set txn [lindex $tf 1]
- set top "$txn $t"
- lappend ret $top
- } else {
- set top "$t1 $t"
- lappend ret "sdb012_nop"
- lappend ret $top
- set t1 ""
- }
- }
- none {
- lappend ret "sdb012_nop"
- }
- }
- }
- return $ret
-}
-
-proc sdb012_nop { } {
- return 0
-}
-
-proc sdb012_isabort { tlist item } {
- set i [lindex $tlist $item]
- if { $i == "one" } {
- set i [lindex $tlist [expr $item + 1]]
- }
- if { $i == "abort" } {
- return 1
- } else {
- return 0
- }
-}
-
-proc sdb012_body { testdir omethod largs encargs msg tlist } {
-
- puts "\t$msg: $tlist"
- set testfile subdb012.db
- set subdb1 sub1
- set subdb2 sub2
-
- set subsys [sdb012_subsys $tlist]
- env_cleanup $testdir
- set env [eval {berkdb_env -create -home} $testdir $subsys $encargs]
- error_check_good dbenv [is_valid_env $env] TRUE
- error_check_good test_lock [$env test abort subdb_lock] 0
-
- #
- # Convert from our tlist txn commands into real flags we
- # will pass to commands. Use the multiple values feature
- # of foreach to do this efficiently.
- #
- set tflags [sdb012_tflags $env $tlist]
- foreach {txn1 txn2 rem1 rem2} $tflags {break}
- foreach {top1 top2 rop1 rop2} [sdb012_top $tflags $tlist] {break}
-
-# puts "txn1 $txn1, txn2 $txn2, rem1 $rem1, rem2 $rem2"
-# puts "top1 $top1, top2 $top2, rop1 $rop1, rop2 $rop2"
- puts "\t$msg.0: Create sub databases in env with $subsys"
- set s1 [eval {berkdb_open -env $env -create -mode 0644} \
- $largs $txn1 {$omethod $testfile $subdb1}]
- error_check_good dbopen [is_valid_db $s1] TRUE
-
- set ret [eval $top1]
- error_check_good t1_end $ret 0
-
- set s2 [eval {berkdb_open -env $env -create -mode 0644} \
- $largs $txn2 {$omethod $testfile $subdb2}]
- error_check_good dbopen [is_valid_db $s2] TRUE
-
- puts "\t$msg.1: Subdbs are open; resolve txns if necessary"
- set ret [eval $top2]
- error_check_good t2_end $ret 0
-
- set t1_isabort [sdb012_isabort $tlist 0]
- set t2_isabort [sdb012_isabort $tlist 1]
- set r1_isabort [sdb012_isabort $tlist 2]
- set r2_isabort [sdb012_isabort $tlist 3]
-
-# puts "t1_isabort $t1_isabort, t2_isabort $t2_isabort, r1_isabort $r1_isabort, r2_isabort $r2_isabort"
-
- puts "\t$msg.2: Subdbs are open; verify removal failures"
- # Verify removes of subdbs with open subdb's fail
- #
- # We should fail no matter what. If we aborted, then the
- # subdb should not exist. If we didn't abort, we should fail
- # with DB_LOCK_NOTGRANTED.
- #
- # XXX - Do we need -auto_commit for all these failing ones?
- set r [ catch {berkdb dbremove -env $env $testfile $subdb1} result ]
- error_check_bad dbremove1_open $r 0
- if { $t1_isabort } {
- error_check_good dbremove1_open_ab [is_substr \
- $result "no such file"] 1
- } else {
- error_check_good dbremove1_open [is_substr \
- $result DB_LOCK_NOTGRANTED] 1
- }
-
- set r [ catch {berkdb dbremove -env $env $testfile $subdb2} result ]
- error_check_bad dbremove2_open $r 0
- if { $t2_isabort } {
- error_check_good dbremove2_open_ab [is_substr \
- $result "no such file"] 1
- } else {
- error_check_good dbremove2_open [is_substr \
- $result DB_LOCK_NOTGRANTED] 1
- }
-
- # Verify file remove fails
- set r [catch {berkdb dbremove -env $env $testfile} result]
- error_check_bad dbremovef_open $r 0
-
- #
- # If both aborted, there should be no file??
- #
- if { $t1_isabort && $t2_isabort } {
- error_check_good dbremovef_open_ab [is_substr \
- $result "no such file"] 1
- } else {
- error_check_good dbremovef_open [is_substr \
- $result DB_LOCK_NOTGRANTED] 1
- }
-
- puts "\t$msg.3: Close subdb2; verify removals"
- error_check_good close_s2 [$s2 close] 0
- set r [ catch {eval {berkdb dbremove -env} \
- $env $rem2 $testfile $subdb2} result ]
- if { $t2_isabort } {
- error_check_bad dbrem2_ab $r 0
- error_check_good dbrem2_ab [is_substr \
- $result "no such file"] 1
- } else {
- error_check_good dbrem2 $result 0
- }
- # Resolve subdb2 removal txn
- set r [eval $rop2]
- error_check_good rop2 $r 0
-
- set r [ catch {berkdb dbremove -env $env $testfile $subdb1} result ]
- error_check_bad dbremove1.2_open $r 0
- if { $t1_isabort } {
- error_check_good dbremove1.2_open_ab [is_substr \
- $result "no such file"] 1
- } else {
- error_check_good dbremove1.2_open [is_substr \
- $result DB_LOCK_NOTGRANTED] 1
- }
-
- # There are three cases here:
- # 1. if both t1 and t2 aborted, the file shouldn't exist
- # 2. if only t1 aborted, the file still exists and nothing is open
- # 3. if neither aborted a remove should fail because the first
- # subdb is still open
- # In case 2, don't try the remove, because it should succeed
- # and we won't be able to test anything else.
- if { !$t1_isabort || $t2_isabort } {
- set r [catch {berkdb dbremove -env $env $testfile} result]
- if { $t1_isabort && $t2_isabort } {
- error_check_bad dbremovef.2_open $r 0
- error_check_good dbremove.2_open_ab [is_substr \
- $result "no such file"] 1
- } else {
- error_check_bad dbremovef.2_open $r 0
- error_check_good dbremove.2_open [is_substr \
- $result DB_LOCK_NOTGRANTED] 1
- }
- }
-
- puts "\t$msg.4: Close subdb1; verify removals"
- error_check_good close_s1 [$s1 close] 0
- set r [ catch {eval {berkdb dbremove -env} \
- $env $rem1 $testfile $subdb1} result ]
- if { $t1_isabort } {
- error_check_bad dbremove1_ab $r 0
- error_check_good dbremove1_ab [is_substr \
- $result "no such file"] 1
- } else {
- error_check_good dbremove1 $result 0
- }
- # Resolve subdb1 removal txn
- set r [eval $rop1]
- error_check_good rop1 $r 0
-
-
- # Verify removal of subdb2. All DB handles are closed now.
- # So we have two scenarios:
- # 1. The removal of subdb2 above was successful and subdb2
- # doesn't exist and we should fail that way.
- # 2. The removal of subdb2 above was aborted, and this
- # removal should succeed.
- #
- set r [ catch {berkdb dbremove -env $env $testfile $subdb2} result ]
- if { $r2_isabort && !$t2_isabort } {
- error_check_good dbremove2.1_ab $result 0
- } else {
- error_check_bad dbremove2.1 $r 0
- error_check_good dbremove2.1 [is_substr \
- $result "no such file"] 1
- }
-
- # Verify removal of subdb1. All DB handles are closed now.
- # So we have two scenarios:
- # 1. The removal of subdb1 above was successful and subdb1
- # doesn't exist and we should fail that way.
- # 2. The removal of subdb1 above was aborted, and this
- # removal should succeed.
- #
- set r [ catch {berkdb dbremove -env $env $testfile $subdb1} result ]
- if { $r1_isabort && !$t1_isabort } {
- error_check_good dbremove1.1 $result 0
- } else {
- error_check_bad dbremove_open $r 0
- error_check_good dbremove.1 [is_substr \
- $result "no such file"] 1
- }
-
- puts "\t$msg.5: All closed; remove file"
- set r [catch {berkdb dbremove -env $env $testfile} result]
- if { $t1_isabort && $t2_isabort } {
- error_check_bad dbremove_final_ab $r 0
- error_check_good dbremove_file_abstr [is_substr \
- $result "no such file"] 1
- } else {
- error_check_good dbremove_final $r 0
- }
- error_check_good envclose [$env close] 0
-}
diff --git a/bdb/test/sdbscript.tcl b/bdb/test/sdbscript.tcl
deleted file mode 100644
index d1978ccb048..00000000000
--- a/bdb/test/sdbscript.tcl
+++ /dev/null
@@ -1,47 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdbscript.tcl,v 11.9 2002/01/11 15:53:36 bostic Exp $
-#
-# Usage: subdbscript testfile subdbnumber factor
-# testfile: name of DB itself
-# subdbnumber: n, subdb indicator, of form sub$n.db
-# factor: Delete over factor'th + n'th from my subdb.
-#
-# I.e. if factor is 10, and n is 0, remove entries, 0, 10, 20, ...
-# if factor is 10 and n is 1, remove entries 1, 11, 21, ...
-source ./include.tcl
-source $test_path/test.tcl
-
-set usage "subdbscript testfile subdbnumber factor"
-
-# Verify usage
-if { $argc != 3 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set testfile [lindex $argv 0]
-set n [ lindex $argv 1 ]
-set factor [ lindex $argv 2 ]
-
-set db [berkdb_open -unknown $testfile sub$n.db]
-error_check_good db_open [is_valid_db $db] TRUE
-
-set dbc [$db cursor]
-error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-set i 1
-for {set d [$dbc get -first]} {[llength $d] != 0} {set d [$dbc get -next]} {
- set x [expr $i - $n]
- if { $x >= 0 && [expr $x % $factor] == 0 } {
- puts "Deleting $d"
- error_check_good dbc_del [$dbc del] 0
- }
- incr i
-}
-error_check_good db_close [$db close] 0
-
-exit
diff --git a/bdb/test/sdbtest001.tcl b/bdb/test/sdbtest001.tcl
deleted file mode 100644
index b8b4508c2a4..00000000000
--- a/bdb/test/sdbtest001.tcl
+++ /dev/null
@@ -1,150 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdbtest001.tcl,v 11.19 2002/05/22 15:42:42 sue Exp $
-#
-# TEST sdbtest001
-# TEST Tests multiple access methods in one subdb
-# TEST Open several subdbs, each with a different access method
-# TEST Small keys, small data
-# TEST Put/get per key per subdb
-# TEST Dump file, verify per subdb
-# TEST Close, reopen per subdb
-# TEST Dump file, verify per subdb
-# TEST
-# TEST Make several subdb's of different access methods all in one DB.
-# TEST Rotate methods and repeat [#762].
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; retrieve each.
-# TEST After all are entered, retrieve all; compare output to original.
-# TEST Close file, reopen, do retrieve and re-verify.
-proc sdbtest001 { {nentries 10000} } {
- source ./include.tcl
-
- puts "Subdbtest001: many different subdb access methods in one"
-
- # Create the database and open the dictionary
- set testfile $testdir/subdbtest001.db
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
-
- set txn ""
- set count 0
-
- # Set up various methods to rotate through
- lappend method_list [list "-rrecno" "-rbtree" "-hash" "-recno" "-btree"]
- lappend method_list [list "-recno" "-hash" "-btree" "-rbtree" "-rrecno"]
- lappend method_list [list "-btree" "-recno" "-rbtree" "-rrecno" "-hash"]
- lappend method_list [list "-hash" "-recno" "-rbtree" "-rrecno" "-btree"]
- lappend method_list [list "-rbtree" "-hash" "-btree" "-rrecno" "-recno"]
- lappend method_list [list "-rrecno" "-recno"]
- lappend method_list [list "-recno" "-rrecno"]
- lappend method_list [list "-hash" "-dhash"]
- lappend method_list [list "-dhash" "-hash"]
- lappend method_list [list "-rbtree" "-btree" "-dbtree" "-ddbtree"]
- lappend method_list [list "-btree" "-rbtree" "-ddbtree" "-dbtree"]
- lappend method_list [list "-dbtree" "-ddbtree" "-btree" "-rbtree"]
- lappend method_list [list "-ddbtree" "-dbtree" "-rbtree" "-btree"]
- set plist [list 512 8192 1024 4096 2048 16384]
- set mlen [llength $method_list]
- set plen [llength $plist]
- while { $plen < $mlen } {
- set plist [concat $plist $plist]
- set plen [llength $plist]
- }
- set pgsz 0
- foreach methods $method_list {
- cleanup $testdir NULL
- puts "\tSubdbtest001.a: create subdbs of different access methods:"
- puts "\tSubdbtest001.a: $methods"
- set nsubdbs [llength $methods]
- set duplist ""
- for { set i 0 } { $i < $nsubdbs } { incr i } {
- lappend duplist -1
- }
- set psize [lindex $plist $pgsz]
- incr pgsz
- set newent [expr $nentries / $nsubdbs]
- build_all_subdb $testfile $methods $psize $duplist $newent
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- for { set subdb 0 } { $subdb < $nsubdbs } { incr subdb } {
-
- set method [lindex $methods $subdb]
- set method [convert_method $method]
- if { [is_record_based $method] == 1 } {
- set checkfunc subdbtest001_recno.check
- } else {
- set checkfunc subdbtest001.check
- }
-
- puts "\tSubdbtest001.b: dump file sub$subdb.db"
- set db [berkdb_open -unknown $testfile sub$subdb.db]
- dump_file $db $txn $t1 $checkfunc
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the
- # dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $newent} {incr i} {
- puts $oid [expr $subdb * $newent + $i]
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- # filehead uses 1-based line numbers
- set beg [expr $subdb * $newent]
- incr beg
- set end [expr $beg + $newent - 1]
- filehead $end $dict $t3 $beg
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good Subdbtest001:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tSubdbtest001.c: sub$subdb.db: close, open, and dump file"
- # Now, reopen the file and run the last test again.
- open_and_dump_subfile $testfile NULL $t1 $checkfunc \
- dump_file_direction "-first" "-next" sub$subdb.db
- if { [string compare $method "-recno"] != 0 } {
- filesort $t1 $t3
- }
-
- error_check_good Subdbtest001:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- puts "\tSubdbtest001.d: sub$subdb.db: close, open, and dump file in reverse direction"
- open_and_dump_subfile $testfile NULL $t1 $checkfunc \
- dump_file_direction "-last" "-prev" sub$subdb.db
-
- if { [string compare $method "-recno"] != 0 } {
- filesort $t1 $t3
- }
-
- error_check_good Subdbtest001:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
- }
- }
-}
-
-# Check function for Subdbtest001; keys and data are identical
-proc subdbtest001.check { key data } {
- error_check_good "key/data mismatch" $data $key
-}
-
-proc subdbtest001_recno.check { key data } {
-global dict
-global kvals
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data $kvals($key)
-}
diff --git a/bdb/test/sdbtest002.tcl b/bdb/test/sdbtest002.tcl
deleted file mode 100644
index 95717413a7b..00000000000
--- a/bdb/test/sdbtest002.tcl
+++ /dev/null
@@ -1,174 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdbtest002.tcl,v 11.26 2002/09/05 17:23:07 sandstro Exp $
-#
-# TEST sdbtest002
-# TEST Tests multiple access methods in one subdb access by multiple
-# TEST processes.
-# TEST Open several subdbs, each with a different access method
-# TEST Small keys, small data
-# TEST Put/get per key per subdb
-# TEST Fork off several child procs to each delete selected
-# TEST data from their subdb and then exit
-# TEST Dump file, verify contents of each subdb is correct
-# TEST Close, reopen per subdb
-# TEST Dump file, verify per subdb
-# TEST
-# TEST Make several subdb's of different access methods all in one DB.
-# TEST Fork of some child procs to each manipulate one subdb and when
-# TEST they are finished, verify the contents of the databases.
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; retrieve each.
-# TEST After all are entered, retrieve all; compare output to original.
-# TEST Close file, reopen, do retrieve and re-verify.
-proc sdbtest002 { {nentries 10000} } {
- source ./include.tcl
-
- puts "Subdbtest002: many different subdb access methods in one"
-
- # Create the database and open the dictionary
- set testfile $testdir/subdbtest002.db
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
-
- set txn ""
- set count 0
-
- # Set up various methods to rotate through
- set methods \
- [list "-rbtree" "-recno" "-btree" "-btree" "-recno" "-rbtree"]
- cleanup $testdir NULL
- puts "\tSubdbtest002.a: create subdbs of different access methods:"
- puts "\t\t$methods"
- set psize 4096
- set nsubdbs [llength $methods]
- set duplist ""
- for { set i 0 } { $i < $nsubdbs } { incr i } {
- lappend duplist -1
- }
- set newent [expr $nentries / $nsubdbs]
-
- #
- # XXX We need dict sorted to figure out what was deleted
- # since things are stored sorted in the btree.
- #
- filesort $dict $t4
- set dictorig $dict
- set dict $t4
-
- build_all_subdb $testfile $methods $psize $duplist $newent
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- set pidlist ""
- puts "\tSubdbtest002.b: create $nsubdbs procs to delete some keys"
- for { set subdb 0 } { $subdb < $nsubdbs } { incr subdb } {
- puts "$tclsh_path\
- $test_path/sdbscript.tcl $testfile \
- $subdb $nsubdbs >& $testdir/subdb002.log.$subdb"
- set p [exec $tclsh_path $test_path/wrap.tcl \
- sdbscript.tcl \
- $testdir/subdb002.log.$subdb $testfile $subdb $nsubdbs &]
- lappend pidlist $p
- }
- watch_procs $pidlist 5
-
- for { set subdb 0 } { $subdb < $nsubdbs } { incr subdb } {
- set method [lindex $methods $subdb]
- set method [convert_method $method]
- if { [is_record_based $method] == 1 } {
- set checkfunc subdbtest002_recno.check
- } else {
- set checkfunc subdbtest002.check
- }
-
- puts "\tSubdbtest002.b: dump file sub$subdb.db"
- set db [berkdb_open -unknown $testfile sub$subdb.db]
- error_check_good db_open [is_valid_db $db] TRUE
- dump_file $db $txn $t1 $checkfunc
- error_check_good db_close [$db close] 0
- #
- # This is just so that t2 is there and empty
- # since we are only appending below.
- #
- exec > $t2
-
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $newent} {incr i} {
- set x [expr $i - $subdb]
- if { [expr $x % $nsubdbs] != 0 } {
- puts $oid [expr $subdb * $newent + $i]
- }
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set oid [open $t4 r]
- for {set i 1} {[gets $oid line] >= 0} {incr i} {
- set farr($i) $line
- }
- close $oid
-
- set oid [open $t2 w]
- for {set i 1} {$i <= $newent} {incr i} {
- # Sed uses 1-based line numbers
- set x [expr $i - $subdb]
- if { [expr $x % $nsubdbs] != 0 } {
- set beg [expr $subdb * $newent]
- set beg [expr $beg + $i]
- puts $oid $farr($beg)
- }
- }
- close $oid
- filesort $t1 $t3
- }
-
- error_check_good Subdbtest002:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tSubdbtest002.c: sub$subdb.db: close, open, and dump file"
- # Now, reopen the file and run the last test again.
- open_and_dump_subfile $testfile NULL $t1 $checkfunc \
- dump_file_direction "-first" "-next" sub$subdb.db
- if { [string compare $method "-recno"] != 0 } {
- filesort $t1 $t3
- }
-
- error_check_good Subdbtest002:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- puts "\tSubdbtest002.d: sub$subdb.db: close, open, and dump file in reverse direction"
- open_and_dump_subfile $testfile NULL $t1 $checkfunc \
- dump_file_direction "-last" "-prev" sub$subdb.db
-
- if { [string compare $method "-recno"] != 0 } {
- filesort $t1 $t3
- }
-
- error_check_good Subdbtest002:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
- }
- set dict $dictorig
- return
-}
-
-# Check function for Subdbtest002; keys and data are identical
-proc subdbtest002.check { key data } {
- error_check_good "key/data mismatch" $data $key
-}
-
-proc subdbtest002_recno.check { key data } {
-global dict
-global kvals
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data $kvals($key)
-}
diff --git a/bdb/test/sdbutils.tcl b/bdb/test/sdbutils.tcl
deleted file mode 100644
index 3221a422e18..00000000000
--- a/bdb/test/sdbutils.tcl
+++ /dev/null
@@ -1,197 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sdbutils.tcl,v 11.14 2002/06/10 15:39:39 sue Exp $
-#
-proc build_all_subdb { dbname methods psize dups {nentries 100} {dbargs ""}} {
- set nsubdbs [llength $dups]
- set mlen [llength $methods]
- set savearg $dbargs
- for {set i 0} {$i < $nsubdbs} { incr i } {
- set m [lindex $methods [expr $i % $mlen]]
- set dbargs $savearg
- subdb_build $dbname $nentries [lindex $dups $i] \
- $i $m $psize sub$i.db $dbargs
- }
-}
-
-proc subdb_build { name nkeys ndups dup_interval method psize subdb dbargs} {
- source ./include.tcl
-
- set dbargs [convert_args $method $dbargs]
- set omethod [convert_method $method]
-
- puts "Method: $method"
-
- set txnenv 0
- set eindex [lsearch -exact $dbargs "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $dbargs $eindex]
- set txnenv [is_txnenv $env]
- }
- # Create the database and open the dictionary
- set oflags "-create -mode 0644 $omethod \
- -pagesize $psize $dbargs $name $subdb"
- set db [eval {berkdb_open} $oflags]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
- set count 0
- if { $ndups >= 0 } {
- puts "\tBuilding $method $name $subdb. \
- $nkeys keys with $ndups duplicates at interval of $dup_interval"
- }
- if { $ndups < 0 } {
- puts "\tBuilding $method $name $subdb. \
- $nkeys unique keys of pagesize $psize"
- #
- # If ndups is < 0, we want unique keys in each subdb,
- # so skip ahead in the dict by nkeys * iteration
- #
- for { set count 0 } \
- { $count < [expr $nkeys * $dup_interval] } {
- incr count} {
- set ret [gets $did str]
- if { $ret == -1 } {
- break
- }
- }
- }
- set txn ""
- for { set count 0 } { [gets $did str] != -1 && $count < $nkeys } {
- incr count} {
- for { set i 0 } { $i < $ndups } { incr i } {
- set data [format "%04d" [expr $i * $dup_interval]]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$str \
- [chop_data $method $data]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- if { $ndups == 0 } {
- set ret [eval {$db put} $txn {$str \
- [chop_data $method NODUP]}]
- error_check_good put $ret 0
- } elseif { $ndups < 0 } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set num [expr $nkeys * $dup_interval]
- set num [expr $num + $count + 1]
- set ret [eval {$db put} $txn {$num \
- [chop_data $method $str]}]
- set kvals($num) [pad_data $method $str]
- error_check_good put $ret 0
- } else {
- set ret [eval {$db put} $txn \
- {$str [chop_data $method $str]}]
- error_check_good put $ret 0
- }
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- close $did
- error_check_good close:$name [$db close] 0
-}
-
-proc do_join_subdb { db primary subdbs key oargs } {
- source ./include.tcl
-
- puts "\tJoining: $subdbs on $key"
-
- # Open all the databases
- set p [eval {berkdb_open -unknown} $oargs $db $primary]
- error_check_good "primary open" [is_valid_db $p] TRUE
-
- set dblist ""
- set curslist ""
-
- foreach i $subdbs {
- set jdb [eval {berkdb_open -unknown} $oargs $db sub$i.db]
- error_check_good "sub$i.db open" [is_valid_db $jdb] TRUE
-
- lappend jlist [list $jdb $key]
- lappend dblist $jdb
-
- }
-
- set join_res [eval {$p get_join} $jlist]
- set ndups [llength $join_res]
-
- # Calculate how many dups we expect.
- # We go through the list of indices. If we find a 0, then we
- # expect 0 dups. For everything else, we look at pairs of numbers,
- # if the are relatively prime, multiply them and figure out how
- # many times that goes into 50. If they aren't relatively prime,
- # take the number of times the larger goes into 50.
- set expected 50
- set last 1
- foreach n $subdbs {
- if { $n == 0 } {
- set expected 0
- break
- }
- if { $last == $n } {
- continue
- }
-
- if { [expr $last % $n] == 0 || [expr $n % $last] == 0 } {
- if { $n > $last } {
- set last $n
- set expected [expr 50 / $last]
- }
- } else {
- set last [expr $n * $last / [gcd $n $last]]
- set expected [expr 50 / $last]
- }
- }
-
- error_check_good number_of_dups:$subdbs $ndups $expected
-
- #
- # If we get here, we have the number expected, now loop
- # through each and see if it is what we expected.
- #
- for { set i 0 } { $i < $ndups } { incr i } {
- set pair [lindex $join_res $i]
- set k [lindex $pair 0]
- foreach j $subdbs {
- error_check_bad valid_dup:$j:$subdbs $j 0
- set kval [string trimleft $k 0]
- if { [string length $kval] == 0 } {
- set kval 0
- }
- error_check_good \
- valid_dup:$j:$subdbs [expr $kval % $j] 0
- }
- }
-
- error_check_good close_primary [$p close] 0
- foreach i $dblist {
- error_check_good close_index:$i [$i close] 0
- }
-}
-
-proc n_to_subname { n } {
- if { $n == 0 } {
- return null.db;
- } else {
- return sub$n.db;
- }
-}
diff --git a/bdb/test/sec001.tcl b/bdb/test/sec001.tcl
deleted file mode 100644
index eb4bcc24dd2..00000000000
--- a/bdb/test/sec001.tcl
+++ /dev/null
@@ -1,205 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2001
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sec001.tcl,v 11.7 2002/05/31 16:19:30 sue Exp $
-#
-# TEST sec001
-# TEST Test of security interface
-proc sec001 { } {
- global errorInfo
- global errorCode
-
- source ./include.tcl
-
- set testfile1 env1.db
- set testfile2 $testdir/env2.db
- set subdb1 sub1
- set subdb2 sub2
-
- puts "Sec001: Test of basic encryption interface."
- env_cleanup $testdir
-
- set passwd1 "passwd1"
- set passwd1_bad "passwd1_bad"
- set passwd2 "passwd2"
- set key "key"
- set data "data"
-
- #
- # This first group tests bad create scenarios and also
- # tests attempting to use encryption after creating a
- # non-encrypted env/db to begin with.
- #
- set nopass ""
- puts "\tSec001.a.1: Create db with encryption."
- set db [berkdb_open -create -encryptaes $passwd1 -btree $testfile2]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- puts "\tSec001.a.2: Open db without encryption."
- set stat [catch {berkdb_open_noerr $testfile2} ret]
- error_check_good db:nocrypto $stat 1
- error_check_good db:fail [is_substr $ret "no encryption key"] 1
-
- set ret [berkdb dbremove -encryptaes $passwd1 $testfile2]
-
- puts "\tSec001.b.1: Create db without encryption or checksum."
- set db [berkdb_open -create -btree $testfile2]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- puts "\tSec001.b.2: Open db with encryption."
- set stat [catch {berkdb_open_noerr -encryptaes $passwd1 $testfile2} ret]
- error_check_good db:nocrypto $stat 1
- error_check_good db:fail [is_substr $ret "supplied encryption key"] 1
-
- set ret [berkdb dbremove $testfile2]
-
- puts "\tSec001.c.1: Create db with checksum."
- set db [berkdb_open -create -chksum -btree $testfile2]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- puts "\tSec001.c.2: Open db with encryption."
- set stat [catch {berkdb_open_noerr -encryptaes $passwd1 $testfile2} ret]
- error_check_good db:nocrypto $stat 1
- error_check_good db:fail [is_substr $ret "supplied encryption key"] 1
-
- set ret [berkdb dbremove $testfile2]
-
- puts "\tSec001.d.1: Create subdb with encryption."
- set db [berkdb_open -create -encryptaes $passwd1 -btree \
- $testfile2 $subdb1]
- error_check_good subdb [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- puts "\tSec001.d.2: Create 2nd subdb without encryption."
- set stat [catch {berkdb_open_noerr -create -btree \
- $testfile2 $subdb2} ret]
- error_check_good subdb:nocrypto $stat 1
- error_check_good subdb:fail [is_substr $ret "no encryption key"] 1
-
- set ret [berkdb dbremove -encryptaes $passwd1 $testfile2]
-
- puts "\tSec001.e.1: Create subdb without encryption or checksum."
- set db [berkdb_open -create -btree $testfile2 $subdb1]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- puts "\tSec001.e.2: Create 2nd subdb with encryption."
- set stat [catch {berkdb_open_noerr -create -btree -encryptaes $passwd1 \
- $testfile2 $subdb2} ret]
- error_check_good subdb:nocrypto $stat 1
- error_check_good subdb:fail [is_substr $ret "supplied encryption key"] 1
-
- env_cleanup $testdir
-
- puts "\tSec001.f.1: Open env with encryption, empty passwd."
- set stat [catch {berkdb_env_noerr -create -home $testdir \
- -encryptaes $nopass} ret]
- error_check_good env:nopass $stat 1
- error_check_good env:fail [is_substr $ret "Empty password"] 1
-
- puts "\tSec001.f.2: Create without encryption algorithm (DB_ENCRYPT_ANY)."
- set stat [catch {berkdb_env_noerr -create -home $testdir \
- -encryptany $passwd1} ret]
- error_check_good env:any $stat 1
- error_check_good env:fail [is_substr $ret "algorithm not supplied"] 1
-
- puts "\tSec001.f.3: Create without encryption."
- set env [berkdb_env -create -home $testdir]
- error_check_good env [is_valid_env $env] TRUE
-
- puts "\tSec001.f.4: Open again with encryption."
- set stat [catch {berkdb_env_noerr -home $testdir \
- -encryptaes $passwd1} ret]
- error_check_good env:unencrypted $stat 1
- error_check_good env:fail [is_substr $ret \
- "Joining non-encrypted environment"] 1
-
- error_check_good envclose [$env close] 0
-
- env_cleanup $testdir
-
- #
- # This second group tests creating and opening a secure env.
- # We test that others can join successfully, and that other's with
- # bad/no passwords cannot. Also test that we cannot use the
- # db->set_encrypt method when we've already got a secure dbenv.
- #
- puts "\tSec001.g.1: Open with encryption."
- set env [berkdb_env_noerr -create -home $testdir -encryptaes $passwd1]
- error_check_good env [is_valid_env $env] TRUE
-
- puts "\tSec001.g.2: Open again with encryption - same passwd."
- set env1 [berkdb_env -home $testdir -encryptaes $passwd1]
- error_check_good env [is_valid_env $env1] TRUE
- error_check_good envclose [$env1 close] 0
-
- puts "\tSec001.g.3: Open again with any encryption (DB_ENCRYPT_ANY)."
- set env1 [berkdb_env -home $testdir -encryptany $passwd1]
- error_check_good env [is_valid_env $env1] TRUE
- error_check_good envclose [$env1 close] 0
-
- puts "\tSec001.g.4: Open with encryption - different length passwd."
- set stat [catch {berkdb_env_noerr -home $testdir \
- -encryptaes $passwd1_bad} ret]
- error_check_good env:$passwd1_bad $stat 1
- error_check_good env:fail [is_substr $ret "Invalid password"] 1
-
- puts "\tSec001.g.5: Open with encryption - different passwd."
- set stat [catch {berkdb_env_noerr -home $testdir \
- -encryptaes $passwd2} ret]
- error_check_good env:$passwd2 $stat 1
- error_check_good env:fail [is_substr $ret "Invalid password"] 1
-
- puts "\tSec001.g.6: Open env without encryption."
- set stat [catch {berkdb_env_noerr -home $testdir} ret]
- error_check_good env:$passwd2 $stat 1
- error_check_good env:fail [is_substr $ret "Encrypted environment"] 1
-
- puts "\tSec001.g.7: Open database with encryption in env"
- set stat [catch {berkdb_open_noerr -env $env -btree -create \
- -encryptaes $passwd2 $testfile1} ret]
- error_check_good db:$passwd2 $stat 1
- error_check_good env:fail [is_substr $ret "method not permitted"] 1
-
- puts "\tSec001.g.8: Close creating env"
- error_check_good envclose [$env close] 0
-
- #
- # This third group tests opening the env after the original env
- # handle is closed. Just to make sure we can reopen it in
- # the right fashion even if no handles are currently open.
- #
- puts "\tSec001.h.1: Reopen without encryption."
- set stat [catch {berkdb_env_noerr -home $testdir} ret]
- error_check_good env:noencrypt $stat 1
- error_check_good env:fail [is_substr $ret "Encrypted environment"] 1
-
- puts "\tSec001.h.2: Reopen with bad passwd."
- set stat [catch {berkdb_env_noerr -home $testdir -encryptaes \
- $passwd1_bad} ret]
- error_check_good env:$passwd1_bad $stat 1
- error_check_good env:fail [is_substr $ret "Invalid password"] 1
-
- puts "\tSec001.h.3: Reopen with encryption."
- set env [berkdb_env -create -home $testdir -encryptaes $passwd1]
- error_check_good env [is_valid_env $env] TRUE
-
- puts "\tSec001.h.4: 2nd Reopen with encryption."
- set env1 [berkdb_env -home $testdir -encryptaes $passwd1]
- error_check_good env [is_valid_env $env1] TRUE
-
- error_check_good envclose [$env1 close] 0
- error_check_good envclose [$env close] 0
-
- puts "\tSec001 complete."
-}
diff --git a/bdb/test/sec002.tcl b/bdb/test/sec002.tcl
deleted file mode 100644
index d790162f1d7..00000000000
--- a/bdb/test/sec002.tcl
+++ /dev/null
@@ -1,143 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2001
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sec002.tcl,v 11.3 2002/04/24 19:04:59 bostic Exp $
-#
-# TEST sec002
-# TEST Test of security interface and catching errors in the
-# TEST face of attackers overwriting parts of existing files.
-proc sec002 { } {
- global errorInfo
- global errorCode
-
- source ./include.tcl
-
- set testfile1 $testdir/sec002-1.db
- set testfile2 $testdir/sec002-2.db
- set testfile3 $testdir/sec002-3.db
- set testfile4 $testdir/sec002-4.db
-
- puts "Sec002: Test of basic encryption interface."
- env_cleanup $testdir
-
- set passwd1 "passwd1"
- set passwd2 "passwd2"
- set key "key"
- set data "data"
- set pagesize 1024
-
- #
- # Set up 4 databases, two encrypted, but with different passwords
- # and one unencrypt, but with checksumming turned on and one
- # unencrypted and no checksumming. Place the exact same data
- # in each one.
- #
- puts "\tSec002.a: Setup databases"
- set db_cmd "-create -pagesize $pagesize -btree "
- set db [eval {berkdb_open} -encryptaes $passwd1 $db_cmd $testfile1]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- set db [eval {berkdb_open} -encryptaes $passwd2 $db_cmd $testfile2]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- set db [eval {berkdb_open} -chksum $db_cmd $testfile3]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- set db [eval {berkdb_open} $db_cmd $testfile4]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- #
- # First just touch some bits in the file. We know that in btree
- # meta pages, bytes 92-459 are unused. Scribble on them in both
- # an encrypted, and both unencrypted files. We should get
- # a checksum error for the encrypted, and checksummed files.
- # We should get no error for the normal file.
- #
- set fidlist {}
- set fid [open $testfile1 r+]
- lappend fidlist $fid
- set fid [open $testfile3 r+]
- lappend fidlist $fid
- set fid [open $testfile4 r+]
- lappend fidlist $fid
-
- puts "\tSec002.b: Overwrite unused space in meta-page"
- foreach f $fidlist {
- fconfigure $f -translation binary
- seek $f 100 start
- set byte [read $f 1]
- binary scan $byte c val
- set newval [expr ~$val]
- set newbyte [binary format c $newval]
- seek $f 100 start
- puts -nonewline $f $newbyte
- close $f
- }
- puts "\tSec002.c: Reopen modified databases"
- set stat [catch {berkdb_open_noerr -encryptaes $passwd1 $testfile1} ret]
- error_check_good db:$testfile1 $stat 1
- error_check_good db:$testfile1:fail \
- [is_substr $ret "metadata page checksum error"] 1
-
- set stat [catch {berkdb_open_noerr -chksum $testfile3} ret]
- error_check_good db:$testfile3 $stat 1
- error_check_good db:$testfile3:fail \
- [is_substr $ret "metadata page checksum error"] 1
-
- set stat [catch {berkdb_open_noerr $testfile4} db]
- error_check_good db:$testfile4 $stat 0
- error_check_good dbclose [$db close] 0
-
- puts "\tSec002.d: Replace root page in encrypted w/ encrypted"
- set fid1 [open $testfile1 r+]
- set fid2 [open $testfile2 r+]
- seek $fid1 $pagesize start
- seek $fid2 $pagesize start
- set root1 [read $fid1 $pagesize]
- close $fid1
- puts -nonewline $fid2 $root1
- close $fid2
-
- set db [berkdb_open_noerr -encryptaes $passwd2 $testfile2]
- error_check_good db [is_valid_db $db] TRUE
- set stat [catch {$db get $key} ret]
- error_check_good dbget $stat 1
- error_check_good db:$testfile2:fail \
- [is_substr $ret "checksum error: catastrophic recovery required"] 1
- set stat [catch {$db close} ret]
- error_check_good dbclose $stat 1
- error_check_good db:$testfile2:fail [is_substr $ret "DB_RUNRECOVERY"] 1
-
- puts "\tSec002.e: Replace root page in encrypted w/ unencrypted"
- set fid2 [open $testfile2 r+]
- set fid4 [open $testfile4 r+]
- seek $fid2 $pagesize start
- seek $fid4 $pagesize start
- set root4 [read $fid4 $pagesize]
- close $fid4
- puts -nonewline $fid2 $root4
- close $fid2
-
- set db [berkdb_open_noerr -encryptaes $passwd2 $testfile2]
- error_check_good db [is_valid_db $db] TRUE
- set stat [catch {$db get $key} ret]
- error_check_good dbget $stat 1
- error_check_good db:$testfile2:fail \
- [is_substr $ret "checksum error: catastrophic recovery required"] 1
- set stat [catch {$db close} ret]
- error_check_good dbclose $stat 1
- error_check_good db:$testfile2:fail [is_substr $ret "DB_RUNRECOVERY"] 1
-
- cleanup $testdir NULL 1
- puts "\tSec002 complete."
-}
diff --git a/bdb/test/shelltest.tcl b/bdb/test/shelltest.tcl
deleted file mode 100644
index 6190bac1f8d..00000000000
--- a/bdb/test/shelltest.tcl
+++ /dev/null
@@ -1,88 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: shelltest.tcl,v 1.20 2002/04/19 15:42:20 bostic Exp $
-#
-# TEST scr###
-# TEST The scr### directories are shell scripts that test a variety of
-# TEST things, including things about the distribution itself. These
-# TEST tests won't run on most systems, so don't even try to run them.
-#
-# shelltest.tcl:
-# Code to run shell script tests, to incorporate Java, C++,
-# example compilation, etc. test scripts into the Tcl framework.
-proc shelltest { { run_one 0 }} {
- source ./include.tcl
- global shelltest_list
-
- set SH /bin/sh
- if { [file executable $SH] != 1 } {
- puts "Shell tests require valid shell /bin/sh: not found."
- puts "Skipping shell tests."
- return 0
- }
-
- if { $run_one == 0 } {
- puts "Running shell script tests..."
-
- foreach testpair $shelltest_list {
- set dir [lindex $testpair 0]
- set test [lindex $testpair 1]
-
- env_cleanup $testdir
- shelltest_copy $test_path/$dir $testdir
- shelltest_run $SH $dir $test $testdir
- }
- } else {
- set run_one [expr $run_one - 1];
- set dir [lindex [lindex $shelltest_list $run_one] 0]
- set test [lindex [lindex $shelltest_list $run_one] 1]
-
- env_cleanup $testdir
- shelltest_copy $test_path/$dir $testdir
- shelltest_run $SH $dir $test $testdir
- }
-}
-
-proc shelltest_copy { fromdir todir } {
- set globall [glob $fromdir/*]
-
- foreach f $globall {
- file copy $f $todir/
- }
-}
-
-proc shelltest_run { sh srcdir test testdir } {
- puts "Running shell script $srcdir ($test)..."
-
- set ret [catch {exec $sh -c "cd $testdir && sh $test" >&@ stdout} res]
-
- if { $ret != 0 } {
- puts "FAIL: shell test $srcdir/$test exited abnormally"
- }
-}
-
-proc scr001 {} { shelltest 1 }
-proc scr002 {} { shelltest 2 }
-proc scr003 {} { shelltest 3 }
-proc scr004 {} { shelltest 4 }
-proc scr005 {} { shelltest 5 }
-proc scr006 {} { shelltest 6 }
-proc scr007 {} { shelltest 7 }
-proc scr008 {} { shelltest 8 }
-proc scr009 {} { shelltest 9 }
-proc scr010 {} { shelltest 10 }
-proc scr011 {} { shelltest 11 }
-proc scr012 {} { shelltest 12 }
-proc scr013 {} { shelltest 13 }
-proc scr014 {} { shelltest 14 }
-proc scr015 {} { shelltest 15 }
-proc scr016 {} { shelltest 16 }
-proc scr017 {} { shelltest 17 }
-proc scr018 {} { shelltest 18 }
-proc scr019 {} { shelltest 19 }
-proc scr020 {} { shelltest 20 }
-proc scr021 {} { shelltest 21 }
-proc scr022 {} { shelltest 22 }
diff --git a/bdb/test/si001.tcl b/bdb/test/si001.tcl
deleted file mode 100644
index 1a2247c5f8b..00000000000
--- a/bdb/test/si001.tcl
+++ /dev/null
@@ -1,116 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: si001.tcl,v 1.7 2002/04/29 17:12:02 sandstro Exp $
-#
-# TEST sindex001
-# TEST Basic secondary index put/delete test
-proc sindex001 { methods {nentries 200} {tnum 1} args } {
- source ./include.tcl
- global dict nsecondaries
-
- # Primary method/args.
- set pmethod [lindex $methods 0]
- set pargs [convert_args $pmethod $args]
- set pomethod [convert_method $pmethod]
-
- # Method/args for all the secondaries. If only one method
- # was specified, assume the same method and a standard N
- # secondaries.
- set methods [lrange $methods 1 end]
- if { [llength $methods] == 0 } {
- for { set i 0 } { $i < $nsecondaries } { incr i } {
- lappend methods $pmethod
- }
- }
-
- set argses [convert_argses $methods $args]
- set omethods [convert_methods $methods]
-
- puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
- env_cleanup $testdir
-
- set pname "primary00$tnum.db"
- set snamebase "secondary00$tnum"
-
- # Open an environment
- # XXX if one is not supplied!
- set env [berkdb_env -create -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- # Open the primary.
- set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
- error_check_good primary_open [is_valid_db $pdb] TRUE
-
- # Open and associate the secondaries
- set sdbs {}
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -create -env} $env \
- [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
- error_check_good second_open($i) [is_valid_db $sdb] TRUE
-
- error_check_good db_associate($i) \
- [$pdb associate [callback_n $i] $sdb] 0
- lappend sdbs $sdb
- }
-
- puts "\tSindex00$tnum.a: Put loop"
- set did [open $dict]
- for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
- if { [is_record_based $pmethod] == 1 } {
- set key [expr $n + 1]
- set datum $str
- } else {
- set key $str
- gets $did datum
- }
- set keys($n) $key
- set data($n) [pad_data $pmethod $datum]
-
- set ret [eval {$pdb put} {$key [chop_data $pmethod $datum]}]
- error_check_good put($n) $ret 0
- }
- close $did
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
-
- puts "\tSindex00$tnum.b: Put/overwrite loop"
- for { set n 0 } { $n < $nentries } { incr n } {
- set newd $data($n).$keys($n)
- set ret [eval {$pdb put} {$keys($n) [chop_data $pmethod $newd]}]
- error_check_good put_overwrite($n) $ret 0
- set data($n) [pad_data $pmethod $newd]
- }
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
-
- # Delete the second half of the entries through the primary.
- # We do the second half so we can just pass keys(0 ... n/2)
- # to check_secondaries.
- set half [expr $nentries / 2]
- puts "\tSindex00$tnum.c: Primary delete loop: deleting $half entries"
- for { set n $half } { $n < $nentries } { incr n } {
- set ret [$pdb del $keys($n)]
- error_check_good pdel($n) $ret 0
- }
- check_secondaries $pdb $sdbs $half keys data "Sindex00$tnum.c"
-
- # Delete half of what's left, through the first secondary.
- set quar [expr $half / 2]
- puts "\tSindex00$tnum.d: Secondary delete loop: deleting $quar entries"
- set sdb [lindex $sdbs 0]
- set callback [callback_n 0]
- for { set n $quar } { $n < $half } { incr n } {
- set skey [$callback $keys($n) [pad_data $pmethod $data($n)]]
- set ret [$sdb del $skey]
- error_check_good sdel($n) $ret 0
- }
- check_secondaries $pdb $sdbs $quar keys data "Sindex00$tnum.d"
-
- puts "\tSindex00$tnum.e: Closing/disassociating primary first"
- error_check_good primary_close [$pdb close] 0
- foreach sdb $sdbs {
- error_check_good secondary_close [$sdb close] 0
- }
- error_check_good env_close [$env close] 0
-}
diff --git a/bdb/test/si002.tcl b/bdb/test/si002.tcl
deleted file mode 100644
index 46ba86e7560..00000000000
--- a/bdb/test/si002.tcl
+++ /dev/null
@@ -1,167 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: si002.tcl,v 1.6 2002/04/29 17:12:02 sandstro Exp $
-#
-# TEST sindex002
-# TEST Basic cursor-based secondary index put/delete test
-proc sindex002 { methods {nentries 200} {tnum 2} args } {
- source ./include.tcl
- global dict nsecondaries
-
- # Primary method/args.
- set pmethod [lindex $methods 0]
- set pargs [convert_args $pmethod $args]
- set pomethod [convert_method $pmethod]
-
- # Method/args for all the secondaries. If only one method
- # was specified, assume the same method and a standard N
- # secondaries.
- set methods [lrange $methods 1 end]
- if { [llength $methods] == 0 } {
- for { set i 0 } { $i < $nsecondaries } { incr i } {
- lappend methods $pmethod
- }
- }
-
- set argses [convert_argses $methods $args]
- set omethods [convert_methods $methods]
-
- puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
- env_cleanup $testdir
-
- set pname "primary00$tnum.db"
- set snamebase "secondary00$tnum"
-
- # Open an environment
- # XXX if one is not supplied!
- set env [berkdb_env -create -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- # Open the primary.
- set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
- error_check_good primary_open [is_valid_db $pdb] TRUE
-
- # Open and associate the secondaries
- set sdbs {}
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -create -env} $env \
- [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
- error_check_good second_open($i) [is_valid_db $sdb] TRUE
-
- error_check_good db_associate($i) \
- [$pdb associate [callback_n $i] $sdb] 0
- lappend sdbs $sdb
- }
-
- puts "\tSindex00$tnum.a: Cursor put (-keyfirst/-keylast) loop"
- set did [open $dict]
- set pdbc [$pdb cursor]
- error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
- if { [is_record_based $pmethod] == 1 } {
- set key [expr $n + 1]
- set datum $str
- } else {
- set key $str
- gets $did datum
- }
- set ns($key) $n
- set keys($n) $key
- set data($n) [pad_data $pmethod $datum]
-
- if { $n % 2 == 0 } {
- set pflag " -keyfirst "
- } else {
- set pflag " -keylast "
- }
-
- set ret [eval {$pdbc put} $pflag \
- {$key [chop_data $pmethod $datum]}]
- error_check_good put($n) $ret 0
- }
- close $did
- error_check_good pdbc_close [$pdbc close] 0
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
-
- puts "\tSindex00$tnum.b: Cursor put overwrite (-current) loop"
- set pdbc [$pdb cursor]
- error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- for { set dbt [$pdbc get -first] } { [llength $dbt] > 0 } \
- { set dbt [$pdbc get -next] } {
- set key [lindex [lindex $dbt 0] 0]
- set datum [lindex [lindex $dbt 0] 1]
- set newd $datum.$key
- set ret [eval {$pdbc put -current} [chop_data $pmethod $newd]]
- error_check_good put_overwrite($key) $ret 0
- set data($ns($key)) [pad_data $pmethod $newd]
- }
- error_check_good pdbc_close [$pdbc close] 0
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
-
- puts "\tSindex00$tnum.c: Secondary c_pget/primary put overwrite loop"
- # We walk the first secondary, then put-overwrite each primary key/data
- # pair we find. This doubles as a DBC->c_pget test.
- set sdb [lindex $sdbs 0]
- set sdbc [$sdb cursor]
- error_check_good sdb_cursor [is_valid_cursor $sdbc $sdb] TRUE
- for { set dbt [$sdbc pget -first] } { [llength $dbt] > 0 } \
- { set dbt [$sdbc pget -next] } {
- set pkey [lindex [lindex $dbt 0] 1]
- set pdatum [lindex [lindex $dbt 0] 2]
-
- # Extended entries will be showing up underneath us, in
- # unpredictable places. Keep track of which pkeys
- # we've extended, and don't extend them repeatedly.
- if { [info exists pkeys_done($pkey)] == 1 } {
- continue
- } else {
- set pkeys_done($pkey) 1
- }
-
- set newd $pdatum.[string range $pdatum 0 2]
- set ret [eval {$pdb put} $pkey [chop_data $pmethod $newd]]
- error_check_good pdb_put($pkey) $ret 0
- set data($ns($pkey)) [pad_data $pmethod $newd]
- }
- error_check_good sdbc_close [$sdbc close] 0
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.c"
-
- # Delete the second half of the entries through the primary.
- # We do the second half so we can just pass keys(0 ... n/2)
- # to check_secondaries.
- set half [expr $nentries / 2]
- puts "\tSindex00$tnum.d:\
- Primary cursor delete loop: deleting $half entries"
- set pdbc [$pdb cursor]
- error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- set dbt [$pdbc get -first]
- for { set i 0 } { [llength $dbt] > 0 && $i < $half } { incr i } {
- error_check_good pdbc_del [$pdbc del] 0
- set dbt [$pdbc get -next]
- }
- error_check_good pdbc_close [$pdbc close] 0
- cursor_check_secondaries $pdb $sdbs $half "Sindex00$tnum.d"
-
- # Delete half of what's left, through the first secondary.
- set quar [expr $half / 2]
- puts "\tSindex00$tnum.e:\
- Secondary cursor delete loop: deleting $quar entries"
- set sdb [lindex $sdbs 0]
- set sdbc [$sdb cursor]
- set dbt [$sdbc get -first]
- for { set i 0 } { [llength $dbt] > 0 && $i < $quar } { incr i } {
- error_check_good sdbc_del [$sdbc del] 0
- set dbt [$sdbc get -next]
- }
- error_check_good sdbc_close [$sdbc close] 0
- cursor_check_secondaries $pdb $sdbs $quar "Sindex00$tnum.e"
-
- foreach sdb $sdbs {
- error_check_good secondary_close [$sdb close] 0
- }
- error_check_good primary_close [$pdb close] 0
- error_check_good env_close [$env close] 0
-}
diff --git a/bdb/test/si003.tcl b/bdb/test/si003.tcl
deleted file mode 100644
index 1cc8c884e75..00000000000
--- a/bdb/test/si003.tcl
+++ /dev/null
@@ -1,142 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: si003.tcl,v 1.6 2002/04/29 17:12:03 sandstro Exp $
-#
-# TEST sindex003
-# TEST sindex001 with secondaries created and closed mid-test
-# TEST Basic secondary index put/delete test with secondaries
-# TEST created mid-test.
-proc sindex003 { methods {nentries 200} {tnum 3} args } {
- source ./include.tcl
- global dict nsecondaries
-
- # Primary method/args.
- set pmethod [lindex $methods 0]
- set pargs [convert_args $pmethod $args]
- set pomethod [convert_method $pmethod]
-
- # Method/args for all the secondaries. If only one method
- # was specified, assume the same method and a standard N
- # secondaries.
- set methods [lrange $methods 1 end]
- if { [llength $methods] == 0 } {
- for { set i 0 } { $i < $nsecondaries } { incr i } {
- lappend methods $pmethod
- }
- }
-
- set argses [convert_argses $methods $args]
- set omethods [convert_methods $methods]
-
- puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
- env_cleanup $testdir
-
- set pname "primary00$tnum.db"
- set snamebase "secondary00$tnum"
-
- # Open an environment
- # XXX if one is not supplied!
- set env [eval {berkdb_env -create -home $testdir}]
- error_check_good env_open [is_valid_env $env] TRUE
-
- # Open the primary.
- set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
- error_check_good primary_open [is_valid_db $pdb] TRUE
-
- puts -nonewline "\tSindex00$tnum.a: Put loop ... "
- set did [open $dict]
- for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
- if { [is_record_based $pmethod] == 1 } {
- set key [expr $n + 1]
- set datum $str
- } else {
- set key $str
- gets $did datum
- }
- set keys($n) $key
- set data($n) [pad_data $pmethod $datum]
-
- set ret [eval {$pdb put} {$key [chop_data $pmethod $datum]}]
- error_check_good put($n) $ret 0
- }
- close $did
-
- # Open and associate the secondaries
- set sdbs {}
- puts "opening secondaries."
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -create -env} $env \
- [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
- error_check_good second_open($i) [is_valid_db $sdb] TRUE
-
- error_check_good db_associate($i) \
- [$pdb associate -create [callback_n $i] $sdb] 0
- lappend sdbs $sdb
- }
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
-
- puts -nonewline "\tSindex00$tnum.b: Put/overwrite loop ... "
- for { set n 0 } { $n < $nentries } { incr n } {
- set newd $data($n).$keys($n)
- set ret [eval {$pdb put} {$keys($n) [chop_data $pmethod $newd]}]
- error_check_good put_overwrite($n) $ret 0
- set data($n) [pad_data $pmethod $newd]
- }
-
- # Close the secondaries again.
- puts "closing secondaries."
- for { set sdb [lindex $sdbs end] } { [string length $sdb] > 0 } \
- { set sdb [lindex $sdbs end] } {
- error_check_good second_close($sdb) [$sdb close] 0
- set sdbs [lrange $sdbs 0 end-1]
- check_secondaries \
- $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
- }
-
- # Delete the second half of the entries through the primary.
- # We do the second half so we can just pass keys(0 ... n/2)
- # to check_secondaries.
- set half [expr $nentries / 2]
- puts -nonewline \
- "\tSindex00$tnum.c: Primary delete loop: deleting $half entries ..."
- for { set n $half } { $n < $nentries } { incr n } {
- set ret [$pdb del $keys($n)]
- error_check_good pdel($n) $ret 0
- }
-
- # Open and associate the secondaries
- set sdbs {}
- puts "\n\t\topening secondaries."
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -create -env} $env \
- [lindex $omethods $i] [lindex $argses $i] \
- $snamebase.r2.$i.db]
- error_check_good second_open($i) [is_valid_db $sdb] TRUE
-
- error_check_good db_associate($i) \
- [$pdb associate -create [callback_n $i] $sdb] 0
- lappend sdbs $sdb
- }
- check_secondaries $pdb $sdbs $half keys data "Sindex00$tnum.c"
-
- # Delete half of what's left, through the first secondary.
- set quar [expr $half / 2]
- puts "\tSindex00$tnum.d: Secondary delete loop: deleting $quar entries"
- set sdb [lindex $sdbs 0]
- set callback [callback_n 0]
- for { set n $quar } { $n < $half } { incr n } {
- set skey [$callback $keys($n) [pad_data $pmethod $data($n)]]
- set ret [$sdb del $skey]
- error_check_good sdel($n) $ret 0
- }
- check_secondaries $pdb $sdbs $quar keys data "Sindex00$tnum.d"
-
- foreach sdb $sdbs {
- error_check_good secondary_close [$sdb close] 0
- }
- error_check_good primary_close [$pdb close] 0
- error_check_good env_close [$env close] 0
-}
diff --git a/bdb/test/si004.tcl b/bdb/test/si004.tcl
deleted file mode 100644
index 291100da6b3..00000000000
--- a/bdb/test/si004.tcl
+++ /dev/null
@@ -1,194 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: si004.tcl,v 1.6 2002/04/29 17:12:03 sandstro Exp $
-#
-# TEST sindex004
-# TEST sindex002 with secondaries created and closed mid-test
-# TEST Basic cursor-based secondary index put/delete test, with
-# TEST secondaries created mid-test.
-proc sindex004 { methods {nentries 200} {tnum 4} args } {
- source ./include.tcl
- global dict nsecondaries
-
- # Primary method/args.
- set pmethod [lindex $methods 0]
- set pargs [convert_args $pmethod $args]
- set pomethod [convert_method $pmethod]
-
- # Method/args for all the secondaries. If only one method
- # was specified, assume the same method and a standard N
- # secondaries.
- set methods [lrange $methods 1 end]
- if { [llength $methods] == 0 } {
- for { set i 0 } { $i < $nsecondaries } { incr i } {
- lappend methods $pmethod
- }
- }
-
- set argses [convert_argses $methods $args]
- set omethods [convert_methods $methods]
-
- puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
- env_cleanup $testdir
-
- set pname "primary00$tnum.db"
- set snamebase "secondary00$tnum"
-
- # Open an environment
- # XXX if one is not supplied!
- set env [berkdb_env -create -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- # Open the primary.
- set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
- error_check_good primary_open [is_valid_db $pdb] TRUE
-
- puts -nonewline \
- "\tSindex00$tnum.a: Cursor put (-keyfirst/-keylast) loop ... "
- set did [open $dict]
- set pdbc [$pdb cursor]
- error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
- if { [is_record_based $pmethod] == 1 } {
- set key [expr $n + 1]
- set datum $str
- } else {
- set key $str
- gets $did datum
- }
- set ns($key) $n
- set keys($n) $key
- set data($n) [pad_data $pmethod $datum]
-
- if { $n % 2 == 0 } {
- set pflag " -keyfirst "
- } else {
- set pflag " -keylast "
- }
-
- set ret [eval {$pdbc put} $pflag \
- {$key [chop_data $pmethod $datum]}]
- error_check_good put($n) $ret 0
- }
- close $did
- error_check_good pdbc_close [$pdbc close] 0
-
- # Open and associate the secondaries
- set sdbs {}
- puts "\n\t\topening secondaries."
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -create -env} $env \
- [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
- error_check_good second_open($i) [is_valid_db $sdb] TRUE
-
- error_check_good db_associate($i) \
- [$pdb associate -create [callback_n $i] $sdb] 0
- lappend sdbs $sdb
- }
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
-
- puts "\tSindex00$tnum.b: Cursor put overwrite (-current) loop"
- set pdbc [$pdb cursor]
- error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- for { set dbt [$pdbc get -first] } { [llength $dbt] > 0 } \
- { set dbt [$pdbc get -next] } {
- set key [lindex [lindex $dbt 0] 0]
- set datum [lindex [lindex $dbt 0] 1]
- set newd $datum.$key
- set ret [eval {$pdbc put -current} [chop_data $pmethod $newd]]
- error_check_good put_overwrite($key) $ret 0
- set data($ns($key)) [pad_data $pmethod $newd]
- }
- error_check_good pdbc_close [$pdbc close] 0
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
-
- puts -nonewline "\tSindex00$tnum.c:\
- Secondary c_pget/primary put overwrite loop ... "
- # We walk the first secondary, then put-overwrite each primary key/data
- # pair we find. This doubles as a DBC->c_pget test.
- set sdb [lindex $sdbs 0]
- set sdbc [$sdb cursor]
- error_check_good sdb_cursor [is_valid_cursor $sdbc $sdb] TRUE
- for { set dbt [$sdbc pget -first] } { [llength $dbt] > 0 } \
- { set dbt [$sdbc pget -next] } {
- set pkey [lindex [lindex $dbt 0] 1]
- set pdatum [lindex [lindex $dbt 0] 2]
-
- # Extended entries will be showing up underneath us, in
- # unpredictable places. Keep track of which pkeys
- # we've extended, and don't extend them repeatedly.
- if { [info exists pkeys_done($pkey)] == 1 } {
- continue
- } else {
- set pkeys_done($pkey) 1
- }
-
- set newd $pdatum.[string range $pdatum 0 2]
- set ret [eval {$pdb put} $pkey [chop_data $pmethod $newd]]
- error_check_good pdb_put($pkey) $ret 0
- set data($ns($pkey)) [pad_data $pmethod $newd]
- }
- error_check_good sdbc_close [$sdbc close] 0
-
- # Close the secondaries again.
- puts "\n\t\tclosing secondaries."
- for { set sdb [lindex $sdbs end] } { [string length $sdb] > 0 } \
- { set sdb [lindex $sdbs end] } {
- error_check_good second_close($sdb) [$sdb close] 0
- set sdbs [lrange $sdbs 0 end-1]
- check_secondaries \
- $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
- }
-
- # Delete the second half of the entries through the primary.
- # We do the second half so we can just pass keys(0 ... n/2)
- # to check_secondaries.
- set half [expr $nentries / 2]
- puts -nonewline "\tSindex00$tnum.d:\
- Primary cursor delete loop: deleting $half entries ... "
- set pdbc [$pdb cursor]
- error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- set dbt [$pdbc get -first]
- for { set i 0 } { [llength $dbt] > 0 && $i < $half } { incr i } {
- error_check_good pdbc_del [$pdbc del] 0
- set dbt [$pdbc get -next]
- }
- error_check_good pdbc_close [$pdbc close] 0
-
- set sdbs {}
- puts "\n\t\topening secondaries."
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -create -env} $env \
- [lindex $omethods $i] [lindex $argses $i] \
- $snamebase.r2.$i.db]
- error_check_good second_open($i) [is_valid_db $sdb] TRUE
-
- error_check_good db_associate($i) \
- [$pdb associate -create [callback_n $i] $sdb] 0
- lappend sdbs $sdb
- }
- cursor_check_secondaries $pdb $sdbs $half "Sindex00$tnum.d"
-
- # Delete half of what's left, through the first secondary.
- set quar [expr $half / 2]
- puts "\tSindex00$tnum.e:\
- Secondary cursor delete loop: deleting $quar entries"
- set sdb [lindex $sdbs 0]
- set sdbc [$sdb cursor]
- set dbt [$sdbc get -first]
- for { set i 0 } { [llength $dbt] > 0 && $i < $quar } { incr i } {
- error_check_good sdbc_del [$sdbc del] 0
- set dbt [$sdbc get -next]
- }
- error_check_good sdbc_close [$sdbc close] 0
- cursor_check_secondaries $pdb $sdbs $quar "Sindex00$tnum.e"
-
- foreach sdb $sdbs {
- error_check_good secondary_close [$sdb close] 0
- }
- error_check_good primary_close [$pdb close] 0
- error_check_good env_close [$env close] 0
-}
diff --git a/bdb/test/si005.tcl b/bdb/test/si005.tcl
deleted file mode 100644
index e5ed49175c9..00000000000
--- a/bdb/test/si005.tcl
+++ /dev/null
@@ -1,179 +0,0 @@
-
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: si005.tcl,v 11.4 2002/04/29 17:12:03 sandstro Exp $
-#
-# Sindex005: Secondary index and join test.
-proc sindex005 { methods {nitems 1000} {tnum 5} args } {
- source ./include.tcl
-
- # Primary method/args.
- set pmethod [lindex $methods 0]
- set pargs [convert_args $pmethod $args]
- set pomethod [convert_method $pmethod]
-
- # Sindex005 does a join within a simulated database schema
- # in which the primary index maps a record ID to a ZIP code and
- # name in the form "XXXXXname", and there are two secondaries:
- # one mapping ZIP to ID, the other mapping name to ID.
- # The primary may be of any database type; the two secondaries
- # must be either btree or hash.
-
- # Method/args for all the secondaries. If only one method
- # was specified, assume the same method for the two secondaries.
- set methods [lrange $methods 1 end]
- if { [llength $methods] == 0 } {
- for { set i 0 } { $i < 2 } { incr i } {
- lappend methods $pmethod
- }
- } elseif { [llength $methods] != 2 } {
- puts "FAIL: Sindex00$tnum requires exactly two secondaries."
- return
- }
-
- set argses [convert_argses $methods $args]
- set omethods [convert_methods $methods]
-
- puts "Sindex00$tnum ($pmethod/$methods) Secondary index join test."
- env_cleanup $testdir
-
- set pname "sindex00$tnum-primary.db"
- set zipname "sindex00$tnum-zip.db"
- set namename "sindex00$tnum-name.db"
-
- # Open an environment
- # XXX if one is not supplied!
- set env [berkdb_env -create -home $testdir]
- error_check_good env_open [is_valid_env $env] TRUE
-
- # Open the databases.
- set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
- error_check_good primary_open [is_valid_db $pdb] TRUE
-
- set zipdb [eval {berkdb_open -create -dup -env} $env \
- [lindex $omethods 0] [lindex $argses 0] $zipname]
- error_check_good zip_open [is_valid_db $zipdb] TRUE
- error_check_good zip_associate [$pdb associate s5_getzip $zipdb] 0
-
- set namedb [eval {berkdb_open -create -dup -env} $env \
- [lindex $omethods 1] [lindex $argses 1] $namename]
- error_check_good name_open [is_valid_db $namedb] TRUE
- error_check_good name_associate [$pdb associate s5_getname $namedb] 0
-
- puts "\tSindex00$tnum.a: Populate database with $nitems \"names\""
- s5_populate $pdb $nitems
- puts "\tSindex00$tnum.b: Perform a join on each \"name\" and \"ZIP\""
- s5_jointest $pdb $zipdb $namedb
-
- error_check_good name_close [$namedb close] 0
- error_check_good zip_close [$zipdb close] 0
- error_check_good primary_close [$pdb close] 0
- error_check_good env_close [$env close] 0
-}
-
-proc s5_jointest { pdb zipdb namedb } {
- set pdbc [$pdb cursor]
- error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
- for { set dbt [$pdbc get -first] } { [llength $dbt] > 0 } \
- { set dbt [$pdbc get -next] } {
- set item [lindex [lindex $dbt 0] 1]
- set retlist [s5_dojoin $item $pdb $zipdb $namedb]
- }
-}
-
-proc s5_dojoin { item pdb zipdb namedb } {
- set name [s5_getname "" $item]
- set zip [s5_getzip "" $item]
-
- set zipc [$zipdb cursor]
- error_check_good zipc($item) [is_valid_cursor $zipc $zipdb] TRUE
-
- set namec [$namedb cursor]
- error_check_good namec($item) [is_valid_cursor $namec $namedb] TRUE
-
- set pc [$pdb cursor]
- error_check_good pc($item) [is_valid_cursor $pc $pdb] TRUE
-
- set ret [$zipc get -set $zip]
- set zd [lindex [lindex $ret 0] 1]
- error_check_good zipset($zip) [s5_getzip "" $zd] $zip
-
- set ret [$namec get -set $name]
- set nd [lindex [lindex $ret 0] 1]
- error_check_good nameset($name) [s5_getname "" $nd] $name
-
- set joinc [$pdb join $zipc $namec]
-
- set anyreturned 0
- for { set dbt [$joinc get] } { [llength $dbt] > 0 } \
- { set dbt [$joinc get] } {
- set ritem [lindex [lindex $dbt 0] 1]
- error_check_good returned_item($item) $ritem $item
- incr anyreturned
- }
- error_check_bad anyreturned($item) $anyreturned 0
-
- error_check_good joinc_close($item) [$joinc close] 0
- error_check_good pc_close($item) [$pc close] 0
- error_check_good namec_close($item) [$namec close] 0
- error_check_good zipc_close($item) [$zipc close] 0
-}
-
-proc s5_populate { db nitems } {
- global dict
-
- set did [open $dict]
- for { set i 1 } { $i <= $nitems } { incr i } {
- gets $did word
- if { [string length $word] < 3 } {
- gets $did word
- if { [string length $word] < 3 } {
- puts "FAIL:\
- unexpected pair of words < 3 chars long"
- }
- }
- set datalist [s5_name2zips $word]
- foreach data $datalist {
- error_check_good db_put($data) [$db put $i $data$word] 0
- }
- }
- close $did
-}
-
-proc s5_getzip { key data } { return [string range $data 0 4] }
-proc s5_getname { key data } { return [string range $data 5 end] }
-
-# The dirty secret of this test is that the ZIP code is a function of the
-# name, so we can generate a database and then verify join results easily
-# without having to consult actual data.
-#
-# Any word passed into this function will generate from 1 to 26 ZIP
-# entries, out of the set {00000, 01000 ... 99000}. The number of entries
-# is just the position in the alphabet of the word's first letter; the
-# entries are then hashed to the set {00, 01 ... 99} N different ways.
-proc s5_name2zips { name } {
- global alphabet
-
- set n [expr [string first [string index $name 0] $alphabet] + 1]
- error_check_bad starts_with_abc($name) $n -1
-
- set ret {}
- for { set i 0 } { $i < $n } { incr i } {
- set b 0
- for { set j 1 } { $j < [string length $name] } \
- { incr j } {
- set b [s5_nhash $name $i $j $b]
- }
- lappend ret [format %05u [expr $b % 100]000]
- }
- return $ret
-}
-proc s5_nhash { name i j b } {
- global alphabet
-
- set c [string first [string index $name $j] $alphabet']
- return [expr (($b * 991) + ($i * 997) + $c) % 10000000]
-}
diff --git a/bdb/test/si006.tcl b/bdb/test/si006.tcl
deleted file mode 100644
index 3a1dbb3c4f8..00000000000
--- a/bdb/test/si006.tcl
+++ /dev/null
@@ -1,129 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: si006.tcl,v 1.2 2002/05/15 17:18:03 sandstro Exp $
-#
-# TEST sindex006
-# TEST Basic secondary index put/delete test with transactions
-proc sindex006 { methods {nentries 200} {tnum 6} args } {
- source ./include.tcl
- global dict nsecondaries
-
- # Primary method/args.
- set pmethod [lindex $methods 0]
- set pargs [convert_args $pmethod $args]
- set pomethod [convert_method $pmethod]
-
- # Method/args for all the secondaries. If only one method
- # was specified, assume the same method and a standard N
- # secondaries.
- set methods [lrange $methods 1 end]
- if { [llength $methods] == 0 } {
- for { set i 0 } { $i < $nsecondaries } { incr i } {
- lappend methods $pmethod
- }
- }
-
- set argses [convert_argses $methods $args]
- set omethods [convert_methods $methods]
-
- puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
- puts " with transactions"
- env_cleanup $testdir
-
- set pname "primary00$tnum.db"
- set snamebase "secondary00$tnum"
-
- # Open an environment
- # XXX if one is not supplied!
- set env [berkdb_env -create -home $testdir -txn]
- error_check_good env_open [is_valid_env $env] TRUE
-
- # Open the primary.
- set pdb [eval {berkdb_open -create -auto_commit -env} $env $pomethod \
- $pargs $pname]
- error_check_good primary_open [is_valid_db $pdb] TRUE
-
- # Open and associate the secondaries
- set sdbs {}
- for { set i 0 } { $i < [llength $omethods] } { incr i } {
- set sdb [eval {berkdb_open -create -auto_commit -env} $env \
- [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
- error_check_good second_open($i) [is_valid_db $sdb] TRUE
-
- error_check_good db_associate($i) \
- [$pdb associate -auto_commit [callback_n $i] $sdb] 0
- lappend sdbs $sdb
- }
-
- puts "\tSindex00$tnum.a: Put loop"
- set did [open $dict]
- for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
- if { [is_record_based $pmethod] == 1 } {
- set key [expr $n + 1]
- set datum $str
- } else {
- set key $str
- gets $did datum
- }
- set keys($n) $key
- set data($n) [pad_data $pmethod $datum]
-
- set txn [$env txn]
- set ret [eval {$pdb put} -txn $txn \
- {$key [chop_data $pmethod $datum]}]
- error_check_good put($n) $ret 0
- error_check_good txn_commit($n) [$txn commit] 0
- }
- close $did
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
-
- puts "\tSindex00$tnum.b: Put/overwrite loop"
- for { set n 0 } { $n < $nentries } { incr n } {
- set newd $data($n).$keys($n)
-
- set txn [$env txn]
- set ret [eval {$pdb put} -txn $txn \
- {$keys($n) [chop_data $pmethod $newd]}]
- error_check_good put_overwrite($n) $ret 0
- set data($n) [pad_data $pmethod $newd]
- error_check_good txn_commit($n) [$txn commit] 0
- }
- check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
-
- # Delete the second half of the entries through the primary.
- # We do the second half so we can just pass keys(0 ... n/2)
- # to check_secondaries.
- set half [expr $nentries / 2]
- puts "\tSindex00$tnum.c: Primary delete loop: deleting $half entries"
- for { set n $half } { $n < $nentries } { incr n } {
- set txn [$env txn]
- set ret [$pdb del -txn $txn $keys($n)]
- error_check_good pdel($n) $ret 0
- error_check_good txn_commit($n) [$txn commit] 0
- }
- check_secondaries $pdb $sdbs $half keys data "Sindex00$tnum.c"
-
- # Delete half of what's left, through the first secondary.
- set quar [expr $half / 2]
- puts "\tSindex00$tnum.d: Secondary delete loop: deleting $quar entries"
- set sdb [lindex $sdbs 0]
- set callback [callback_n 0]
- for { set n $quar } { $n < $half } { incr n } {
- set skey [$callback $keys($n) [pad_data $pmethod $data($n)]]
- set txn [$env txn]
- set ret [$sdb del -txn $txn $skey]
- error_check_good sdel($n) $ret 0
- error_check_good txn_commit($n) [$txn commit] 0
- }
- check_secondaries $pdb $sdbs $quar keys data "Sindex00$tnum.d"
-
- puts "\tSindex00$tnum.e: Closing/disassociating primary first"
- error_check_good primary_close [$pdb close] 0
- foreach sdb $sdbs {
- error_check_good secondary_close [$sdb close] 0
- }
- error_check_good env_close [$env close] 0
-}
diff --git a/bdb/test/sindex.tcl b/bdb/test/sindex.tcl
deleted file mode 100644
index fc2a0fc2f31..00000000000
--- a/bdb/test/sindex.tcl
+++ /dev/null
@@ -1,259 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2001-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sindex.tcl,v 1.8 2002/05/07 17:15:46 krinsky Exp $
-#
-# Secondary index test driver and maintenance routines.
-#
-# Breaking from the usual convention, we put the driver function
-# for the secondary index tests here, in its own file. The reason
-# for this is that it's something which compartmentalizes nicely,
-# has little in common with other driver functions, and
-# is likely to be run on its own from time to time.
-#
-# The secondary index tests themselves live in si0*.tcl.
-
-# Standard number of secondary indices to create if a single-element
-# list of methods is passed into the secondary index tests.
-global nsecondaries
-set nsecondaries 2
-
-# Run the secondary index tests.
-proc sindex { {verbose 0} args } {
- global verbose_check_secondaries
- set verbose_check_secondaries $verbose
-
- # Run basic tests with a single secondary index and a small number
- # of keys, then again with a larger number of keys. (Note that
- # we can't go above 5000, since we use two items from our
- # 10K-word list for each key/data pair.)
- foreach n { 200 5000 } {
- foreach pm { btree hash recno frecno queue queueext } {
- foreach sm { dbtree dhash ddbtree ddhash btree hash } {
- sindex001 [list $pm $sm $sm] $n
- sindex002 [list $pm $sm $sm] $n
- # Skip tests 3 & 4 for large lists;
- # they're not that interesting.
- if { $n < 1000 } {
- sindex003 [list $pm $sm $sm] $n
- sindex004 [list $pm $sm $sm] $n
- }
-
- sindex006 [list $pm $sm $sm] $n
- }
- }
- }
-
- # Run secondary index join test. (There's no point in running
- # this with both lengths, the primary is unhappy for now with fixed-
- # length records (XXX), and we need unsorted dups in the secondaries.)
- foreach pm { btree hash recno } {
- foreach sm { btree hash } {
- sindex005 [list $pm $sm $sm] 1000
- }
- sindex005 [list $pm btree hash] 1000
- sindex005 [list $pm hash btree] 1000
- }
-
-
- # Run test with 50 secondaries.
- foreach pm { btree hash } {
- set methlist [list $pm]
- for { set i 0 } { $i < 50 } { incr i } {
- # XXX this should incorporate hash after #3726
- if { $i % 2 == 0 } {
- lappend methlist "dbtree"
- } else {
- lappend methlist "ddbtree"
- }
- }
- sindex001 $methlist 500
- sindex002 $methlist 500
- sindex003 $methlist 500
- sindex004 $methlist 500
- }
-}
-
-# The callback function we use for each given secondary in most tests
-# is a simple function of its place in the list of secondaries (0-based)
-# and the access method (since recnos may need different callbacks).
-#
-# !!!
-# Note that callbacks 0-3 return unique secondary keys if the input data
-# are unique; callbacks 4 and higher may not, so don't use them with
-# the normal wordlist and secondaries that don't support dups.
-# The callbacks that incorporate a key don't work properly with recno
-# access methods, at least not in the current test framework (the
-# error_check_good lines test for e.g. 1foo, when the database has
-# e.g. 0x010x000x000x00foo).
-proc callback_n { n } {
- switch $n {
- 0 { return _s_reversedata }
- 1 { return _s_noop }
- 2 { return _s_concatkeydata }
- 3 { return _s_concatdatakey }
- 4 { return _s_reverseconcat }
- 5 { return _s_truncdata }
- 6 { return _s_alwayscocacola }
- }
- return _s_noop
-}
-
-proc _s_reversedata { a b } { return [reverse $b] }
-proc _s_truncdata { a b } { return [string range $b 1 end] }
-proc _s_concatkeydata { a b } { return $a$b }
-proc _s_concatdatakey { a b } { return $b$a }
-proc _s_reverseconcat { a b } { return [reverse $a$b] }
-proc _s_alwayscocacola { a b } { return "Coca-Cola" }
-proc _s_noop { a b } { return $b }
-
-# Should the check_secondary routines print lots of output?
-set verbose_check_secondaries 0
-
-# Given a primary database handle, a list of secondary handles, a
-# number of entries, and arrays of keys and data, verify that all
-# databases have what they ought to.
-proc check_secondaries { pdb sdbs nentries keyarr dataarr {pref "Check"} } {
- upvar $keyarr keys
- upvar $dataarr data
- global verbose_check_secondaries
-
- # Make sure each key/data pair is in the primary.
- if { $verbose_check_secondaries } {
- puts "\t\t$pref.1: Each key/data pair is in the primary"
- }
- for { set i 0 } { $i < $nentries } { incr i } {
- error_check_good pdb_get($i) [$pdb get $keys($i)] \
- [list [list $keys($i) $data($i)]]
- }
-
- for { set j 0 } { $j < [llength $sdbs] } { incr j } {
- # Make sure each key/data pair is in this secondary.
- if { $verbose_check_secondaries } {
- puts "\t\t$pref.2:\
- Each skey/key/data tuple is in secondary #$j"
- }
- for { set i 0 } { $i < $nentries } { incr i } {
- set sdb [lindex $sdbs $j]
- set skey [[callback_n $j] $keys($i) $data($i)]
- error_check_good sdb($j)_pget($i) \
- [$sdb pget -get_both $skey $keys($i)] \
- [list [list $skey $keys($i) $data($i)]]
- }
-
- # Make sure this secondary contains only $nentries
- # items.
- if { $verbose_check_secondaries } {
- puts "\t\t$pref.3: Secondary #$j has $nentries items"
- }
- set dbc [$sdb cursor]
- error_check_good dbc($i) \
- [is_valid_cursor $dbc $sdb] TRUE
- for { set k 0 } { [llength [$dbc get -next]] > 0 } \
- { incr k } { }
- error_check_good numitems($i) $k $nentries
- error_check_good dbc($i)_close [$dbc close] 0
- }
-
- if { $verbose_check_secondaries } {
- puts "\t\t$pref.4: Primary has $nentries items"
- }
- set dbc [$pdb cursor]
- error_check_good pdbc [is_valid_cursor $dbc $pdb] TRUE
- for { set k 0 } { [llength [$dbc get -next]] > 0 } { incr k } { }
- error_check_good numitems $k $nentries
- error_check_good pdbc_close [$dbc close] 0
-}
-
-# Given a primary database handle and a list of secondary handles, walk
-# through the primary and make sure all the secondaries are correct,
-# then walk through the secondaries and make sure the primary is correct.
-#
-# This is slightly less rigorous than the normal check_secondaries--we
-# use it whenever we don't have up-to-date "keys" and "data" arrays.
-proc cursor_check_secondaries { pdb sdbs nentries { pref "Check" } } {
- global verbose_check_secondaries
-
- # Make sure each key/data pair in the primary is in each secondary.
- set pdbc [$pdb cursor]
- error_check_good ccs_pdbc [is_valid_cursor $pdbc $pdb] TRUE
- set i 0
- if { $verbose_check_secondaries } {
- puts "\t\t$pref.1:\
- Key/data in primary => key/data in secondaries"
- }
-
- for { set dbt [$pdbc get -first] } { [llength $dbt] > 0 } \
- { set dbt [$pdbc get -next] } {
- incr i
- set pkey [lindex [lindex $dbt 0] 0]
- set pdata [lindex [lindex $dbt 0] 1]
- for { set j 0 } { $j < [llength $sdbs] } { incr j } {
- set sdb [lindex $sdbs $j]
- set sdbt [$sdb pget -get_both \
- [[callback_n $j] $pkey $pdata] $pkey]
- error_check_good pkey($pkey,$j) \
- [lindex [lindex $sdbt 0] 1] $pkey
- error_check_good pdata($pdata,$j) \
- [lindex [lindex $sdbt 0] 2] $pdata
- }
- }
- error_check_good ccs_pdbc_close [$pdbc close] 0
- error_check_good primary_has_nentries $i $nentries
-
- for { set j 0 } { $j < [llength $sdbs] } { incr j } {
- if { $verbose_check_secondaries } {
- puts "\t\t$pref.2:\
- Key/data in secondary #$j => key/data in primary"
- }
- set sdb [lindex $sdbs $j]
- set sdbc [$sdb cursor]
- error_check_good ccs_sdbc($j) [is_valid_cursor $sdbc $sdb] TRUE
- set i 0
- for { set dbt [$sdbc pget -first] } { [llength $dbt] > 0 } \
- { set dbt [$sdbc pget -next] } {
- incr i
- set pkey [lindex [lindex $dbt 0] 1]
- set pdata [lindex [lindex $dbt 0] 2]
- error_check_good pdb_get($pkey/$pdata,$j) \
- [$pdb get -get_both $pkey $pdata] \
- [list [list $pkey $pdata]]
- }
- error_check_good secondary($j)_has_nentries $i $nentries
-
- # To exercise pget -last/pget -prev, we do it backwards too.
- set i 0
- for { set dbt [$sdbc pget -last] } { [llength $dbt] > 0 } \
- { set dbt [$sdbc pget -prev] } {
- incr i
- set pkey [lindex [lindex $dbt 0] 1]
- set pdata [lindex [lindex $dbt 0] 2]
- error_check_good pdb_get_bkwds($pkey/$pdata,$j) \
- [$pdb get -get_both $pkey $pdata] \
- [list [list $pkey $pdata]]
- }
- error_check_good secondary($j)_has_nentries_bkwds $i $nentries
-
- error_check_good ccs_sdbc_close($j) [$sdbc close] 0
- }
-}
-
-# The secondary index tests take a list of the access methods that
-# each array ought to use. Convert at one blow into a list of converted
-# argses and omethods for each method in the list.
-proc convert_argses { methods largs } {
- set ret {}
- foreach m $methods {
- lappend ret [convert_args $m $largs]
- }
- return $ret
-}
-proc convert_methods { methods } {
- set ret {}
- foreach m $methods {
- lappend ret [convert_method $m]
- }
- return $ret
-}
diff --git a/bdb/test/sysscript.tcl b/bdb/test/sysscript.tcl
deleted file mode 100644
index 810b0df6cef..00000000000
--- a/bdb/test/sysscript.tcl
+++ /dev/null
@@ -1,282 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: sysscript.tcl,v 11.17 2002/07/29 17:05:24 sue Exp $
-#
-# System integration test script.
-# This script runs a single process that tests the full functionality of
-# the system. The database under test contains nfiles files. Each process
-# randomly generates a key and some data. Both keys and data are bimodally
-# distributed between small keys (1-10 characters) and large keys (the avg
-# length is indicated via the command line parameter.
-# The process then decides on a replication factor between 1 and nfiles.
-# It writes the key and data to that many files and tacks on the file ids
-# of the files it writes to the data string. For example, let's say that
-# I randomly generate the key dog and data cat. Then I pick a replication
-# factor of 3. I pick 3 files from the set of n (say 1, 3, and 5). I then
-# rewrite the data as 1:3:5:cat. I begin a transaction, add the key/data
-# pair to each file and then commit. Notice that I may generate replication
-# of the form 1:3:3:cat in which case I simply add a duplicate to file 3.
-#
-# Usage: sysscript dir nfiles key_avg data_avg
-#
-# dir: DB_HOME directory
-# nfiles: number of files in the set
-# key_avg: average big key size
-# data_avg: average big data size
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set mypid [pid]
-
-set usage "sysscript dir nfiles key_avg data_avg method"
-
-# Verify usage
-if { $argc != 5 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-puts [concat "Argc: " $argc " Argv: " $argv]
-
-# Initialize arguments
-set dir [lindex $argv 0]
-set nfiles [ lindex $argv 1 ]
-set key_avg [ lindex $argv 2 ]
-set data_avg [ lindex $argv 3 ]
-set method [ lindex $argv 4 ]
-
-# Initialize seed
-global rand_init
-berkdb srand $rand_init
-
-puts "Beginning execution for $mypid"
-puts "$dir DB_HOME"
-puts "$nfiles files"
-puts "$key_avg average key length"
-puts "$data_avg average data length"
-
-flush stdout
-
-# Create local environment
-set dbenv [berkdb_env -txn -home $dir]
-set err [catch {error_check_good $mypid:dbenv [is_substr $dbenv env] 1} ret]
-if {$err != 0} {
- puts $ret
- return
-}
-
-# Now open the files
-for { set i 0 } { $i < $nfiles } { incr i } {
- set file test044.$i.db
- set db($i) [berkdb open -auto_commit -env $dbenv $method $file]
- set err [catch {error_check_bad $mypid:dbopen $db($i) NULL} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- set err [catch {error_check_bad $mypid:dbopen [is_substr $db($i) \
- error] 1} ret]
- if {$err != 0} {
- puts $ret
- return
- }
-}
-
-set record_based [is_record_based $method]
-while { 1 } {
- # Decide if we're going to create a big key or a small key
- # We give small keys a 70% chance.
- if { [berkdb random_int 1 10] < 8 } {
- set k [random_data 5 0 0 $record_based]
- } else {
- set k [random_data $key_avg 0 0 $record_based]
- }
- set data [chop_data $method [random_data $data_avg 0 0]]
-
- set txn [$dbenv txn]
- set err [catch {error_check_good $mypid:txn_begin [is_substr $txn \
- $dbenv.txn] 1} ret]
- if {$err != 0} {
- puts $ret
- return
- }
-
- # Open cursors
- for { set f 0 } {$f < $nfiles} {incr f} {
- set cursors($f) [$db($f) cursor -txn $txn]
- set err [catch {error_check_good $mypid:cursor_open \
- [is_substr $cursors($f) $db($f)] 1} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- }
- set aborted 0
-
- # Check to see if key is already in database
- set found 0
- for { set i 0 } { $i < $nfiles } { incr i } {
- set r [$db($i) get -txn $txn $k]
- set r [$db($i) get -txn $txn $k]
- if { $r == "-1" } {
- for {set f 0 } {$f < $nfiles} {incr f} {
- set err [catch {error_check_good \
- $mypid:cursor_close \
- [$cursors($f) close] 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- }
- set err [catch {error_check_good $mypid:txn_abort \
- [$txn abort] 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- set aborted 1
- set found 2
- break
- } elseif { $r != "Key $k not found." } {
- set found 1
- break
- }
- }
- switch $found {
- 2 {
- # Transaction aborted, no need to do anything.
- }
- 0 {
- # Key was not found, decide how much to replicate
- # and then create a list of that many file IDs.
- set repl [berkdb random_int 1 $nfiles]
- set fset ""
- for { set i 0 } { $i < $repl } {incr i} {
- set f [berkdb random_int 0 [expr $nfiles - 1]]
- lappend fset $f
- set data [chop_data $method $f:$data]
- }
-
- foreach i $fset {
- set r [$db($i) put -txn $txn $k $data]
- if {$r == "-1"} {
- for {set f 0 } {$f < $nfiles} {incr f} {
- set err [catch {error_check_good \
- $mypid:cursor_close \
- [$cursors($f) close] 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- }
- set err [catch {error_check_good \
- $mypid:txn_abort [$txn abort] 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- set aborted 1
- break
- }
- }
- }
- 1 {
- # Key was found. Make sure that all the data values
- # look good.
- set f [zero_list $nfiles]
- set data $r
- while { [set ndx [string first : $r]] != -1 } {
- set fnum [string range $r 0 [expr $ndx - 1]]
- if { [lindex $f $fnum] == 0 } {
- #set flag -set
- set full [record $cursors($fnum) get -set $k]
- } else {
- #set flag -next
- set full [record $cursors($fnum) get -next]
- }
- if {[llength $full] == 0} {
- for {set f 0 } {$f < $nfiles} {incr f} {
- set err [catch {error_check_good \
- $mypid:cursor_close \
- [$cursors($f) close] 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- }
- set err [catch {error_check_good \
- $mypid:txn_abort [$txn abort] 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- set aborted 1
- break
- }
- set err [catch {error_check_bad \
- $mypid:curs_get($k,$data,$fnum,$flag) \
- [string length $full] 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- set key [lindex [lindex $full 0] 0]
- set rec [pad_data $method [lindex [lindex $full 0] 1]]
- set err [catch {error_check_good \
- $mypid:dbget_$fnum:key $key $k} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- set err [catch {error_check_good \
- $mypid:dbget_$fnum:data($k) $rec $data} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- set f [lreplace $f $fnum $fnum 1]
- incr ndx
- set r [string range $r $ndx end]
- }
- }
- }
- if { $aborted == 0 } {
- for {set f 0 } {$f < $nfiles} {incr f} {
- set err [catch {error_check_good $mypid:cursor_close \
- [$cursors($f) close] 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- }
- set err [catch {error_check_good $mypid:commit [$txn commit] \
- 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
- }
-}
-
-# Close files
-for { set i 0 } { $i < $nfiles} { incr i } {
- set r [$db($i) close]
- set err [catch {error_check_good $mypid:db_close:$i $r 0} ret]
- if {$err != 0} {
- puts $ret
- return
- }
-}
-
-# Close tm and environment
-$dbenv close
-
-puts "[timestamp] [pid] Complete"
-flush stdout
-
-filecheck $file 0
diff --git a/bdb/test/test.tcl b/bdb/test/test.tcl
deleted file mode 100644
index 10ee9425b7a..00000000000
--- a/bdb/test/test.tcl
+++ /dev/null
@@ -1,1863 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test.tcl,v 11.225 2002/09/10 18:51:38 sue Exp $
-
-source ./include.tcl
-
-# Load DB's TCL API.
-load $tcllib
-
-if { [file exists $testdir] != 1 } {
- file mkdir $testdir
-}
-
-global __debug_print
-global __debug_on
-global __debug_test
-global util_path
-
-#
-# Test if utilities work to figure out the path. Most systems
-# use ., but QNX has a problem with execvp of shell scripts which
-# causes it to break.
-#
-set stat [catch {exec ./db_printlog -?} ret]
-if { [string first "exec format error" $ret] != -1 } {
- set util_path ./.libs
-} else {
- set util_path .
-}
-set __debug_print 0
-set encrypt 0
-set old_encrypt 0
-set passwd test_passwd
-
-# This is where the test numbering and parameters now live.
-source $test_path/testparams.tcl
-
-# Error stream that (should!) always go to the console, even if we're
-# redirecting to ALL.OUT.
-set consoleerr stderr
-
-foreach sub $subs {
- if { [info exists num_test($sub)] != 1 } {
- puts stderr "Subsystem $sub has no number of tests specified in\
- testparams.tcl; skipping."
- continue
- }
- set end $num_test($sub)
- for { set i 1 } { $i <= $end } {incr i} {
- set name [format "%s%03d.tcl" $sub $i]
- source $test_path/$name
- }
-}
-
-source $test_path/archive.tcl
-source $test_path/byteorder.tcl
-source $test_path/dbm.tcl
-source $test_path/hsearch.tcl
-source $test_path/join.tcl
-source $test_path/logtrack.tcl
-source $test_path/ndbm.tcl
-source $test_path/parallel.tcl
-source $test_path/reputils.tcl
-source $test_path/sdbutils.tcl
-source $test_path/shelltest.tcl
-source $test_path/sindex.tcl
-source $test_path/testutils.tcl
-source $test_path/upgrade.tcl
-
-set dict $test_path/wordlist
-set alphabet "abcdefghijklmnopqrstuvwxyz"
-set datastr "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
-
-# Random number seed.
-global rand_init
-set rand_init 101301
-
-# Default record length and padding character for
-# fixed record length access method(s)
-set fixed_len 20
-set fixed_pad 0
-
-set recd_debug 0
-set log_log_record_types 0
-set ohandles {}
-
-# Normally, we're not running an all-tests-in-one-env run. This matters
-# for error stream/error prefix settings in berkdb_open.
-global is_envmethod
-set is_envmethod 0
-
-# For testing locker id wrap around.
-global lock_curid
-global lock_maxid
-set lock_curid 0
-set lock_maxid 2147483647
-global txn_curid
-global txn_maxid
-set txn_curid 2147483648
-set txn_maxid 4294967295
-
-# Set up any OS-specific values
-global tcl_platform
-set is_windows_test [is_substr $tcl_platform(os) "Win"]
-set is_hp_test [is_substr $tcl_platform(os) "HP-UX"]
-set is_qnx_test [is_substr $tcl_platform(os) "QNX"]
-
-# From here on out, test.tcl contains the procs that are used to
-# run all or part of the test suite.
-
-proc run_std { args } {
- global num_test
- source ./include.tcl
-
- set exflgs [eval extractflags $args]
- set args [lindex $exflgs 0]
- set flags [lindex $exflgs 1]
-
- set display 1
- set run 1
- set am_only 0
- set no_am 0
- set std_only 1
- set rflags {--}
- foreach f $flags {
- switch $f {
- A {
- set std_only 0
- }
- M {
- set no_am 1
- puts "run_std: all but access method tests."
- }
- m {
- set am_only 1
- puts "run_std: access method tests only."
- }
- n {
- set display 1
- set run 0
- set rflags [linsert $rflags 0 "-n"]
- }
- }
- }
-
- if { $std_only == 1 } {
- fileremove -f ALL.OUT
-
- set o [open ALL.OUT a]
- if { $run == 1 } {
- puts -nonewline "Test suite run started at: "
- puts [clock format [clock seconds] -format "%H:%M %D"]
- puts [berkdb version -string]
-
- puts -nonewline $o "Test suite run started at: "
- puts $o [clock format [clock seconds] -format "%H:%M %D"]
- puts $o [berkdb version -string]
- }
- close $o
- }
-
- set test_list {
- {"environment" "env"}
- {"archive" "archive"}
- {"locking" "lock"}
- {"logging" "log"}
- {"memory pool" "memp"}
- {"mutex" "mutex"}
- {"transaction" "txn"}
- {"deadlock detection" "dead"}
- {"subdatabase" "sdb"}
- {"byte-order" "byte"}
- {"recno backing file" "rsrc"}
- {"DBM interface" "dbm"}
- {"NDBM interface" "ndbm"}
- {"Hsearch interface" "hsearch"}
- {"secondary index" "sindex"}
- }
-
- if { $am_only == 0 } {
-
- foreach pair $test_list {
- set msg [lindex $pair 0]
- set cmd [lindex $pair 1]
- puts "Running $msg tests"
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl; r $rflags $cmd" \
- >>& ALL.OUT } res] {
- set o [open ALL.OUT a]
- puts $o "FAIL: $cmd test"
- close $o
- }
- }
-
- # Run recovery tests.
- #
- # XXX These too are broken into separate tclsh instantiations
- # so we don't require so much memory, but I think it's cleaner
- # and more useful to do it down inside proc r than here,
- # since "r recd" gets done a lot and needs to work.
- #
- # Note that we still wrap the test in an exec so that
- # its output goes to ALL.OUT. run_recd will wrap each test
- # so that both error streams go to stdout (which here goes
- # to ALL.OUT); information that run_recd wishes to print
- # to the "real" stderr, but outside the wrapping for each test,
- # such as which tests are being skipped, it can still send to
- # stderr.
- puts "Running recovery tests"
- if [catch {
- exec $tclsh_path \
- << "source $test_path/test.tcl; r $rflags recd" \
- 2>@ stderr >> ALL.OUT
- } res] {
- set o [open ALL.OUT a]
- puts $o "FAIL: recd tests"
- close $o
- }
-
- # Run join test
- #
- # XXX
- # Broken up into separate tclsh instantiations so we don't
- # require so much memory.
- puts "Running join test"
- foreach i "join1 join2 join3 join4 join5 join6" {
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl; r $rflags $i" \
- >>& ALL.OUT } res] {
- set o [open ALL.OUT a]
- puts $o "FAIL: $i test"
- close $o
- }
- }
- }
-
- if { $no_am == 0 } {
- # Access method tests.
- #
- # XXX
- # Broken up into separate tclsh instantiations so we don't
- # require so much memory.
- foreach i \
- "btree hash queue queueext recno rbtree frecno rrecno" {
- puts "Running $i tests"
- for { set j 1 } { $j <= $num_test(test) } {incr j} {
- if { $run == 0 } {
- set o [open ALL.OUT a]
- run_method -$i $j $j $display $run $o
- close $o
- }
- if { $run } {
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl; \
- run_method -$i $j $j $display $run"\
- >>& ALL.OUT } res] {
- set o [open ALL.OUT a]
- puts $o "FAIL:\
- [format "test%03d" $j] $i"
- close $o
- }
- }
- }
- }
- }
-
- # If not actually running, no need to check for failure.
- # If running in the context of the larger 'run_all' we don't
- # check for failure here either.
- if { $run == 0 || $std_only == 0 } {
- return
- }
-
- set failed [check_failed_run ALL.OUT]
-
- set o [open ALL.OUT a]
- if { $failed == 0 } {
- puts "Regression Tests Succeeded"
- puts $o "Regression Tests Succeeded"
- } else {
- puts "Regression Tests Failed; see ALL.OUT for log"
- puts $o "Regression Tests Failed"
- }
-
- puts -nonewline "Test suite run completed at: "
- puts [clock format [clock seconds] -format "%H:%M %D"]
- puts -nonewline $o "Test suite run completed at: "
- puts $o [clock format [clock seconds] -format "%H:%M %D"]
- close $o
-}
-
-proc check_failed_run { file {text "^FAIL"}} {
- set failed 0
- set o [open $file r]
- while { [gets $o line] >= 0 } {
- set ret [regexp $text $line]
- if { $ret != 0 } {
- set failed 1
- }
- }
- close $o
-
- return $failed
-}
-
-proc r { args } {
- global num_test
- source ./include.tcl
-
- set exflgs [eval extractflags $args]
- set args [lindex $exflgs 0]
- set flags [lindex $exflgs 1]
-
- set display 1
- set run 1
- set saveflags "--"
- foreach f $flags {
- switch $f {
- n {
- set display 1
- set run 0
- set saveflags "-n $saveflags"
- }
- }
- }
-
- if {[catch {
- set sub [ lindex $args 0 ]
- switch $sub {
- byte {
- if { $display } {
- puts "run_test byteorder"
- }
- if { $run } {
- check_handles
- run_test byteorder
- }
- }
- archive -
- dbm -
- hsearch -
- ndbm -
- shelltest -
- sindex {
- if { $display } { puts "r $sub" }
- if { $run } {
- check_handles
- $sub
- }
- }
- bigfile -
- dead -
- env -
- lock -
- log -
- memp -
- mutex -
- rsrc -
- sdbtest -
- txn {
- if { $display } { run_subsystem $sub 1 0 }
- if { $run } {
- run_subsystem $sub
- }
- }
- join {
- eval r $saveflags join1
- eval r $saveflags join2
- eval r $saveflags join3
- eval r $saveflags join4
- eval r $saveflags join5
- eval r $saveflags join6
- }
- join1 {
- if { $display } { puts jointest }
- if { $run } {
- check_handles
- jointest
- }
- }
- joinbench {
- puts "[timestamp]"
- eval r $saveflags join1
- eval r $saveflags join2
- puts "[timestamp]"
- }
- join2 {
- if { $display } { puts "jointest 512" }
- if { $run } {
- check_handles
- jointest 512
- }
- }
- join3 {
- if { $display } {
- puts "jointest 8192 0 -join_item"
- }
- if { $run } {
- check_handles
- jointest 8192 0 -join_item
- }
- }
- join4 {
- if { $display } { puts "jointest 8192 2" }
- if { $run } {
- check_handles
- jointest 8192 2
- }
- }
- join5 {
- if { $display } { puts "jointest 8192 3" }
- if { $run } {
- check_handles
- jointest 8192 3
- }
- }
- join6 {
- if { $display } { puts "jointest 512 3" }
- if { $run } {
- check_handles
- jointest 512 3
- }
- }
- recd {
- check_handles
- run_recds $run $display [lrange $args 1 end]
- }
- rep {
- for { set j 1 } { $j <= $num_test(test) } \
- { incr j } {
- if { $display } {
- puts "eval run_test \
- run_repmethod 0 $j $j"
- }
- if { $run } {
- eval run_test \
- run_repmethod 0 $j $j
- }
- }
- for { set i 1 } \
- { $i <= $num_test(rep) } {incr i} {
- set test [format "%s%03d" $sub $i]
- if { $i == 2 } {
- if { $run } {
- puts "Skipping rep002 \
- (waiting on SR #6195)"
- }
- continue
- }
- if { $display } {
- puts "run_test $test"
- }
- if { $run } {
- run_test $test
- }
- }
- }
- rpc {
- if { $display } { puts "r $sub" }
- global rpc_svc svc_list
- set old_rpc_src $rpc_svc
- foreach rpc_svc $svc_list {
- if { !$run || \
- ![file exist $util_path/$rpc_svc] } {
- continue
- }
- run_subsystem rpc
- if { [catch {run_rpcmethod -txn} ret] != 0 } {
- puts $ret
- }
- run_test run_rpcmethod
- }
- set rpc_svc $old_rpc_src
- }
- sec {
- if { $display } {
- run_subsystem $sub 1 0
- }
- if { $run } {
- run_subsystem $sub 0 1
- }
- for { set j 1 } { $j <= $num_test(test) } \
- { incr j } {
- if { $display } {
- puts "eval run_test \
- run_secmethod $j $j"
- puts "eval run_test \
- run_secenv $j $j"
- }
- if { $run } {
- eval run_test \
- run_secmethod $j $j
- eval run_test \
- run_secenv $j $j
- }
- }
- }
- sdb {
- if { $display } {
- puts "eval r $saveflags sdbtest"
- for { set j 1 } \
- { $j <= $num_test(sdb) } \
- { incr j } {
- puts "eval run_test \
- subdb $j $j"
- }
- }
- if { $run } {
- eval r $saveflags sdbtest
- for { set j 1 } \
- { $j <= $num_test(sdb) } \
- { incr j } {
- eval run_test subdb $j $j
- }
- }
- }
- btree -
- rbtree -
- hash -
- queue -
- queueext -
- recno -
- frecno -
- rrecno {
- eval run_method [lindex $args 0] \
- 1 0 $display $run [lrange $args 1 end]
- }
-
- default {
- error \
- "FAIL:[timestamp] r: $args: unknown command"
- }
- }
- flush stdout
- flush stderr
- } res] != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp] r: $args: $theError"
- } else {
- error $theError;
- }
- }
-}
-
-proc run_subsystem { prefix { display 0 } { run 1} } {
- global num_test
- if { [info exists num_test($prefix)] != 1 } {
- puts stderr "Subsystem $sub has no number of tests specified in\
- testparams.tcl; skipping."
- return
- }
- for { set i 1 } { $i <= $num_test($prefix) } {incr i} {
- set name [format "%s%03d" $prefix $i]
- if { $display } {
- puts "eval $name"
- }
- if { $run } {
- check_handles
- catch {eval $name}
- }
- }
-}
-
-proc run_test { testname args } {
- source ./include.tcl
- foreach method "hash queue queueext recno rbtree frecno rrecno btree" {
- check_handles
- eval $testname -$method $args
- verify_dir $testdir "" 1
- }
-}
-
-proc run_method { method {start 1} {stop 0} {display 0} {run 1} \
- { outfile stdout } args } {
- global __debug_on
- global __debug_print
- global num_test
- global parms
- source ./include.tcl
-
- if { $stop == 0 } {
- set stop $num_test(test)
- }
- if { $run == 1 } {
- puts $outfile "run_method: $method $start $stop $args"
- }
-
- if {[catch {
- for { set i $start } { $i <= $stop } {incr i} {
- set name [format "test%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Test%03d $i] disabled in\
- testparams.tcl; skipping."
- continue
- }
- if { $display } {
- puts -nonewline $outfile "eval $name $method"
- puts -nonewline $outfile " $parms($name) $args"
- puts $outfile " ; verify_dir $testdir \"\" 1"
- }
- if { $run } {
- check_handles $outfile
- puts $outfile "[timestamp]"
- eval $name $method $parms($name) $args
- if { $__debug_print != 0 } {
- puts $outfile ""
- }
- # verify all databases the test leaves behind
- verify_dir $testdir "" 1
- if { $__debug_on != 0 } {
- debug
- }
- }
- flush stdout
- flush stderr
- }
- } res] != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_method: $method $i: $theError"
- } else {
- error $theError;
- }
- }
-}
-
-proc run_rpcmethod { method {start 1} {stop 0} {largs ""} } {
- global __debug_on
- global __debug_print
- global num_test
- global parms
- global is_envmethod
- global rpc_svc
- source ./include.tcl
-
- if { $stop == 0 } {
- set stop $num_test(test)
- }
- puts "run_rpcmethod: $method $start $stop $largs"
-
- set save_largs $largs
- if { [string compare $rpc_server "localhost"] == 0 } {
- set dpid [exec $util_path/$rpc_svc -h $rpc_testdir &]
- } else {
- set dpid [exec rsh $rpc_server $rpc_path/$rpc_svc \
- -h $rpc_testdir &]
- }
- puts "\tRun_rpcmethod.a: starting server, pid $dpid"
- tclsleep 10
- remote_cleanup $rpc_server $rpc_testdir $testdir
-
- set home [file tail $rpc_testdir]
-
- set is_envmethod 1
- set use_txn 0
- if { [string first "txn" $method] != -1 } {
- set use_txn 1
- }
- if { $use_txn == 1 } {
- if { $start == 1 } {
- set ntxns 32
- } else {
- set ntxns $start
- }
- set i 1
- check_handles
- remote_cleanup $rpc_server $rpc_testdir $testdir
- set env [eval {berkdb_env -create -mode 0644 -home $home \
- -server $rpc_server -client_timeout 10000} -txn]
- error_check_good env_open [is_valid_env $env] TRUE
-
- set stat [catch {eval txn001_suba $ntxns $env} res]
- if { $stat == 0 } {
- set stat [catch {eval txn001_subb $ntxns $env} res]
- }
- error_check_good envclose [$env close] 0
- set stat [catch {eval txn003} res]
- } else {
- set stat [catch {
- for { set i $start } { $i <= $stop } {incr i} {
- check_handles
- set name [format "test%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Test%03d $i]\
- disabled in testparams.tcl;\
- skipping."
- continue
- }
- remote_cleanup $rpc_server $rpc_testdir $testdir
- #
- # Set server cachesize to 1Mb. Otherwise some
- # tests won't fit (like test084 -btree).
- #
- set env [eval {berkdb_env -create -mode 0644 \
- -home $home -server $rpc_server \
- -client_timeout 10000 \
- -cachesize {0 1048576 1}}]
- error_check_good env_open \
- [is_valid_env $env] TRUE
- append largs " -env $env "
-
- puts "[timestamp]"
- eval $name $method $parms($name) $largs
- if { $__debug_print != 0 } {
- puts ""
- }
- if { $__debug_on != 0 } {
- debug
- }
- flush stdout
- flush stderr
- set largs $save_largs
- error_check_good envclose [$env close] 0
- }
- } res]
- }
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- tclkill $dpid
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_rpcmethod: $method $i: $theError"
- } else {
- error $theError;
- }
- }
- set is_envmethod 0
- tclkill $dpid
-}
-
-proc run_rpcnoserver { method {start 1} {stop 0} {largs ""} } {
- global __debug_on
- global __debug_print
- global num_test
- global parms
- global is_envmethod
- source ./include.tcl
-
- if { $stop == 0 } {
- set stop $num_test(test)
- }
- puts "run_rpcnoserver: $method $start $stop $largs"
-
- set save_largs $largs
- remote_cleanup $rpc_server $rpc_testdir $testdir
- set home [file tail $rpc_testdir]
-
- set is_envmethod 1
- set use_txn 0
- if { [string first "txn" $method] != -1 } {
- set use_txn 1
- }
- if { $use_txn == 1 } {
- if { $start == 1 } {
- set ntxns 32
- } else {
- set ntxns $start
- }
- set i 1
- check_handles
- remote_cleanup $rpc_server $rpc_testdir $testdir
- set env [eval {berkdb_env -create -mode 0644 -home $home \
- -server $rpc_server -client_timeout 10000} -txn]
- error_check_good env_open [is_valid_env $env] TRUE
-
- set stat [catch {eval txn001_suba $ntxns $env} res]
- if { $stat == 0 } {
- set stat [catch {eval txn001_subb $ntxns $env} res]
- }
- error_check_good envclose [$env close] 0
- } else {
- set stat [catch {
- for { set i $start } { $i <= $stop } {incr i} {
- check_handles
- set name [format "test%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Test%03d $i]\
- disabled in testparams.tcl;\
- skipping."
- continue
- }
- remote_cleanup $rpc_server $rpc_testdir $testdir
- #
- # Set server cachesize to 1Mb. Otherwise some
- # tests won't fit (like test084 -btree).
- #
- set env [eval {berkdb_env -create -mode 0644 \
- -home $home -server $rpc_server \
- -client_timeout 10000 \
- -cachesize {0 1048576 1} }]
- error_check_good env_open \
- [is_valid_env $env] TRUE
- append largs " -env $env "
-
- puts "[timestamp]"
- eval $name $method $parms($name) $largs
- if { $__debug_print != 0 } {
- puts ""
- }
- if { $__debug_on != 0 } {
- debug
- }
- flush stdout
- flush stderr
- set largs $save_largs
- error_check_good envclose [$env close] 0
- }
- } res]
- }
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_rpcnoserver: $method $i: $theError"
- } else {
- error $theError;
- }
- set is_envmethod 0
- }
-
-}
-
-#
-# Run method tests in secure mode.
-#
-proc run_secmethod { method {start 1} {stop 0} {display 0} {run 1} \
- { outfile stdout } args } {
- global passwd
-
- append largs " -encryptaes $passwd "
- eval run_method $method $start $stop $display $run $outfile $largs
-}
-
-#
-# Run method tests in its own, new secure environment.
-#
-proc run_secenv { method {start 1} {stop 0} {largs ""} } {
- global __debug_on
- global __debug_print
- global is_envmethod
- global num_test
- global parms
- global passwd
- source ./include.tcl
-
- if { $stop == 0 } {
- set stop $num_test(test)
- }
- puts "run_secenv: $method $start $stop $largs"
-
- set save_largs $largs
- env_cleanup $testdir
- set is_envmethod 1
- set stat [catch {
- for { set i $start } { $i <= $stop } {incr i} {
- check_handles
- set env [eval {berkdb_env -create -mode 0644 \
- -home $testdir -encryptaes $passwd \
- -cachesize {0 1048576 1}}]
- error_check_good env_open [is_valid_env $env] TRUE
- append largs " -env $env "
-
- puts "[timestamp]"
- set name [format "test%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Test%03d $i] disabled in\
- testparams.tcl; skipping."
- continue
- }
-
- #
- # Run each test multiple times in the secure env.
- # Once with a secure env + clear database
- # Once with a secure env + secure database
- #
- eval $name $method $parms($name) $largs
- append largs " -encrypt "
- eval $name $method $parms($name) $largs
-
- if { $__debug_print != 0 } {
- puts ""
- }
- if { $__debug_on != 0 } {
- debug
- }
- flush stdout
- flush stderr
- set largs $save_largs
- error_check_good envclose [$env close] 0
- error_check_good envremove [berkdb envremove \
- -home $testdir -encryptaes $passwd] 0
- }
- } res]
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_secenv: $method $i: $theError"
- } else {
- error $theError;
- }
- set is_envmethod 0
- }
-
-}
-
-#
-# Run replication method tests in master and client env.
-#
-proc run_reptest { method test {droppct 0} {nclients 1} {do_del 0} \
- {do_sec 0} {do_oob 0} {largs "" } } {
- source ./include.tcl
- global __debug_on
- global __debug_print
- global __debug_test
- global is_envmethod
- global num_test
- global parms
- global passwd
- global rand_init
-
- berkdb srand $rand_init
- set c [string index $test 0]
- if { $c == "s" } {
- set i [string range $test 1 end]
- set name [format "subdb%03d" $i]
- } else {
- set i $test
- set name [format "test%03d" $i]
- }
- puts "run_reptest: $method $name"
-
- env_cleanup $testdir
- set is_envmethod 1
- set stat [catch {
- if { $do_sec } {
- set envargs "-encryptaes $passwd"
- append largs " -encrypt "
- } else {
- set envargs ""
- }
- check_handles
- #
- # This will set up the master and client envs
- # and will return us the args to pass to the
- # test.
- set largs [repl_envsetup \
- $envargs $largs $test $nclients $droppct $do_oob]
-
- puts "[timestamp]"
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Test%03d $i] \
- disabled in\
- testparams.tcl; skipping."
- continue
- }
- puts -nonewline \
- "Repl: $name: dropping $droppct%, $nclients clients "
- if { $do_del } {
- puts -nonewline " with delete verification;"
- } else {
- puts -nonewline " no delete verification;"
- }
- if { $do_sec } {
- puts -nonewline " with security;"
- } else {
- puts -nonewline " no security;"
- }
- if { $do_oob } {
- puts -nonewline " with out-of-order msgs;"
- } else {
- puts -nonewline " no out-of-order msgs;"
- }
- puts ""
-
- eval $name $method $parms($name) $largs
-
- if { $__debug_print != 0 } {
- puts ""
- }
- if { $__debug_on != 0 } {
- debug $__debug_test
- }
- flush stdout
- flush stderr
- repl_envprocq $i $nclients $do_oob
- repl_envver0 $i $method $nclients
- if { $do_del } {
- repl_verdel $i $method $nclients
- }
- repl_envclose $i $envargs
- } res]
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_reptest: $method $i: $theError"
- } else {
- error $theError;
- }
- }
- set is_envmethod 0
-}
-
-#
-# Run replication method tests in master and client env.
-#
-proc run_repmethod { method {numcl 0} {start 1} {stop 0} {display 0}
- {run 1} {outfile stdout} {largs ""} } {
- source ./include.tcl
- global __debug_on
- global __debug_print
- global __debug_test
- global is_envmethod
- global num_test
- global parms
- global passwd
- global rand_init
-
- set stopsdb $num_test(sdb)
- if { $stop == 0 } {
- set stop $num_test(test)
- } else {
- if { $stopsdb > $stop } {
- set stopsdb $stop
- }
- }
- berkdb srand $rand_init
-
- #
- # We want to run replication both normally and with crypto.
- # So run it once and then run again with crypto.
- #
- set save_largs $largs
- env_cleanup $testdir
-
- if { $display == 1 } {
- for { set i $start } { $i <= $stop } { incr i } {
- puts $outfile "eval run_repmethod $method \
- 0 $i $i 0 1 stdout $largs"
- }
- }
- if { $run == 1 } {
- set is_envmethod 1
- #
- # Use an array for number of clients because we really don't
- # want to evenly-weight all numbers of clients. Favor smaller
- # numbers but test more clients occasionally.
- set drop_list { 0 0 0 0 0 1 1 5 5 10 20 }
- set drop_len [expr [llength $drop_list] - 1]
- set client_list { 1 1 2 1 1 1 2 2 3 1 }
- set cl_len [expr [llength $client_list] - 1]
- set stat [catch {
- for { set i $start } { $i <= $stopsdb } {incr i} {
- if { $numcl == 0 } {
- set clindex [berkdb random_int 0 $cl_len]
- set nclients [lindex $client_list $clindex]
- } else {
- set nclients $numcl
- }
- set drindex [berkdb random_int 0 $drop_len]
- set droppct [lindex $drop_list $drindex]
- set do_sec [berkdb random_int 0 1]
- set do_oob [berkdb random_int 0 1]
- set do_del [berkdb random_int 0 1]
-
- if { $do_sec } {
- set envargs "-encryptaes $passwd"
- append largs " -encrypt "
- } else {
- set envargs ""
- }
- check_handles
- #
- # This will set up the master and client envs
- # and will return us the args to pass to the
- # test.
- set largs [repl_envsetup $envargs $largs \
- $i $nclients $droppct $do_oob]
-
- puts "[timestamp]"
- set name [format "subdb%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Subdb%03d $i] \
- disabled in\
- testparams.tcl; skipping."
- continue
- }
- puts -nonewline "Repl: $name: dropping $droppct%, \
- $nclients clients "
- if { $do_del } {
- puts -nonewline " with delete verification;"
- } else {
- puts -nonewline " no delete verification;"
- }
- if { $do_sec } {
- puts -nonewline " with security;"
- } else {
- puts -nonewline " no security;"
- }
- if { $do_oob } {
- puts -nonewline " with out-of-order msgs;"
- } else {
- puts -nonewline " no out-of-order msgs;"
- }
- puts ""
-
- eval $name $method $parms($name) $largs
-
- if { $__debug_print != 0 } {
- puts ""
- }
- if { $__debug_on != 0 } {
- debug $__debug_test
- }
- flush stdout
- flush stderr
- repl_envprocq $i $nclients $do_oob
- repl_envver0 $i $method $nclients
- if { $do_del } {
- repl_verdel $i $method $nclients
- }
- repl_envclose $i $envargs
- set largs $save_largs
- }
- } res]
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_repmethod: $method $i: $theError"
- } else {
- error $theError;
- }
- }
- set stat [catch {
- for { set i $start } { $i <= $stop } {incr i} {
- if { $numcl == 0 } {
- set clindex [berkdb random_int 0 $cl_len]
- set nclients [lindex $client_list $clindex]
- } else {
- set nclients $numcl
- }
- set drindex [berkdb random_int 0 $drop_len]
- set droppct [lindex $drop_list $drindex]
- set do_sec [berkdb random_int 0 1]
- set do_oob [berkdb random_int 0 1]
- set do_del [berkdb random_int 0 1]
-
- if { $do_sec } {
- set envargs "-encryptaes $passwd"
- append largs " -encrypt "
- } else {
- set envargs ""
- }
- check_handles
- #
- # This will set up the master and client envs
- # and will return us the args to pass to the
- # test.
- set largs [repl_envsetup $envargs $largs \
- $i $nclients $droppct $do_oob]
-
- puts "[timestamp]"
- set name [format "test%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Test%03d $i] \
- disabled in\
- testparams.tcl; skipping."
- continue
- }
- puts -nonewline "Repl: $name: dropping $droppct%, \
- $nclients clients "
- if { $do_del } {
- puts -nonewline " with delete verification;"
- } else {
- puts -nonewline " no delete verification;"
- }
- if { $do_sec } {
- puts -nonewline " with security;"
- } else {
- puts -nonewline " no security;"
- }
- if { $do_oob } {
- puts -nonewline " with out-of-order msgs;"
- } else {
- puts -nonewline " no out-of-order msgs;"
- }
- puts ""
-
- eval $name $method $parms($name) $largs
-
- if { $__debug_print != 0 } {
- puts ""
- }
- if { $__debug_on != 0 } {
- debug $__debug_test
- }
- flush stdout
- flush stderr
- repl_envprocq $i $nclients $do_oob
- repl_envver0 $i $method $nclients
- if { $do_del } {
- repl_verdel $i $method $nclients
- }
- repl_envclose $i $envargs
- set largs $save_largs
- }
- } res]
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_repmethod: $method $i: $theError"
- } else {
- error $theError;
- }
- }
- set is_envmethod 0
- }
-}
-
-#
-# Run method tests, each in its own, new environment. (As opposed to
-# run_envmethod1 which runs all the tests in a single environment.)
-#
-proc run_envmethod { method {start 1} {stop 0} {display 0} {run 1} \
- {outfile stdout } { largs "" } } {
- global __debug_on
- global __debug_print
- global __debug_test
- global is_envmethod
- global num_test
- global parms
- source ./include.tcl
-
- set stopsdb $num_test(sdb)
- if { $stop == 0 } {
- set stop $num_test(test)
- } else {
- if { $stopsdb > $stop } {
- set stopsdb $stop
- }
- }
-
- set save_largs $largs
- env_cleanup $testdir
-
- if { $display == 1 } {
- for { set i $start } { $i <= $stop } { incr i } {
- puts $outfile "eval run_envmethod $method \
- $i $i 0 1 stdout $largs"
- }
- }
-
- if { $run == 1 } {
- set is_envmethod 1
- #
- # Run both subdb and normal tests for as long as there are
- # some of each type. Start with the subdbs:
- set stat [catch {
- for { set i $start } { $i <= $stopsdb } {incr i} {
- check_handles
- set env [eval {berkdb_env -create -txn \
- -mode 0644 -home $testdir}]
- error_check_good env_open \
- [is_valid_env $env] TRUE
- append largs " -env $env "
-
- puts "[timestamp]"
- set name [format "subdb%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr \
- "[format Subdb%03d $i] disabled in\
- testparams.tcl; skipping."
- continue
- }
- eval $name $method $parms($name) $largs
-
- error_check_good envclose [$env close] 0
- error_check_good envremove [berkdb envremove \
- -home $testdir] 0
- flush stdout
- flush stderr
- set largs $save_largs
- }
- } res]
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_envmethod: $method $i: $theError"
- } else {
- error $theError;
- }
- }
- # Subdb tests are done, now run through the regular tests:
- set stat [catch {
- for { set i $start } { $i <= $stop } {incr i} {
- check_handles
- set env [eval {berkdb_env -create -txn \
- -mode 0644 -home $testdir}]
- error_check_good env_open \
- [is_valid_env $env] TRUE
- append largs " -env $env "
-
- puts "[timestamp]"
- set name [format "test%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr \
- "[format Test%03d $i] disabled in\
- testparams.tcl; skipping."
- continue
- }
- eval $name $method $parms($name) $largs
-
- if { $__debug_print != 0 } {
- puts ""
- }
- if { $__debug_on != 0 } {
- debug $__debug_test
- }
- flush stdout
- flush stderr
- set largs $save_largs
- error_check_good envclose [$env close] 0
- error_check_good envremove [berkdb envremove \
- -home $testdir] 0
- }
- } res]
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_envmethod: $method $i: $theError"
- } else {
- error $theError;
- }
- }
- set is_envmethod 0
- }
-}
-
-proc subdb { method {start 1} {stop 0} {display 0} {run 1} \
- {outfile stdout} args} {
- global num_test testdir
- global parms
-
- for { set i $start } { $i <= $stop } {incr i} {
- set name [format "subdb%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Subdb%03d $i] disabled in\
- testparams.tcl; skipping."
- continue
- }
- if { $display } {
- puts -nonewline $outfile "eval $name $method"
- puts -nonewline $outfile " $parms($name) $args;"
- puts $outfile "verify_dir $testdir \"\" 1"
- }
- if { $run } {
- check_handles $outfile
- eval $name $method $parms($name) $args
- verify_dir $testdir "" 1
- }
- flush stdout
- flush stderr
- }
-}
-
-proc run_recd { method {start 1} {stop 0} {run 1} {display 0} args } {
- global __debug_on
- global __debug_print
- global __debug_test
- global parms
- global num_test
- global log_log_record_types
- source ./include.tcl
-
- if { $stop == 0 } {
- set stop $num_test(recd)
- }
- if { $run == 1 } {
- puts "run_recd: $method $start $stop $args"
- }
-
- if {[catch {
- for { set i $start } { $i <= $stop } {incr i} {
- set name [format "recd%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Recd%03d $i] disabled in\
- testparams.tcl; skipping."
- continue
- }
- if { $display } {
- puts "eval $name $method $parms($name) $args"
- }
- if { $run } {
- check_handles
- puts "[timestamp]"
- # By redirecting stdout to stdout, we make exec
- # print output rather than simply returning it.
- # By redirecting stderr to stdout too, we make
- # sure everything winds up in the ALL.OUT file.
- set ret [catch { exec $tclsh_path << \
- "source $test_path/test.tcl; \
- set log_log_record_types \
- $log_log_record_types; eval $name \
- $method $parms($name) $args" \
- >&@ stdout
- } res]
-
- # Don't die if the test failed; we want
- # to just proceed.
- if { $ret != 0 } {
- puts "FAIL:[timestamp] $res"
- }
-
- if { $__debug_print != 0 } {
- puts ""
- }
- if { $__debug_on != 0 } {
- debug $__debug_test
- }
- flush stdout
- flush stderr
- }
- }
- } res] != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_recd: $method $i: $theError"
- } else {
- error $theError;
- }
- }
-}
-
-proc run_recds { {run 1} {display 0} args } {
- global log_log_record_types
-
- set log_log_record_types 1
- logtrack_init
- foreach method \
- "btree rbtree hash queue queueext recno frecno rrecno" {
- check_handles
- if { [catch {eval \
- run_recd -$method 1 0 $run $display $args} ret ] != 0 } {
- puts $ret
- }
- }
- if { $run } {
- logtrack_summary
- }
- set log_log_record_types 0
-}
-
-proc run_all { args } {
- global num_test
- source ./include.tcl
-
- fileremove -f ALL.OUT
-
- set exflgs [eval extractflags $args]
- set flags [lindex $exflgs 1]
- set display 1
- set run 1
- set am_only 0
- set parallel 0
- set nparalleltests 0
- set rflags {--}
- foreach f $flags {
- switch $f {
- m {
- set am_only 1
- }
- n {
- set display 1
- set run 0
- set rflags [linsert $rflags 0 "-n"]
- }
- }
- }
-
- set o [open ALL.OUT a]
- if { $run == 1 } {
- puts -nonewline "Test suite run started at: "
- puts [clock format [clock seconds] -format "%H:%M %D"]
- puts [berkdb version -string]
-
- puts -nonewline $o "Test suite run started at: "
- puts $o [clock format [clock seconds] -format "%H:%M %D"]
- puts $o [berkdb version -string]
- }
- close $o
- #
- # First run standard tests. Send in a -A to let run_std know
- # that it is part of the "run_all" run, so that it doesn't
- # print out start/end times.
- #
- lappend args -A
- eval {run_std} $args
-
- set test_pagesizes [get_test_pagesizes]
- set args [lindex $exflgs 0]
- set save_args $args
-
- foreach pgsz $test_pagesizes {
- set args $save_args
- append args " -pagesize $pgsz -chksum"
- if { $am_only == 0 } {
- # Run recovery tests.
- #
- # XXX These don't actually work at multiple pagesizes;
- # disable them for now.
- #
- # XXX These too are broken into separate tclsh
- # instantiations so we don't require so much
- # memory, but I think it's cleaner
- # and more useful to do it down inside proc r than here,
- # since "r recd" gets done a lot and needs to work.
- #
- # XXX See comment in run_std for why this only directs
- # stdout and not stderr. Don't worry--the right stuff
- # happens.
- #puts "Running recovery tests with pagesize $pgsz"
- #if [catch {exec $tclsh_path \
- # << "source $test_path/test.tcl; \
- # r $rflags recd $args" \
- # 2>@ stderr >> ALL.OUT } res] {
- # set o [open ALL.OUT a]
- # puts $o "FAIL: recd test:"
- # puts $o $res
- # close $o
- #}
- }
-
- # Access method tests.
- #
- # XXX
- # Broken up into separate tclsh instantiations so
- # we don't require so much memory.
- foreach i \
- "btree rbtree hash queue queueext recno frecno rrecno" {
- puts "Running $i tests with pagesize $pgsz"
- for { set j 1 } { $j <= $num_test(test) } {incr j} {
- if { $run == 0 } {
- set o [open ALL.OUT a]
- eval {run_method -$i $j $j $display \
- $run $o} $args
- close $o
- }
- if { $run } {
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl; \
- eval {run_method -$i $j $j \
- $display $run stdout} $args" \
- >>& ALL.OUT } res] {
- set o [open ALL.OUT a]
- puts $o \
- "FAIL: [format \
- "test%03d" $j] $i"
- close $o
- }
- }
- }
-
- #
- # Run subdb tests with varying pagesizes too.
- #
- for { set j 1 } { $j <= $num_test(sdb) } {incr j} {
- if { $run == 0 } {
- set o [open ALL.OUT a]
- eval {subdb -$i $j $j $display \
- $run $o} $args
- close $o
- }
- if { $run == 1 } {
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl; \
- eval {subdb -$i $j $j $display \
- $run stdout} $args" \
- >>& ALL.OUT } res] {
- set o [open ALL.OUT a]
- puts $o "FAIL: subdb -$i $j $j"
- close $o
- }
- }
- }
- }
- }
- set args $save_args
- #
- # Run access method tests at default page size in one env.
- #
- foreach i "btree rbtree hash queue queueext recno frecno rrecno" {
- puts "Running $i tests in a txn env"
- for { set j 1 } { $j <= $num_test(test) } { incr j } {
- if { $run == 0 } {
- set o [open ALL.OUT a]
- run_envmethod -$i $j $j $display \
- $run $o $args
- close $o
- }
- if { $run } {
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl; \
- run_envmethod -$i $j $j \
- $display $run stdout $args" \
- >>& ALL.OUT } res] {
- set o [open ALL.OUT a]
- puts $o \
- "FAIL: run_envmethod $i $j $j"
- close $o
- }
- }
- }
- }
- #
- # Run tests using proc r. The replication tests have been
- # moved from run_std to run_all.
- #
- set test_list {
- {"replication" "rep"}
- {"security" "sec"}
- }
- #
- # If configured for RPC, then run rpc tests too.
- #
- if { [file exists ./berkeley_db_svc] ||
- [file exists ./berkeley_db_cxxsvc] ||
- [file exists ./berkeley_db_javasvc] } {
- append test_list {{"RPC" "rpc"}}
- }
-
- foreach pair $test_list {
- set msg [lindex $pair 0]
- set cmd [lindex $pair 1]
- puts "Running $msg tests"
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl; \
- r $rflags $cmd $args" >>& ALL.OUT } res] {
- set o [open ALL.OUT a]
- puts $o "FAIL: $cmd test"
- close $o
- }
- }
-
- # If not actually running, no need to check for failure.
- if { $run == 0 } {
- return
- }
-
- set failed 0
- set o [open ALL.OUT r]
- while { [gets $o line] >= 0 } {
- if { [regexp {^FAIL} $line] != 0 } {
- set failed 1
- }
- }
- close $o
- set o [open ALL.OUT a]
- if { $failed == 0 } {
- puts "Regression Tests Succeeded"
- puts $o "Regression Tests Succeeded"
- } else {
- puts "Regression Tests Failed; see ALL.OUT for log"
- puts $o "Regression Tests Failed"
- }
-
- puts -nonewline "Test suite run completed at: "
- puts [clock format [clock seconds] -format "%H:%M %D"]
- puts -nonewline $o "Test suite run completed at: "
- puts $o [clock format [clock seconds] -format "%H:%M %D"]
- close $o
-}
-
-#
-# Run method tests in one environment. (As opposed to run_envmethod
-# which runs each test in its own, new environment.)
-#
-proc run_envmethod1 { method {start 1} {stop 0} {display 0} {run 1} \
- { outfile stdout } args } {
- global __debug_on
- global __debug_print
- global __debug_test
- global is_envmethod
- global num_test
- global parms
- source ./include.tcl
-
- set stopsdb $num_test(sdb)
- if { $stop == 0 } {
- set stop $num_test(test)
- } else {
- if { $stopsdb > $stop } {
- set stopsdb $stop
- }
- }
- if { $run == 1 } {
- puts "run_envmethod1: $method $start $stop $args"
- }
-
- set is_envmethod 1
- if { $run == 1 } {
- check_handles
- env_cleanup $testdir
- error_check_good envremove [berkdb envremove -home $testdir] 0
- set env [eval {berkdb_env -create -cachesize {0 10000000 0}} \
- {-mode 0644 -home $testdir}]
- error_check_good env_open [is_valid_env $env] TRUE
- append largs " -env $env "
- }
-
- if { $display } {
- # The envmethod1 tests can't be split up, since they share
- # an env.
- puts $outfile "eval run_envmethod1 $method $args"
- }
-
- set stat [catch {
- for { set i $start } { $i <= $stopsdb } {incr i} {
- set name [format "subdb%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Subdb%03d $i] disabled in\
- testparams.tcl; skipping."
- continue
- }
- if { $run } {
- puts $outfile "[timestamp]"
- eval $name $method $parms($name) $largs
- if { $__debug_print != 0 } {
- puts $outfile ""
- }
- if { $__debug_on != 0 } {
- debug $__debug_test
- }
- }
- flush stdout
- flush stderr
- }
- } res]
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_envmethod: $method $i: $theError"
- } else {
- error $theError;
- }
- }
- set stat [catch {
- for { set i $start } { $i <= $stop } {incr i} {
- set name [format "test%03d" $i]
- if { [info exists parms($name)] != 1 } {
- puts stderr "[format Test%03d $i] disabled in\
- testparams.tcl; skipping."
- continue
- }
- if { $run } {
- puts $outfile "[timestamp]"
- eval $name $method $parms($name) $largs
- if { $__debug_print != 0 } {
- puts $outfile ""
- }
- if { $__debug_on != 0 } {
- debug $__debug_test
- }
- }
- flush stdout
- flush stderr
- }
- } res]
- if { $stat != 0} {
- global errorInfo;
-
- set fnl [string first "\n" $errorInfo]
- set theError [string range $errorInfo 0 [expr $fnl - 1]]
- if {[string first FAIL $errorInfo] == -1} {
- error "FAIL:[timestamp]\
- run_envmethod1: $method $i: $theError"
- } else {
- error $theError;
- }
- }
- if { $run == 1 } {
- error_check_good envclose [$env close] 0
- check_handles $outfile
- }
- set is_envmethod 0
-
-}
-
-# We want to test all of 512b, 8Kb, and 64Kb pages, but chances are one
-# of these is the default pagesize. We don't want to run all the AM tests
-# twice, so figure out what the default page size is, then return the
-# other two.
-proc get_test_pagesizes { } {
- # Create an in-memory database.
- set db [berkdb_open -create -btree]
- error_check_good gtp_create [is_valid_db $db] TRUE
- set statret [$db stat]
- set pgsz 0
- foreach pair $statret {
- set fld [lindex $pair 0]
- if { [string compare $fld {Page size}] == 0 } {
- set pgsz [lindex $pair 1]
- }
- }
-
- error_check_good gtp_close [$db close] 0
-
- error_check_bad gtp_pgsz $pgsz 0
- switch $pgsz {
- 512 { return {8192 32768} }
- 8192 { return {512 32768} }
- 32768 { return {512 8192} }
- default { return {512 8192 32768} }
- }
- error_check_good NOTREACHED 0 1
-}
diff --git a/bdb/test/test001.tcl b/bdb/test/test001.tcl
deleted file mode 100644
index f0b562bbf24..00000000000
--- a/bdb/test/test001.tcl
+++ /dev/null
@@ -1,247 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test001.tcl,v 11.28 2002/08/08 15:38:11 bostic Exp $
-#
-# TEST test001
-# TEST Small keys/data
-# TEST Put/get per key
-# TEST Dump file
-# TEST Close, reopen
-# TEST Dump file
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; retrieve each.
-# TEST After all are entered, retrieve all; compare output to original.
-# TEST Close file, reopen, do retrieve and re-verify.
-proc test001 { method {nentries 10000} {start 0} {tnum "01"} {noclean 0} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- # Create the database and open the dictionary
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- # If we are not using an external env, then test setting
- # the database cache size and using multiple caches.
- set txnenv 0
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- append args " -cachesize {0 1048576 3} "
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- puts "Test0$tnum: $method ($args) $nentries equal key/data pairs"
- if { $start != 0 } {
- # Sadly enough, we are using start in two different ways.
- # In test090, it is used to test really big records numbers
- # in queue. In replication, it is used to be able to run
- # different iterations of this test using different key/data
- # pairs. We try to hide all that magic here.
- puts "\tStarting at $start"
-
- if { $tnum != 90 } {
- set did [open $dict]
- for { set nlines 0 } { [gets $did str] != -1 } \
- { incr nlines} {
- }
- close $did
- if { $start + $nentries > $nlines } {
- set start [expr $nlines - $nentries]
- }
- }
- }
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- if { $noclean == 0 } {
- cleanup $testdir $env
- }
- set db [eval {berkdb_open \
- -create -mode 0644} $args $omethod $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
-
- if { [is_record_based $method] == 1 } {
- set checkfunc test001_recno.check
- append gflags " -recno"
- } else {
- set checkfunc test001.check
- }
- puts "\tTest0$tnum.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- set count 0
- if { $start != 0 && $tnum != 90 } {
- # Skip over "start" entries
- for { set count 0 } { $count < $start } { incr count } {
- gets $did str
- }
- set count 0
- }
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1 + $start]
- if { 0xffffffff > 0 && $key > 0xffffffff } {
- set key [expr $key - 0x100000000]
- }
- if { $key == 0 || $key - 0xffffffff == 1 } {
- incr key
- incr count
- }
- set kvals($key) [pad_data $method $str]
- } else {
- set key $str
- set str [reverse $str]
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval \
- {$db put} $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- if { $count % 50 == 0 } {
- error_check_good txn_checkpoint($count) \
- [$env txn_checkpoint] 0
- }
- }
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $str]]]
-
- # Test DB_GET_BOTH for success
- set ret [$db get -get_both $key [pad_data $method $str]]
- error_check_good \
- getboth $ret [list [list $key [pad_data $method $str]]]
-
- # Test DB_GET_BOTH for failure
- set ret [$db get -get_both $key [pad_data $method BAD$str]]
- error_check_good getbothBAD [llength $ret] 0
-
- incr count
- }
- close $did
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.b: dump file"
- dump_file $db $txn $t1 $checkfunc
- #
- # dump_file should just have been "get" calls, so
- # aborting a get should really be a no-op. Abort
- # just for the fun of it.
- if { $txnenv == 1 } {
- error_check_good txn [$t abort] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- # If this is test 90, we're checking wrap and we really
- # only added nentries number of items starting at start.
- # However, if this isn't 90, then we started at start and
- # added an addition nentries number of items.
- if { $tnum == 90 } {
- for {set i 1} {$i <= $nentries} {incr i} {
- set j [expr $i + $start]
- if { 0xffffffff > 0 && $j > 0xffffffff } {
- set j [expr $j - 0x100000000]
- }
- if { $j == 0 } {
- incr i
- incr j
- }
- puts $oid $j
- }
- } else {
- for { set i 1 } { $i <= $nentries + $start } {incr i} {
- puts $oid $i
- }
- }
- close $oid
- } else {
- set q q
- # We assume that when this is used with start != 0, the
- # test database accumulates data
- filehead [expr $nentries + $start] $dict $t2
- }
- filesort $t2 $t3
- file rename -force $t3 $t2
- filesort $t1 $t3
-
- error_check_good Test0$tnum:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tTest0$tnum.c: close, open, and dump file"
- # Now, reopen the file and run the last test again.
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_file_direction "-first" "-next"
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t1 $t3
- }
-
- error_check_good Test0$tnum:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- puts "\tTest0$tnum.d: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_file_direction "-last" "-prev"
-
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t1 $t3
- }
-
- error_check_good Test0$tnum:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-}
-
-# Check function for test001; keys and data are identical
-proc test001.check { key data } {
- error_check_good "key/data mismatch" $data [reverse $key]
-}
-
-proc test001_recno.check { key data } {
- global dict
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data $kvals($key)
-}
diff --git a/bdb/test/test002.tcl b/bdb/test/test002.tcl
deleted file mode 100644
index bc28994d6a7..00000000000
--- a/bdb/test/test002.tcl
+++ /dev/null
@@ -1,161 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test002.tcl,v 11.19 2002/05/22 15:42:43 sue Exp $
-#
-# TEST test002
-# TEST Small keys/medium data
-# TEST Put/get per key
-# TEST Dump file
-# TEST Close, reopen
-# TEST Dump file
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and a fixed, medium length data string;
-# TEST retrieve each. After all are entered, retrieve all; compare output
-# TEST to original. Close file, reopen, do retrieve and re-verify.
-
-proc test002 { method {nentries 10000} args } {
- global datastr
- global pad_datastr
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test002.db
- set env NULL
- } else {
- set testfile test002.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- # Create the database and open the dictionary
- puts "Test002: $method ($args) $nentries key <fixed data> pairs"
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
-
- if { [is_record_based $method] == 1 } {
- append gflags "-recno"
- }
- set pad_datastr [pad_data $method $datastr]
- puts "\tTest002.a: put/get loop"
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn $pflags {$key [chop_data $method $datastr]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set ret [eval {$db get} $gflags {$key}]
-
- error_check_good get $ret [list [list $key [pad_data $method $datastr]]]
- incr count
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest002.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 test002.check
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- filesort $t2 $t3
- file rename -force $t3 $t2
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- }
- filesort $t1 $t3
-
- error_check_good Test002:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again.
- puts "\tTest002.c: close, open, and dump file"
- open_and_dump_file $testfile $env $t1 test002.check \
- dump_file_direction "-first" "-next"
-
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t1 $t3
- }
- error_check_good Test002:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again in reverse direction.
- puts "\tTest002.d: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 test002.check \
- dump_file_direction "-last" "-prev"
-
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t1 $t3
- }
- error_check_good Test002:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-}
-
-# Check function for test002; data should be fixed are identical
-proc test002.check { key data } {
- global pad_datastr
- error_check_good "data mismatch for key $key" $data $pad_datastr
-}
diff --git a/bdb/test/test003.tcl b/bdb/test/test003.tcl
deleted file mode 100644
index c7bfe6c15ad..00000000000
--- a/bdb/test/test003.tcl
+++ /dev/null
@@ -1,210 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test003.tcl,v 11.25 2002/05/22 18:32:18 sue Exp $
-#
-# TEST test003
-# TEST Small keys/large data
-# TEST Put/get per key
-# TEST Dump file
-# TEST Close, reopen
-# TEST Dump file
-# TEST
-# TEST Take the source files and dbtest executable and enter their names
-# TEST as the key with their contents as data. After all are entered,
-# TEST retrieve all; compare output to original. Close file, reopen, do
-# TEST retrieve and re-verify.
-proc test003 { method args} {
- global names
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if {[is_fixed_length $method] == 1} {
- puts "Test003 skipping for method $method"
- return
- }
- puts "Test003: $method ($args) filename=key filecontents=data pairs"
-
- # Create the database and open the dictionary
- set limit 0
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test003.db
- set env NULL
- } else {
- set testfile test003.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- set limit 100
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
-
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args $omethod $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set pflags ""
- set gflags ""
- set txn ""
- if { [is_record_based $method] == 1 } {
- set checkfunc test003_recno.check
- append gflags "-recno"
- } else {
- set checkfunc test003.check
- }
-
- # Here is the loop where we put and get each key/data pair
- set file_list [get_file_list]
- if { $limit } {
- if { [llength $file_list] > $limit } {
- set file_list [lrange $file_list 1 $limit]
- }
- }
- set len [llength $file_list]
- puts "\tTest003.a: put/get loop $len entries"
- set count 0
- foreach f $file_list {
- if { [string compare [file type $f] "file"] != 0 } {
- continue
- }
-
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- set names([expr $count + 1]) $f
- } else {
- set key $f
- }
-
- # Should really catch errors
- set fid [open $f r]
- fconfigure $fid -translation binary
- set data [read $fid]
- close $fid
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $data]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Should really catch errors
- set fid [open $t4 w]
- fconfigure $fid -translation binary
- if [catch {eval {$db get} $gflags {$key}} data] {
- puts -nonewline $fid $data
- } else {
- # Data looks like {{key data}}
- set key [lindex [lindex $data 0] 0]
- set data [lindex [lindex $data 0] 1]
- puts -nonewline $fid [pad_data $method $data]
- }
- close $fid
-
- error_check_good \
- Test003:diff($f,$t4) [filecmp $f $t4] 0
-
- incr count
- }
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest003.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_bin_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the entries in the
- # current directory
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $count} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set oid [open $t2.tmp w]
- foreach f $file_list {
- if { [string compare [file type $f] "file"] != 0 } {
- continue
- }
- puts $oid $f
- }
- close $oid
- filesort $t2.tmp $t2
- fileremove $t2.tmp
- filesort $t1 $t3
- }
-
- error_check_good \
- Test003:diff($t3,$t2) [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again.
- puts "\tTest003.c: close, open, and dump file"
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_bin_file_direction "-first" "-next"
-
- if { [is_record_based $method] == 1 } {
- filesort $t1 $t3 -n
- }
-
- error_check_good \
- Test003:diff($t3,$t2) [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again in reverse direction.
- puts "\tTest003.d: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_bin_file_direction "-last" "-prev"
-
- if { [is_record_based $method] == 1 } {
- filesort $t1 $t3 -n
- }
-
- error_check_good \
- Test003:diff($t3,$t2) [filecmp $t3 $t2] 0
-}
-
-# Check function for test003; key should be file name; data should be contents
-proc test003.check { binfile tmpfile } {
- source ./include.tcl
-
- error_check_good Test003:datamismatch($binfile,$tmpfile) \
- [filecmp $binfile $tmpfile] 0
-}
-proc test003_recno.check { binfile tmpfile } {
- global names
- source ./include.tcl
-
- set fname $names($binfile)
- error_check_good key"$binfile"_exists [info exists names($binfile)] 1
- error_check_good Test003:datamismatch($fname,$tmpfile) \
- [filecmp $fname $tmpfile] 0
-}
diff --git a/bdb/test/test004.tcl b/bdb/test/test004.tcl
deleted file mode 100644
index 7bea6f88eca..00000000000
--- a/bdb/test/test004.tcl
+++ /dev/null
@@ -1,169 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test004.tcl,v 11.21 2002/05/22 18:32:35 sue Exp $
-#
-# TEST test004
-# TEST Small keys/medium data
-# TEST Put/get per key
-# TEST Sequential (cursor) get/delete
-# TEST
-# TEST Check that cursor operations work. Create a database.
-# TEST Read through the database sequentially using cursors and
-# TEST delete each element.
-proc test004 { method {nentries 10000} {reopen 4} {build_only 0} args} {
- source ./include.tcl
-
- set do_renumber [is_rrecno $method]
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- set tnum test00$reopen
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/$tnum.db
- set env NULL
- } else {
- set testfile $tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
-
- puts -nonewline "$tnum:\
- $method ($args) $nentries delete small key; medium data pairs"
- if {$reopen == 5} {
- puts "(with close)"
- } else {
- puts ""
- }
-
- # Create the database and open the dictionary
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
- set db [eval {berkdb_open -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
-
- # Here is the loop where we put and get each key/data pair
- set kvals ""
- puts "\tTest00$reopen.a: put/get loop"
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- lappend kvals $str
- } else {
- set key $str
- }
-
- set datastr [ make_data_str $str ]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn $pflags \
- {$key [chop_data $method $datastr]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good "$tnum:put" $ret \
- [list [list $key [pad_data $method $datastr]]]
- incr count
- }
- close $did
- if { $build_only == 1 } {
- return $db
- }
- if { $reopen == 5 } {
- error_check_good db_close [$db close] 0
-
- set db [eval {berkdb_open} $args {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- }
- puts "\tTest00$reopen.b: get/delete loop"
- # Now we will get each key from the DB and compare the results
- # to the original, then delete it.
- set outf [open $t1 w]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set c [eval {$db cursor} $txn]
-
- set count 0
- for {set d [$c get -first] } { [llength $d] != 0 } {
- set d [$c get -next] } {
- set k [lindex [lindex $d 0] 0]
- set d2 [lindex [lindex $d 0] 1]
- if { [is_record_based $method] == 1 } {
- set datastr \
- [make_data_str [lindex $kvals [expr $k - 1]]]
- } else {
- set datastr [make_data_str $k]
- }
- error_check_good $tnum:$k $d2 [pad_data $method $datastr]
- puts $outf $k
- $c del
- if { [is_record_based $method] == 1 && \
- $do_renumber == 1 } {
- set kvals [lreplace $kvals 0 0]
- }
- incr count
- }
- close $outf
- error_check_good curs_close [$c close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Now compare the keys to see if they match the dictionary
- if { [is_record_based $method] == 1 } {
- error_check_good test00$reopen:keys_deleted $count $nentries
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- error_check_good Test00$reopen:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
- }
-
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test005.tcl b/bdb/test/test005.tcl
deleted file mode 100644
index f3e37f2149d..00000000000
--- a/bdb/test/test005.tcl
+++ /dev/null
@@ -1,19 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test005.tcl,v 11.7 2002/01/11 15:53:40 bostic Exp $
-#
-# TEST test005
-# TEST Small keys/medium data
-# TEST Put/get per key
-# TEST Close, reopen
-# TEST Sequential (cursor) get/delete
-# TEST
-# TEST Check that cursor operations work. Create a database; close
-# TEST it and reopen it. Then read through the database sequentially
-# TEST using cursors and delete each element.
-proc test005 { method {nentries 10000} args } {
- eval {test004 $method $nentries 5 0} $args
-}
diff --git a/bdb/test/test006.tcl b/bdb/test/test006.tcl
deleted file mode 100644
index fbaebfe8ac8..00000000000
--- a/bdb/test/test006.tcl
+++ /dev/null
@@ -1,150 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test006.tcl,v 11.19 2002/05/22 15:42:44 sue Exp $
-#
-# TEST test006
-# TEST Small keys/medium data
-# TEST Put/get per key
-# TEST Keyed delete and verify
-# TEST
-# TEST Keyed delete test.
-# TEST Create database.
-# TEST Go through database, deleting all entries by key.
-proc test006 { method {nentries 10000} {reopen 0} {tnum 6} args} {
- source ./include.tcl
-
- set do_renumber [is_rrecno $method]
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { $tnum < 10 } {
- set tname Test00$tnum
- set dbname test00$tnum
- } else {
- set tname Test0$tnum
- set dbname test0$tnum
- }
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/$dbname.db
- set env NULL
- } else {
- set testfile $dbname.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- puts -nonewline "$tname: $method ($args) "
- puts -nonewline "$nentries equal small key; medium data pairs"
- if {$reopen == 1} {
- puts " (with close)"
- } else {
- puts ""
- }
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
-
- # Here is the loop where we put and get each key/data pair
-
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1 ]
- } else {
- set key $str
- }
-
- set datastr [make_data_str $str]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $datastr]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good "$tname: put $datastr got $ret" \
- $ret [list [list $key [pad_data $method $datastr]]]
- incr count
- }
- close $did
-
- if { $reopen == 1 } {
- error_check_good db_close [$db close] 0
-
- set db [eval {berkdb_open} $args {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- }
-
- # Now we will get each key from the DB and compare the results
- # to the original, then delete it.
- set count 0
- set did [open $dict]
- set key 0
- while { [gets $did str] != -1 && $count < $nentries } {
- if { $do_renumber == 1 } {
- set key 1
- } elseif { [is_record_based $method] == 1 } {
- incr key
- } else {
- set key $str
- }
-
- set datastr [make_data_str $str]
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good "$tname: get $datastr got $ret" \
- $ret [list [list $key [pad_data $method $datastr]]]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db del} $txn {$key}]
- error_check_good db_del:$key $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test007.tcl b/bdb/test/test007.tcl
deleted file mode 100644
index 1e99d107a2d..00000000000
--- a/bdb/test/test007.tcl
+++ /dev/null
@@ -1,19 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test007.tcl,v 11.8 2002/01/11 15:53:40 bostic Exp $
-#
-# TEST test007
-# TEST Small keys/medium data
-# TEST Put/get per key
-# TEST Close, reopen
-# TEST Keyed delete
-# TEST
-# TEST Check that delete operations work. Create a database; close
-# TEST database and reopen it. Then issues delete by key for each
-# TEST entry.
-proc test007 { method {nentries 10000} {tnum 7} args} {
- eval {test006 $method $nentries 1 $tnum} $args
-}
diff --git a/bdb/test/test008.tcl b/bdb/test/test008.tcl
deleted file mode 100644
index 0af97a40110..00000000000
--- a/bdb/test/test008.tcl
+++ /dev/null
@@ -1,200 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test008.tcl,v 11.23 2002/05/22 15:42:45 sue Exp $
-#
-# TEST test008
-# TEST Small keys/large data
-# TEST Put/get per key
-# TEST Loop through keys by steps (which change)
-# TEST ... delete each key at step
-# TEST ... add each key back
-# TEST ... change step
-# TEST Confirm that overflow pages are getting reused
-# TEST
-# TEST Take the source files and dbtest executable and enter their names as
-# TEST the key with their contents as data. After all are entered, begin
-# TEST looping through the entries; deleting some pairs and then readding them.
-proc test008 { method {reopen 8} {debug 0} args} {
- source ./include.tcl
-
- set tnum test00$reopen
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 } {
- puts "Test00$reopen skipping for method $method"
- return
- }
-
- puts -nonewline "$tnum: $method filename=key filecontents=data pairs"
- if {$reopen == 9} {
- puts "(with close)"
- } else {
- puts ""
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/$tnum.db
- set env NULL
- } else {
- set testfile $tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
-
- cleanup $testdir $env
-
- set db [eval {berkdb_open -create -mode 0644} \
- $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
-
- # Here is the loop where we put and get each key/data pair
- set file_list [get_file_list]
-
- set count 0
- puts "\tTest00$reopen.a: Initial put/get loop"
- foreach f $file_list {
- set names($count) $f
- set key $f
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- put_file $db $txn $pflags $f
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- get_file $db $txn $gflags $f $t4
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- error_check_good Test00$reopen:diff($f,$t4) \
- [filecmp $f $t4] 0
-
- incr count
- }
-
- if {$reopen == 9} {
- error_check_good db_close [$db close] 0
-
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- }
-
- # Now we will get step through keys again (by increments) and
- # delete all the entries, then re-insert them.
-
- puts "\tTest00$reopen.b: Delete re-add loop"
- foreach i "1 2 4 8 16" {
- for {set ndx 0} {$ndx < $count} { incr ndx $i} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db del} $txn {$names($ndx)}]
- error_check_good db_del:$names($ndx) $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- for {set ndx 0} {$ndx < $count} { incr ndx $i} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- put_file $db $txn $pflags $names($ndx)
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- }
-
- if {$reopen == 9} {
- error_check_good db_close [$db close] 0
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- }
-
- # Now, reopen the file and make sure the key/data pairs look right.
- puts "\tTest00$reopen.c: Dump contents forward"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_bin_file $db $txn $t1 test008.check
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set oid [open $t2.tmp w]
- foreach f $file_list {
- puts $oid $f
- }
- close $oid
- filesort $t2.tmp $t2
- fileremove $t2.tmp
- filesort $t1 $t3
-
- error_check_good Test00$reopen:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again in reverse direction.
- puts "\tTest00$reopen.d: Dump contents backward"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_bin_file_direction $db $txn $t1 test008.check "-last" "-prev"
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- filesort $t1 $t3
-
- error_check_good Test00$reopen:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
- error_check_good close:$db [$db close] 0
-}
-
-proc test008.check { binfile tmpfile } {
- global tnum
- source ./include.tcl
-
- error_check_good diff($binfile,$tmpfile) \
- [filecmp $binfile $tmpfile] 0
-}
diff --git a/bdb/test/test009.tcl b/bdb/test/test009.tcl
deleted file mode 100644
index 7ef46d8c818..00000000000
--- a/bdb/test/test009.tcl
+++ /dev/null
@@ -1,18 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test009.tcl,v 11.8 2002/05/22 15:42:45 sue Exp $
-#
-# TEST test009
-# TEST Small keys/large data
-# TEST Same as test008; close and reopen database
-# TEST
-# TEST Check that we reuse overflow pages. Create database with lots of
-# TEST big key/data pairs. Go through and delete and add keys back
-# TEST randomly. Then close the DB and make sure that we have everything
-# TEST we think we should.
-proc test009 { method args} {
- eval {test008 $method 9 0} $args
-}
diff --git a/bdb/test/test010.tcl b/bdb/test/test010.tcl
deleted file mode 100644
index 0b5f5531795..00000000000
--- a/bdb/test/test010.tcl
+++ /dev/null
@@ -1,176 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test010.tcl,v 11.20 2002/06/11 14:09:56 sue Exp $
-#
-# TEST test010
-# TEST Duplicate test
-# TEST Small key/data pairs.
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; add duplicate records for each.
-# TEST After all are entered, retrieve all; verify output.
-# TEST Close file, reopen, do retrieve and re-verify.
-# TEST This does not work for recno
-proc test010 { method {nentries 10000} {ndups 5} {tnum 10} args } {
- source ./include.tcl
-
- set omethod $method
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $method"
- return
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
- puts "Test0$tnum: $method ($args) $nentries \
- small $ndups dup key/data pairs"
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
-
- cleanup $testdir $env
-
- set db [eval {berkdb_open \
- -create -mode 0644 -dup} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- for { set i 1 } { $i <= $ndups } { incr i } {
- set datastr $i:$str
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Now retrieve all the keys matching this key
- set x 1
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- for {set ret [$dbc get "-set" $str]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get "-next"] } {
- if {[llength $ret] == 0} {
- break
- }
- set k [lindex [lindex $ret 0] 0]
- if { [string compare $k $str] != 0 } {
- break
- }
- set datastr [lindex [lindex $ret 0] 1]
- set d [data_of $datastr]
- error_check_good "Test0$tnum:get" $d $str
- set id [ id_of $datastr ]
- error_check_good "Test0$tnum:dup#" $id $x
- incr x
- }
- error_check_good "Test0$tnum:ndups:$str" [expr $x - 1] $ndups
- error_check_good cursor_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- incr count
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.a: Checking file for correct duplicates"
- set dlist ""
- for { set i 1 } { $i <= $ndups } {incr i} {
- lappend dlist $i
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Now compare the keys to see if they match the dictionary entries
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
-
- error_check_good Test0$tnum:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- error_check_good db_close [$db close] 0
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- puts "\tTest0$tnum.b: Checking file for correct duplicates after close"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Now compare the keys to see if they match the dictionary entries
- filesort $t1 $t3
- error_check_good Test0$tnum:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test011.tcl b/bdb/test/test011.tcl
deleted file mode 100644
index 63e2203efe4..00000000000
--- a/bdb/test/test011.tcl
+++ /dev/null
@@ -1,470 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test011.tcl,v 11.27 2002/06/11 14:09:56 sue Exp $
-#
-# TEST test011
-# TEST Duplicate test
-# TEST Small key/data pairs.
-# TEST Test DB_KEYFIRST, DB_KEYLAST, DB_BEFORE and DB_AFTER.
-# TEST To test off-page duplicates, run with small pagesize.
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; add duplicate records for each.
-# TEST Then do some key_first/key_last add_before, add_after operations.
-# TEST This does not work for recno
-# TEST
-# TEST To test if dups work when they fall off the main page, run this with
-# TEST a very tiny page size.
-proc test011 { method {nentries 10000} {ndups 5} {tnum 11} args } {
- global dlist
- global rand_init
- source ./include.tcl
-
- set dlist ""
-
- if { [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $method"
- return
- }
- if { [is_record_based $method] == 1 } {
- test011_recno $method $nentries $tnum $args
- return
- }
- if {$ndups < 5} {
- set ndups 5
- }
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- berkdb srand $rand_init
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
-
- puts -nonewline "Test0$tnum: $method $nentries small $ndups dup "
- puts "key/data pairs, cursor ops"
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- set db [eval {berkdb_open -create \
- -mode 0644} [concat $args "-dup"] {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
- # We will add dups with values 1, 3, ... $ndups. Then we'll add
- # 0 and $ndups+1 using keyfirst/keylast. We'll add 2 and 4 using
- # add before and add after.
- puts "\tTest0$tnum.a: put and get duplicate keys."
- set i ""
- for { set i 1 } { $i <= $ndups } { incr i 2 } {
- lappend dlist $i
- }
- set maxodd $i
- while { [gets $did str] != -1 && $count < $nentries } {
- for { set i 1 } { $i <= $ndups } { incr i 2 } {
- set datastr $i:$str
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn $pflags {$str $datastr}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Now retrieve all the keys matching this key
- set x 1
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- for {set ret [$dbc get "-set" $str ]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get "-next"] } {
- if {[llength $ret] == 0} {
- break
- }
- set k [lindex [lindex $ret 0] 0]
- if { [string compare $k $str] != 0 } {
- break
- }
- set datastr [lindex [lindex $ret 0] 1]
- set d [data_of $datastr]
-
- error_check_good Test0$tnum:put $d $str
- set id [ id_of $datastr ]
- error_check_good Test0$tnum:dup# $id $x
- incr x 2
- }
- error_check_good Test0$tnum:numdups $x $maxodd
- error_check_good curs_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.b: \
- traverse entire file checking duplicates before close."
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Now compare the keys to see if they match the dictionary entries
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
-
- error_check_good Test0$tnum:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- error_check_good db_close [$db close] 0
-
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- puts "\tTest0$tnum.c: \
- traverse entire file checking duplicates after close."
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Now compare the keys to see if they match the dictionary entries
- filesort $t1 $t3
- error_check_good Test0$tnum:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tTest0$tnum.d: Testing key_first functionality"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- add_dup $db $txn $nentries "-keyfirst" 0 0
- set dlist [linsert $dlist 0 0]
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- puts "\tTest0$tnum.e: Testing key_last functionality"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- add_dup $db $txn $nentries "-keylast" [expr $maxodd - 1] 0
- lappend dlist [expr $maxodd - 1]
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- puts "\tTest0$tnum.f: Testing add_before functionality"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- add_dup $db $txn $nentries "-before" 2 3
- set dlist [linsert $dlist 2 2]
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- puts "\tTest0$tnum.g: Testing add_after functionality"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- add_dup $db $txn $nentries "-after" 4 4
- set dlist [linsert $dlist 4 4]
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- error_check_good db_close [$db close] 0
-}
-
-proc add_dup {db txn nentries flag dataval iter} {
- source ./include.tcl
-
- set dbc [eval {$db cursor} $txn]
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < $nentries } {
- set datastr $dataval:$str
- set ret [$dbc get "-set" $str]
- error_check_bad "cget(SET)" [is_substr $ret Error] 1
- for { set i 1 } { $i < $iter } { incr i } {
- set ret [$dbc get "-next"]
- error_check_bad "cget(NEXT)" [is_substr $ret Error] 1
- }
-
- if { [string compare $flag "-before"] == 0 ||
- [string compare $flag "-after"] == 0 } {
- set ret [$dbc put $flag $datastr]
- } else {
- set ret [$dbc put $flag $str $datastr]
- }
- error_check_good "$dbc put $flag" $ret 0
- incr count
- }
- close $did
- $dbc close
-}
-
-proc test011_recno { method {nentries 10000} {tnum 11} largs } {
- global dlist
- source ./include.tcl
-
- set largs [convert_args $method $largs]
- set omethod [convert_method $method]
- set renum [is_rrecno $method]
-
- puts "Test0$tnum: \
- $method ($largs) $nentries test cursor insert functionality"
-
- # Create the database and open the dictionary
- set eindex [lsearch -exact $largs "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- set txnenv 0
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $largs $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append largs " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- if {$renum == 1} {
- append largs " -renumber"
- }
- set db [eval {berkdb_open \
- -create -mode 0644} $largs {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # The basic structure of the test is that we pick a random key
- # in the database and then add items before, after, ?? it. The
- # trickiness is that with RECNO, these are not duplicates, they
- # are creating new keys. Therefore, every time we do this, the
- # keys assigned to other values change. For this reason, we'll
- # keep the database in tcl as a list and insert properly into
- # it to verify that the right thing is happening. If we do not
- # have renumber set, then the BEFORE and AFTER calls should fail.
-
- # Seed the database with an initial record
- gets $did str
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {1 [chop_data $method $str]}]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good put $ret 0
- set count 1
-
- set dlist "NULL $str"
-
- # Open a cursor
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- puts "\tTest0$tnum.a: put and get entries"
- while { [gets $did str] != -1 && $count < $nentries } {
- # Pick a random key
- set key [berkdb random_int 1 $count]
- set ret [$dbc get -set $key]
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_good cget:SET:key $k $key
- error_check_good \
- cget:SET $d [pad_data $method [lindex $dlist $key]]
-
- # Current
- set ret [$dbc put -current [chop_data $method $str]]
- error_check_good cput:$key $ret 0
- set dlist [lreplace $dlist $key $key [pad_data $method $str]]
-
- # Before
- if { [gets $did str] == -1 } {
- continue;
- }
-
- if { $renum == 1 } {
- set ret [$dbc put \
- -before [chop_data $method $str]]
- error_check_good cput:$key:BEFORE $ret $key
- set dlist [linsert $dlist $key $str]
- incr count
-
- # After
- if { [gets $did str] == -1 } {
- continue;
- }
- set ret [$dbc put \
- -after [chop_data $method $str]]
- error_check_good cput:$key:AFTER $ret [expr $key + 1]
- set dlist [linsert $dlist [expr $key + 1] $str]
- incr count
- }
-
- # Now verify that the keys are in the right place
- set i 0
- for {set ret [$dbc get "-set" $key]} \
- {[string length $ret] != 0 && $i < 3} \
- {set ret [$dbc get "-next"] } {
- set check_key [expr $key + $i]
-
- set k [lindex [lindex $ret 0] 0]
- error_check_good cget:$key:loop $k $check_key
-
- set d [lindex [lindex $ret 0] 1]
- error_check_good cget:data $d \
- [pad_data $method [lindex $dlist $check_key]]
- incr i
- }
- }
- close $did
- error_check_good cclose [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Create check key file.
- set oid [open $t2 w]
- for {set i 1} {$i <= $count} {incr i} {
- puts $oid $i
- }
- close $oid
-
- puts "\tTest0$tnum.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 test011_check
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good Test0$tnum:diff($t2,$t1) \
- [filecmp $t2 $t1] 0
-
- error_check_good db_close [$db close] 0
-
- puts "\tTest0$tnum.c: close, open, and dump file"
- open_and_dump_file $testfile $env $t1 test011_check \
- dump_file_direction "-first" "-next"
- error_check_good Test0$tnum:diff($t2,$t1) \
- [filecmp $t2 $t1] 0
-
- puts "\tTest0$tnum.d: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 test011_check \
- dump_file_direction "-last" "-prev"
-
- filesort $t1 $t3 -n
- error_check_good Test0$tnum:diff($t2,$t3) \
- [filecmp $t2 $t3] 0
-}
-
-proc test011_check { key data } {
- global dlist
-
- error_check_good "get key $key" $data [lindex $dlist $key]
-}
diff --git a/bdb/test/test012.tcl b/bdb/test/test012.tcl
deleted file mode 100644
index e7237d27267..00000000000
--- a/bdb/test/test012.tcl
+++ /dev/null
@@ -1,139 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test012.tcl,v 11.20 2002/05/22 15:42:46 sue Exp $
-#
-# TEST test012
-# TEST Large keys/small data
-# TEST Same as test003 except use big keys (source files and
-# TEST executables) and small data (the file/executable names).
-# TEST
-# TEST Take the source files and dbtest executable and enter their contents
-# TEST as the key with their names as data. After all are entered, retrieve
-# TEST all; compare output to original. Close file, reopen, do retrieve and
-# TEST re-verify.
-proc test012 { method args} {
- global names
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 } {
- puts "Test012 skipping for method $method"
- return
- }
-
- puts "Test012: $method ($args) filename=data filecontents=key pairs"
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test012.db
- set env NULL
- } else {
- set testfile test012.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
-
- cleanup $testdir $env
-
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
-
- # Here is the loop where we put and get each key/data pair
- set file_list [get_file_list]
-
- puts "\tTest012.a: put/get loop"
- set count 0
- foreach f $file_list {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- put_file_as_key $db $txn $pflags $f
-
- set kd [get_file_as_key $db $txn $gflags $f]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest012.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_binkey_file $db $txn $t1 test012.check
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the data to see if they match the .o and dbtest files
- set oid [open $t2.tmp w]
- foreach f $file_list {
- puts $oid $f
- }
- close $oid
- filesort $t2.tmp $t2
- fileremove $t2.tmp
- filesort $t1 $t3
-
- error_check_good Test012:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again.
- puts "\tTest012.c: close, open, and dump file"
- open_and_dump_file $testfile $env $t1 test012.check \
- dump_binkey_file_direction "-first" "-next"
-
- filesort $t1 $t3
-
- error_check_good Test012:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again in reverse direction.
- puts "\tTest012.d: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 test012.check\
- dump_binkey_file_direction "-last" "-prev"
-
- filesort $t1 $t3
-
- error_check_good Test012:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-}
-
-# Check function for test012; key should be file name; data should be contents
-proc test012.check { binfile tmpfile } {
- source ./include.tcl
-
- error_check_good Test012:diff($binfile,$tmpfile) \
- [filecmp $binfile $tmpfile] 0
-}
diff --git a/bdb/test/test013.tcl b/bdb/test/test013.tcl
deleted file mode 100644
index 96d7757b0d8..00000000000
--- a/bdb/test/test013.tcl
+++ /dev/null
@@ -1,241 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test013.tcl,v 11.23 2002/05/22 15:42:46 sue Exp $
-#
-# TEST test013
-# TEST Partial put test
-# TEST Overwrite entire records using partial puts.
-# TEST Make surethat NOOVERWRITE flag works.
-# TEST
-# TEST 1. Insert 10000 keys and retrieve them (equal key/data pairs).
-# TEST 2. Attempt to overwrite keys with NO_OVERWRITE set (expect error).
-# TEST 3. Actually overwrite each one with its datum reversed.
-# TEST
-# TEST No partial testing here.
-proc test013 { method {nentries 10000} args } {
- global errorCode
- global errorInfo
- global fixed_pad
- global fixed_len
-
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test013.db
- set env NULL
- } else {
- set testfile test013.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- puts "Test013: $method ($args) $nentries equal key/data pairs, put test"
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- set checkfunc test013_recno.check
- append gflags " -recno"
- global kvals
- } else {
- set checkfunc test013.check
- }
- puts "\tTest013.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- set kvals($key) [pad_data $method $str]
- } else {
- set key $str
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $gflags $txn {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $str]]]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- # Now we will try to overwrite each datum, but set the
- # NOOVERWRITE flag.
- puts "\tTest013.b: overwrite values with NOOVERWRITE flag."
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn $pflags \
- {-nooverwrite $key [chop_data $method $str]}]
- error_check_good put [is_substr $ret "DB_KEYEXIST"] 1
-
- # Value should be unchanged.
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $str]]]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- # Now we will replace each item with its datum capitalized.
- puts "\tTest013.c: overwrite values with capitalized datum"
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- set rstr [string toupper $str]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} \
- $txn $pflags {$key [chop_data $method $rstr]}]
- error_check_good put $r 0
-
- # Value should be changed.
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $rstr]]]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- # Now make sure that everything looks OK
- puts "\tTest013.d: check entire file contents"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {incr i} {
- puts $oid $i
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good \
- Test013:diff($t3,$t2) [filecmp $t3 $t2] 0
-
- puts "\tTest013.e: close, open, and dump file"
- # Now, reopen the file and run the last test again.
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_file_direction "-first" "-next"
-
- if { [is_record_based $method] == 0 } {
- filesort $t1 $t3
- }
-
- error_check_good \
- Test013:diff($t3,$t2) [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- puts "\tTest013.f: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_file_direction "-last" "-prev"
-
- if { [is_record_based $method] == 0 } {
- filesort $t1 $t3
- }
-
- error_check_good \
- Test013:diff($t3,$t2) [filecmp $t3 $t2] 0
-}
-
-# Check function for test013; keys and data are identical
-proc test013.check { key data } {
- error_check_good \
- "key/data mismatch for $key" $data [string toupper $key]
-}
-
-proc test013_recno.check { key data } {
- global dict
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good \
- "data mismatch for $key" $data [string toupper $kvals($key)]
-}
diff --git a/bdb/test/test014.tcl b/bdb/test/test014.tcl
deleted file mode 100644
index 00d69d3352e..00000000000
--- a/bdb/test/test014.tcl
+++ /dev/null
@@ -1,253 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test014.tcl,v 11.24 2002/05/22 15:42:46 sue Exp $
-#
-# TEST test014
-# TEST Exercise partial puts on short data
-# TEST Run 5 combinations of numbers of characters to replace,
-# TEST and number of times to increase the size by.
-# TEST
-# TEST Partial put test, small data, replacing with same size. The data set
-# TEST consists of the first nentries of the dictionary. We will insert them
-# TEST (and retrieve them) as we do in test 1 (equal key/data pairs). Then
-# TEST we'll try to perform partial puts of some characters at the beginning,
-# TEST some at the end, and some at the middle.
-proc test014 { method {nentries 10000} args } {
- set fixed 0
- set args [convert_args $method $args]
-
- if { [is_fixed_length $method] == 1 } {
- set fixed 1
- }
-
- puts "Test014: $method ($args) $nentries equal key/data pairs, put test"
-
- # flagp indicates whether this is a postpend or a
- # normal partial put
- set flagp 0
-
- eval {test014_body $method $flagp 1 1 $nentries} $args
- eval {test014_body $method $flagp 1 4 $nentries} $args
- eval {test014_body $method $flagp 2 4 $nentries} $args
- eval {test014_body $method $flagp 1 128 $nentries} $args
- eval {test014_body $method $flagp 2 16 $nentries} $args
- if { $fixed == 0 } {
- eval {test014_body $method $flagp 0 1 $nentries} $args
- eval {test014_body $method $flagp 0 4 $nentries} $args
- eval {test014_body $method $flagp 0 128 $nentries} $args
-
- # POST-PENDS :
- # partial put data after the end of the existent record
- # chars: number of empty spaces that will be padded with null
- # increase: is the length of the str to be appended (after pad)
- #
- set flagp 1
- eval {test014_body $method $flagp 1 1 $nentries} $args
- eval {test014_body $method $flagp 4 1 $nentries} $args
- eval {test014_body $method $flagp 128 1 $nentries} $args
- eval {test014_body $method $flagp 1 4 $nentries} $args
- eval {test014_body $method $flagp 1 128 $nentries} $args
- }
- puts "Test014 complete."
-}
-
-proc test014_body { method flagp chars increase {nentries 10000} args } {
- source ./include.tcl
-
- set omethod [convert_method $method]
-
- if { [is_fixed_length $method] == 1 && $chars != $increase } {
- puts "Test014: $method: skipping replace\
- $chars chars with string $increase times larger."
- return
- }
-
- if { $flagp == 1} {
- puts "Test014: Postpending string of len $increase with \
- gap $chars."
- } else {
- puts "Test014: Replace $chars chars with string \
- $increase times larger"
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test014.db
- set env NULL
- } else {
- set testfile test014.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set gflags ""
- set pflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
-
- puts "\tTest014.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- # We will do the initial put and then three Partial Puts
- # for the beginning, middle and end of the string.
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- if { $flagp == 1 } {
- # this is for postpend only
- global dvals
-
- # initial put
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key $str}]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good dbput $ret 0
-
- set offset [string length $str]
-
- # increase is the actual number of new bytes
- # to be postpended (besides the null padding)
- set data [repeat "P" $increase]
-
- # chars is the amount of padding in between
- # the old data and the new
- set len [expr $offset + $chars + $increase]
- set dvals($key) [binary format \
- a[set offset]x[set chars]a[set increase] \
- $str $data]
- set offset [expr $offset + $chars]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put -partial [list $offset 0]} \
- $txn {$key $data}]
- error_check_good dbput:post $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- } else {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- partial_put $method $db $txn \
- $gflags $key $str $chars $increase
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- incr count
- }
- close $did
-
- # Now make sure that everything looks OK
- puts "\tTest014.b: check entire file contents"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 test014.check
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good \
- Test014:diff($t3,$t2) [filecmp $t3 $t2] 0
-
- puts "\tTest014.c: close, open, and dump file"
- # Now, reopen the file and run the last test again.
- open_and_dump_file $testfile $env \
- $t1 test014.check dump_file_direction "-first" "-next"
-
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t2 $t3
- file rename -force $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good \
- Test014:diff($t3,$t2) [filecmp $t3 $t2] 0
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- puts "\tTest014.d: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 \
- test014.check dump_file_direction "-last" "-prev"
-
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t2 $t3
- file rename -force $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good \
- Test014:diff($t3,$t2) [filecmp $t3 $t2] 0
-}
-
-# Check function for test014; keys and data are identical
-proc test014.check { key data } {
- global dvals
-
- error_check_good key"$key"_exists [info exists dvals($key)] 1
- error_check_good "data mismatch for key $key" $data $dvals($key)
-}
diff --git a/bdb/test/test015.tcl b/bdb/test/test015.tcl
deleted file mode 100644
index f129605a405..00000000000
--- a/bdb/test/test015.tcl
+++ /dev/null
@@ -1,276 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test015.tcl,v 11.27 2002/05/31 16:57:25 sue Exp $
-#
-# TEST test015
-# TEST Partial put test
-# TEST Partial put test where the key does not initially exist.
-proc test015 { method {nentries 7500} { start 0 } args } {
- global fixed_len testdir
-
- set low_range 50
- set mid_range 100
- set high_range 1000
-
- if { [is_fixed_length $method] } {
- set low_range [expr $fixed_len/2 - 2]
- set mid_range [expr $fixed_len/2]
- set high_range $fixed_len
- }
-
- set t_table {
- { 1 { 1 1 1 } }
- { 2 { 1 1 5 } }
- { 3 { 1 1 $low_range } }
- { 4 { 1 $mid_range 1 } }
- { 5 { $mid_range $high_range 5 } }
- { 6 { 1 $mid_range $low_range } }
- }
-
- puts "Test015: \
- $method ($args) $nentries equal key/data pairs, partial put test"
- test015_init
- if { $start == 0 } {
- set start { 1 2 3 4 5 6 }
- }
- foreach entry $t_table {
- set this [lindex $entry 0]
- if { [lsearch $start $this] == -1 } {
- continue
- }
- puts -nonewline "$this: "
- eval [concat test015_body $method [lindex $entry 1] \
- $nentries $args]
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- set testdir [get_home $env]
- }
-puts "Verifying testdir $testdir"
-
- error_check_good verify [verify_dir $testdir "\tTest015.e: "] 0
- }
-}
-
-proc test015_init { } {
- global rand_init
-
- berkdb srand $rand_init
-}
-
-proc test015_body { method off_low off_hi rcount {nentries 10000} args } {
- global dvals
- global fixed_len
- global testdir
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- set checkfunc test015.check
-
- if { [is_fixed_length $method] && \
- [string compare $omethod "-recno"] == 0} {
- # is fixed recno method
- set checkfunc test015.check
- }
-
- puts "Put $rcount strings random offsets between $off_low and $off_hi"
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test015.db
- set env NULL
- } else {
- set testfile test015.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries > 5000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- set retdir $testdir
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- puts "\tTest015.a: put/get loop for $nentries entries"
-
- # Here is the loop where we put and get each key/data pair
- # Each put is a partial put of a record that does not exist.
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- if { [string length $str] > $fixed_len } {
- continue
- }
- set key [expr $count + 1]
- } else {
- set key $str
- }
-
- if { 0 } {
- set data [replicate $str $rcount]
- set off [ berkdb random_int $off_low $off_hi ]
- set offn [expr $off + 1]
- if { [is_fixed_length $method] && \
- [expr [string length $data] + $off] >= $fixed_len} {
- set data [string range $data 0 [expr $fixed_len-$offn]]
- }
- set dvals($key) [partial_shift $data $off right]
- } else {
- set data [chop_data $method [replicate $str $rcount]]
-
- # This is a hack. In DB we will store the records with
- # some padding, but these will get lost if we just return
- # them in TCL. As a result, we're going to have to hack
- # get to check for 0 padding and return a list consisting
- # of the number of 0's and the actual data.
- set off [ berkdb random_int $off_low $off_hi ]
-
- # There is no string concatenation function in Tcl
- # (although there is one in TclX), so we have to resort
- # to this hack. Ugh.
- set slen [string length $data]
- if {[is_fixed_length $method] && \
- $slen > $fixed_len - $off} {
- set $slen [expr $fixed_len - $off]
- }
- set a "a"
- set dvals($key) [pad_data \
- $method [eval "binary format x$off$a$slen" {$data}]]
- }
- if {[is_fixed_length $method] && \
- [string length $data] > ($fixed_len - $off)} {
- set slen [expr $fixed_len - $off]
- set data [eval "binary format a$slen" {$data}]
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn \
- {-partial [list $off [string length $data]] $key $data}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- incr count
- }
- close $did
-
- # Now make sure that everything looks OK
- puts "\tTest015.b: check entire file contents"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- filesort $t2 $t3
- file rename -force $t3 $t2
- filesort $t1 $t3
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good Test015:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tTest015.c: close, open, and dump file"
- # Now, reopen the file and run the last test again.
- open_and_dump_file $testfile $env $t1 \
- $checkfunc dump_file_direction "-first" "-next"
-
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t1 $t3
- }
-
- error_check_good Test015:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- puts "\tTest015.d: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 \
- $checkfunc dump_file_direction "-last" "-prev"
-
- if { [string compare $omethod "-recno"] != 0 } {
- filesort $t1 $t3
- }
-
- error_check_good Test015:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- unset dvals
-}
-
-# Check function for test015; keys and data are identical
-proc test015.check { key data } {
- global dvals
-
- error_check_good key"$key"_exists [info exists dvals($key)] 1
- binary scan $data "c[string length $data]" a
- binary scan $dvals($key) "c[string length $dvals($key)]" b
- error_check_good "mismatch on padding for key $key" $a $b
-}
-
-proc test015.fixed.check { key data } {
- global dvals
- global fixed_len
-
- error_check_good key"$key"_exists [info exists dvals($key)] 1
- if { [string length $data] > $fixed_len } {
- error_check_bad \
- "data length:[string length $data] \
- for fixed:$fixed_len" 1 1
- }
- puts "$data : $dvals($key)"
- error_check_good compare_data($data,$dvals($key) \
- $dvals($key) $data
-}
diff --git a/bdb/test/test016.tcl b/bdb/test/test016.tcl
deleted file mode 100644
index af289f866f4..00000000000
--- a/bdb/test/test016.tcl
+++ /dev/null
@@ -1,207 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test016.tcl,v 11.23 2002/05/22 15:42:46 sue Exp $
-#
-# TEST test016
-# TEST Partial put test
-# TEST Partial put where the datum gets shorter as a result of the put.
-# TEST
-# TEST Partial put test where partial puts make the record smaller.
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and a fixed, medium length data string;
-# TEST retrieve each. After all are entered, go back and do partial puts,
-# TEST replacing a random-length string with the key value.
-# TEST Then verify.
-
-proc test016 { method {nentries 10000} args } {
- global datastr
- global dvals
- global rand_init
- source ./include.tcl
-
- berkdb srand $rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_fixed_length $method] == 1 } {
- puts "Test016: skipping for method $method"
- return
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test016.db
- set env NULL
- } else {
- set testfile test016.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- puts "Test016: $method ($args) $nentries partial put shorten"
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
-
- # Here is the loop where we put and get each key/data pair
- puts "\tTest016.a: put/get loop"
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $datastr]}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $datastr]]]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- # Next we will do a partial put replacement, making the data
- # shorter
- puts "\tTest016.b: partial put loop"
- set did [open $dict]
- set count 0
- set len [string length $datastr]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
-
- set repl_len [berkdb random_int [string length $key] $len]
- set repl_off [berkdb random_int 0 [expr $len - $repl_len] ]
- set s1 [string range $datastr 0 [ expr $repl_off - 1] ]
- set s2 [string toupper $key]
- set s3 [string range $datastr [expr $repl_off + $repl_len] end ]
- set dvals($key) [pad_data $method $s1$s2$s3]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {-partial \
- [list $repl_off $repl_len] $key [chop_data $method $s2]}]
- error_check_good put $ret 0
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good \
- put $ret [list [list $key [pad_data $method $s1$s2$s3]]]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest016.c: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 test016.check
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good Test016:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again.
- puts "\tTest016.d: close, open, and dump file"
- open_and_dump_file $testfile $env $t1 test016.check \
- dump_file_direction "-first" "-next"
-
- if { [ is_record_based $method ] == 0 } {
- filesort $t1 $t3
- }
- error_check_good Test016:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- # Now, reopen the file and run the last test again in reverse direction.
- puts "\tTest016.e: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 test016.check \
- dump_file_direction "-last" "-prev"
-
- if { [ is_record_based $method ] == 0 } {
- filesort $t1 $t3
- }
- error_check_good Test016:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-}
-
-# Check function for test016; data should be whatever is set in dvals
-proc test016.check { key data } {
- global datastr
- global dvals
-
- error_check_good key"$key"_exists [info exists dvals($key)] 1
- error_check_good "data mismatch for key $key" $data $dvals($key)
-}
diff --git a/bdb/test/test017.tcl b/bdb/test/test017.tcl
deleted file mode 100644
index 1f99aa328fb..00000000000
--- a/bdb/test/test017.tcl
+++ /dev/null
@@ -1,306 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test017.tcl,v 11.23 2002/06/20 19:01:02 sue Exp $
-#
-# TEST test017
-# TEST Basic offpage duplicate test.
-# TEST
-# TEST Run duplicates with small page size so that we test off page duplicates.
-# TEST Then after we have an off-page database, test with overflow pages too.
-proc test017 { method {contents 0} {ndups 19} {tnum 17} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $method"
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- incr pgindex
- if { [lindex $args $pgindex] > 8192 } {
- puts "Test0$tnum: Skipping for large pagesizes"
- return
- }
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
-
- cleanup $testdir $env
-
- set db [eval {berkdb_open \
- -create -mode 0644 -dup} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- set file_list [get_file_list 1]
- if { $txnenv == 1 } {
- set flen [llength $file_list]
- reduce_dups flen ndups
- set file_list [lrange $file_list 0 $flen]
- }
- puts "Test0$tnum: $method ($args) Off page duplicate tests with $ndups duplicates"
-
- set ovfl ""
- # Here is the loop where we put and get each key/data pair
- puts -nonewline "\tTest0$tnum.a: Creating duplicates with "
- if { $contents != 0 } {
- puts "file contents as key/data"
- } else {
- puts "file name as key/data"
- }
- foreach f $file_list {
- if { $contents != 0 } {
- set fid [open $f r]
- fconfigure $fid -translation binary
- #
- # Prepend file name to guarantee uniqueness
- set filecont [read $fid]
- set str $f:$filecont
- close $fid
- } else {
- set str $f
- }
- for { set i 1 } { $i <= $ndups } { incr i } {
- set datastr $i:$str
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- #
- # Save 10% files for overflow test
- #
- if { $contents == 0 && [expr $count % 10] == 0 } {
- lappend ovfl $f
- }
- # Now retrieve all the keys matching this key
- set ret [$db get $str]
- error_check_bad $f:dbget_dups [llength $ret] 0
- error_check_good $f:dbget_dups1 [llength $ret] $ndups
- set x 1
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- for {set ret [$dbc get "-set" $str]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get "-next"] } {
- set k [lindex [lindex $ret 0] 0]
- if { [string compare $k $str] != 0 } {
- break
- }
- set datastr [lindex [lindex $ret 0] 1]
- set d [data_of $datastr]
- if {[string length $d] == 0} {
- break
- }
- error_check_good "Test0$tnum:get" $d $str
- set id [ id_of $datastr ]
- error_check_good "Test0$tnum:$f:dup#" $id $x
- incr x
- }
- error_check_good "Test0$tnum:ndups:$str" [expr $x - 1] $ndups
- error_check_good cursor_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.b: Checking file for correct duplicates"
- set dlist ""
- for { set i 1 } { $i <= $ndups } {incr i} {
- lappend dlist $i
- }
- set oid [open $t2.tmp w]
- set o1id [open $t4.tmp w]
- foreach f $file_list {
- for {set i 1} {$i <= $ndups} {incr i} {
- puts $o1id $f
- }
- puts $oid $f
- }
- close $oid
- close $o1id
- filesort $t2.tmp $t2
- filesort $t4.tmp $t4
- fileremove $t2.tmp
- fileremove $t4.tmp
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- if {$contents == 0} {
- filesort $t1 $t3
-
- error_check_good Test0$tnum:diff($t3,$t2) [filecmp $t3 $t2] 0
-
- # Now compare the keys to see if they match the file names
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 test017.check
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- filesort $t1 $t3
-
- error_check_good Test0$tnum:diff($t3,$t4) [filecmp $t3 $t4] 0
- }
-
- error_check_good db_close [$db close] 0
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- puts "\tTest0$tnum.c: Checking file for correct duplicates after close"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- if {$contents == 0} {
- # Now compare the keys to see if they match the filenames
- filesort $t1 $t3
- error_check_good Test0$tnum:diff($t3,$t2) [filecmp $t3 $t2] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest0$tnum.d: Verify off page duplicates and overflow status"
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set stat [$db stat]
- if { [is_btree $method] } {
- error_check_bad stat:offpage \
- [is_substr $stat "{{Internal pages} 0}"] 1
- }
- if {$contents == 0} {
- # This check doesn't work in hash, since overflow
- # pages count extra pages in buckets as well as true
- # P_OVERFLOW pages.
- if { [is_hash $method] == 0 } {
- error_check_good overflow \
- [is_substr $stat "{{Overflow pages} 0}"] 1
- }
- } else {
- error_check_bad overflow \
- [is_substr $stat "{{Overflow pages} 0}"] 1
- }
-
- #
- # If doing overflow test, do that now. Else we are done.
- # Add overflow pages by adding a large entry to a duplicate.
- #
- if { [llength $ovfl] == 0} {
- error_check_good db_close [$db close] 0
- return
- }
-
- puts "\tTest0$tnum.e: Add overflow duplicate entries"
- set ovfldup [expr $ndups + 1]
- foreach f $ovfl {
- #
- # This is just like put_file, but prepends the dup number
- #
- set fid [open $f r]
- fconfigure $fid -translation binary
- set fdata [read $fid]
- close $fid
- set data $ovfldup:$fdata:$fdata:$fdata:$fdata
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn $pflags {$f $data}]
- error_check_good ovfl_put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- puts "\tTest0$tnum.f: Verify overflow duplicate entries"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_check $db $txn $t1 $dlist $ovfldup
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- filesort $t1 $t3
- error_check_good Test0$tnum:diff($t3,$t2) [filecmp $t3 $t2] 0
-
- set stat [$db stat]
- if { [is_hash [$db get_type]] } {
- error_check_bad overflow1_hash [is_substr $stat \
- "{{Number of big pages} 0}"] 1
- } else {
- error_check_bad \
- overflow1 [is_substr $stat "{{Overflow pages} 0}"] 1
- }
- error_check_good db_close [$db close] 0
-}
-
-# Check function; verify data contains key
-proc test017.check { key data } {
- error_check_good "data mismatch for key $key" $key [data_of $data]
-}
diff --git a/bdb/test/test018.tcl b/bdb/test/test018.tcl
deleted file mode 100644
index 8fc8a14e95e..00000000000
--- a/bdb/test/test018.tcl
+++ /dev/null
@@ -1,16 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test018.tcl,v 11.6 2002/01/11 15:53:43 bostic Exp $
-#
-# TEST test018
-# TEST Offpage duplicate test
-# TEST Key_{first,last,before,after} offpage duplicates.
-# TEST Run duplicates with small page size so that we test off page
-# TEST duplicates.
-proc test018 { method {nentries 10000} args} {
- puts "Test018: Off page duplicate tests"
- eval {test011 $method $nentries 19 18 -pagesize 512} $args
-}
diff --git a/bdb/test/test019.tcl b/bdb/test/test019.tcl
deleted file mode 100644
index aa3a58a0bcd..00000000000
--- a/bdb/test/test019.tcl
+++ /dev/null
@@ -1,131 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test019.tcl,v 11.21 2002/05/22 15:42:47 sue Exp $
-#
-# TEST test019
-# TEST Partial get test.
-proc test019 { method {nentries 10000} args } {
- global fixed_len
- global rand_init
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test019.db
- set env NULL
- } else {
- set testfile test019.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- puts "Test019: $method ($args) $nentries partial get test"
-
- cleanup $testdir $env
-
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
- berkdb srand $rand_init
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
-
- puts "\tTest019.a: put/get loop"
- for { set i 0 } { [gets $did str] != -1 && $i < $nentries } \
- { incr i } {
-
- if { [is_record_based $method] == 1 } {
- set key [expr $i + 1]
- } else {
- set key $str
- }
- set repl [berkdb random_int $fixed_len 100]
- set data [chop_data $method [replicate $str $repl]]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {-nooverwrite $key $data}]
- error_check_good dbput:$key $ret 0
-
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good \
- dbget:$key $ret [list [list $key [pad_data $method $data]]]
- set kvals($key) $repl
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- close $did
-
- puts "\tTest019.b: partial get loop"
- set did [open $dict]
- for { set i 0 } { [gets $did str] != -1 && $i < $nentries } \
- { incr i } {
- if { [is_record_based $method] == 1 } {
- set key [expr $i + 1]
- } else {
- set key $str
- }
- set data [pad_data $method [replicate $str $kvals($key)]]
-
- set maxndx [expr [string length $data] - 1]
-
- set beg [berkdb random_int 0 [expr $maxndx - 1]]
- set len [berkdb random_int 0 [expr $maxndx * 2]]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db get} \
- $txn {-partial [list $beg $len]} $gflags {$key}]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # In order for tcl to handle this, we have to overwrite the
- # last character with a NULL. That makes the length one less
- # than we expect.
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_good dbget_key $k $key
-
- error_check_good dbget_data $d \
- [string range $data $beg [expr $beg + $len - 1]]
-
- }
- error_check_good db_close [$db close] 0
- close $did
-}
diff --git a/bdb/test/test020.tcl b/bdb/test/test020.tcl
deleted file mode 100644
index 9b6d939acad..00000000000
--- a/bdb/test/test020.tcl
+++ /dev/null
@@ -1,137 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test020.tcl,v 11.17 2002/05/22 15:42:47 sue Exp $
-#
-# TEST test020
-# TEST In-Memory database tests.
-proc test020 { method {nentries 10000} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- if { [is_queueext $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test020 skipping for method $method"
- return
- }
- # Create the database and open the dictionary
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # Check if we are using an env.
- if { $eindex == -1 } {
- set env NULL
- } else {
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- puts "Test020: $method ($args) $nentries equal key/data pairs"
-
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- set checkfunc test020_recno.check
- append gflags " -recno"
- } else {
- set checkfunc test020.check
- }
- puts "\tTest020.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) [pad_data $method $str]
- } else {
- set key $str
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $str]]]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest020.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
- error_check_good Test020:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-}
-
-# Check function for test020; keys and data are identical
-proc test020.check { key data } {
- error_check_good "key/data mismatch" $data $key
-}
-
-proc test020_recno.check { key data } {
- global dict
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "data mismatch: key $key" $data $kvals($key)
-}
diff --git a/bdb/test/test021.tcl b/bdb/test/test021.tcl
deleted file mode 100644
index 56936da389a..00000000000
--- a/bdb/test/test021.tcl
+++ /dev/null
@@ -1,162 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test021.tcl,v 11.15 2002/05/22 15:42:47 sue Exp $
-#
-# TEST test021
-# TEST Btree range tests.
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self, reversed as key and self as data.
-# TEST After all are entered, retrieve each using a cursor SET_RANGE, and
-# TEST getting about 20 keys sequentially after it (in some cases we'll
-# TEST run out towards the end of the file).
-proc test021 { method {nentries 10000} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test021.db
- set env NULL
- } else {
- set testfile test021.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- puts "Test021: $method ($args) $nentries equal key/data pairs"
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- set checkfunc test021_recno.check
- append gflags " -recno"
- } else {
- set checkfunc test021.check
- }
- puts "\tTest021.a: put loop"
- # Here is the loop where we put each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) [pad_data $method $str]
- } else {
- set key [reverse $str]
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} \
- $txn $pflags {$key [chop_data $method $str]}]
- error_check_good db_put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- # Now we will get each key from the DB and retrieve about 20
- # records after it.
- error_check_good db_close [$db close] 0
-
- puts "\tTest021.b: test ranges"
- set db [eval {berkdb_open -rdonly} $args $omethod $testfile ]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Open a cursor
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_substr $dbc $db] 1
-
- set did [open $dict]
- set i 0
- while { [gets $did str] != -1 && $i < $count } {
- if { [is_record_based $method] == 1 } {
- set key [expr $i + 1]
- } else {
- set key [reverse $str]
- }
-
- set r [$dbc get -set_range $key]
- error_check_bad dbc_get:$key [string length $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- $checkfunc $k $d
-
- for { set nrecs 0 } { $nrecs < 20 } { incr nrecs } {
- set r [$dbc get "-next"]
- # no error checking because we may run off the end
- # of the database
- if { [llength $r] == 0 } {
- continue;
- }
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- $checkfunc $k $d
- }
- incr i
- }
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
- close $did
-}
-
-# Check function for test021; keys and data are reversed
-proc test021.check { key data } {
- error_check_good "key/data mismatch for $key" $data [reverse $key]
-}
-
-proc test021_recno.check { key data } {
- global dict
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "data mismatch: key $key" $data $kvals($key)
-}
diff --git a/bdb/test/test022.tcl b/bdb/test/test022.tcl
deleted file mode 100644
index d25d7ecdffe..00000000000
--- a/bdb/test/test022.tcl
+++ /dev/null
@@ -1,62 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test022.tcl,v 11.14 2002/05/22 15:42:48 sue Exp $
-#
-# TEST test022
-# TEST Test of DB->getbyteswapped().
-proc test022 { method args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test022 ($args) $omethod: DB->getbyteswapped()"
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile1 "$testdir/test022a.db"
- set testfile2 "$testdir/test022b.db"
- set env NULL
- } else {
- set testfile1 "test022a.db"
- set testfile2 "test022b.db"
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- # Create two databases, one in each byte order.
- set db1 [eval {berkdb_open -create \
- -mode 0644} $omethod $args {-lorder 1234} $testfile1]
- error_check_good db1_open [is_valid_db $db1] TRUE
-
- set db2 [eval {berkdb_open -create \
- -mode 0644} $omethod $args {-lorder 4321} $testfile2]
- error_check_good db2_open [is_valid_db $db2] TRUE
-
- # Call DB->get_byteswapped on both of them.
- set db1_order [$db1 is_byteswapped]
- set db2_order [$db2 is_byteswapped]
-
- # Make sure that both answers are either 1 or 0,
- # and that exactly one of them is 1.
- error_check_good is_byteswapped_sensible_1 \
- [expr ($db1_order == 1 && $db2_order == 0) || \
- ($db1_order == 0 && $db2_order == 1)] 1
-
- error_check_good db1_close [$db1 close] 0
- error_check_good db2_close [$db2 close] 0
- puts "\tTest022 complete."
-}
diff --git a/bdb/test/test023.tcl b/bdb/test/test023.tcl
deleted file mode 100644
index c37539a0f55..00000000000
--- a/bdb/test/test023.tcl
+++ /dev/null
@@ -1,221 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test023.tcl,v 11.18 2002/05/22 15:42:48 sue Exp $
-#
-# TEST test023
-# TEST Duplicate test
-# TEST Exercise deletes and cursor operations within a duplicate set.
-# TEST Add a key with duplicates (first time on-page, second time off-page)
-# TEST Number the dups.
-# TEST Delete dups and make sure that CURRENT/NEXT/PREV work correctly.
-proc test023 { method args } {
- global alphabet
- global dupnum
- global dupstr
- global errorInfo
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- puts "Test023: $method delete duplicates/check cursor operations"
- if { [is_record_based $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test023: skipping for method $omethod"
- return
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test023.db
- set env NULL
- } else {
- set testfile test023.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644 -dup} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- foreach i { onpage offpage } {
- if { $i == "onpage" } {
- set dupstr DUP
- } else {
- set dupstr [repeat $alphabet 50]
- }
- puts "\tTest023.a: Insert key w/$i dups"
- set key "duplicate_val_test"
- for { set count 0 } { $count < 20 } { incr count } {
- set ret \
- [eval {$db put} $txn $pflags {$key $count$dupstr}]
- error_check_good db_put $ret 0
- }
-
- # Now let's get all the items and make sure they look OK.
- puts "\tTest023.b: Check initial duplicates"
- set dupnum 0
- dump_file $db $txn $t1 test023.check
-
- # Delete a couple of random items (FIRST, LAST one in middle)
- # Make sure that current returns an error and that NEXT and
- # PREV do the right things.
-
- set ret [$dbc get -set $key]
- error_check_bad dbc_get:SET [llength $ret] 0
-
- puts "\tTest023.c: Delete first and try gets"
- # This should be the first duplicate
- error_check_good \
- dbc_get:SET $ret [list [list duplicate_val_test 0$dupstr]]
-
- # Now delete it.
- set ret [$dbc del]
- error_check_good dbc_del:FIRST $ret 0
-
- # Now current should fail
- set ret [$dbc get -current]
- error_check_good dbc_get:CURRENT $ret [list [list [] []]]
-
- # Now Prev should fail
- set ret [$dbc get -prev]
- error_check_good dbc_get:prev0 [llength $ret] 0
-
- # Now 10 nexts should work to get us in the middle
- for { set j 1 } { $j <= 10 } { incr j } {
- set ret [$dbc get -next]
- error_check_good \
- dbc_get:next [llength [lindex $ret 0]] 2
- error_check_good \
- dbc_get:next [lindex [lindex $ret 0] 1] $j$dupstr
- }
-
- puts "\tTest023.d: Delete middle and try gets"
- # Now do the delete on the current key.
- set ret [$dbc del]
- error_check_good dbc_del:10 $ret 0
-
- # Now current should fail
- set ret [$dbc get -current]
- error_check_good \
- dbc_get:deleted $ret [list [list [] []]]
-
- # Prev and Next should work
- set ret [$dbc get -next]
- error_check_good dbc_get:next [llength [lindex $ret 0]] 2
- error_check_good \
- dbc_get:next [lindex [lindex $ret 0] 1] 11$dupstr
-
- set ret [$dbc get -prev]
- error_check_good dbc_get:next [llength [lindex $ret 0]] 2
- error_check_good \
- dbc_get:next [lindex [lindex $ret 0] 1] 9$dupstr
-
- # Now go to the last one
- for { set j 11 } { $j <= 19 } { incr j } {
- set ret [$dbc get -next]
- error_check_good \
- dbc_get:next [llength [lindex $ret 0]] 2
- error_check_good \
- dbc_get:next [lindex [lindex $ret 0] 1] $j$dupstr
- }
-
- puts "\tTest023.e: Delete last and try gets"
- # Now do the delete on the current key.
- set ret [$dbc del]
- error_check_good dbc_del:LAST $ret 0
-
- # Now current should fail
- set ret [$dbc get -current]
- error_check_good \
- dbc_get:deleted $ret [list [list [] []]]
-
- # Next should fail
- set ret [$dbc get -next]
- error_check_good dbc_get:next19 [llength $ret] 0
-
- # Prev should work
- set ret [$dbc get -prev]
- error_check_good dbc_get:next [llength [lindex $ret 0]] 2
- error_check_good \
- dbc_get:next [lindex [lindex $ret 0] 1] 18$dupstr
-
- # Now overwrite the current one, then count the number
- # of data items to make sure that we have the right number.
-
- puts "\tTest023.f: Count keys, overwrite current, count again"
- # At this point we should have 17 keys the (initial 20 minus
- # 3 deletes)
- set dbc2 [eval {$db cursor} $txn]
- error_check_good db_cursor:2 [is_substr $dbc2 $db] 1
-
- set count_check 0
- for { set rec [$dbc2 get -first] } {
- [llength $rec] != 0 } { set rec [$dbc2 get -next] } {
- incr count_check
- }
- error_check_good numdups $count_check 17
-
- set ret [$dbc put -current OVERWRITE]
- error_check_good dbc_put:current $ret 0
-
- set count_check 0
- for { set rec [$dbc2 get -first] } {
- [llength $rec] != 0 } { set rec [$dbc2 get -next] } {
- incr count_check
- }
- error_check_good numdups $count_check 17
- error_check_good dbc2_close [$dbc2 close] 0
-
- # Done, delete all the keys for next iteration
- set ret [eval {$db del} $txn {$key}]
- error_check_good db_delete $ret 0
-
- # database should be empty
-
- set ret [$dbc get -first]
- error_check_good first_after_empty [llength $ret] 0
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
-}
-
-# Check function for test023; keys and data are identical
-proc test023.check { key data } {
- global dupnum
- global dupstr
- error_check_good "bad key" $key duplicate_val_test
- error_check_good "data mismatch for $key" $data $dupnum$dupstr
- incr dupnum
-}
diff --git a/bdb/test/test024.tcl b/bdb/test/test024.tcl
deleted file mode 100644
index bbdc8fb2253..00000000000
--- a/bdb/test/test024.tcl
+++ /dev/null
@@ -1,268 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test024.tcl,v 11.19 2002/05/22 15:42:48 sue Exp $
-#
-# TEST test024
-# TEST Record number retrieval test.
-# TEST Test the Btree and Record number get-by-number functionality.
-proc test024 { method {nentries 10000} args} {
- source ./include.tcl
- global rand_init
-
- set do_renumber [is_rrecno $method]
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test024: $method ($args)"
-
- if { [string compare $omethod "-hash"] == 0 } {
- puts "Test024 skipping for method HASH"
- return
- }
-
- berkdb srand $rand_init
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test024.db
- set env NULL
- } else {
- set testfile test024.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
-
- cleanup $testdir $env
-
- # Read the first nentries dictionary elements and reverse them.
- # Keep a list of these (these will be the keys).
- puts "\tTest024.a: initialization"
- set keys ""
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < $nentries } {
- lappend keys [reverse $str]
- incr count
- }
- close $did
-
- # Generate sorted order for the keys
- set sorted_keys [lsort $keys]
- # Create the database
- if { [string compare $omethod "-btree"] == 0 } {
- set db [eval {berkdb_open -create \
- -mode 0644 -recnum} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- } else {
- set db [eval {berkdb_open -create \
- -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- }
-
- set pflags ""
- set gflags ""
- set txn ""
-
- if { [is_record_based $method] == 1 } {
- set gflags " -recno"
- }
-
- puts "\tTest024.b: put/get loop"
- foreach k $keys {
- if { [is_record_based $method] == 1 } {
- set key [lsearch $sorted_keys $k]
- incr key
- } else {
- set key $k
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $k]}]
- error_check_good put $ret 0
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $k]]]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest024.c: dump file"
-
- # Put sorted keys in file
- set oid [open $t1 w]
- foreach k $sorted_keys {
- puts $oid [pad_data $method $k]
- }
- close $oid
-
- # Instead of using dump_file; get all the keys by keynum
- set oid [open $t2 w]
- if { [string compare $omethod "-btree"] == 0 } {
- set do_renumber 1
- }
-
- set gflags " -recno"
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- for { set k 1 } { $k <= $count } { incr k } {
- set ret [eval {$db get} $txn $gflags {$k}]
- puts $oid [lindex [lindex $ret 0] 1]
- error_check_good recnum_get [lindex [lindex $ret 0] 1] \
- [pad_data $method [lindex $sorted_keys [expr $k - 1]]]
- }
- close $oid
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- error_check_good Test024.c:diff($t1,$t2) \
- [filecmp $t1 $t2] 0
-
- # Now, reopen the file and run the last test again.
- puts "\tTest024.d: close, open, and dump file"
- set db [eval {berkdb_open -rdonly} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set oid [open $t2 w]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- for { set k 1 } { $k <= $count } { incr k } {
- set ret [eval {$db get} $txn $gflags {$k}]
- puts $oid [lindex [lindex $ret 0] 1]
- error_check_good recnum_get [lindex [lindex $ret 0] 1] \
- [pad_data $method [lindex $sorted_keys [expr $k - 1]]]
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- close $oid
- error_check_good db_close [$db close] 0
- error_check_good Test024.d:diff($t1,$t2) \
- [filecmp $t1 $t2] 0
-
- # Now, reopen the file and run the last test again in reverse direction.
- puts "\tTest024.e: close, open, and dump file in reverse direction"
- set db [eval {berkdb_open -rdonly} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- # Put sorted keys in file
- set rsorted ""
- foreach k $sorted_keys {
- set rsorted [linsert $rsorted 0 $k]
- }
- set oid [open $t1 w]
- foreach k $rsorted {
- puts $oid [pad_data $method $k]
- }
- close $oid
-
- set oid [open $t2 w]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- for { set k $count } { $k > 0 } { incr k -1 } {
- set ret [eval {$db get} $txn $gflags {$k}]
- puts $oid [lindex [lindex $ret 0] 1]
- error_check_good recnum_get [lindex [lindex $ret 0] 1] \
- [pad_data $method [lindex $sorted_keys [expr $k - 1]]]
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- close $oid
- error_check_good db_close [$db close] 0
- error_check_good Test024.e:diff($t1,$t2) \
- [filecmp $t1 $t2] 0
-
- # Now try deleting elements and making sure they work
- puts "\tTest024.f: delete test"
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- while { $count > 0 } {
- set kndx [berkdb random_int 1 $count]
- set kval [lindex $keys [expr $kndx - 1]]
- set recno [expr [lsearch $sorted_keys $kval] + 1]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- if { [is_record_based $method] == 1 } {
- set ret [eval {$db del} $txn {$recno}]
- } else {
- set ret [eval {$db del} $txn {$kval}]
- }
- error_check_good delete $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Remove the key from the key list
- set ndx [expr $kndx - 1]
- set keys [lreplace $keys $ndx $ndx]
-
- if { $do_renumber == 1 } {
- set r [expr $recno - 1]
- set sorted_keys [lreplace $sorted_keys $r $r]
- }
-
- # Check that the keys after it have been renumbered
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- if { $do_renumber == 1 && $recno != $count } {
- set r [expr $recno - 1]
- set ret [eval {$db get} $txn $gflags {$recno}]
- error_check_good get_after_del \
- [lindex [lindex $ret 0] 1] [lindex $sorted_keys $r]
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Decrement count
- incr count -1
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test025.tcl b/bdb/test/test025.tcl
deleted file mode 100644
index 180a1aa2939..00000000000
--- a/bdb/test/test025.tcl
+++ /dev/null
@@ -1,146 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test025.tcl,v 11.19 2002/05/24 15:24:54 sue Exp $
-#
-# TEST test025
-# TEST DB_APPEND flag test.
-proc test025 { method {nentries 10000} {start 0 } {tnum "25" } args} {
- global kvals
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- puts "Test0$tnum: $method ($args)"
-
- if { [string compare $omethod "-btree"] == 0 } {
- puts "Test0$tnum skipping for method BTREE"
- return
- }
- if { [string compare $omethod "-hash"] == 0 } {
- puts "Test0$tnum skipping for method HASH"
- return
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
-
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- puts "\tTest0$tnum.a: put/get loop"
- set gflags " -recno"
- set pflags " -append"
- set txn ""
- set checkfunc test025_check
-
- # Here is the loop where we put and get each key/data pair
- set count $start
- set nentries [expr $start + $nentries]
- if { $count != 0 } {
- gets $did str
- set k [expr $count + 1]
- set kvals($k) [pad_data $method $str]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$k [chop_data $method $str]}]
- error_check_good db_put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
-
- while { [gets $did str] != -1 && $count < $nentries } {
- set k [expr $count + 1]
- set kvals($k) [pad_data $method $str]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn $pflags {[chop_data $method $str]}]
- error_check_good db_put $ret $k
-
- set ret [eval {$db get} $txn $gflags {$k}]
- error_check_good \
- get $ret [list [list $k [pad_data $method $str]]]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # The recno key will be count + 1, so when we hit
- # UINT32_MAX - 1, reset to 0.
- if { $count == [expr 0xfffffffe] } {
- set count 0
- } else {
- incr count
- }
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest0$tnum.c: close, open, and dump file"
- # Now, reopen the file and run the last test again.
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_file_direction -first -next
-
- # Now, reopen the file and run the last test again in the
- # reverse direction.
- puts "\tTest0$tnum.d: close, open, and dump file in reverse direction"
- open_and_dump_file $testfile $env $t1 $checkfunc \
- dump_file_direction -last -prev
-}
-
-proc test025_check { key data } {
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good " key/data mismatch for |$key|" $data $kvals($key)
-}
diff --git a/bdb/test/test026.tcl b/bdb/test/test026.tcl
deleted file mode 100644
index ce65e925d35..00000000000
--- a/bdb/test/test026.tcl
+++ /dev/null
@@ -1,155 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test026.tcl,v 11.20 2002/06/11 14:09:56 sue Exp $
-#
-# TEST test026
-# TEST Small keys/medium data w/duplicates
-# TEST Put/get per key.
-# TEST Loop through keys -- delete each key
-# TEST ... test that cursors delete duplicates correctly
-# TEST
-# TEST Keyed delete test through cursor. If ndups is small; this will
-# TEST test on-page dups; if it's large, it will test off-page dups.
-proc test026 { method {nentries 2000} {ndups 5} {tnum 26} args} {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $method"
- return
- }
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the defaults down a bit.
- # If we are wanting a lot of dups, set that
- # down a bit or repl testing takes very long.
- #
- if { $nentries == 2000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
- puts "Test0$tnum: $method ($args) $nentries keys\
- with $ndups dups; cursor delete test"
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
-
- puts "\tTest0$tnum.a: Put loop"
- set db [eval {berkdb_open -create \
- -mode 0644} $args {$omethod -dup $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
- while { [gets $did str] != -1 && $count < [expr $nentries * $ndups] } {
- set datastr [ make_data_str $str ]
- for { set j 1 } { $j <= $ndups} {incr j} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $j$datastr]}]
- error_check_good db_put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- }
- close $did
-
- error_check_good db_close [$db close] 0
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Now we will sequentially traverse the database getting each
- # item and deleting it.
- set count 0
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_substr $dbc $db] 1
-
- puts "\tTest0$tnum.b: Get/delete loop"
- set i 1
- for { set ret [$dbc get -first] } {
- [string length $ret] != 0 } {
- set ret [$dbc get -next] } {
-
- set key [lindex [lindex $ret 0] 0]
- set data [lindex [lindex $ret 0] 1]
- if { $i == 1 } {
- set curkey $key
- }
- error_check_good seq_get:key $key $curkey
- error_check_good \
- seq_get:data $data [pad_data $method $i[make_data_str $key]]
-
- if { $i == $ndups } {
- set i 1
- } else {
- incr i
- }
-
- # Now delete the key
- set ret [$dbc del]
- error_check_good db_del:$key $ret 0
- }
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest0$tnum.c: Verify empty file"
- # Double check that file is now empty
- set db [eval {berkdb_open} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_substr $dbc $db] 1
- set ret [$dbc get -first]
- error_check_good get_on_empty [string length $ret] 0
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test027.tcl b/bdb/test/test027.tcl
deleted file mode 100644
index a0f6dfa4dcb..00000000000
--- a/bdb/test/test027.tcl
+++ /dev/null
@@ -1,17 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test027.tcl,v 11.7 2002/01/11 15:53:45 bostic Exp $
-#
-# TEST test027
-# TEST Off-page duplicate test
-# TEST Test026 with parameters to force off-page duplicates.
-# TEST
-# TEST Check that delete operations work. Create a database; close
-# TEST database and reopen it. Then issues delete by key for each
-# TEST entry.
-proc test027 { method {nentries 100} args} {
- eval {test026 $method $nentries 100 27} $args
-}
diff --git a/bdb/test/test028.tcl b/bdb/test/test028.tcl
deleted file mode 100644
index a546744fdac..00000000000
--- a/bdb/test/test028.tcl
+++ /dev/null
@@ -1,222 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test028.tcl,v 11.20 2002/07/01 15:03:45 krinsky Exp $
-#
-# TEST test028
-# TEST Cursor delete test
-# TEST Test put operations after deleting through a cursor.
-proc test028 { method args } {
- global dupnum
- global dupstr
- global alphabet
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test028: $method put after cursor delete test"
-
- if { [is_rbtree $method] == 1 } {
- puts "Test028 skipping for method $method"
- return
- }
- if { [is_record_based $method] == 1 } {
- set key 10
- } else {
- append args " -dup"
- set key "put_after_cursor_del"
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test028.db
- set env NULL
- } else {
- set testfile test028.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set ndups 20
- set txn ""
- set pflags ""
- set gflags ""
-
- if { [is_record_based $method] == 1 } {
- set gflags " -recno"
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_substr $dbc $db] 1
-
- foreach i { offpage onpage } {
- foreach b { bigitem smallitem } {
- if { $i == "onpage" } {
- if { $b == "bigitem" } {
- set dupstr [repeat $alphabet 100]
- } else {
- set dupstr DUP
- }
- } else {
- if { $b == "bigitem" } {
- set dupstr [repeat $alphabet 100]
- } else {
- set dupstr [repeat $alphabet 50]
- }
- }
-
- if { $b == "bigitem" } {
- set dupstr [repeat $dupstr 10]
- }
- puts "\tTest028: $i/$b"
-
- puts "\tTest028.a: Insert key with single data item"
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $dupstr]}]
- error_check_good db_put $ret 0
-
- # Now let's get the item and make sure its OK.
- puts "\tTest028.b: Check initial entry"
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good db_get \
- $ret [list [list $key [pad_data $method $dupstr]]]
-
- # Now try a put with NOOVERWRITE SET (should be error)
- puts "\tTest028.c: No_overwrite test"
- set ret [eval {$db put} $txn \
- {-nooverwrite $key [chop_data $method $dupstr]}]
- error_check_good \
- db_put [is_substr $ret "DB_KEYEXIST"] 1
-
- # Now delete the item with a cursor
- puts "\tTest028.d: Delete test"
- set ret [$dbc get -set $key]
- error_check_bad dbc_get:SET [llength $ret] 0
-
- set ret [$dbc del]
- error_check_good dbc_del $ret 0
-
- puts "\tTest028.e: Reput the item"
- set ret [eval {$db put} $txn \
- {-nooverwrite $key [chop_data $method $dupstr]}]
- error_check_good db_put $ret 0
-
- puts "\tTest028.f: Retrieve the item"
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good db_get $ret \
- [list [list $key [pad_data $method $dupstr]]]
-
- # Delete the key to set up for next test
- set ret [eval {$db del} $txn {$key}]
- error_check_good db_del $ret 0
-
- # Now repeat the above set of tests with
- # duplicates (if not RECNO).
- if { [is_record_based $method] == 1 } {
- continue;
- }
-
- puts "\tTest028.g: Insert key with duplicates"
- for { set count 0 } { $count < $ndups } { incr count } {
- set ret [eval {$db put} $txn \
- {$key [chop_data $method $count$dupstr]}]
- error_check_good db_put $ret 0
- }
-
- puts "\tTest028.h: Check dups"
- set dupnum 0
- dump_file $db $txn $t1 test028.check
-
- # Try no_overwrite
- puts "\tTest028.i: No_overwrite test"
- set ret [eval {$db put} \
- $txn {-nooverwrite $key $dupstr}]
- error_check_good \
- db_put [is_substr $ret "DB_KEYEXIST"] 1
-
- # Now delete all the elements with a cursor
- puts "\tTest028.j: Cursor Deletes"
- set count 0
- for { set ret [$dbc get -set $key] } {
- [string length $ret] != 0 } {
- set ret [$dbc get -next] } {
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_good db_seq(key) $k $key
- error_check_good db_seq(data) $d $count$dupstr
- set ret [$dbc del]
- error_check_good dbc_del $ret 0
- incr count
- if { $count == [expr $ndups - 1] } {
- puts "\tTest028.k:\
- Duplicate No_Overwrite test"
- set ret [eval {$db put} $txn \
- {-nooverwrite $key $dupstr}]
- error_check_good db_put [is_substr \
- $ret "DB_KEYEXIST"] 1
- }
- }
-
- # Make sure all the items are gone
- puts "\tTest028.l: Get after delete"
- set ret [$dbc get -set $key]
- error_check_good get_after_del [string length $ret] 0
-
- puts "\tTest028.m: Reput the item"
- set ret [eval {$db put} \
- $txn {-nooverwrite $key 0$dupstr}]
- error_check_good db_put $ret 0
- for { set count 1 } { $count < $ndups } { incr count } {
- set ret [eval {$db put} $txn \
- {$key $count$dupstr}]
- error_check_good db_put $ret 0
- }
-
- puts "\tTest028.n: Retrieve the item"
- set dupnum 0
- dump_file $db $txn $t1 test028.check
-
- # Clean out in prep for next test
- set ret [eval {$db del} $txn {$key}]
- error_check_good db_del $ret 0
- }
- }
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
-}
-
-# Check function for test028; keys and data are identical
-proc test028.check { key data } {
- global dupnum
- global dupstr
- error_check_good "Bad key" $key put_after_cursor_del
- error_check_good "data mismatch for $key" $data $dupnum$dupstr
- incr dupnum
-}
diff --git a/bdb/test/test029.tcl b/bdb/test/test029.tcl
deleted file mode 100644
index 8e4b8aa6e41..00000000000
--- a/bdb/test/test029.tcl
+++ /dev/null
@@ -1,245 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test029.tcl,v 11.20 2002/06/29 13:44:44 bostic Exp $
-#
-# TEST test029
-# TEST Test the Btree and Record number renumbering.
-proc test029 { method {nentries 10000} args} {
- source ./include.tcl
-
- set do_renumber [is_rrecno $method]
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test029: $method ($args)"
-
- if { [string compare $omethod "-hash"] == 0 } {
- puts "Test029 skipping for method HASH"
- return
- }
- if { [is_record_based $method] == 1 && $do_renumber != 1 } {
- puts "Test029 skipping for method RECNO (w/out renumbering)"
- return
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test029.db
- set env NULL
- } else {
- set testfile test029.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- # Do not set nentries down to 100 until we
- # fix SR #5958.
- set nentries 1000
- }
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- # Read the first nentries dictionary elements and reverse them.
- # Keep a list of these (these will be the keys).
- puts "\tTest029.a: initialization"
- set keys ""
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < $nentries } {
- lappend keys [reverse $str]
- incr count
- }
- close $did
-
- # Generate sorted order for the keys
- set sorted_keys [lsort $keys]
-
- # Save the first and last keys
- set last_key [lindex $sorted_keys end]
- set last_keynum [llength $sorted_keys]
-
- set first_key [lindex $sorted_keys 0]
- set first_keynum 1
-
- # Create the database
- if { [string compare $omethod "-btree"] == 0 } {
- set db [eval {berkdb_open -create \
- -mode 0644 -recnum} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- } else {
- set db [eval {berkdb_open -create \
- -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- }
-
- set pflags ""
- set gflags ""
- set txn ""
-
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
-
- puts "\tTest029.b: put/get loop"
- foreach k $keys {
- if { [is_record_based $method] == 1 } {
- set key [lsearch $sorted_keys $k]
- incr key
- } else {
- set key $k
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $k]}]
- error_check_good dbput $ret 0
-
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good dbget [lindex [lindex $ret 0] 1] $k
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Now delete the first key in the database
- puts "\tTest029.c: delete and verify renumber"
-
- # Delete the first key in the file
- if { [is_record_based $method] == 1 } {
- set key $first_keynum
- } else {
- set key $first_key
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db del} $txn {$key}]
- error_check_good db_del $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Now we are ready to retrieve records based on
- # record number
- if { [string compare $omethod "-btree"] == 0 } {
- append gflags " -recno"
- }
-
- # First try to get the old last key (shouldn't exist)
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db get} $txn $gflags {$last_keynum}]
- error_check_good get_after_del $ret [list]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Now try to get what we think should be the last key
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db get} $txn $gflags {[expr $last_keynum - 1]}]
- error_check_good \
- getn_last_after_del [lindex [lindex $ret 0] 1] $last_key
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Create a cursor; we need it for the next test and we
- # need it for recno here.
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- # OK, now re-put the first key and make sure that we
- # renumber the last key appropriately.
- if { [string compare $omethod "-btree"] == 0 } {
- set ret [eval {$db put} $txn \
- {$key [chop_data $method $first_key]}]
- error_check_good db_put $ret 0
- } else {
- # Recno
- set ret [$dbc get -first]
- set ret [eval {$dbc put} $pflags {-before $first_key}]
- error_check_bad dbc_put:DB_BEFORE $ret 0
- }
-
- # Now check that the last record matches the last record number
- set ret [eval {$db get} $txn $gflags {$last_keynum}]
- error_check_good \
- getn_last_after_put [lindex [lindex $ret 0] 1] $last_key
-
- # Now delete the first key in the database using a cursor
- puts "\tTest029.d: delete with cursor and verify renumber"
-
- set ret [$dbc get -first]
- error_check_good dbc_first $ret [list [list $key $first_key]]
-
- # Now delete at the cursor
- set ret [$dbc del]
- error_check_good dbc_del $ret 0
-
- # Now check the record numbers of the last keys again.
- # First try to get the old last key (shouldn't exist)
- set ret [eval {$db get} $txn $gflags {$last_keynum}]
- error_check_good get_last_after_cursor_del:$ret $ret [list]
-
- # Now try to get what we think should be the last key
- set ret [eval {$db get} $txn $gflags {[expr $last_keynum - 1]}]
- error_check_good \
- getn_after_cursor_del [lindex [lindex $ret 0] 1] $last_key
-
- # Re-put the first key and make sure that we renumber the last
- # key appropriately.
- puts "\tTest029.e: put with cursor and verify renumber"
- if { [string compare $omethod "-btree"] == 0 } {
- set ret [eval {$dbc put} \
- $pflags {-current $first_key}]
- error_check_good dbc_put:DB_CURRENT $ret 0
- } else {
- set ret [eval {$dbc put} $pflags {-before $first_key}]
- error_check_bad dbc_put:DB_BEFORE $ret 0
- }
-
- # Now check that the last record matches the last record number
- set ret [eval {$db get} $txn $gflags {$last_keynum}]
- error_check_good \
- get_after_cursor_reput [lindex [lindex $ret 0] 1] $last_key
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test030.tcl b/bdb/test/test030.tcl
deleted file mode 100644
index d91359f07a0..00000000000
--- a/bdb/test/test030.tcl
+++ /dev/null
@@ -1,231 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test030.tcl,v 11.18 2002/05/22 15:42:50 sue Exp $
-#
-# TEST test030
-# TEST Test DB_NEXT_DUP Functionality.
-proc test030 { method {nentries 10000} args } {
- global rand_init
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 ||
- [is_rbtree $method] == 1 } {
- puts "Test030 skipping for method $method"
- return
- }
- berkdb srand $rand_init
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test030.db
- set cntfile $testdir/cntfile.db
- set env NULL
- } else {
- set testfile test030.db
- set cntfile cntfile.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
-
- puts "Test030: $method ($args) $nentries DB_NEXT_DUP testing"
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- set db [eval {berkdb_open -create \
- -mode 0644 -dup} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Use a second DB to keep track of how many duplicates
- # we enter per key
-
- set cntdb [eval {berkdb_open -create \
- -mode 0644} $args {-btree $cntfile}]
- error_check_good dbopen:cntfile [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
- # We will add between 1 and 10 dups with values 1 ... dups
- # We'll verify each addition.
-
- set did [open $dict]
- puts "\tTest030.a: put and get duplicate keys."
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
-
- while { [gets $did str] != -1 && $count < $nentries } {
- set ndup [berkdb random_int 1 10]
-
- for { set i 1 } { $i <= $ndup } { incr i 1 } {
- set ctxn ""
- if { $txnenv == 1 } {
- set ct [$env txn]
- error_check_good txn \
- [is_valid_txn $ct $env] TRUE
- set ctxn "-txn $ct"
- }
- set ret [eval {$cntdb put} \
- $ctxn $pflags {$str [chop_data $method $ndup]}]
- error_check_good put_cnt $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$ct commit] 0
- }
- set datastr $i:$str
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good put $ret 0
- }
-
- # Now retrieve all the keys matching this key
- set x 0
- for {set ret [$dbc get -set $str]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -nextdup] } {
- incr x
-
- if { [llength $ret] == 0 } {
- break
- }
-
- set k [lindex [lindex $ret 0] 0]
- if { [string compare $k $str] != 0 } {
- break
- }
-
- set datastr [lindex [lindex $ret 0] 1]
- set d [data_of $datastr]
- error_check_good Test030:put $d $str
-
- set id [ id_of $datastr ]
- error_check_good Test030:dup# $id $x
- }
- error_check_good Test030:numdups $x $ndup
- incr count
- }
- close $did
-
- # Verify on sequential pass of entire file
- puts "\tTest030.b: sequential check"
-
- # We can't just set lastkey to a null string, since that might
- # be a key now!
- set lastkey "THIS STRING WILL NEVER BE A KEY"
-
- for {set ret [$dbc get -first]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -next] } {
-
- # Outer loop should always get a new key
-
- set k [lindex [lindex $ret 0] 0]
- error_check_bad outer_get_loop:key $k $lastkey
-
- set datastr [lindex [lindex $ret 0] 1]
- set d [data_of $datastr]
- set id [ id_of $datastr ]
-
- error_check_good outer_get_loop:data $d $k
- error_check_good outer_get_loop:id $id 1
-
- set lastkey $k
- # Figure out how may dups we should have
- if { $txnenv == 1 } {
- set ct [$env txn]
- error_check_good txn [is_valid_txn $ct $env] TRUE
- set ctxn "-txn $ct"
- }
- set ret [eval {$cntdb get} $ctxn $pflags {$k}]
- set ndup [lindex [lindex $ret 0] 1]
- if { $txnenv == 1 } {
- error_check_good txn [$ct commit] 0
- }
-
- set howmany 1
- for { set ret [$dbc get -nextdup] } \
- { [llength $ret] != 0 } \
- { set ret [$dbc get -nextdup] } {
- incr howmany
-
- set k [lindex [lindex $ret 0] 0]
- error_check_good inner_get_loop:key $k $lastkey
-
- set datastr [lindex [lindex $ret 0] 1]
- set d [data_of $datastr]
- set id [ id_of $datastr ]
-
- error_check_good inner_get_loop:data $d $k
- error_check_good inner_get_loop:id $id $howmany
-
- }
- error_check_good ndups_found $howmany $ndup
- }
-
- # Verify on key lookup
- puts "\tTest030.c: keyed check"
- set cnt_dbc [$cntdb cursor]
- for {set ret [$cnt_dbc get -first]} \
- {[llength $ret] != 0} \
- {set ret [$cnt_dbc get -next] } {
- set k [lindex [lindex $ret 0] 0]
-
- set howmany [lindex [lindex $ret 0] 1]
- error_check_bad cnt_seq:data [string length $howmany] 0
-
- set i 0
- for {set ret [$dbc get -set $k]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -nextdup] } {
- incr i
-
- set k [lindex [lindex $ret 0] 0]
-
- set datastr [lindex [lindex $ret 0] 1]
- set d [data_of $datastr]
- set id [ id_of $datastr ]
-
- error_check_good inner_get_loop:data $d $k
- error_check_good inner_get_loop:id $id $i
- }
- error_check_good keyed_count $i $howmany
-
- }
- error_check_good cnt_curs_close [$cnt_dbc close] 0
- error_check_good db_curs_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good cnt_file_close [$cntdb close] 0
- error_check_good db_file_close [$db close] 0
-}
diff --git a/bdb/test/test031.tcl b/bdb/test/test031.tcl
deleted file mode 100644
index 0006deb2d99..00000000000
--- a/bdb/test/test031.tcl
+++ /dev/null
@@ -1,230 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test031.tcl,v 11.24 2002/06/26 06:22:44 krinsky Exp $
-#
-# TEST test031
-# TEST Duplicate sorting functionality
-# TEST Make sure DB_NODUPDATA works.
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and "ndups" duplicates
-# TEST For the data field, prepend random five-char strings (see test032)
-# TEST that we force the duplicate sorting code to do something.
-# TEST Along the way, test that we cannot insert duplicate duplicates
-# TEST using DB_NODUPDATA.
-# TEST
-# TEST By setting ndups large, we can make this an off-page test
-# TEST After all are entered, retrieve all; verify output.
-# TEST Close file, reopen, do retrieve and re-verify.
-# TEST This does not work for recno
-proc test031 { method {nentries 10000} {ndups 5} {tnum 31} args } {
- global alphabet
- global rand_init
- source ./include.tcl
-
- berkdb srand $rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set checkdb $testdir/checkdb.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- set checkdb checkdb.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- puts "Test0$tnum: \
- $method ($args) $nentries small $ndups sorted dup key/data pairs"
- if { [is_record_based $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $omethod"
- return
- }
- set db [eval {berkdb_open -create \
- -mode 0644} $args {$omethod -dup -dupsort $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set check_db [eval {berkdb_open \
- -create -mode 0644} $args {-hash $checkdb}]
- error_check_good dbopen:check_db [is_valid_db $check_db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
- puts "\tTest0$tnum.a: Put/get loop, check nodupdata"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
- while { [gets $did str] != -1 && $count < $nentries } {
- # Re-initialize random string generator
- randstring_init $ndups
-
- set dups ""
- for { set i 1 } { $i <= $ndups } { incr i } {
- set pref [randstring]
- set dups $dups$pref
- set datastr $pref:$str
- if { $i == 2 } {
- set nodupstr $datastr
- }
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good put $ret 0
- }
-
- # Test DB_NODUPDATA using the DB handle
- set ret [eval {$db put -nodupdata} \
- $txn $pflags {$str [chop_data $method $nodupstr]}]
- error_check_good db_nodupdata [is_substr $ret "DB_KEYEXIST"] 1
-
- set ret [eval {$check_db put} \
- $txn $pflags {$str [chop_data $method $dups]}]
- error_check_good checkdb_put $ret 0
-
- # Now retrieve all the keys matching this key
- set x 0
- set lastdup ""
- # Test DB_NODUPDATA using cursor handle
- set ret [$dbc get -set $str]
- error_check_bad dbc_get [llength $ret] 0
- set datastr [lindex [lindex $ret 0] 1]
- error_check_bad dbc_data [string length $datastr] 0
- set ret [eval {$dbc put -nodupdata} \
- {$str [chop_data $method $datastr]}]
- error_check_good dbc_nodupdata [is_substr $ret "DB_KEYEXIST"] 1
-
- for {set ret [$dbc get -set $str]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -nextdup] } {
- set k [lindex [lindex $ret 0] 0]
- if { [string compare $k $str] != 0 } {
- break
- }
- set datastr [lindex [lindex $ret 0] 1]
- if {[string length $datastr] == 0} {
- break
- }
- if {[string compare \
- $lastdup [pad_data $method $datastr]] > 0} {
- error_check_good \
- sorted_dups($lastdup,$datastr) 0 1
- }
- incr x
- set lastdup $datastr
- }
- error_check_good "Test0$tnum:ndups:$str" $x $ndups
- incr count
- }
- error_check_good cursor_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.b: Checking file for correct duplicates"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open(2) [is_valid_cursor $dbc $db] TRUE
-
- set lastkey "THIS WILL NEVER BE A KEY VALUE"
- # no need to delete $lastkey
- set firsttimethru 1
- for {set ret [$dbc get -first]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -next] } {
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_bad data_check:$d [string length $d] 0
-
- if { [string compare $k $lastkey] != 0 } {
- # Remove last key from the checkdb
- if { $firsttimethru != 1 } {
- error_check_good check_db:del:$lastkey \
- [eval {$check_db del} $txn {$lastkey}] 0
- }
- set firsttimethru 0
- set lastdup ""
- set lastkey $k
- set dups [lindex [lindex [eval {$check_db get} \
- $txn {$k}] 0] 1]
- error_check_good check_db:get:$k \
- [string length $dups] [expr $ndups * 4]
- }
-
- if { [string compare $lastdup $d] > 0 } {
- error_check_good dup_check:$k:$d 0 1
- }
- set lastdup $d
-
- set pref [string range $d 0 3]
- set ndx [string first $pref $dups]
- error_check_good valid_duplicate [expr $ndx >= 0] 1
- set a [string range $dups 0 [expr $ndx - 1]]
- set b [string range $dups [expr $ndx + 4] end]
- set dups $a$b
- }
- # Remove last key from the checkdb
- if { [string length $lastkey] != 0 } {
- error_check_good check_db:del:$lastkey \
- [eval {$check_db del} $txn {$lastkey}] 0
- }
-
- # Make sure there is nothing left in check_db
-
- set check_c [eval {$check_db cursor} $txn]
- set ret [$check_c get -first]
- error_check_good check_c:get:$ret [llength $ret] 0
- error_check_good check_c:close [$check_c close] 0
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good check_db:close [$check_db close] 0
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test032.tcl b/bdb/test/test032.tcl
deleted file mode 100644
index 2076b744851..00000000000
--- a/bdb/test/test032.tcl
+++ /dev/null
@@ -1,231 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test032.tcl,v 11.23 2002/06/11 14:09:57 sue Exp $
-#
-# TEST test032
-# TEST DB_GET_BOTH, DB_GET_BOTH_RANGE
-# TEST
-# TEST Use the first 10,000 entries from the dictionary. Insert each with
-# TEST self as key and "ndups" duplicates. For the data field, prepend the
-# TEST letters of the alphabet in a random order so we force the duplicate
-# TEST sorting code to do something. By setting ndups large, we can make
-# TEST this an off-page test.
-# TEST
-# TEST Test the DB_GET_BOTH functionality by retrieving each dup in the file
-# TEST explicitly. Test the DB_GET_BOTH_RANGE functionality by retrieving
-# TEST the unique key prefix (cursor only). Finally test the failure case.
-proc test032 { method {nentries 10000} {ndups 5} {tnum 32} args } {
- global alphabet rand_init
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- berkdb srand $rand_init
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set checkdb $testdir/checkdb.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- set checkdb checkdb.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- puts "Test0$tnum:\
- $method ($args) $nentries small sorted $ndups dup key/data pairs"
- if { [is_record_based $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $omethod"
- return
- }
- set db [eval {berkdb_open -create -mode 0644 \
- $omethod -dup -dupsort} $args {$testfile} ]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set check_db [eval {berkdb_open \
- -create -mode 0644} $args {-hash $checkdb}]
- error_check_good dbopen:check_db [is_valid_db $check_db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
- puts "\tTest0$tnum.a: Put/get loop"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
- while { [gets $did str] != -1 && $count < $nentries } {
- # Re-initialize random string generator
- randstring_init $ndups
-
- set dups ""
- for { set i 1 } { $i <= $ndups } { incr i } {
- set pref [randstring]
- set dups $dups$pref
- set datastr $pref:$str
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good put $ret 0
- }
- set ret [eval {$check_db put} \
- $txn $pflags {$str [chop_data $method $dups]}]
- error_check_good checkdb_put $ret 0
-
- # Now retrieve all the keys matching this key
- set x 0
- set lastdup ""
- for {set ret [$dbc get -set $str]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -nextdup] } {
- set k [lindex [lindex $ret 0] 0]
- if { [string compare $k $str] != 0 } {
- break
- }
- set datastr [lindex [lindex $ret 0] 1]
- if {[string length $datastr] == 0} {
- break
- }
- if {[string compare $lastdup $datastr] > 0} {
- error_check_good \
- sorted_dups($lastdup,$datastr) 0 1
- }
- incr x
- set lastdup $datastr
- }
-
- error_check_good "Test0$tnum:ndups:$str" $x $ndups
- incr count
- }
- error_check_good cursor_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.b: Checking file for correct duplicates (no cursor)"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set check_c [eval {$check_db cursor} $txn]
- error_check_good check_c_open(2) \
- [is_valid_cursor $check_c $check_db] TRUE
-
- for {set ndx 0} {$ndx < [expr 4 * $ndups]} {incr ndx 4} {
- for {set ret [$check_c get -first]} \
- {[llength $ret] != 0} \
- {set ret [$check_c get -next] } {
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_bad data_check:$d [string length $d] 0
-
- set pref [string range $d $ndx [expr $ndx + 3]]
- set data $pref:$k
- set ret [eval {$db get} $txn {-get_both $k $data}]
- error_check_good \
- get_both_data:$k $ret [list [list $k $data]]
- }
- }
-
- $db sync
-
- # Now repeat the above test using cursor ops
- puts "\tTest0$tnum.c: Checking file for correct duplicates (cursor)"
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
-
- for {set ndx 0} {$ndx < [expr 4 * $ndups]} {incr ndx 4} {
- for {set ret [$check_c get -first]} \
- {[llength $ret] != 0} \
- {set ret [$check_c get -next] } {
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_bad data_check:$d [string length $d] 0
-
- set pref [string range $d $ndx [expr $ndx + 3]]
- set data $pref:$k
- set ret [eval {$dbc get} {-get_both $k $data}]
- error_check_good \
- curs_get_both_data:$k $ret [list [list $k $data]]
-
- set ret [eval {$dbc get} {-get_both_range $k $pref}]
- error_check_good \
- curs_get_both_range:$k $ret [list [list $k $data]]
- }
- }
-
- # Now check the error case
- puts "\tTest0$tnum.d: Check error case (no cursor)"
- for {set ret [$check_c get -first]} \
- {[llength $ret] != 0} \
- {set ret [$check_c get -next] } {
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_bad data_check:$d [string length $d] 0
-
- set data XXX$k
- set ret [eval {$db get} $txn {-get_both $k $data}]
- error_check_good error_case:$k [llength $ret] 0
- }
-
- # Now check the error case
- puts "\tTest0$tnum.e: Check error case (cursor)"
- for {set ret [$check_c get -first]} \
- {[llength $ret] != 0} \
- {set ret [$check_c get -next] } {
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_bad data_check:$d [string length $d] 0
-
- set data XXX$k
- set ret [eval {$dbc get} {-get_both $k $data}]
- error_check_good error_case:$k [llength $ret] 0
- }
-
- error_check_good check_c:close [$check_c close] 0
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good check_db:close [$check_db close] 0
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test033.tcl b/bdb/test/test033.tcl
deleted file mode 100644
index a7796ce99d6..00000000000
--- a/bdb/test/test033.tcl
+++ /dev/null
@@ -1,176 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test033.tcl,v 11.24 2002/08/08 15:38:11 bostic Exp $
-#
-# TEST test033
-# TEST DB_GET_BOTH without comparison function
-# TEST
-# TEST Use the first 10,000 entries from the dictionary. Insert each with
-# TEST self as key and data; add duplicate records for each. After all are
-# TEST entered, retrieve all and verify output using DB_GET_BOTH (on DB and
-# TEST DBC handles) and DB_GET_BOTH_RANGE (on a DBC handle) on existent and
-# TEST nonexistent keys.
-# TEST
-# TEST XXX
-# TEST This does not work for rbtree.
-proc test033 { method {nentries 10000} {ndups 5} {tnum 33} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- if { [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $method"
- return
- }
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
-
- puts "Test0$tnum: $method ($args) $nentries small $ndups dup key/data pairs"
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- # Duplicate data entries are not allowed in record based methods.
- if { [is_record_based $method] == 1 } {
- set db [eval {berkdb_open -create -mode 0644 \
- $omethod} $args {$testfile}]
- } else {
- set db [eval {berkdb_open -create -mode 0644 \
- $omethod -dup} $args {$testfile}]
- }
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
-
- # Allocate a cursor for DB_GET_BOTH_RANGE.
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
-
- puts "\tTest0$tnum.a: Put/get loop."
- # Here is the loop where we put and get each key/data pair
- set count 0
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- set ret [eval {$db put} $txn $pflags \
- {$key [chop_data $method $str]}]
- error_check_good put $ret 0
- } else {
- for { set i 1 } { $i <= $ndups } { incr i } {
- set datastr $i:$str
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good db_put $ret 0
- }
- }
-
- # Now retrieve all the keys matching this key and dup
- # for non-record based AMs.
- if { [is_record_based $method] == 1 } {
- test033_recno.check $db $dbc $method $str $txn $key
- } else {
- test033_check $db $dbc $method $str $txn $ndups
- }
- incr count
- }
-
- close $did
-
- puts "\tTest0$tnum.b: Verifying DB_GET_BOTH after creation."
- set count 0
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- # Now retrieve all the keys matching this key
- # for non-record based AMs.
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- test033_recno.check $db $dbc $method $str $txn $key
- } else {
- test033_check $db $dbc $method $str $txn $ndups
- }
- incr count
- }
- close $did
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
-
-# No testing of dups is done on record-based methods.
-proc test033_recno.check {db dbc method str txn key} {
- set ret [eval {$db get} $txn {-recno $key}]
- error_check_good "db_get:$method" \
- [lindex [lindex $ret 0] 1] [pad_data $method $str]
- set ret [$dbc get -get_both $key [pad_data $method $str]]
- error_check_good "db_get_both:$method" \
- [lindex [lindex $ret 0] 1] [pad_data $method $str]
-}
-
-# Testing of non-record-based methods includes duplicates
-# and get_both_range.
-proc test033_check {db dbc method str txn ndups} {
- for {set i 1} {$i <= $ndups } { incr i } {
- set datastr $i:$str
-
- set ret [eval {$db get} $txn {-get_both $str $datastr}]
- error_check_good "db_get_both:dup#" \
- [lindex [lindex $ret 0] 1] $datastr
-
- set ret [$dbc get -get_both $str $datastr]
- error_check_good "dbc_get_both:dup#" \
- [lindex [lindex $ret 0] 1] $datastr
-
- set ret [$dbc get -get_both_range $str $datastr]
- error_check_good "dbc_get_both_range:dup#" \
- [lindex [lindex $ret 0] 1] $datastr
- }
-
- # Now retrieve non-existent dup (i is ndups + 1)
- set datastr $i:$str
- set ret [eval {$db get} $txn {-get_both $str $datastr}]
- error_check_good db_get_both:dupfailure [llength $ret] 0
- set ret [$dbc get -get_both $str $datastr]
- error_check_good dbc_get_both:dupfailure [llength $ret] 0
- set ret [$dbc get -get_both_range $str $datastr]
- error_check_good dbc_get_both_range [llength $ret] 0
-}
diff --git a/bdb/test/test034.tcl b/bdb/test/test034.tcl
deleted file mode 100644
index 647ad940815..00000000000
--- a/bdb/test/test034.tcl
+++ /dev/null
@@ -1,17 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1998-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test034.tcl,v 11.8 2002/01/11 15:53:46 bostic Exp $
-#
-# TEST test034
-# TEST test032 with off-page duplicates
-# TEST DB_GET_BOTH, DB_GET_BOTH_RANGE functionality with off-page duplicates.
-proc test034 { method {nentries 10000} args} {
- # Test with off-page duplicates
- eval {test032 $method $nentries 20 34 -pagesize 512} $args
-
- # Test with multiple pages of off-page duplicates
- eval {test032 $method [expr $nentries / 10] 100 34 -pagesize 512} $args
-}
diff --git a/bdb/test/test035.tcl b/bdb/test/test035.tcl
deleted file mode 100644
index 06796b1e9aa..00000000000
--- a/bdb/test/test035.tcl
+++ /dev/null
@@ -1,16 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test035.tcl,v 11.8 2002/07/22 17:00:39 sue Exp $
-#
-# TEST test035
-# TEST Test033 with off-page duplicates
-# TEST DB_GET_BOTH functionality with off-page duplicates.
-proc test035 { method {nentries 10000} args} {
- # Test with off-page duplicates
- eval {test033 $method $nentries 20 35 -pagesize 512} $args
- # Test with multiple pages of off-page duplicates
- eval {test033 $method [expr $nentries / 10] 100 35 -pagesize 512} $args
-}
diff --git a/bdb/test/test036.tcl b/bdb/test/test036.tcl
deleted file mode 100644
index 4e54f363ff8..00000000000
--- a/bdb/test/test036.tcl
+++ /dev/null
@@ -1,173 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test036.tcl,v 11.18 2002/05/22 15:42:51 sue Exp $
-#
-# TEST test036
-# TEST Test KEYFIRST and KEYLAST when the key doesn't exist
-# TEST Put nentries key/data pairs (from the dictionary) using a cursor
-# TEST and KEYFIRST and KEYLAST (this tests the case where use use cursor
-# TEST put for non-existent keys).
-proc test036 { method {nentries 10000} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- if { [is_record_based $method] == 1 } {
- puts "Test036 skipping for method recno"
- return
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test036.db
- set env NULL
- } else {
- set testfile test036.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
-
- puts "Test036: $method ($args) $nentries equal key/data pairs"
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- set checkfunc test036_recno.check
- append gflags " -recno"
- } else {
- set checkfunc test036.check
- }
- puts "\tTest036.a: put/get loop KEYFIRST"
- # Here is the loop where we put and get each key/data pair
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor [is_valid_cursor $dbc $db] TRUE
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) $str
- } else {
- set key $str
- }
- set ret [eval {$dbc put} $pflags {-keyfirst $key $str}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good get [lindex [lindex $ret 0] 1] $str
- incr count
- }
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- puts "\tTest036.a: put/get loop KEYLAST"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor [is_valid_cursor $dbc $db] TRUE
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) $str
- } else {
- set key $str
- }
- set ret [eval {$dbc put} $txn $pflags {-keylast $key $str}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good get [lindex [lindex $ret 0] 1] $str
- incr count
- }
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest036.c: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary (or ints)
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- file rename -force $t1 $t3
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- filesort $t1 $t3
- }
-
-}
-
-# Check function for test036; keys and data are identical
-proc test036.check { key data } {
- error_check_good "key/data mismatch" $data $key
-}
-
-proc test036_recno.check { key data } {
- global dict
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data $kvals($key)
-}
diff --git a/bdb/test/test037.tcl b/bdb/test/test037.tcl
deleted file mode 100644
index 0b2e2989949..00000000000
--- a/bdb/test/test037.tcl
+++ /dev/null
@@ -1,196 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test037.tcl,v 11.18 2002/03/15 16:30:54 sue Exp $
-#
-# TEST test037
-# TEST Test DB_RMW
-proc test037 { method {nentries 100} args } {
- global encrypt
-
- source ./include.tcl
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then skip this test. It needs its own.
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test037 skipping for env $env"
- return
- }
-
- puts "Test037: RMW $method"
-
- set args [convert_args $method $args]
- set encargs ""
- set args [split_encargs $args encargs]
- set omethod [convert_method $method]
-
- # Create the database
- env_cleanup $testdir
- set testfile test037.db
-
- set local_env \
- [eval {berkdb_env -create -mode 0644 -txn} $encargs -home $testdir]
- error_check_good dbenv [is_valid_env $local_env] TRUE
-
- set db [eval {berkdb_open \
- -env $local_env -create -mode 0644 $omethod} $args {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
- set count 0
-
- set pflags ""
- set gflags ""
- set txn ""
-
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
-
- puts "\tTest037.a: Creating database"
- # Here is the loop where we put and get each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) [pad_data $method $str]
- } else {
- set key $str
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $txn $gflags {$key}]
- error_check_good get \
- [lindex [lindex $ret 0] 1] [pad_data $method $str]
- incr count
- }
- close $did
- error_check_good dbclose [$db close] 0
- error_check_good envclode [$local_env close] 0
-
- puts "\tTest037.b: Setting up environments"
-
- # Open local environment
- set env_cmd [concat berkdb_env -create -txn $encargs -home $testdir]
- set local_env [eval $env_cmd]
- error_check_good dbenv [is_valid_env $local_env] TRUE
-
- # Open local transaction
- set local_txn [$local_env txn]
- error_check_good txn_open [is_valid_txn $local_txn $local_env] TRUE
-
- # Open remote environment
- set f1 [open |$tclsh_path r+]
- puts $f1 "source $test_path/test.tcl"
-
- set remote_env [send_cmd $f1 $env_cmd]
- error_check_good remote:env_open [is_valid_env $remote_env] TRUE
-
- # Open remote transaction
- set remote_txn [send_cmd $f1 "$remote_env txn"]
- error_check_good \
- remote:txn_open [is_valid_txn $remote_txn $remote_env] TRUE
-
- # Now try put test without RMW. Gets on one site should not
- # lock out gets on another.
-
- # Open databases and dictionary
- puts "\tTest037.c: Opening databases"
- set did [open $dict]
- set rkey 0
-
- set db [berkdb_open -auto_commit -env $local_env $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set rdb [send_cmd $f1 \
- "berkdb_open -auto_commit -env $remote_env -mode 0644 $testfile"]
- error_check_good remote:dbopen [is_valid_db $rdb] TRUE
-
- puts "\tTest037.d: Testing without RMW"
-
- # Now, get a key and try to "get" it from both DBs.
- error_check_bad "gets on new open" [gets $did str] -1
- incr rkey
- if { [is_record_based $method] == 1 } {
- set key $rkey
- } else {
- set key $str
- }
-
- set rec [eval {$db get -txn $local_txn} $gflags {$key}]
- error_check_good local_get [lindex [lindex $rec 0] 1] \
- [pad_data $method $str]
-
- set r [send_timed_cmd $f1 0 "$rdb get -txn $remote_txn $gflags $key"]
- error_check_good remote_send $r 0
-
- # Now sleep before releasing local record lock
- tclsleep 5
- error_check_good local_commit [$local_txn commit] 0
-
- # Now get the remote result
- set remote_time [rcv_result $f1]
- error_check_good no_rmw_get:remote_time [expr $remote_time <= 1] 1
-
- # Commit the remote
- set r [send_cmd $f1 "$remote_txn commit"]
- error_check_good remote_commit $r 0
-
- puts "\tTest037.e: Testing with RMW"
-
- # Open local transaction
- set local_txn [$local_env txn]
- error_check_good \
- txn_open [is_valid_txn $local_txn $local_env] TRUE
-
- # Open remote transaction
- set remote_txn [send_cmd $f1 "$remote_env txn"]
- error_check_good remote:txn_open \
- [is_valid_txn $remote_txn $remote_env] TRUE
-
- # Now, get a key and try to "get" it from both DBs.
- error_check_bad "gets on new open" [gets $did str] -1
- incr rkey
- if { [is_record_based $method] == 1 } {
- set key $rkey
- } else {
- set key $str
- }
-
- set rec [eval {$db get -txn $local_txn -rmw} $gflags {$key}]
- error_check_good \
- local_get [lindex [lindex $rec 0] 1] [pad_data $method $str]
-
- set r [send_timed_cmd $f1 0 "$rdb get -txn $remote_txn $gflags $key"]
- error_check_good remote_send $r 0
-
- # Now sleep before releasing local record lock
- tclsleep 5
- error_check_good local_commit [$local_txn commit] 0
-
- # Now get the remote result
- set remote_time [rcv_result $f1]
- error_check_good rmw_get:remote_time [expr $remote_time > 4] 1
-
- # Commit the remote
- set r [send_cmd $f1 "$remote_txn commit"]
- error_check_good remote_commit $r 0
-
- # Close everything up: remote first
- set r [send_cmd $f1 "$rdb close"]
- error_check_good remote_db_close $r 0
-
- set r [send_cmd $f1 "$remote_env close"]
-
- # Close locally
- error_check_good db_close [$db close] 0
- $local_env close
- close $did
- close $f1
-}
diff --git a/bdb/test/test038.tcl b/bdb/test/test038.tcl
deleted file mode 100644
index 3babde8fe0b..00000000000
--- a/bdb/test/test038.tcl
+++ /dev/null
@@ -1,227 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test038.tcl,v 11.23 2002/06/11 14:09:57 sue Exp $
-#
-# TEST test038
-# TEST DB_GET_BOTH, DB_GET_BOTH_RANGE on deleted items
-# TEST
-# TEST Use the first 10,000 entries from the dictionary. Insert each with
-# TEST self as key and "ndups" duplicates. For the data field, prepend the
-# TEST letters of the alphabet in a random order so we force the duplicate
-# TEST sorting code to do something. By setting ndups large, we can make
-# TEST this an off-page test
-# TEST
-# TEST Test the DB_GET_BOTH and DB_GET_BOTH_RANGE functionality by retrieving
-# TEST each dup in the file explicitly. Then remove each duplicate and try
-# TEST the retrieval again.
-proc test038 { method {nentries 10000} {ndups 5} {tnum 38} args } {
- global alphabet
- global rand_init
- source ./include.tcl
-
- berkdb srand $rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $method"
- return
- }
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set checkdb $testdir/checkdb.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- set checkdb checkdb.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- puts "Test0$tnum: \
- $method ($args) $nentries small sorted dup key/data pairs"
- set db [eval {berkdb_open -create -mode 0644 \
- $omethod -dup -dupsort} $args {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set check_db [eval {berkdb_open \
- -create -mode 0644 -hash} $args {$checkdb}]
- error_check_good dbopen:check_db [is_valid_db $check_db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
- puts "\tTest0$tnum.a: Put/get loop"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
- while { [gets $did str] != -1 && $count < $nentries } {
- set dups ""
- for { set i 1 } { $i <= $ndups } { incr i } {
- set pref \
- [string index $alphabet [berkdb random_int 0 25]]
- set pref $pref[string \
- index $alphabet [berkdb random_int 0 25]]
- while { [string first $pref $dups] != -1 } {
- set pref [string toupper $pref]
- if { [string first $pref $dups] != -1 } {
- set pref [string index $alphabet \
- [berkdb random_int 0 25]]
- set pref $pref[string index $alphabet \
- [berkdb random_int 0 25]]
- }
- }
- if { [string length $dups] == 0 } {
- set dups $pref
- } else {
- set dups "$dups $pref"
- }
- set datastr $pref:$str
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good put $ret 0
- }
- set ret [eval {$check_db put} \
- $txn $pflags {$str [chop_data $method $dups]}]
- error_check_good checkdb_put $ret 0
-
- # Now retrieve all the keys matching this key
- set x 0
- set lastdup ""
- for {set ret [$dbc get -set $str]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -nextdup] } {
- set k [lindex [lindex $ret 0] 0]
- if { [string compare $k $str] != 0 } {
- break
- }
- set datastr [lindex [lindex $ret 0] 1]
- if {[string length $datastr] == 0} {
- break
- }
- if {[string compare $lastdup $datastr] > 0} {
- error_check_good sorted_dups($lastdup,$datastr)\
- 0 1
- }
- incr x
- set lastdup $datastr
- }
- error_check_good "Test0$tnum:ndups:$str" $x $ndups
- incr count
- }
- error_check_good cursor_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- close $did
-
- # Now check the duplicates, then delete then recheck
- puts "\tTest0$tnum.b: Checking and Deleting duplicates"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
- set check_c [eval {$check_db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $check_c $check_db] TRUE
-
- for {set ndx 0} {$ndx < $ndups} {incr ndx} {
- for {set ret [$check_c get -first]} \
- {[llength $ret] != 0} \
- {set ret [$check_c get -next] } {
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_bad data_check:$d [string length $d] 0
-
- set nn [expr $ndx * 3]
- set pref [string range $d $nn [expr $nn + 1]]
- set data $pref:$k
- set ret [$dbc get -get_both $k $data]
- error_check_good \
- get_both_key:$k [lindex [lindex $ret 0] 0] $k
- error_check_good \
- get_both_data:$k [lindex [lindex $ret 0] 1] $data
-
- set ret [$dbc get -get_both_range $k $pref]
- error_check_good \
- get_both_key:$k [lindex [lindex $ret 0] 0] $k
- error_check_good \
- get_both_data:$k [lindex [lindex $ret 0] 1] $data
-
- set ret [$dbc del]
- error_check_good del $ret 0
-
- set ret [eval {$db get} $txn {-get_both $k $data}]
- error_check_good error_case:$k [llength $ret] 0
-
- # We should either not find anything (if deleting the
- # largest duplicate in the set) or a duplicate that
- # sorts larger than the one we deleted.
- set ret [$dbc get -get_both_range $k $pref]
- if { [llength $ret] != 0 } {
- set datastr [lindex [lindex $ret 0] 1]]
- if {[string compare \
- $pref [lindex [lindex $ret 0] 1]] >= 0} {
- error_check_good \
- error_case_range:sorted_dups($pref,$datastr) 0 1
- }
- }
-
- if {$ndx != 0} {
- set n [expr ($ndx - 1) * 3]
- set pref [string range $d $n [expr $n + 1]]
- set data $pref:$k
- set ret \
- [eval {$db get} $txn {-get_both $k $data}]
- error_check_good error_case:$k [llength $ret] 0
- }
- }
- }
-
- error_check_good check_c:close [$check_c close] 0
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- error_check_good check_db:close [$check_db close] 0
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test039.tcl b/bdb/test/test039.tcl
deleted file mode 100644
index 2bbc83ebe05..00000000000
--- a/bdb/test/test039.tcl
+++ /dev/null
@@ -1,211 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test039.tcl,v 11.20 2002/06/11 14:09:57 sue Exp $
-#
-# TEST test039
-# TEST DB_GET_BOTH/DB_GET_BOTH_RANGE on deleted items without comparison
-# TEST function.
-# TEST
-# TEST Use the first 10,000 entries from the dictionary. Insert each with
-# TEST self as key and "ndups" duplicates. For the data field, prepend the
-# TEST letters of the alphabet in a random order so we force the duplicate
-# TEST sorting code to do something. By setting ndups large, we can make
-# TEST this an off-page test.
-# TEST
-# TEST Test the DB_GET_BOTH and DB_GET_BOTH_RANGE functionality by retrieving
-# TEST each dup in the file explicitly. Then remove each duplicate and try
-# TEST the retrieval again.
-proc test039 { method {nentries 10000} {ndups 5} {tnum 39} args } {
- global alphabet
- global rand_init
- source ./include.tcl
-
- berkdb srand $rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $method"
- return
- }
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set checkdb $testdir/checkdb.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- set checkdb checkdb.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- cleanup $testdir $env
-
- puts "Test0$tnum: $method $nentries \
- small $ndups unsorted dup key/data pairs"
-
- set db [eval {berkdb_open -create -mode 0644 \
- $omethod -dup} $args {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set check_db [eval \
- {berkdb_open -create -mode 0644 -hash} $args {$checkdb}]
- error_check_good dbopen:check_db [is_valid_db $check_db] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
- puts "\tTest0$tnum.a: Put/get loop"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
- while { [gets $did str] != -1 && $count < $nentries } {
- set dups ""
- for { set i 1 } { $i <= $ndups } { incr i } {
- set pref \
- [string index $alphabet [berkdb random_int 0 25]]
- set pref $pref[string \
- index $alphabet [berkdb random_int 0 25]]
- while { [string first $pref $dups] != -1 } {
- set pref [string toupper $pref]
- if { [string first $pref $dups] != -1 } {
- set pref [string index $alphabet \
- [berkdb random_int 0 25]]
- set pref $pref[string index $alphabet \
- [berkdb random_int 0 25]]
- }
- }
- if { [string length $dups] == 0 } {
- set dups $pref
- } else {
- set dups "$dups $pref"
- }
- set datastr $pref:$str
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good put $ret 0
- }
- set ret [eval {$check_db put} \
- $txn $pflags {$str [chop_data $method $dups]}]
- error_check_good checkdb_put $ret 0
-
- # Now retrieve all the keys matching this key
- set x 0
- set lastdup ""
- for {set ret [$dbc get -set $str]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -nextdup] } {
- set k [lindex [lindex $ret 0] 0]
- if { [string compare $k $str] != 0 } {
- break
- }
- set datastr [lindex [lindex $ret 0] 1]
- if {[string length $datastr] == 0} {
- break
- }
- set xx [expr $x * 3]
- set check_data \
- [string range $dups $xx [expr $xx + 1]]:$k
- error_check_good retrieve $datastr $check_data
- incr x
- }
- error_check_good "Test0$tnum:ndups:$str" $x $ndups
- incr count
- }
- error_check_good cursor_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- close $did
-
- # Now check the duplicates, then delete then recheck
- puts "\tTest0$tnum.b: Checking and Deleting duplicates"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
- set check_c [eval {$check_db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $check_c $check_db] TRUE
-
- for {set ndx 0} {$ndx < $ndups} {incr ndx} {
- for {set ret [$check_c get -first]} \
- {[llength $ret] != 0} \
- {set ret [$check_c get -next] } {
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_bad data_check:$d [string length $d] 0
-
- set nn [expr $ndx * 3]
- set pref [string range $d $nn [expr $nn + 1]]
- set data $pref:$k
- set ret [$dbc get -get_both $k $data]
- error_check_good \
- get_both_key:$k [lindex [lindex $ret 0] 0] $k
- error_check_good \
- get_both_data:$k [lindex [lindex $ret 0] 1] $data
-
- set ret [$dbc del]
- error_check_good del $ret 0
-
- set ret [$dbc get -get_both $k $data]
- error_check_good get_both:$k [llength $ret] 0
-
- set ret [$dbc get -get_both_range $k $data]
- error_check_good get_both_range:$k [llength $ret] 0
-
- if {$ndx != 0} {
- set n [expr ($ndx - 1) * 3]
- set pref [string range $d $n [expr $n + 1]]
- set data $pref:$k
- set ret [$dbc get -get_both $k $data]
- error_check_good error_case:$k [llength $ret] 0
- }
- }
- }
-
- error_check_good check_c:close [$check_c close] 0
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- error_check_good check_db:close [$check_db close] 0
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test040.tcl b/bdb/test/test040.tcl
deleted file mode 100644
index 1856f78fc2e..00000000000
--- a/bdb/test/test040.tcl
+++ /dev/null
@@ -1,17 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1998-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test040.tcl,v 11.6 2002/01/11 15:53:47 bostic Exp $
-#
-# TEST test040
-# TEST Test038 with off-page duplicates
-# TEST DB_GET_BOTH functionality with off-page duplicates.
-proc test040 { method {nentries 10000} args} {
- # Test with off-page duplicates
- eval {test038 $method $nentries 20 40 -pagesize 512} $args
-
- # Test with multiple pages of off-page duplicates
- eval {test038 $method [expr $nentries / 10] 100 40 -pagesize 512} $args
-}
diff --git a/bdb/test/test041.tcl b/bdb/test/test041.tcl
deleted file mode 100644
index fdcbdbef3d7..00000000000
--- a/bdb/test/test041.tcl
+++ /dev/null
@@ -1,17 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test041.tcl,v 11.6 2002/01/11 15:53:47 bostic Exp $
-#
-# TEST test041
-# TEST Test039 with off-page duplicates
-# TEST DB_GET_BOTH functionality with off-page duplicates.
-proc test041 { method {nentries 10000} args} {
- # Test with off-page duplicates
- eval {test039 $method $nentries 20 41 -pagesize 512} $args
-
- # Test with multiple pages of off-page duplicates
- eval {test039 $method [expr $nentries / 10] 100 41 -pagesize 512} $args
-}
diff --git a/bdb/test/test042.tcl b/bdb/test/test042.tcl
deleted file mode 100644
index 9f444b8349c..00000000000
--- a/bdb/test/test042.tcl
+++ /dev/null
@@ -1,181 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test042.tcl,v 11.37 2002/09/05 17:23:07 sandstro Exp $
-#
-# TEST test042
-# TEST Concurrent Data Store test (CDB)
-# TEST
-# TEST Multiprocess DB test; verify that locking is working for the
-# TEST concurrent access method product.
-# TEST
-# TEST Use the first "nentries" words from the dictionary. Insert each with
-# TEST self as key and a fixed, medium length data string. Then fire off
-# TEST multiple processes that bang on the database. Each one should try to
-# TEST read and write random keys. When they rewrite, they'll append their
-# TEST pid to the data string (sometimes doing a rewrite sometimes doing a
-# TEST partial put). Some will use cursors to traverse through a few keys
-# TEST before finding one to write.
-
-proc test042 { method {nentries 1000} args } {
- global encrypt
-
- #
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test042 skipping for env $env"
- return
- }
-
- set args [convert_args $method $args]
- if { $encrypt != 0 } {
- puts "Test042 skipping for security"
- return
- }
- test042_body $method $nentries 0 $args
- test042_body $method $nentries 1 $args
-}
-
-proc test042_body { method nentries alldb args } {
- source ./include.tcl
-
- if { $alldb } {
- set eflag "-cdb -cdb_alldb"
- } else {
- set eflag "-cdb"
- }
- puts "Test042: CDB Test ($eflag) $method $nentries"
-
- # Set initial parameters
- set do_exit 0
- set iter 10000
- set procs 5
-
- # Process arguments
- set oargs ""
- for { set i 0 } { $i < [llength $args] } {incr i} {
- switch -regexp -- [lindex $args $i] {
- -dir { incr i; set testdir [lindex $args $i] }
- -iter { incr i; set iter [lindex $args $i] }
- -procs { incr i; set procs [lindex $args $i] }
- -exit { set do_exit 1 }
- default { append oargs " " [lindex $args $i] }
- }
- }
-
- # Create the database and open the dictionary
- set testfile test042.db
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
-
- env_cleanup $testdir
-
- set env [eval {berkdb_env -create} $eflag -home $testdir]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- # Env is created, now set up database
- test042_dbinit $env $nentries $method $oargs $testfile 0
- if { $alldb } {
- for { set i 1 } {$i < $procs} {incr i} {
- test042_dbinit $env $nentries $method $oargs \
- $testfile $i
- }
- }
-
- # Remove old mpools and Open/create the lock and mpool regions
- error_check_good env:close:$env [$env close] 0
- set ret [berkdb envremove -home $testdir]
- error_check_good env_remove $ret 0
-
- set env [eval {berkdb_env -create} $eflag -home $testdir]
- error_check_good dbenv [is_valid_widget $env env] TRUE
-
- if { $do_exit == 1 } {
- return
- }
-
- # Now spawn off processes
- berkdb debug_check
- puts "\tTest042.b: forking off $procs children"
- set pidlist {}
-
- for { set i 0 } {$i < $procs} {incr i} {
- if { $alldb } {
- set tf $testfile$i
- } else {
- set tf ${testfile}0
- }
- puts "exec $tclsh_path $test_path/wrap.tcl \
- mdbscript.tcl $testdir/test042.$i.log \
- $method $testdir $tf $nentries $iter $i $procs &"
- set p [exec $tclsh_path $test_path/wrap.tcl \
- mdbscript.tcl $testdir/test042.$i.log $method \
- $testdir $tf $nentries $iter $i $procs &]
- lappend pidlist $p
- }
- puts "Test042: $procs independent processes now running"
- watch_procs $pidlist
-
- # Check for test failure
- set e [eval findfail [glob $testdir/test042.*.log]]
- error_check_good "FAIL: error message(s) in log files" $e 0
-
- # Test is done, blow away lock and mpool region
- reset_env $env
-}
-
-# If we are renumbering, then each time we delete an item, the number of
-# items in the file is temporarily decreased, so the highest record numbers
-# do not exist. To make sure this doesn't happen, we never generate the
-# highest few record numbers as keys.
-#
-# For record-based methods, record numbers begin at 1, while for other keys,
-# we begin at 0 to index into an array.
-proc rand_key { method nkeys renum procs} {
- if { $renum == 1 } {
- return [berkdb random_int 1 [expr $nkeys - $procs]]
- } elseif { [is_record_based $method] == 1 } {
- return [berkdb random_int 1 $nkeys]
- } else {
- return [berkdb random_int 0 [expr $nkeys - 1]]
- }
-}
-
-proc test042_dbinit { env nentries method oargs tf ext } {
- global datastr
- source ./include.tcl
-
- set omethod [convert_method $method]
- set db [eval {berkdb_open -env $env -create \
- -mode 0644 $omethod} $oargs {$tf$ext}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put each key/data pair
- puts "\tTest042.a: put loop $tf$ext"
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $datastr]}]
- error_check_good put:$db $ret 0
- incr count
- }
- close $did
- error_check_good close:$db [$db close] 0
-}
diff --git a/bdb/test/test043.tcl b/bdb/test/test043.tcl
deleted file mode 100644
index eea7ec86d54..00000000000
--- a/bdb/test/test043.tcl
+++ /dev/null
@@ -1,192 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test043.tcl,v 11.17 2002/05/22 15:42:52 sue Exp $
-#
-# TEST test043
-# TEST Recno renumbering and implicit creation test
-# TEST Test the Record number implicit creation and renumbering options.
-proc test043 { method {nentries 10000} args} {
- source ./include.tcl
-
- set do_renumber [is_rrecno $method]
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test043: $method ($args)"
-
- if { [is_record_based $method] != 1 } {
- puts "Test043 skipping for method $method"
- return
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test043.db
- set env NULL
- } else {
- set testfile test043.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- # Create the database
- set db [eval {berkdb_open -create -mode 0644} $args \
- {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set pflags ""
- set gflags " -recno"
- set txn ""
-
- # First test implicit creation and retrieval
- set count 1
- set interval 5
- if { $nentries < $interval } {
- set nentries [expr $interval + 1]
- }
- puts "\tTest043.a: insert keys at $interval record intervals"
- while { $count <= $nentries } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$count [chop_data $method $count]}]
- error_check_good "$db put $count" $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- set last $count
- incr count $interval
- }
-
- puts "\tTest043.b: get keys using DB_FIRST/DB_NEXT"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good "$db cursor" [is_valid_cursor $dbc $db] TRUE
-
- set check 1
- for { set rec [$dbc get -first] } { [llength $rec] != 0 } {
- set rec [$dbc get -next] } {
- set k [lindex [lindex $rec 0] 0]
- set d [pad_data $method [lindex [lindex $rec 0] 1]]
- error_check_good "$dbc get key==data" [pad_data $method $k] $d
- error_check_good "$dbc get sequential" $k $check
- if { $k > $nentries } {
- error_check_good "$dbc get key too large" $k $nentries
- }
- incr check $interval
- }
-
- # Now make sure that we get DB_KEYEMPTY for non-existent keys
- puts "\tTest043.c: Retrieve non-existent keys"
- global errorInfo
-
- set check 1
- for { set rec [$dbc get -first] } { [llength $rec] != 0 } {
- set rec [$dbc get -next] } {
- set k [lindex [lindex $rec 0] 0]
-
- set ret [eval {$db get} $txn $gflags {[expr $k + 1]}]
- error_check_good "$db \
- get [expr $k + 1]" $ret [list]
-
- incr check $interval
- # Make sure we don't do a retrieve past the end of file
- if { $check >= $last } {
- break
- }
- }
-
- # Now try deleting and make sure the right thing happens.
- puts "\tTest043.d: Delete tests"
- set rec [$dbc get -first]
- error_check_bad "$dbc get -first" [llength $rec] 0
- error_check_good "$dbc get -first key" [lindex [lindex $rec 0] 0] 1
- error_check_good "$dbc get -first data" \
- [lindex [lindex $rec 0] 1] [pad_data $method 1]
-
- # Delete the first item
- error_check_good "$dbc del" [$dbc del] 0
-
- # Retrieving 1 should always fail
- set ret [eval {$db get} $txn $gflags {1}]
- error_check_good "$db get 1" $ret [list]
-
- # Now, retrieving other keys should work; keys will vary depending
- # upon renumbering.
- if { $do_renumber == 1 } {
- set count [expr 0 + $interval]
- set max [expr $nentries - 1]
- } else {
- set count [expr 1 + $interval]
- set max $nentries
- }
-
- while { $count <= $max } {
- set rec [eval {$db get} $txn $gflags {$count}]
- if { $do_renumber == 1 } {
- set data [expr $count + 1]
- } else {
- set data $count
- }
- error_check_good "$db get $count" \
- [pad_data $method $data] [lindex [lindex $rec 0] 1]
- incr count $interval
- }
- set max [expr $count - $interval]
-
- puts "\tTest043.e: Verify LAST/PREV functionality"
- set count $max
- for { set rec [$dbc get -last] } { [llength $rec] != 0 } {
- set rec [$dbc get -prev] } {
- set k [lindex [lindex $rec 0] 0]
- set d [lindex [lindex $rec 0] 1]
- if { $do_renumber == 1 } {
- set data [expr $k + 1]
- } else {
- set data $k
- }
- error_check_good \
- "$dbc get key==data" [pad_data $method $data] $d
- error_check_good "$dbc get sequential" $k $count
- if { $k > $nentries } {
- error_check_good "$dbc get key too large" $k $nentries
- }
- set count [expr $count - $interval]
- if { $count < 1 } {
- break
- }
- }
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test044.tcl b/bdb/test/test044.tcl
deleted file mode 100644
index 67cf3ea24b8..00000000000
--- a/bdb/test/test044.tcl
+++ /dev/null
@@ -1,250 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test044.tcl,v 11.32 2002/07/16 20:53:04 bostic Exp $
-#
-# TEST test044
-# TEST Small system integration tests
-# TEST Test proper functioning of the checkpoint daemon,
-# TEST recovery, transactions, etc.
-# TEST
-# TEST System integration DB test: verify that locking, recovery, checkpoint,
-# TEST and all the other utilities basically work.
-# TEST
-# TEST The test consists of $nprocs processes operating on $nfiles files. A
-# TEST transaction consists of adding the same key/data pair to some random
-# TEST number of these files. We generate a bimodal distribution in key size
-# TEST with 70% of the keys being small (1-10 characters) and the remaining
-# TEST 30% of the keys being large (uniform distribution about mean $key_avg).
-# TEST If we generate a key, we first check to make sure that the key is not
-# TEST already in the dataset. If it is, we do a lookup.
-#
-# XXX
-# This test uses grow-only files currently!
-proc test044 { method {nprocs 5} {nfiles 10} {cont 0} args } {
- source ./include.tcl
- global encrypt
- global rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- berkdb srand $rand_init
-
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test044 skipping for env $env"
- return
- }
- if { $encrypt != 0 } {
- puts "Test044 skipping for security"
- return
- }
-
- puts "Test044: system integration test db $method $nprocs processes \
- on $nfiles files"
-
- # Parse options
- set otherargs ""
- set key_avg 10
- set data_avg 20
- set do_exit 0
- for { set i 0 } { $i < [llength $args] } {incr i} {
- switch -regexp -- [lindex $args $i] {
- -key_avg { incr i; set key_avg [lindex $args $i] }
- -data_avg { incr i; set data_avg [lindex $args $i] }
- -testdir { incr i; set testdir [lindex $args $i] }
- -x.* { set do_exit 1 }
- default {
- lappend otherargs [lindex $args $i]
- }
- }
- }
-
- if { $cont == 0 } {
- # Create the database and open the dictionary
- env_cleanup $testdir
-
- # Create an environment
- puts "\tTest044.a: creating environment and $nfiles files"
- set dbenv [berkdb_env -create -txn -home $testdir]
- error_check_good env_open [is_valid_env $dbenv] TRUE
-
- # Create a bunch of files
- set m $method
-
- for { set i 0 } { $i < $nfiles } { incr i } {
- if { $method == "all" } {
- switch [berkdb random_int 1 2] {
- 1 { set m -btree }
- 2 { set m -hash }
- }
- } else {
- set m $omethod
- }
-
- set db [eval {berkdb_open -env $dbenv -create \
- -mode 0644 $m} $otherargs {test044.$i.db}]
- error_check_good dbopen [is_valid_db $db] TRUE
- error_check_good db_close [$db close] 0
- }
- }
-
- # Close the environment
- $dbenv close
-
- if { $do_exit == 1 } {
- return
- }
-
- # Database is created, now fork off the kids.
- puts "\tTest044.b: forking off $nprocs processes and utilities"
- set cycle 1
- set ncycles 3
- while { $cycle <= $ncycles } {
- set dbenv [berkdb_env -create -txn -home $testdir]
- error_check_good env_open [is_valid_env $dbenv] TRUE
-
- # Fire off deadlock detector and checkpointer
- puts "Beginning cycle $cycle"
- set ddpid [exec $util_path/db_deadlock -h $testdir -t 5 &]
- set cppid [exec $util_path/db_checkpoint -h $testdir -p 2 &]
- puts "Deadlock detector: $ddpid Checkpoint daemon $cppid"
-
- set pidlist {}
- for { set i 0 } {$i < $nprocs} {incr i} {
- set p [exec $tclsh_path \
- $test_path/sysscript.tcl $testdir \
- $nfiles $key_avg $data_avg $omethod \
- >& $testdir/test044.$i.log &]
- lappend pidlist $p
- }
- set sleep [berkdb random_int 300 600]
- puts \
-"[timestamp] $nprocs processes running $pidlist for $sleep seconds"
- tclsleep $sleep
-
- # Now simulate a crash
- puts "[timestamp] Crashing"
-
- #
- # The environment must remain open until this point to get
- # proper sharing (using the paging file) on Win/9X. [#2342]
- #
- error_check_good env_close [$dbenv close] 0
-
- tclkill $ddpid
- tclkill $cppid
-
- foreach p $pidlist {
- tclkill $p
- }
-
- # Check for test failure
- set e [eval findfail [glob $testdir/test044.*.log]]
- error_check_good "FAIL: error message(s) in log files" $e 0
-
- # Now run recovery
- test044_verify $testdir $nfiles
- incr cycle
- }
-}
-
-proc test044_usage { } {
- puts -nonewline "test044 method nentries [-d directory] [-i iterations]"
- puts " [-p procs] -x"
-}
-
-proc test044_verify { dir nfiles } {
- source ./include.tcl
-
- # Save everything away in case something breaks
-# for { set f 0 } { $f < $nfiles } {incr f} {
-# file copy -force $dir/test044.$f.db $dir/test044.$f.save1
-# }
-# foreach f [glob $dir/log.*] {
-# if { [is_substr $f save] == 0 } {
-# file copy -force $f $f.save1
-# }
-# }
-
- # Run recovery and then read through all the database files to make
- # sure that they all look good.
-
- puts "\tTest044.verify: Running recovery and verifying file contents"
- set stat [catch {exec $util_path/db_recover -h $dir} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- }
-
- # Save everything away in case something breaks
-# for { set f 0 } { $f < $nfiles } {incr f} {
-# file copy -force $dir/test044.$f.db $dir/test044.$f.save2
-# }
-# foreach f [glob $dir/log.*] {
-# if { [is_substr $f save] == 0 } {
-# file copy -force $f $f.save2
-# }
-# }
-
- for { set f 0 } { $f < $nfiles } { incr f } {
- set db($f) [berkdb_open $dir/test044.$f.db]
- error_check_good $f:dbopen [is_valid_db $db($f)] TRUE
-
- set cursors($f) [$db($f) cursor]
- error_check_bad $f:cursor_open $cursors($f) NULL
- error_check_good \
- $f:cursor_open [is_substr $cursors($f) $db($f)] 1
- }
-
- for { set f 0 } { $f < $nfiles } { incr f } {
- for {set d [$cursors($f) get -first] } \
- { [string length $d] != 0 } \
- { set d [$cursors($f) get -next] } {
-
- set k [lindex [lindex $d 0] 0]
- set d [lindex [lindex $d 0] 1]
-
- set flist [zero_list $nfiles]
- set r $d
- while { [set ndx [string first : $r]] != -1 } {
- set fnum [string range $r 0 [expr $ndx - 1]]
- if { [lindex $flist $fnum] == 0 } {
- set fl "-set"
- } else {
- set fl "-next"
- }
-
- if { $fl != "-set" || $fnum != $f } {
- if { [string compare $fl "-set"] == 0} {
- set full [$cursors($fnum) \
- get -set $k]
- } else {
- set full [$cursors($fnum) \
- get -next]
- }
- set key [lindex [lindex $full 0] 0]
- set rec [lindex [lindex $full 0] 1]
- error_check_good \
- $f:dbget_$fnum:key $key $k
- error_check_good \
- $f:dbget_$fnum:data $rec $d
- }
-
- set flist [lreplace $flist $fnum $fnum 1]
- incr ndx
- set r [string range $r $ndx end]
- }
- }
- }
-
- for { set f 0 } { $f < $nfiles } { incr f } {
- error_check_good $cursors($f) [$cursors($f) close] 0
- error_check_good db_close:$f [$db($f) close] 0
- }
-}
diff --git a/bdb/test/test045.tcl b/bdb/test/test045.tcl
deleted file mode 100644
index 3825135facd..00000000000
--- a/bdb/test/test045.tcl
+++ /dev/null
@@ -1,123 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test045.tcl,v 11.24 2002/02/07 17:50:10 sue Exp $
-#
-# TEST test045
-# TEST Small random tester
-# TEST Runs a number of random add/delete/retrieve operations.
-# TEST Tests both successful conditions and error conditions.
-# TEST
-# TEST Run the random db tester on the specified access method.
-#
-# Options are:
-# -adds <maximum number of keys before you disable adds>
-# -cursors <number of cursors>
-# -dataavg <average data size>
-# -delete <minimum number of keys before you disable deletes>
-# -dups <allow duplicates in file>
-# -errpct <Induce errors errpct of the time>
-# -init <initial number of entries in database>
-# -keyavg <average key size>
-proc test045 { method {nops 10000} args } {
- source ./include.tcl
- global encrypt
-
- #
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test045 skipping for env $env"
- return
- }
- set args [convert_args $method $args]
- if { $encrypt != 0 } {
- puts "Test045 skipping for security"
- return
- }
- set omethod [convert_method $method]
-
- puts "Test045: Random tester on $method for $nops operations"
-
- # Set initial parameters
- set adds [expr $nops * 10]
- set cursors 5
- set dataavg 40
- set delete $nops
- set dups 0
- set errpct 0
- set init 0
- if { [is_record_based $method] == 1 } {
- set keyavg 10
- } else {
- set keyavg 25
- }
-
- # Process arguments
- set oargs ""
- for { set i 0 } { $i < [llength $args] } {incr i} {
- switch -regexp -- [lindex $args $i] {
- -adds { incr i; set adds [lindex $args $i] }
- -cursors { incr i; set cursors [lindex $args $i] }
- -dataavg { incr i; set dataavg [lindex $args $i] }
- -delete { incr i; set delete [lindex $args $i] }
- -dups { incr i; set dups [lindex $args $i] }
- -errpct { incr i; set errpct [lindex $args $i] }
- -init { incr i; set init [lindex $args $i] }
- -keyavg { incr i; set keyavg [lindex $args $i] }
- -extent { incr i;
- lappend oargs "-extent" "100" }
- default { lappend oargs [lindex $args $i] }
- }
- }
-
- # Create the database and and initialize it.
- set root $testdir/test045
- set f $root.db
- env_cleanup $testdir
-
- # Run the script with 3 times the number of initial elements to
- # set it up.
- set db [eval {berkdb_open \
- -create -mode 0644 $omethod} $oargs {$f}]
- error_check_good dbopen:$f [is_valid_db $db] TRUE
-
- set r [$db close]
- error_check_good dbclose:$f $r 0
-
- # We redirect standard out, but leave standard error here so we
- # can see errors.
-
- puts "\tTest045.a: Initializing database"
- if { $init != 0 } {
- set n [expr 3 * $init]
- exec $tclsh_path \
- $test_path/dbscript.tcl $method $f $n \
- 1 $init $n $keyavg $dataavg $dups 0 -1 \
- > $testdir/test045.init
- }
- # Check for test failure
- set e [findfail $testdir/test045.init]
- error_check_good "FAIL: error message(s) in init file" $e 0
-
- puts "\tTest045.b: Now firing off berkdb rand dbscript, running: "
- # Now the database is initialized, run a test
- puts "$tclsh_path\
- $test_path/dbscript.tcl $method $f $nops $cursors $delete $adds \
- $keyavg $dataavg $dups $errpct > $testdir/test045.log"
-
- exec $tclsh_path \
- $test_path/dbscript.tcl $method $f \
- $nops $cursors $delete $adds $keyavg \
- $dataavg $dups $errpct \
- > $testdir/test045.log
-
- # Check for test failure
- set e [findfail $testdir/test045.log]
- error_check_good "FAIL: error message(s) in log file" $e 0
-
-}
diff --git a/bdb/test/test046.tcl b/bdb/test/test046.tcl
deleted file mode 100644
index 4136f30aaa7..00000000000
--- a/bdb/test/test046.tcl
+++ /dev/null
@@ -1,813 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test046.tcl,v 11.33 2002/05/24 15:24:55 sue Exp $
-#
-# TEST test046
-# TEST Overwrite test of small/big key/data with cursor checks.
-proc test046 { method args } {
- global alphabet
- global errorInfo
- global errorCode
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "\tTest046: Overwrite test with cursor and small/big key/data."
- puts "\tTest046:\t$method $args"
-
- if { [is_rrecno $method] == 1} {
- puts "\tTest046: skipping for method $method."
- return
- }
-
- set key "key"
- set data "data"
- set txn ""
- set flags ""
-
- if { [is_record_based $method] == 1} {
- set key ""
- }
-
- puts "\tTest046: Create $method database."
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test046.db
- set env NULL
- } else {
- set testfile test046.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- set oflags "-create -mode 0644 $args $omethod"
- set db [eval {berkdb_open} $oflags $testfile.a]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # keep nkeys even
- set nkeys 20
-
- # Fill page w/ small key/data pairs
- puts "\tTest046: Fill page with $nkeys small key/data pairs."
- for { set i 1 } { $i <= $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- if { [is_record_based $method] == 1} {
- set ret [eval {$db put} $txn {$i $data$i}]
- } elseif { $i < 10 } {
- set ret [eval {$db put} $txn [set key]00$i \
- [set data]00$i]
- } elseif { $i < 100 } {
- set ret [eval {$db put} $txn [set key]0$i \
- [set data]0$i]
- } else {
- set ret [eval {$db put} $txn {$key$i $data$i}]
- }
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # open curs to db
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_substr $dbc $db] 1
-
- # get db order of keys
- for {set i 1; set ret [$dbc get -first]} { [llength $ret] != 0} { \
- set ret [$dbc get -next]} {
- set key_set($i) [lindex [lindex $ret 0] 0]
- set data_set($i) [lindex [lindex $ret 0] 1]
- incr i
- }
-
- puts "\tTest046.a: Deletes by key."
- puts "\t\tTest046.a.1: Get data with SET, then delete before cursor."
- # get key in middle of page, call this the nth set curr to it
- set i [expr $nkeys/2]
- set ret [$dbc get -set $key_set($i)]
- error_check_bad dbc_get:set [llength $ret] 0
- set curr $ret
-
- # delete before cursor(n-1), make sure it is gone
- set i [expr $i - 1]
- error_check_good db_del [eval {$db del} $txn {$key_set($i)}] 0
-
- # use set_range to get first key starting at n-1, should
- # give us nth--but only works for btree
- if { [is_btree $method] == 1 } {
- set ret [$dbc get -set_range $key_set($i)]
- } else {
- if { [is_record_based $method] == 1 } {
- set ret [$dbc get -set $key_set($i)]
- error_check_good \
- dbc_get:deleted(recno) [llength [lindex $ret 1]] 0
- #error_check_good \
- # catch:get [catch {$dbc get -set $key_set($i)} ret] 1
- #error_check_good \
- # dbc_get:deleted(recno) [is_substr $ret "KEYEMPTY"] 1
- } else {
- set ret [$dbc get -set $key_set($i)]
- error_check_good dbc_get:deleted [llength $ret] 0
- }
- set ret [$dbc get -set $key_set([incr i])]
- incr i -1
- }
- error_check_bad dbc_get:set(R)(post-delete) [llength $ret] 0
- error_check_good dbc_get(match):set $ret $curr
-
- puts "\t\tTest046.a.2: Delete cursor item by key."
- # nth key, which cursor should be on now
- set i [incr i]
- set ret [eval {$db del} $txn {$key_set($i)}]
- error_check_good db_del $ret 0
-
- # this should return n+1 key/data, curr has nth key/data
- if { [string compare $omethod "-btree"] == 0 } {
- set ret [$dbc get -set_range $key_set($i)]
- } else {
- if { [is_record_based $method] == 1 } {
- set ret [$dbc get -set $key_set($i)]
- error_check_good \
- dbc_get:deleted(recno) [llength [lindex $ret 1]] 0
- #error_check_good \
- # catch:get [catch {$dbc get -set $key_set($i)} ret] 1
- #error_check_good \
- # dbc_get:deleted(recno) [is_substr $ret "KEYEMPTY"] 1
- } else {
- set ret [$dbc get -set $key_set($i)]
- error_check_good dbc_get:deleted [llength $ret] 0
- }
- set ret [$dbc get -set $key_set([expr $i+1])]
- }
- error_check_bad dbc_get(post-delete):set_range [llength $ret] 0
- error_check_bad dbc_get(no-match):set_range $ret $curr
-
- puts "\t\tTest046.a.3: Delete item after cursor."
- # we'll delete n+2, since we have deleted n-1 and n
- # i still equal to nth, cursor on n+1
- set i [incr i]
- set ret [$dbc get -set $key_set($i)]
- error_check_bad dbc_get:set [llength $ret] 0
- set curr [$dbc get -next]
- error_check_bad dbc_get:next [llength $curr] 0
- set ret [$dbc get -prev]
- error_check_bad dbc_get:prev [llength $curr] 0
- # delete *after* cursor pos.
- error_check_good db:del [eval {$db del} $txn {$key_set([incr i])}] 0
-
- # make sure item is gone, try to get it
- if { [string compare $omethod "-btree"] == 0} {
- set ret [$dbc get -set_range $key_set($i)]
- } else {
- if { [is_record_based $method] == 1 } {
- set ret [$dbc get -set $key_set($i)]
- error_check_good \
- dbc_get:deleted(recno) [llength [lindex $ret 1]] 0
- #error_check_good \
- # catch:get [catch {$dbc get -set $key_set($i)} ret] 1
- #error_check_good \
- # dbc_get:deleted(recno) [is_substr $ret "KEYEMPTY"] 1
- } else {
- set ret [$dbc get -set $key_set($i)]
- error_check_good dbc_get:deleted [llength $ret] 0
- }
- set ret [$dbc get -set $key_set([expr $i +1])]
- }
- error_check_bad dbc_get:set(_range) [llength $ret] 0
- error_check_bad dbc_get:set(_range) $ret $curr
- error_check_good dbc_get:set [lindex [lindex $ret 0] 0] \
- $key_set([expr $i+1])
-
- puts "\tTest046.b: Deletes by cursor."
- puts "\t\tTest046.b.1: Delete, do DB_NEXT."
- error_check_good dbc:del [$dbc del] 0
- set ret [$dbc get -next]
- error_check_bad dbc_get:next [llength $ret] 0
- set i [expr $i+2]
- # i = n+4
- error_check_good dbc_get:next(match) \
- [lindex [lindex $ret 0] 0] $key_set($i)
-
- puts "\t\tTest046.b.2: Delete, do DB_PREV."
- error_check_good dbc:del [$dbc del] 0
- set ret [$dbc get -prev]
- error_check_bad dbc_get:prev [llength $ret] 0
- set i [expr $i-3]
- # i = n+1 (deleted all in between)
- error_check_good dbc_get:prev(match) \
- [lindex [lindex $ret 0] 0] $key_set($i)
-
- puts "\t\tTest046.b.3: Delete, do DB_CURRENT."
- error_check_good dbc:del [$dbc del] 0
- # we just deleted, so current item should be KEYEMPTY, throws err
- set ret [$dbc get -current]
- error_check_good dbc_get:curr:deleted [llength [lindex $ret 1]] 0
- #error_check_good catch:get:current [catch {$dbc get -current} ret] 1
- #error_check_good dbc_get:curr:deleted [is_substr $ret "DB_KEYEMPTY"] 1
-
- puts "\tTest046.c: Inserts (before/after), by key then cursor."
- puts "\t\tTest046.c.1: Insert by key before the cursor."
- # i is at curs pos, i=n+1, we want to go BEFORE
- set i [incr i -1]
- set ret [eval {$db put} $txn {$key_set($i) $data_set($i)}]
- error_check_good db_put:before $ret 0
-
- puts "\t\tTest046.c.2: Insert by key after the cursor."
- set i [incr i +2]
- set ret [eval {$db put} $txn {$key_set($i) $data_set($i)}]
- error_check_good db_put:after $ret 0
-
- puts "\t\tTest046.c.3: Insert by curs with deleted curs (should fail)."
- # cursor is on n+1, we'll change i to match
- set i [incr i -1]
-
- error_check_good dbc:close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db:close [$db close] 0
- if { [is_record_based $method] == 1} {
- puts "\t\tSkipping the rest of test for method $method."
- puts "\tTest046 ($method) complete."
- return
- } else {
- # Reopen without printing __db_errs.
- set db [eval {berkdb_open_noerr} $oflags $testfile.a]
- error_check_good dbopen [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor [is_valid_cursor $dbc $db] TRUE
-
- # should fail with EINVAL (deleted cursor)
- set errorCode NONE
- error_check_good catch:put:before 1 \
- [catch {$dbc put -before $data_set($i)} ret]
- error_check_good dbc_put:deleted:before \
- [is_substr $errorCode "EINVAL"] 1
-
- # should fail with EINVAL
- set errorCode NONE
- error_check_good catch:put:after 1 \
- [catch {$dbc put -after $data_set($i)} ret]
- error_check_good dbc_put:deleted:after \
- [is_substr $errorCode "EINVAL"] 1
-
- puts "\t\tTest046.c.4:\
- Insert by cursor before/after existent cursor."
- # can't use before after w/o dup except renumber in recno
- # first, restore an item so they don't fail
- #set ret [eval {$db put} $txn {$key_set($i) $data_set($i)}]
- #error_check_good db_put $ret 0
-
- #set ret [$dbc get -set $key_set($i)]
- #error_check_bad dbc_get:set [llength $ret] 0
- #set i [incr i -2]
- # i = n - 1
- #set ret [$dbc get -prev]
- #set ret [$dbc put -before $key_set($i) $data_set($i)]
- #error_check_good dbc_put:before $ret 0
- # cursor pos is adjusted to match prev, recently inserted
- #incr i
- # i = n
- #set ret [$dbc put -after $key_set($i) $data_set($i)]
- #error_check_good dbc_put:after $ret 0
- }
-
- # For the next part of the test, we need a db with no dups to test
- # overwrites
- puts "\tTest046.d.0: Cleanup, close db, open new db with no dups."
- error_check_good dbc:close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db:close [$db close] 0
-
- set db [eval {berkdb_open} $oflags $testfile.d]
- error_check_good dbopen [is_valid_db $db] TRUE
- # Fill page w/ small key/data pairs
- puts "\tTest046.d.0: Fill page with $nkeys small key/data pairs."
- for { set i 1 } { $i < $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key$i $data$i}]
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- set nkeys 20
-
- # Prepare cursor on item
- set ret [$dbc get -first]
- error_check_bad dbc_get:first [llength $ret] 0
-
- # Prepare unique big/small values for an initial
- # and an overwrite set of key/data
- foreach ptype {init over} {
- foreach size {big small} {
- if { [string compare $size big] == 0 } {
- set key_$ptype$size \
- KEY_$size[repeat alphabet 250]
- set data_$ptype$size \
- DATA_$size[repeat alphabet 250]
- } else {
- set key_$ptype$size \
- KEY_$size[repeat alphabet 10]
- set data_$ptype$size \
- DATA_$size[repeat alphabet 10]
- }
- }
- }
-
- set i 0
- # Do all overwrites for key and cursor
- foreach type {key_over curs_over} {
- # Overwrite (i=initial) four different kinds of pairs
- incr i
- puts "\tTest046.d: Overwrites $type."
- foreach i_pair {\
- {small small} {big small} {small big} {big big} } {
- # Overwrite (w=write) with four different kinds of data
- foreach w_pair {\
- {small small} {big small} {small big} {big big} } {
-
- # we can only overwrite if key size matches
- if { [string compare [lindex \
- $i_pair 0] [lindex $w_pair 0]] != 0} {
- continue
- }
-
- # first write the initial key/data
- set ret [$dbc put -keyfirst \
- key_init[lindex $i_pair 0] \
- data_init[lindex $i_pair 1]]
- error_check_good \
- dbc_put:curr:init:$i_pair $ret 0
- set ret [$dbc get -current]
- error_check_bad dbc_get:curr [llength $ret] 0
- error_check_good dbc_get:curr:data \
- [lindex [lindex $ret 0] 1] \
- data_init[lindex $i_pair 1]
-
- # Now, try to overwrite: dups not supported in
- # this db
- if { [string compare $type key_over] == 0 } {
- puts "\t\tTest046.d.$i: Key\
- Overwrite:($i_pair) by ($w_pair)."
- set ret [eval {$db put} $txn \
- $"key_init[lindex $i_pair 0]" \
- $"data_over[lindex $w_pair 1]"]
- error_check_good \
- dbput:over:i($i_pair):o($w_pair) $ret 0
- # check value
- set ret [eval {$db get} $txn \
- $"key_init[lindex $i_pair 0]"]
- error_check_bad \
- db:get:check [llength $ret] 0
- error_check_good db:get:compare_data \
- [lindex [lindex $ret 0] 1] \
- $"data_over[lindex $w_pair 1]"
- } else {
- # This is a cursor overwrite
- puts \
- "\t\tTest046.d.$i:Curs Overwrite:($i_pair) by ($w_pair)."
- set ret [$dbc put -current \
- $"data_over[lindex $w_pair 1]"]
- error_check_good \
- dbcput:over:i($i_pair):o($w_pair) $ret 0
- # check value
- set ret [$dbc get -current]
- error_check_bad \
- dbc_get:curr [llength $ret] 0
- error_check_good dbc_get:curr:data \
- [lindex [lindex $ret 0] 1] \
- $"data_over[lindex $w_pair 1]"
- }
- } ;# foreach write pair
- } ;# foreach initial pair
- } ;# foreach type big/small
-
- puts "\tTest046.d.3: Cleanup for next part of test."
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- if { [is_rbtree $method] == 1} {
- puts "\tSkipping the rest of Test046 for method $method."
- puts "\tTest046 complete."
- return
- }
-
- puts "\tTest046.e.1: Open db with sorted dups."
- set db [eval {berkdb_open_noerr} $oflags -dup -dupsort $testfile.e]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # keep nkeys even
- set nkeys 20
- set ndups 20
-
- # Fill page w/ small key/data pairs
- puts "\tTest046.e.2:\
- Put $nkeys small key/data pairs and $ndups sorted dups."
- for { set i 0 } { $i < $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- if { $i < 10 } {
- set ret [eval {$db put} $txn [set key]0$i [set data]0$i]
- } else {
- set ret [eval {$db put} $txn {$key$i $data$i}]
- }
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- # open curs to db
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_substr $dbc $db] 1
-
- # get db order of keys
- for {set i 0; set ret [$dbc get -first]} { [llength $ret] != 0} { \
- set ret [$dbc get -next]} {
- set key_set($i) [lindex [lindex $ret 0] 0]
- set data_set($i) [lindex [lindex $ret 0] 1]
- incr i
- }
-
- # put 20 sorted duplicates on key in middle of page
- set i [expr $nkeys/2]
- set ret [$dbc get -set $key_set($i)]
- error_check_bad dbc_get:set [llength $ret] 0
-
- set keym $key_set($i)
-
- for { set i 0 } { $i < $ndups } { incr i } {
- if { $i < 10 } {
- set ret [eval {$db put} $txn {$keym DUPLICATE_0$i}]
- } else {
- set ret [eval {$db put} $txn {$keym DUPLICATE_$i}]
- }
- error_check_good db_put:DUP($i) $ret 0
- }
-
- puts "\tTest046.e.3: Check duplicate duplicates"
- set ret [eval {$db put} $txn {$keym DUPLICATE_00}]
- error_check_good dbput:dupdup [is_substr $ret "DB_KEYEXIST"] 1
-
- # get dup ordering
- for {set i 0; set ret [$dbc get -set $keym]} { [llength $ret] != 0} {\
- set ret [$dbc get -nextdup] } {
- set dup_set($i) [lindex [lindex $ret 0] 1]
- incr i
- }
-
- # put cursor on item in middle of dups
- set i [expr $ndups/2]
- set ret [$dbc get -get_both $keym $dup_set($i)]
- error_check_bad dbc_get:get_both [llength $ret] 0
-
- puts "\tTest046.f: Deletes by cursor."
- puts "\t\tTest046.f.1: Delete by cursor, do a DB_NEXT, check cursor."
- set ret [$dbc get -current]
- error_check_bad dbc_get:current [llength $ret] 0
- error_check_good dbc:del [$dbc del] 0
- set ret [$dbc get -next]
- error_check_bad dbc_get:next [llength $ret] 0
- error_check_good \
- dbc_get:nextdup [lindex [lindex $ret 0] 1] $dup_set([incr i])
-
- puts "\t\tTest046.f.2: Delete by cursor, do DB_PREV, check cursor."
- error_check_good dbc:del [$dbc del] 0
- set ret [$dbc get -prev]
- error_check_bad dbc_get:prev [llength $ret] 0
- set i [incr i -2]
- error_check_good dbc_get:prev [lindex [lindex $ret 0] 1] $dup_set($i)
-
- puts "\t\tTest046.f.3: Delete by cursor, do DB_CURRENT, check cursor."
- error_check_good dbc:del [$dbc del] 0
- set ret [$dbc get -current]
- error_check_good dbc_get:current:deleted [llength [lindex $ret 1]] 0
- #error_check_good catch:dbc_get:curr [catch {$dbc get -current} ret] 1
- #error_check_good \
- # dbc_get:current:deleted [is_substr $ret "DB_KEYEMPTY"] 1
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- # restore deleted keys
- error_check_good db_put:1 [eval {$db put} $txn {$keym $dup_set($i)}] 0
- error_check_good db_put:2 [eval {$db put} $txn \
- {$keym $dup_set([incr i])}] 0
- error_check_good db_put:3 [eval {$db put} $txn \
- {$keym $dup_set([incr i])}] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # tested above
-
- # Reopen database without __db_err, reset cursor
- error_check_good dbclose [$db close] 0
- set db [eval {berkdb_open_noerr} $oflags -dup -dupsort $testfile.e]
- error_check_good dbopen [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- set ret [$dbc get -set $keym]
- error_check_bad dbc_get:set [llength $ret] 0
- set ret2 [$dbc get -current]
- error_check_bad dbc_get:current [llength $ret2] 0
- # match
- error_check_good dbc_get:current/set(match) $ret $ret2
- # right one?
- error_check_good \
- dbc_get:curr/set(matchdup) [lindex [lindex $ret 0] 1] $dup_set(0)
-
- # cursor is on first dup
- set ret [$dbc get -next]
- error_check_bad dbc_get:next [llength $ret] 0
- # now on second dup
- error_check_good dbc_get:next [lindex [lindex $ret 0] 1] $dup_set(1)
- # check cursor
- set ret [$dbc get -current]
- error_check_bad dbc_get:curr [llength $ret] 0
- error_check_good \
- dbcget:curr(compare) [lindex [lindex $ret 0] 1] $dup_set(1)
-
- puts "\tTest046.g: Inserts."
- puts "\t\tTest046.g.1: Insert by key before cursor."
- set i 0
-
- # use "spam" to prevent a duplicate duplicate.
- set ret [eval {$db put} $txn {$keym $dup_set($i)spam}]
- error_check_good db_put:before $ret 0
- # make sure cursor was maintained
- set ret [$dbc get -current]
- error_check_bad dbc_get:curr [llength $ret] 0
- error_check_good \
- dbc_get:current(post-put) [lindex [lindex $ret 0] 1] $dup_set(1)
-
- puts "\t\tTest046.g.2: Insert by key after cursor."
- set i [expr $i + 2]
- # use "eggs" to prevent a duplicate duplicate
- set ret [eval {$db put} $txn {$keym $dup_set($i)eggs}]
- error_check_good db_put:after $ret 0
- # make sure cursor was maintained
- set ret [$dbc get -current]
- error_check_bad dbc_get:curr [llength $ret] 0
- error_check_good \
- dbc_get:curr(post-put,after) [lindex [lindex $ret 0] 1] $dup_set(1)
-
- puts "\t\tTest046.g.3: Insert by curs before/after curs (should fail)."
- # should return EINVAL (dupsort specified)
- error_check_good dbc_put:before:catch \
- [catch {$dbc put -before $dup_set([expr $i -1])} ret] 1
- error_check_good \
- dbc_put:before:deleted [is_substr $errorCode "EINVAL"] 1
- error_check_good dbc_put:after:catch \
- [catch {$dbc put -after $dup_set([expr $i +2])} ret] 1
- error_check_good \
- dbc_put:after:deleted [is_substr $errorCode "EINVAL"] 1
-
- puts "\tTest046.h: Cursor overwrites."
- puts "\t\tTest046.h.1: Test that dupsort disallows current overwrite."
- set ret [$dbc get -set $keym]
- error_check_bad dbc_get:set [llength $ret] 0
- error_check_good \
- catch:dbc_put:curr [catch {$dbc put -current DATA_OVERWRITE} ret] 1
- error_check_good dbc_put:curr:dupsort [is_substr $errorCode EINVAL] 1
-
- puts "\t\tTest046.h.2: New db (no dupsort)."
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- set db [eval {berkdb_open} \
- $oflags -dup $testfile.h]
- error_check_good db_open [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- for {set i 0} {$i < $nkeys} {incr i} {
- if { $i < 10 } {
- set ret [eval {$db put} $txn {key0$i datum0$i}]
- error_check_good db_put $ret 0
- } else {
- set ret [eval {$db put} $txn {key$i datum$i}]
- error_check_good db_put $ret 0
- }
- if { $i == 0 } {
- for {set j 0} {$j < $ndups} {incr j} {
- if { $i < 10 } {
- set keyput key0$i
- } else {
- set keyput key$i
- }
- if { $j < 10 } {
- set ret [eval {$db put} $txn \
- {$keyput DUP_datum0$j}]
- } else {
- set ret [eval {$db put} $txn \
- {$keyput DUP_datum$j}]
- }
- error_check_good dbput:dup $ret 0
- }
- }
- }
-
- for {set i 0; set ret [$dbc get -first]} { [llength $ret] != 0} { \
- set ret [$dbc get -next]} {
- set key_set($i) [lindex [lindex $ret 0] 0]
- set data_set($i) [lindex [lindex $ret 0] 1]
- incr i
- }
-
- for {set i 0; set ret [$dbc get -set key00]} {\
- [llength $ret] != 0} {set ret [$dbc get -nextdup]} {
- set dup_set($i) [lindex [lindex $ret 0] 1]
- incr i
- }
- set i 0
- set keym key0$i
- set ret [$dbc get -set $keym]
- error_check_bad dbc_get:set [llength $ret] 0
- error_check_good \
- dbc_get:set(match) [lindex [lindex $ret 0] 1] $dup_set($i)
-
- set ret [$dbc get -nextdup]
- error_check_bad dbc_get:nextdup [llength $ret] 0
- error_check_good dbc_get:nextdup(match) \
- [lindex [lindex $ret 0] 1] $dup_set([expr $i + 1])
-
- puts "\t\tTest046.h.3: Insert by cursor before cursor (DB_BEFORE)."
- set ret [$dbc put -before BEFOREPUT]
- error_check_good dbc_put:before $ret 0
- set ret [$dbc get -current]
- error_check_bad dbc_get:curr [llength $ret] 0
- error_check_good \
- dbc_get:curr:match [lindex [lindex $ret 0] 1] BEFOREPUT
- # make sure that this is actually a dup w/ dup before
- set ret [$dbc get -prev]
- error_check_bad dbc_get:prev [llength $ret] 0
- error_check_good dbc_get:prev:match \
- [lindex [lindex $ret 0] 1] $dup_set($i)
- set ret [$dbc get -prev]
- # should not be a dup
- error_check_bad dbc_get:prev(no_dup) \
- [lindex [lindex $ret 0] 0] $keym
-
- puts "\t\tTest046.h.4: Insert by cursor after cursor (DB_AFTER)."
- set ret [$dbc get -set $keym]
-
- # delete next 3 when fix
- #puts "[$dbc get -current]\
- # [$dbc get -next] [$dbc get -next] [$dbc get -next] [$dbc get -next]"
- #set ret [$dbc get -set $keym]
-
- error_check_bad dbc_get:set [llength $ret] 0
- set ret [$dbc put -after AFTERPUT]
- error_check_good dbc_put:after $ret 0
- #puts [$dbc get -current]
-
- # delete next 3 when fix
- #set ret [$dbc get -set $keym]
- #puts "[$dbc get -current] next: [$dbc get -next] [$dbc get -next]"
- #set ret [$dbc get -set AFTERPUT]
- #set ret [$dbc get -set $keym]
- #set ret [$dbc get -next]
- #puts $ret
-
- set ret [$dbc get -current]
- error_check_bad dbc_get:curr [llength $ret] 0
- error_check_good dbc_get:curr:match [lindex [lindex $ret 0] 1] AFTERPUT
- set ret [$dbc get -prev]
- # now should be on first item (non-dup) of keym
- error_check_bad dbc_get:prev1 [llength $ret] 0
- error_check_good \
- dbc_get:match [lindex [lindex $ret 0] 1] $dup_set($i)
- set ret [$dbc get -next]
- error_check_bad dbc_get:next [llength $ret] 0
- error_check_good \
- dbc_get:match2 [lindex [lindex $ret 0] 1] AFTERPUT
- set ret [$dbc get -next]
- error_check_bad dbc_get:next [llength $ret] 0
- # this is the dup we added previously
- error_check_good \
- dbc_get:match3 [lindex [lindex $ret 0] 1] BEFOREPUT
-
- # now get rid of the dups we added
- error_check_good dbc_del [$dbc del] 0
- set ret [$dbc get -prev]
- error_check_bad dbc_get:prev2 [llength $ret] 0
- error_check_good dbc_del2 [$dbc del] 0
- # put cursor on first dup item for the rest of test
- set ret [$dbc get -set $keym]
- error_check_bad dbc_get:first [llength $ret] 0
- error_check_good \
- dbc_get:first:check [lindex [lindex $ret 0] 1] $dup_set($i)
-
- puts "\t\tTest046.h.5: Overwrite small by small."
- set ret [$dbc put -current DATA_OVERWRITE]
- error_check_good dbc_put:current:overwrite $ret 0
- set ret [$dbc get -current]
- error_check_good dbc_get:current(put,small/small) \
- [lindex [lindex $ret 0] 1] DATA_OVERWRITE
-
- puts "\t\tTest046.h.6: Overwrite small with big."
- set ret [$dbc put -current DATA_BIG_OVERWRITE[repeat $alphabet 200]]
- error_check_good dbc_put:current:overwrite:big $ret 0
- set ret [$dbc get -current]
- error_check_good dbc_get:current(put,small/big) \
- [is_substr [lindex [lindex $ret 0] 1] DATA_BIG_OVERWRITE] 1
-
- puts "\t\tTest046.h.7: Overwrite big with big."
- set ret [$dbc put -current DATA_BIG_OVERWRITE2[repeat $alphabet 200]]
- error_check_good dbc_put:current:overwrite(2):big $ret 0
- set ret [$dbc get -current]
- error_check_good dbc_get:current(put,big/big) \
- [is_substr [lindex [lindex $ret 0] 1] DATA_BIG_OVERWRITE2] 1
-
- puts "\t\tTest046.h.8: Overwrite big with small."
- set ret [$dbc put -current DATA_OVERWRITE2]
- error_check_good dbc_put:current:overwrite:small $ret 0
- set ret [$dbc get -current]
- error_check_good dbc_get:current(put,big/small) \
- [is_substr [lindex [lindex $ret 0] 1] DATA_OVERWRITE2] 1
-
- puts "\tTest046.i: Cleaning up from test."
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest046 complete."
-}
diff --git a/bdb/test/test047.tcl b/bdb/test/test047.tcl
deleted file mode 100644
index 61c1d0864c5..00000000000
--- a/bdb/test/test047.tcl
+++ /dev/null
@@ -1,258 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test047.tcl,v 11.19 2002/08/05 19:23:51 sandstro Exp $
-#
-# TEST test047
-# TEST DBcursor->c_get get test with SET_RANGE option.
-proc test047 { method args } {
- source ./include.tcl
-
- set tstn 047
- set args [convert_args $method $args]
-
- if { [is_btree $method] != 1 } {
- puts "Test$tstn skipping for method $method"
- return
- }
-
- set method "-btree"
-
- puts "\tTest$tstn: Test of SET_RANGE interface to DB->c_get ($method)."
-
- set key "key"
- set data "data"
- set txn ""
- set flags ""
-
- puts "\tTest$tstn.a: Create $method database."
- set eindex [lsearch -exact $args "-env"]
- set txnenv 0
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tstn.db
- set testfile1 $testdir/test0$tstn.a.db
- set testfile2 $testdir/test0$tstn.b.db
- set env NULL
- } else {
- set testfile test0$tstn.db
- set testfile1 test0$tstn.a.db
- set testfile2 test0$tstn.b.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- set oflags "-create -mode 0644 -dup $args $method"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set nkeys 20
- # Fill page w/ small key/data pairs
- #
- puts "\tTest$tstn.b: Fill page with $nkeys small key/data pairs."
- for { set i 0 } { $i < $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key$i $data$i}]
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- # open curs to db
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- puts "\tTest$tstn.c: Get data with SET_RANGE, then delete by cursor."
- set i 0
- set ret [$dbc get -set_range $key$i]
- error_check_bad dbc_get:set_range [llength $ret] 0
- set curr $ret
-
- # delete by cursor, make sure it is gone
- error_check_good dbc_del [$dbc del] 0
-
- set ret [$dbc get -set_range $key$i]
- error_check_bad dbc_get(post-delete):set_range [llength $ret] 0
- error_check_bad dbc_get(no-match):set_range $ret $curr
-
- puts "\tTest$tstn.d: \
- Use another cursor to fix item on page, delete by db."
- set dbcurs2 [eval {$db cursor} $txn]
- error_check_good db:cursor2 [is_valid_cursor $dbcurs2 $db] TRUE
-
- set ret [$dbcurs2 get -set [lindex [lindex $ret 0] 0]]
- error_check_bad dbc_get(2):set [llength $ret] 0
- set curr $ret
- error_check_good db:del [eval {$db del} $txn \
- {[lindex [lindex $ret 0] 0]}] 0
-
- # make sure item is gone
- set ret [$dbcurs2 get -set_range [lindex [lindex $curr 0] 0]]
- error_check_bad dbc2_get:set_range [llength $ret] 0
- error_check_bad dbc2_get:set_range $ret $curr
-
- puts "\tTest$tstn.e: Close for second part of test, close db/cursors."
- error_check_good dbc:close [$dbc close] 0
- error_check_good dbc2:close [$dbcurs2 close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good dbclose [$db close] 0
-
- # open db
- set db [eval {berkdb_open} $oflags $testfile1]
- error_check_good dbopen2 [is_valid_db $db] TRUE
-
- set nkeys 10
- puts "\tTest$tstn.f: Fill page with $nkeys pairs, one set of dups."
- for {set i 0} { $i < $nkeys } {incr i} {
- # a pair
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key$i $data$i}]
- error_check_good dbput($i) $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- set j 0
- for {set i 0} { $i < $nkeys } {incr i} {
- # a dup set for same 1 key
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key$i DUP_$data$i}]
- error_check_good dbput($i):dup $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- puts "\tTest$tstn.g: \
- Get dups key w/ SET_RANGE, pin onpage with another cursor."
- set i 0
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- set ret [$dbc get -set_range $key$i]
- error_check_bad dbc_get:set_range [llength $ret] 0
-
- set dbc2 [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc2 $db] TRUE
- set ret2 [$dbc2 get -set_range $key$i]
- error_check_bad dbc2_get:set_range [llength $ret] 0
-
- error_check_good dbc_compare $ret $ret2
- puts "\tTest$tstn.h: \
- Delete duplicates' key, use SET_RANGE to get next dup."
- set ret [$dbc2 del]
- error_check_good dbc2_del $ret 0
- set ret [$dbc get -set_range $key$i]
- error_check_bad dbc_get:set_range [llength $ret] 0
- error_check_bad dbc_get:set_range $ret $ret2
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good dbc2_close [$dbc2 close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- set db [eval {berkdb_open} $oflags $testfile2]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set nkeys 10
- set ndups 1000
-
- puts "\tTest$tstn.i: Fill page with $nkeys pairs and $ndups dups."
- for {set i 0} { $i < $nkeys } { incr i} {
- # a pair
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key$i $data$i}]
- error_check_good dbput $ret 0
-
- # dups for single pair
- if { $i == 0} {
- for {set j 0} { $j < $ndups } { incr j } {
- set ret [eval {$db put} $txn \
- {$key$i DUP_$data$i:$j}]
- error_check_good dbput:dup $ret 0
- }
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- set i 0
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- set dbc2 [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc2 $db] TRUE
- puts "\tTest$tstn.j: \
- Get key of first dup with SET_RANGE, fix with 2 curs."
- set ret [$dbc get -set_range $key$i]
- error_check_bad dbc_get:set_range [llength $ret] 0
-
- set ret2 [$dbc2 get -set_range $key$i]
- error_check_bad dbc2_get:set_range [llength $ret] 0
- set curr $ret2
-
- error_check_good dbc_compare $ret $ret2
-
- puts "\tTest$tstn.k: Delete item by cursor, use SET_RANGE to verify."
- set ret [$dbc2 del]
- error_check_good dbc2_del $ret 0
- set ret [$dbc get -set_range $key$i]
- error_check_bad dbc_get:set_range [llength $ret] 0
- error_check_bad dbc_get:set_range $ret $curr
-
- puts "\tTest$tstn.l: Cleanup."
- error_check_good dbc_close [$dbc close] 0
- error_check_good dbc2_close [$dbc2 close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest$tstn complete."
-}
diff --git a/bdb/test/test048.tcl b/bdb/test/test048.tcl
deleted file mode 100644
index 2131f6f553c..00000000000
--- a/bdb/test/test048.tcl
+++ /dev/null
@@ -1,170 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test048.tcl,v 11.18 2002/07/29 20:27:49 sandstro Exp $
-#
-# TEST test048
-# TEST Cursor stability across Btree splits.
-proc test048 { method args } {
- global errorCode
- source ./include.tcl
-
- set tstn 048
- set args [convert_args $method $args]
-
- if { [is_btree $method] != 1 } {
- puts "Test$tstn skipping for method $method."
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- incr pgindex
- if { [lindex $args $pgindex] > 8192 } {
- puts "Test048: Skipping for large pagesizes"
- return
- }
- }
-
- set method "-btree"
-
- puts "\tTest$tstn: Test of cursor stability across btree splits."
-
- set key "key"
- set data "data"
- set txn ""
- set flags ""
-
- puts "\tTest$tstn.a: Create $method database."
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tstn.db
- set env NULL
- } else {
- set testfile test0$tstn.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- set oflags "-create -mode 0644 $args $method"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set nkeys 5
- # Fill page w/ small key/data pairs, keep at leaf
- #
- puts "\tTest$tstn.b: Fill page with $nkeys small key/data pairs."
- for { set i 0 } { $i < $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {key000$i $data$i}]
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # get db ordering, set cursors
- puts "\tTest$tstn.c: Set cursors on each of $nkeys pairs."
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- for {set i 0; set ret [$db get key000$i]} {\
- $i < $nkeys && [llength $ret] != 0} {\
- incr i; set ret [$db get key000$i]} {
- set key_set($i) [lindex [lindex $ret 0] 0]
- set data_set($i) [lindex [lindex $ret 0] 1]
- set dbc [eval {$db cursor} $txn]
- set dbc_set($i) $dbc
- error_check_good db_cursor:$i \
- [is_valid_cursor $dbc_set($i) $db] TRUE
- set ret [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc_set($i)_get:set [llength $ret] 0
- }
-
- # if mkeys is above 1000, need to adjust below for lexical order
- set mkeys 1000
- puts "\tTest$tstn.d: Add $mkeys pairs to force split."
- for {set i $nkeys} { $i < $mkeys } { incr i } {
- if { $i >= 100 } {
- set ret [eval {$db put} $txn {key0$i $data$i}]
- } elseif { $i >= 10 } {
- set ret [eval {$db put} $txn {key00$i $data$i}]
- } else {
- set ret [eval {$db put} $txn {key000$i $data$i}]
- }
- error_check_good dbput:more $ret 0
- }
-
- puts "\tTest$tstn.e: Make sure split happened."
- # XXX We cannot call stat with active txns or we deadlock.
- if { $txnenv != 1 } {
- error_check_bad stat:check-split [is_substr [$db stat] \
- "{{Internal pages} 0}"] 1
- }
-
- puts "\tTest$tstn.f: Check to see that cursors maintained reference."
- for {set i 0} { $i < $nkeys } {incr i} {
- set ret [$dbc_set($i) get -current]
- error_check_bad dbc$i:get:current [llength $ret] 0
- set ret2 [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc$i:get:set [llength $ret2] 0
- error_check_good dbc$i:get(match) $ret $ret2
- }
-
- puts "\tTest$tstn.g: Delete added keys to force reverse split."
- for {set i $nkeys} { $i < $mkeys } { incr i } {
- if { $i >= 100 } {
- error_check_good db_del:$i \
- [eval {$db del} $txn {key0$i}] 0
- } elseif { $i >= 10 } {
- error_check_good db_del:$i \
- [eval {$db del} $txn {key00$i}] 0
- } else {
- error_check_good db_del:$i \
- [eval {$db del} $txn {key000$i}] 0
- }
- }
-
- puts "\tTest$tstn.h: Verify cursor reference."
- for {set i 0} { $i < $nkeys } {incr i} {
- set ret [$dbc_set($i) get -current]
- error_check_bad dbc$i:get:current [llength $ret] 0
- set ret2 [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc$i:get:set [llength $ret2] 0
- error_check_good dbc$i:get(match) $ret $ret2
- }
-
- puts "\tTest$tstn.i: Cleanup."
- # close cursors
- for {set i 0} { $i < $nkeys } {incr i} {
- error_check_good dbc_close:$i [$dbc_set($i) close] 0
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- puts "\tTest$tstn.j: Verify reverse split."
- error_check_good stat:check-reverse_split [is_substr [$db stat] \
- "{{Internal pages} 0}"] 1
-
- error_check_good dbclose [$db close] 0
-
- puts "\tTest$tstn complete."
-}
diff --git a/bdb/test/test049.tcl b/bdb/test/test049.tcl
deleted file mode 100644
index 3040727c469..00000000000
--- a/bdb/test/test049.tcl
+++ /dev/null
@@ -1,184 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test049.tcl,v 11.21 2002/05/22 15:42:53 sue Exp $
-#
-# TEST test049
-# TEST Cursor operations on uninitialized cursors.
-proc test049 { method args } {
- global errorInfo
- global errorCode
- source ./include.tcl
-
- set tstn 049
- set renum [is_rrecno $method]
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "\tTest$tstn: Test of cursor routines with uninitialized cursors."
-
- set key "key"
- set data "data"
- set txn ""
- set flags ""
- set rflags ""
-
- if { [is_record_based $method] == 1 } {
- set key ""
- }
-
- puts "\tTest$tstn.a: Create $method database."
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tstn.db
- set env NULL
- } else {
- set testfile test0$tstn.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- set oflags "-create -mode 0644 $rflags $omethod $args"
- if { [is_record_based $method] == 0 && [is_rbtree $method] != 1 } {
- append oflags " -dup"
- }
- set db [eval {berkdb_open_noerr} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set nkeys 10
- puts "\tTest$tstn.b: Fill page with $nkeys small key/data pairs."
- for { set i 1 } { $i <= $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key$i $data$i}]
- error_check_good dbput:$i $ret 0
- if { $i == 1 } {
- for {set j 0} { $j < [expr $nkeys / 2]} {incr j} {
- set ret [eval {$db put} $txn \
- {$key$i DUPLICATE$j}]
- error_check_good dbput:dup:$j $ret 0
- }
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # DBC GET
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc_u [eval {$db cursor} $txn]
- error_check_good db:cursor [is_valid_cursor $dbc_u $db] TRUE
-
- puts "\tTest$tstn.c: Test dbc->get interfaces..."
- set i 0
- foreach flag { current first last next prev nextdup} {
- puts "\t\t...dbc->get($flag)"
- catch {$dbc_u get -$flag} ret
- error_check_good dbc:get:$flag [is_substr $errorCode EINVAL] 1
- }
-
- foreach flag { set set_range get_both} {
- puts "\t\t...dbc->get($flag)"
- if { [string compare $flag get_both] == 0} {
- catch {$dbc_u get -$flag $key$i data0} ret
- } else {
- catch {$dbc_u get -$flag $key$i} ret
- }
- error_check_good dbc:get:$flag [is_substr $errorCode EINVAL] 1
- }
-
- puts "\t\t...dbc->get(current, partial)"
- catch {$dbc_u get -current -partial {0 0}} ret
- error_check_good dbc:get:partial [is_substr $errorCode EINVAL] 1
-
- puts "\t\t...dbc->get(current, rmw)"
- catch {$dbc_u get -rmw -current } ret
- error_check_good dbc_get:rmw [is_substr $errorCode EINVAL] 1
-
- puts "\tTest$tstn.d: Test dbc->put interface..."
- # partial...depends on another
- foreach flag { after before current keyfirst keylast } {
- puts "\t\t...dbc->put($flag)"
- if { [string match key* $flag] == 1 } {
- if { [is_record_based $method] == 1 } {
- # keyfirst/keylast not allowed in recno
- puts "\t\t...Skipping dbc->put($flag) for $method."
- continue
- } else {
- # keyfirst/last should succeed
- puts "\t\t...dbc->put($flag)...should succeed for $method"
- error_check_good dbcput:$flag \
- [$dbc_u put -$flag $key$i data0] 0
-
- # now uninitialize cursor
- error_check_good dbc_close [$dbc_u close] 0
- set dbc_u [eval {$db cursor} $txn]
- error_check_good \
- db_cursor [is_substr $dbc_u $db] 1
- }
- } elseif { [string compare $flag before ] == 0 ||
- [string compare $flag after ] == 0 } {
- if { [is_record_based $method] == 0 &&
- [is_rbtree $method] == 0} {
- set ret [$dbc_u put -$flag data0]
- error_check_good "$dbc_u:put:-$flag" $ret 0
- } elseif { $renum == 1 } {
- # Renumbering recno will return a record number
- set currecno \
- [lindex [lindex [$dbc_u get -current] 0] 0]
- set ret [$dbc_u put -$flag data0]
- if { [string compare $flag after] == 0 } {
- error_check_good "$dbc_u put $flag" \
- $ret [expr $currecno + 1]
- } else {
- error_check_good "$dbc_u put $flag" \
- $ret $currecno
- }
- } else {
- puts "\t\tSkipping $flag for $method"
- }
- } else {
- set ret [$dbc_u put -$flag data0]
- error_check_good "$dbc_u:put:-$flag" $ret 0
- }
- }
- # and partial
- puts "\t\t...dbc->put(partial)"
- catch {$dbc_u put -partial {0 0} $key$i $data$i} ret
- error_check_good dbc_put:partial [is_substr $errorCode EINVAL] 1
-
- # XXX dbc->dup, db->join (dbc->get join_item)
- # dbc del
- puts "\tTest$tstn.e: Test dbc->del interface."
- catch {$dbc_u del} ret
- error_check_good dbc_del [is_substr $errorCode EINVAL] 1
-
- error_check_good dbc_close [$dbc_u close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest$tstn complete."
-}
diff --git a/bdb/test/test050.tcl b/bdb/test/test050.tcl
deleted file mode 100644
index dfaeddd035c..00000000000
--- a/bdb/test/test050.tcl
+++ /dev/null
@@ -1,221 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test050.tcl,v 11.21 2002/05/24 14:15:13 bostic Exp $
-#
-# TEST test050
-# TEST Overwrite test of small/big key/data with cursor checks for Recno.
-proc test050 { method args } {
- global alphabet
- global errorInfo
- global errorCode
- source ./include.tcl
-
- set tstn 050
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_rrecno $method] != 1 } {
- puts "Test$tstn skipping for method $method."
- return
- }
-
- puts "\tTest$tstn:\
- Overwrite test with cursor and small/big key/data ($method)."
-
- set data "data"
- set txn ""
- set flags ""
-
- puts "\tTest$tstn: Create $method database."
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tstn.db
- set env NULL
- } else {
- set testfile test0$tstn.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- set oflags "-create -mode 0644 $args $omethod"
- set db [eval {berkdb_open_noerr} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # keep nkeys even
- set nkeys 20
-
- # Fill page w/ small key/data pairs
- #
- puts "\tTest$tstn: Fill page with $nkeys small key/data pairs."
- for { set i 1 } { $i <= $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$i [chop_data $method $data$i]}]
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- # open curs to db
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- # get db order of keys
- for {set i 0; set ret [$dbc get -first]} { [llength $ret] != 0} { \
- set ret [$dbc get -next]} {
- set key_set($i) [lindex [lindex $ret 0] 0]
- set data_set($i) [lindex [lindex $ret 0] 1]
- incr i
- }
-
- # verify ordering: should be unnecessary, but hey, why take chances?
- # key_set is zero indexed but keys start at 1
- for {set i 0} { $i < $nkeys } {incr i} {
- error_check_good \
- verify_order:$i $key_set($i) [pad_data $method [expr $i+1]]
- }
-
- puts "\tTest$tstn.a: Inserts before/after by cursor."
- puts "\t\tTest$tstn.a.1:\
- Insert with uninitialized cursor (should fail)."
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
- catch {$dbc put -before DATA1} ret
- error_check_good dbc_put:before:uninit [is_substr $errorCode EINVAL] 1
-
- catch {$dbc put -after DATA2} ret
- error_check_good dbc_put:after:uninit [is_substr $errorCode EINVAL] 1
-
- puts "\t\tTest$tstn.a.2: Insert with deleted cursor (should succeed)."
- set ret [$dbc get -first]
- error_check_bad dbc_get:first [llength $ret] 0
- error_check_good dbc_del [$dbc del] 0
- set ret [$dbc put -current DATAOVER1]
- error_check_good dbc_put:current:deleted $ret 0
-
- puts "\t\tTest$tstn.a.3: Insert by cursor before cursor (DB_BEFORE)."
- set currecno [lindex [lindex [$dbc get -current] 0] 0]
- set ret [$dbc put -before DATAPUTBEFORE]
- error_check_good dbc_put:before $ret $currecno
- set old1 [$dbc get -next]
- error_check_bad dbc_get:next [llength $old1] 0
- error_check_good \
- dbc_get:next(compare) [lindex [lindex $old1 0] 1] DATAOVER1
-
- puts "\t\tTest$tstn.a.4: Insert by cursor after cursor (DB_AFTER)."
- set ret [$dbc get -first]
- error_check_bad dbc_get:first [llength $ret] 0
- error_check_good dbc_get:first [lindex [lindex $ret 0] 1] DATAPUTBEFORE
- set currecno [lindex [lindex [$dbc get -current] 0] 0]
- set ret [$dbc put -after DATAPUTAFTER]
- error_check_good dbc_put:after $ret [expr $currecno + 1]
- set ret [$dbc get -prev]
- error_check_bad dbc_get:prev [llength $ret] 0
- error_check_good \
- dbc_get:prev [lindex [lindex $ret 0] 1] DATAPUTBEFORE
-
- puts "\t\tTest$tstn.a.5: Verify that all keys have been renumbered."
- # should be $nkeys + 2 keys, starting at 1
- for {set i 1; set ret [$dbc get -first]} { \
- $i <= $nkeys && [llength $ret] != 0 } {\
- incr i; set ret [$dbc get -next]} {
- error_check_good check_renumber $i [lindex [lindex $ret 0] 0]
- }
-
- # tested above
-
- puts "\tTest$tstn.b: Overwrite tests (cursor and key)."
- # For the next part of the test, we need a db with no dups to test
- # overwrites
- #
- # we should have ($nkeys + 2) keys, ordered:
- # DATAPUTBEFORE, DATAPUTAFTER, DATAOVER1, data1, ..., data$nkeys
- #
- # Prepare cursor on item
- #
- set ret [$dbc get -first]
- error_check_bad dbc_get:first [llength $ret] 0
-
- # Prepare unique big/small values for an initial
- # and an overwrite set of data
- set databig DATA_BIG_[repeat alphabet 250]
- set datasmall DATA_SMALL
-
- # Now, we want to overwrite data:
- # by key and by cursor
- # 1. small by small
- # 2. small by big
- # 3. big by small
- # 4. big by big
- #
- set i 0
- # Do all overwrites for key and cursor
- foreach type { by_key by_cursor } {
- incr i
- puts "\tTest$tstn.b.$i: Overwrites $type."
- foreach pair { {small small} \
- {small big} {big small} {big big} } {
- # put in initial type
- set data $data[lindex $pair 0]
- set ret [$dbc put -current $data]
- error_check_good dbc_put:curr:init:($pair) $ret 0
-
- # Now, try to overwrite: dups not supported in this db
- if { [string compare $type by_key] == 0 } {
- puts "\t\tTest$tstn.b.$i:\
- Overwrite:($pair):$type"
- set ret [eval {$db put} $txn \
- 1 {OVER$pair$data[lindex $pair 1]}]
- error_check_good dbput:over:($pair) $ret 0
- } else {
- # This is a cursor overwrite
- puts "\t\tTest$tstn.b.$i:\
- Overwrite:($pair) by cursor."
- set ret [$dbc put \
- -current OVER$pair$data[lindex $pair 1]]
- error_check_good dbcput:over:($pair) $ret 0
- }
- } ;# foreach pair
- } ;# foreach type key/cursor
-
- puts "\tTest$tstn.c: Cleanup and close cursor."
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
-}
diff --git a/bdb/test/test051.tcl b/bdb/test/test051.tcl
deleted file mode 100644
index 830b7630788..00000000000
--- a/bdb/test/test051.tcl
+++ /dev/null
@@ -1,219 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test051.tcl,v 11.21 2002/05/24 13:43:24 sue Exp $
-#
-# TEST test051
-# TEST Fixed-length record Recno test.
-# TEST 0. Test various flags (legal and illegal) to open
-# TEST 1. Test partial puts where dlen != size (should fail)
-# TEST 2. Partial puts for existent record -- replaces at beg, mid, and
-# TEST end of record, as well as full replace
-proc test051 { method { args "" } } {
- global fixed_len
- global errorInfo
- global errorCode
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test051: Test of the fixed length records."
- if { [is_fixed_length $method] != 1 } {
- puts "Test051: skipping for method $method"
- return
- }
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test051.db
- set testfile1 $testdir/test051a.db
- set env NULL
- } else {
- set testfile test051.db
- set testfile1 test051a.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
- set oflags "-create -mode 0644 $args"
-
- # Test various flags (legal and illegal) to open
- puts "\tTest051.a: Test correct flag behavior on open."
- set errorCode NONE
- foreach f { "-dup" "-dup -dupsort" "-recnum" } {
- puts "\t\tTest051.a: Test flag $f"
- set stat [catch {eval {berkdb_open_noerr} $oflags $f $omethod \
- $testfile} ret]
- error_check_good dbopen:flagtest:catch $stat 1
- error_check_good \
- dbopen:flagtest:$f [is_substr $errorCode EINVAL] 1
- set errorCode NONE
- }
- set f "-renumber"
- puts "\t\tTest051.a: Test $f"
- if { [is_frecno $method] == 1 } {
- set db [eval {berkdb_open} $oflags $f $omethod $testfile]
- error_check_good dbopen:flagtest:$f [is_valid_db $db] TRUE
- $db close
- } else {
- error_check_good \
- dbopen:flagtest:catch [catch {eval {berkdb_open_noerr}\
- $oflags $f $omethod $testfile} ret] 1
- error_check_good \
- dbopen:flagtest:$f [is_substr $errorCode EINVAL] 1
- }
-
- # Test partial puts where dlen != size (should fail)
- # it is an error to specify a partial put w/ different
- # dlen and size in fixed length recno/queue
- set key 1
- set data ""
- set txn ""
- set test_char "a"
-
- set db [eval {berkdb_open_noerr} $oflags $omethod $testfile1]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- puts "\tTest051.b: Partial puts with dlen != size."
- foreach dlen { 1 16 20 32 } {
- foreach doff { 0 10 20 32 } {
- # dlen < size
- puts "\t\tTest051.e: dlen: $dlen, doff: $doff, \
- size: [expr $dlen+1]"
- set data [repeat $test_char [expr $dlen + 1]]
- error_check_good catch:put 1 [catch {eval {$db put -partial \
- [list $doff $dlen]} $txn {$key $data}} ret]
- #
- # We don't get back the server error string just
- # the result.
- #
- if { $eindex == -1 } {
- error_check_good "dbput:partial: dlen < size" \
- [is_substr $errorInfo "Length improper"] 1
- } else {
- error_check_good "dbput:partial: dlen < size" \
- [is_substr $errorCode "EINVAL"] 1
- }
-
- # dlen > size
- puts "\t\tTest051.e: dlen: $dlen, doff: $doff, \
- size: [expr $dlen-1]"
- set data [repeat $test_char [expr $dlen - 1]]
- error_check_good catch:put 1 [catch {eval {$db put -partial \
- [list $doff $dlen]} $txn {$key $data}} ret]
- if { $eindex == -1 } {
- error_check_good "dbput:partial: dlen > size" \
- [is_substr $errorInfo "Length improper"] 1
- } else {
- error_check_good "dbput:partial: dlen < size" \
- [is_substr $errorCode "EINVAL"] 1
- }
- }
- }
-
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- $db close
-
- # Partial puts for existent record -- replaces at beg, mid, and
- # end of record, as well as full replace
- puts "\tTest051.f: Partial puts within existent record."
- set db [eval {berkdb_open} $oflags $omethod $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- puts "\t\tTest051.f: First try a put and then a full replace."
- set data [repeat "a" $fixed_len]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {1 $data}]
- error_check_good dbput $ret 0
- set ret [eval {$db get} $txn {-recno 1}]
- error_check_good dbget $data [lindex [lindex $ret 0] 1]
-
- set data [repeat "b" $fixed_len]
- set ret [eval {$db put -partial [list 0 $fixed_len]} $txn {1 $data}]
- error_check_good dbput $ret 0
- set ret [eval {$db get} $txn {-recno 1}]
- error_check_good dbget $data [lindex [lindex $ret 0] 1]
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set data "InitialData"
- set pdata "PUT"
- set dlen [string length $pdata]
- set ilen [string length $data]
- set mid [expr $ilen/2]
-
- # put initial data
- set key 0
-
- set offlist [list 0 $mid [expr $ilen -1] [expr $fixed_len - $dlen]]
- puts "\t\tTest051.g: Now replace at different offsets ($offlist)."
- foreach doff $offlist {
- incr key
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key $data}]
- error_check_good dbput:init $ret 0
-
- puts "\t\t Test051.g: Replace at offset $doff."
- set ret [eval {$db put -partial [list $doff $dlen]} $txn \
- {$key $pdata}]
- error_check_good dbput:partial $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- if { $doff == 0} {
- set beg ""
- set end [string range $data $dlen $ilen]
- } else {
- set beg [string range $data 0 [expr $doff - 1]]
- set end [string range $data [expr $doff + $dlen] $ilen]
- }
- if { $doff > $ilen } {
- # have to put padding between record and inserted
- # string
- set newdata [format %s%s $beg $end]
- set diff [expr $doff - $ilen]
- set nlen [string length $newdata]
- set newdata [binary \
- format a[set nlen]x[set diff]a$dlen $newdata $pdata]
- } else {
- set newdata [make_fixed_length \
- frecno [format %s%s%s $beg $pdata $end]]
- }
- set ret [$db get -recno $key]
- error_check_good compare($newdata,$ret) \
- [binary_compare [lindex [lindex $ret 0] 1] $newdata] 0
- }
-
- $db close
-}
diff --git a/bdb/test/test052.tcl b/bdb/test/test052.tcl
deleted file mode 100644
index 1f386449630..00000000000
--- a/bdb/test/test052.tcl
+++ /dev/null
@@ -1,276 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test052.tcl,v 11.16 2002/07/08 20:48:58 sandstro Exp $
-#
-# TEST test052
-# TEST Renumbering record Recno test.
-proc test052 { method args } {
- global alphabet
- global errorInfo
- global errorCode
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test052: Test of renumbering recno."
- if { [is_rrecno $method] != 1} {
- puts "Test052: skipping for method $method."
- return
- }
-
- set data "data"
- set txn ""
- set flags ""
-
- puts "\tTest052: Create $method database."
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test052.db
- set env NULL
- } else {
- set testfile test052.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- set oflags "-create -mode 0644 $args $omethod"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # keep nkeys even
- set nkeys 20
-
- # Fill page w/ small key/data pairs
- puts "\tTest052: Fill page with $nkeys small key/data pairs."
- for { set i 1 } { $i <= $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$i $data$i}]
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # open curs to db
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- # get db order of keys
- for {set i 1; set ret [$dbc get -first]} { [llength $ret] != 0} { \
- set ret [$dbc get -next]} {
- set keys($i) [lindex [lindex $ret 0] 0]
- set darray($i) [lindex [lindex $ret 0] 1]
- incr i
- }
-
- puts "\tTest052: Deletes by key."
- puts "\t Test052.a: Get data with SET, then delete before cursor."
- # get key in middle of page, call this the nth set curr to it
- set i [expr $nkeys/2]
- set k $keys($i)
- set ret [$dbc get -set $k]
- error_check_bad dbc_get:set [llength $ret] 0
- error_check_good dbc_get:set [lindex [lindex $ret 0] 1] $darray($i)
-
- # delete by key before current
- set i [incr i -1]
- error_check_good db_del:before [eval {$db del} $txn {$keys($i)}] 0
- # with renumber, current's data should be constant, but key==--key
- set i [incr i +1]
- error_check_good dbc:data \
- [lindex [lindex [$dbc get -current] 0] 1] $darray($i)
- error_check_good dbc:keys \
- [lindex [lindex [$dbc get -current] 0] 0] $keys([expr $nkeys/2 - 1])
-
- puts "\t Test052.b: Delete cursor item by key."
- set i [expr $nkeys/2 ]
-
- set ret [$dbc get -set $keys($i)]
- error_check_bad dbc:get [llength $ret] 0
- error_check_good dbc:get:curs [lindex [lindex $ret 0] 1] \
- $darray([expr $i + 1])
- error_check_good db_del:curr [eval {$db del} $txn {$keys($i)}] 0
- set ret [$dbc get -current]
-
- # After a delete, cursor should return DB_NOTFOUND.
- error_check_good dbc:get:key [llength [lindex [lindex $ret 0] 0]] 0
- error_check_good dbc:get:data [llength [lindex [lindex $ret 0] 1]] 0
-
- # And the item after the cursor should now be
- # key: $nkeys/2, data: $nkeys/2 + 2
- set ret [$dbc get -next]
- error_check_bad dbc:getnext [llength $ret] 0
- error_check_good dbc:getnext:data \
- [lindex [lindex $ret 0] 1] $darray([expr $i + 2])
- error_check_good dbc:getnext:keys \
- [lindex [lindex $ret 0] 0] $keys($i)
-
- puts "\t Test052.c: Delete item after cursor."
- # should be { keys($nkeys/2), darray($nkeys/2 + 2) }
- set i [expr $nkeys/2]
- # deleting data for key after current (key $nkeys/2 + 1)
- error_check_good db_del [eval {$db del} $txn {$keys([expr $i + 1])}] 0
-
- # current should be constant
- set ret [$dbc get -current]
- error_check_bad dbc:get:current [llength $ret] 0
- error_check_good dbc:get:keys [lindex [lindex $ret 0] 0] \
- $keys($i)
- error_check_good dbc:get:data [lindex [lindex $ret 0] 1] \
- $darray([expr $i + 2])
-
- puts "\tTest052: Deletes by cursor."
- puts "\t Test052.d: Delete, do DB_NEXT."
- set i 1
- set ret [$dbc get -first]
- error_check_bad dbc_get:first [llength $ret] 0
- error_check_good dbc_get:first [lindex [lindex $ret 0] 1] $darray($i)
- error_check_good dbc_del [$dbc del] 0
- set ret [$dbc get -current]
- error_check_bad dbc_get:current [llength $ret] 0
- error_check_good dbc:getcurrent:key \
- [llength [lindex [lindex $ret 0] 0]] 0
- error_check_good dbc:getcurrent:data \
- [llength [lindex [lindex $ret 0] 1]] 0
-
- set ret [$dbc get -next]
- error_check_bad dbc_get:next [llength $ret] 0
- error_check_good dbc:get:curs \
- [lindex [lindex $ret 0] 1] $darray([expr $i + 1])
- error_check_good dbc:get:keys \
- [lindex [lindex $ret 0] 0] $keys($i)
-
- # Move one more forward, so we're not on the first item.
- error_check_bad dbc:getnext [llength [$dbc get -next]] 0
-
- puts "\t Test052.e: Delete, do DB_PREV."
- error_check_good dbc:del [$dbc del] 0
- set ret [$dbc get -current]
- error_check_bad dbc:get:curr [llength $ret] 0
- error_check_good dbc:getcurrent:key \
- [llength [lindex [lindex $ret 0] 0]] 0
- error_check_good dbc:getcurrent:data \
- [llength [lindex [lindex $ret 0] 1]] 0
-
- # next should now reference the record that was previously after
- # old current
- set ret [$dbc get -next]
- error_check_bad get:next [llength $ret] 0
- error_check_good dbc:get:next:data \
- [lindex [lindex $ret 0] 1] $darray([expr $i + 3])
- error_check_good dbc:get:next:keys \
- [lindex [lindex $ret 0] 0] $keys([expr $i + 1])
-
- set ret [$dbc get -prev]
- error_check_bad dbc:get:curr [llength $ret] 0
- error_check_good dbc:get:curr:compare \
- [lindex [lindex $ret 0] 1] $darray([expr $i + 1])
- error_check_good dbc:get:curr:keys \
- [lindex [lindex $ret 0] 0] $keys($i)
-
- # The rest of the test was written with the old rrecno semantics,
- # which required a separate c_del(CURRENT) test; to leave
- # the database in the expected state, we now delete the first item.
- set ret [$dbc get -first]
- error_check_bad getfirst [llength $ret] 0
- error_check_good delfirst [$dbc del] 0
-
- puts "\tTest052: Inserts."
- puts "\t Test052.g: Insert before (DB_BEFORE)."
- set i 1
- set ret [$dbc get -first]
- error_check_bad dbc:get:first [llength $ret] 0
- error_check_good dbc_get:first \
- [lindex [lindex $ret 0] 0] $keys($i)
- error_check_good dbc_get:first:data \
- [lindex [lindex $ret 0] 1] $darray([expr $i + 3])
-
- set ret [$dbc put -before $darray($i)]
- # should return new key, which should be $keys($i)
- error_check_good dbc_put:before $ret $keys($i)
- # cursor should adjust to point to new item
- set ret [$dbc get -current]
- error_check_bad dbc_get:curr [llength $ret] 0
- error_check_good dbc_put:before:keys \
- [lindex [lindex $ret 0] 0] $keys($i)
- error_check_good dbc_put:before:data \
- [lindex [lindex $ret 0] 1] $darray($i)
-
- set ret [$dbc get -next]
- error_check_bad dbc_get:next [llength $ret] 0
- error_check_good dbc_get:next:compare \
- $ret [list [list $keys([expr $i + 1]) $darray([expr $i + 3])]]
- set ret [$dbc get -prev]
- error_check_bad dbc_get:prev [llength $ret] 0
-
- puts "\t Test052.h: Insert by cursor after (DB_AFTER)."
- set i [incr i]
- set ret [$dbc put -after $darray($i)]
- # should return new key, which should be $keys($i)
- error_check_good dbcput:after $ret $keys($i)
- # cursor should reference new item
- set ret [$dbc get -current]
- error_check_good dbc:get:current:keys \
- [lindex [lindex $ret 0] 0] $keys($i)
- error_check_good dbc:get:current:data \
- [lindex [lindex $ret 0] 1] $darray($i)
-
- # items after curs should be adjusted
- set ret [$dbc get -next]
- error_check_bad dbc:get:next [llength $ret] 0
- error_check_good dbc:get:next:compare \
- $ret [list [list $keys([expr $i + 1]) $darray([expr $i + 2])]]
-
- puts "\t Test052.i: Insert (overwrite) current item (DB_CURRENT)."
- set i 1
- set ret [$dbc get -first]
- error_check_bad dbc_get:first [llength $ret] 0
- # choose a datum that is not currently in db
- set ret [$dbc put -current $darray([expr $i + 2])]
- error_check_good dbc_put:curr $ret 0
- # curs should be on new item
- set ret [$dbc get -current]
- error_check_bad dbc_get:current [llength $ret] 0
- error_check_good dbc_get:curr:keys \
- [lindex [lindex $ret 0] 0] $keys($i)
- error_check_good dbc_get:curr:data \
- [lindex [lindex $ret 0] 1] $darray([expr $i + 2])
-
- set ret [$dbc get -next]
- error_check_bad dbc_get:next [llength $ret] 0
- set i [incr i]
- error_check_good dbc_get:next \
- $ret [list [list $keys($i) $darray($i)]]
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest052 complete."
-}
diff --git a/bdb/test/test053.tcl b/bdb/test/test053.tcl
deleted file mode 100644
index 3e217a2b55f..00000000000
--- a/bdb/test/test053.tcl
+++ /dev/null
@@ -1,225 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test053.tcl,v 11.18 2002/05/24 15:24:55 sue Exp $
-#
-# TEST test053
-# TEST Test of the DB_REVSPLITOFF flag in the Btree and Btree-w-recnum
-# TEST methods.
-proc test053 { method args } {
- global alphabet
- global errorCode
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "\tTest053: Test of cursor stability across btree splits."
- if { [is_btree $method] != 1 && [is_rbtree $method] != 1 } {
- puts "Test053: skipping for method $method."
- return
- }
-
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test053: skipping for specific pagesizes"
- return
- }
-
- set txn ""
- set flags ""
-
- puts "\tTest053.a: Create $omethod $args database."
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test053.db
- set env NULL
- } else {
- set testfile test053.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- set oflags \
- "-create -revsplitoff -pagesize 1024 $args $omethod"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set nkeys 8
- set npages 15
-
- # We want to create a db with npages leaf pages, and have each page
- # be near full with keys that we can predict. We set pagesize above
- # to 1024 bytes, it should breakdown as follows (per page):
- #
- # ~20 bytes overhead
- # key: ~4 bytes overhead, XXX0N where X is a letter, N is 0-9
- # data: ~4 bytes overhead, + 100 bytes
- #
- # then, with 8 keys/page we should be just under 1024 bytes
- puts "\tTest053.b: Create $npages pages with $nkeys pairs on each."
- set keystring [string range $alphabet 0 [expr $npages -1]]
- set data [repeat DATA 22]
- for { set i 0 } { $i < $npages } {incr i } {
- set key ""
- set keyroot \
- [repeat [string toupper [string range $keystring $i $i]] 3]
- set key_set($i) $keyroot
- for {set j 0} { $j < $nkeys} {incr j} {
- if { $j < 10 } {
- set key [set keyroot]0$j
- } else {
- set key $keyroot$j
- }
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key $data}]
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- }
-
- puts "\tTest053.c: Check page count."
- error_check_good page_count:check \
- [is_substr [$db stat] "{Leaf pages} $npages"] 1
-
- puts "\tTest053.d: Delete all but one key per page."
- for {set i 0} { $i < $npages } {incr i } {
- for {set j 1} { $j < $nkeys } {incr j } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db del} $txn {$key_set($i)0$j}]
- error_check_good dbdel $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- }
- puts "\tTest053.e: Check to make sure all pages are still there."
- error_check_good page_count:check \
- [is_substr [$db stat] "{Leaf pages} $npages"] 1
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db:cursor [is_valid_cursor $dbc $db] TRUE
-
- # walk cursor through tree forward, backward.
- # delete one key, repeat
- for {set i 0} { $i < $npages} {incr i} {
- puts -nonewline \
- "\tTest053.f.$i: Walk curs through tree: forward..."
- for { set j $i; set curr [$dbc get -first]} { $j < $npages} { \
- incr j; set curr [$dbc get -next]} {
- error_check_bad dbc:get:next [llength $curr] 0
- error_check_good dbc:get:keys \
- [lindex [lindex $curr 0] 0] $key_set($j)00
- }
- puts -nonewline "backward..."
- for { set j [expr $npages - 1]; set curr [$dbc get -last]} { \
- $j >= $i } { \
- set j [incr j -1]; set curr [$dbc get -prev]} {
- error_check_bad dbc:get:prev [llength $curr] 0
- error_check_good dbc:get:keys \
- [lindex [lindex $curr 0] 0] $key_set($j)00
- }
- puts "complete."
-
- if { [is_rbtree $method] == 1} {
- puts "\t\tTest053.f.$i:\
- Walk through tree with record numbers."
- for {set j 1} {$j <= [expr $npages - $i]} {incr j} {
- set curr [eval {$db get} $txn {-recno $j}]
- error_check_bad \
- db_get:recno:$j [llength $curr] 0
- error_check_good db_get:recno:keys:$j \
- [lindex [lindex $curr 0] 0] \
- $key_set([expr $j + $i - 1])00
- }
- }
- puts "\tTest053.g.$i:\
- Delete single key ([expr $npages - $i] keys left)."
- set ret [eval {$db del} $txn {$key_set($i)00}]
- error_check_good dbdel $ret 0
- error_check_good del:check \
- [llength [eval {$db get} $txn {$key_set($i)00}]] 0
- }
-
- # end for loop, verify db_notfound
- set ret [$dbc get -first]
- error_check_good dbc:get:verify [llength $ret] 0
-
- # loop: until single key restored on each page
- for {set i 0} { $i < $npages} {incr i} {
- puts "\tTest053.i.$i:\
- Restore single key ([expr $i + 1] keys in tree)."
- set ret [eval {$db put} $txn {$key_set($i)00 $data}]
- error_check_good dbput $ret 0
-
- puts -nonewline \
- "\tTest053.j: Walk cursor through tree: forward..."
- for { set j 0; set curr [$dbc get -first]} { $j <= $i} {\
- incr j; set curr [$dbc get -next]} {
- error_check_bad dbc:get:next [llength $curr] 0
- error_check_good dbc:get:keys \
- [lindex [lindex $curr 0] 0] $key_set($j)00
- }
- error_check_good dbc:get:next [llength $curr] 0
-
- puts -nonewline "backward..."
- for { set j $i; set curr [$dbc get -last]} { \
- $j >= 0 } { \
- set j [incr j -1]; set curr [$dbc get -prev]} {
- error_check_bad dbc:get:prev [llength $curr] 0
- error_check_good dbc:get:keys \
- [lindex [lindex $curr 0] 0] $key_set($j)00
- }
- puts "complete."
- error_check_good dbc:get:prev [llength $curr] 0
-
- if { [is_rbtree $method] == 1} {
- puts "\t\tTest053.k.$i:\
- Walk through tree with record numbers."
- for {set j 1} {$j <= [expr $i + 1]} {incr j} {
- set curr [eval {$db get} $txn {-recno $j}]
- error_check_bad \
- db_get:recno:$j [llength $curr] 0
- error_check_good db_get:recno:keys:$j \
- [lindex [lindex $curr 0] 0] \
- $key_set([expr $j - 1])00
- }
- }
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "Test053 complete."
-}
diff --git a/bdb/test/test054.tcl b/bdb/test/test054.tcl
deleted file mode 100644
index f53f5a658bf..00000000000
--- a/bdb/test/test054.tcl
+++ /dev/null
@@ -1,461 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test054.tcl,v 11.23 2002/06/17 18:41:29 sue Exp $
-#
-# TEST test054
-# TEST Cursor maintenance during key/data deletion.
-# TEST
-# TEST This test checks for cursor maintenance in the presence of deletes.
-# TEST There are N different scenarios to tests:
-# TEST 1. No duplicates. Cursor A deletes a key, do a GET for the key.
-# TEST 2. No duplicates. Cursor is positioned right before key K, Delete K,
-# TEST do a next on the cursor.
-# TEST 3. No duplicates. Cursor is positioned on key K, do a regular delete
-# TEST of K, do a current get on K.
-# TEST 4. Repeat 3 but do a next instead of current.
-# TEST 5. Duplicates. Cursor A is on the first item of a duplicate set, A
-# TEST does a delete. Then we do a non-cursor get.
-# TEST 6. Duplicates. Cursor A is in a duplicate set and deletes the item.
-# TEST do a delete of the entire Key. Test cursor current.
-# TEST 7. Continue last test and try cursor next.
-# TEST 8. Duplicates. Cursor A is in a duplicate set and deletes the item.
-# TEST Cursor B is in the same duplicate set and deletes a different item.
-# TEST Verify that the cursor is in the right place.
-# TEST 9. Cursors A and B are in the place in the same duplicate set. A
-# TEST deletes its item. Do current on B.
-# TEST 10. Continue 8 and do a next on B.
-proc test054 { method args } {
- global errorInfo
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- append args " -create -mode 0644"
- puts "Test054 ($method $args):\
- interspersed cursor and normal operations"
- if { [is_record_based $method] == 1 } {
- puts "Test054 skipping for method $method"
- return
- }
-
- # Find the environment in the argument list, we'll need it
- # later.
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- }
-
- # Create the database and open the dictionary
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test054-nodup.db
- set env NULL
- } else {
- set testfile test054-nodup.db
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set flags ""
- set txn ""
-
- puts "\tTest054.a: No Duplicate Tests"
- set db [eval {berkdb_open} $args {$omethod $testfile}]
- error_check_good db_open:nodup [is_valid_db $db] TRUE
-
- # Put three keys in the database
- for { set key 1 } { $key <= 3 } {incr key} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} $txn $flags {$key datum$key}]
- error_check_good put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set curs [eval {$db cursor} $txn]
- error_check_good curs_open:nodup [is_valid_cursor $curs $db] TRUE
-
- # Retrieve keys sequentially so we can figure out their order
- set i 1
- for {set d [$curs get -first] } \
- {[llength $d] != 0 } \
- {set d [$curs get -next] } {
- set key_set($i) [lindex [lindex $d 0] 0]
- incr i
- }
-
- # Test case #1.
- puts "\tTest054.a1: Delete w/cursor, regular get"
-
- # Now set the cursor on the middle on.
- set r [$curs get -set $key_set(2)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(2)
- error_check_good curs_get:DB_SET:data $d datum$key_set(2)
-
- # Now do the delete
- set r [$curs del]
- error_check_good curs_del $r 0
-
- # Now do the get
- set r [eval {$db get} $txn {$key_set(2)}]
- error_check_good get_after_del [llength $r] 0
-
- # Free up the cursor.
- error_check_good cursor_close [eval {$curs close}] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Test case #2.
- puts "\tTest054.a2: Cursor before K, delete K, cursor next"
-
- # Replace key 2
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} $txn {$key_set(2) datum$key_set(2)}]
- error_check_good put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # Open and position cursor on first item.
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set curs [eval {$db cursor} $txn]
- error_check_good curs_open:nodup [is_valid_cursor $curs $db] TRUE
-
- # Retrieve keys sequentially so we can figure out their order
- set i 1
- for {set d [eval {$curs get} -first] } \
- {[llength $d] != 0 } \
- {set d [$curs get -nextdup] } {
- set key_set($i) [lindex [lindex $d 0] 0]
- incr i
- }
-
- set r [eval {$curs get} -set {$key_set(1)} ]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(1)
- error_check_good curs_get:DB_SET:data $d datum$key_set(1)
-
- # Now delete (next item) $key_set(2)
- error_check_good \
- db_del:$key_set(2) [eval {$db del} $txn {$key_set(2)}] 0
-
- # Now do next on cursor
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(3)
- error_check_good curs_get:DB_NEXT:data $d datum$key_set(3)
-
- # Test case #3.
- puts "\tTest054.a3: Cursor on K, delete K, cursor current"
-
- # delete item 3
- error_check_good \
- db_del:$key_set(3) [eval {$db del} $txn {$key_set(3)}] 0
- # NEEDS TO COME BACK IN, BUG CHECK
- set ret [$curs get -current]
- error_check_good current_after_del $ret [list [list [] []]]
- error_check_good cursor_close [$curs close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- puts "\tTest054.a4: Cursor on K, delete K, cursor next"
-
- # Restore keys 2 and 3
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} $txn {$key_set(2) datum$key_set(2)}]
- error_check_good put $r 0
- set r [eval {$db put} $txn {$key_set(3) datum$key_set(3)}]
- error_check_good put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- # Create the new cursor and put it on 1
- set curs [eval {$db cursor} $txn]
- error_check_good curs_open:nodup [is_valid_cursor $curs $db] TRUE
- set r [$curs get -set $key_set(1)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(1)
- error_check_good curs_get:DB_SET:data $d datum$key_set(1)
-
- # Delete 2
- error_check_good \
- db_del:$key_set(2) [eval {$db del} $txn {$key_set(2)}] 0
-
- # Now do next on cursor
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(3)
- error_check_good curs_get:DB_NEXT:data $d datum$key_set(3)
-
- # Close cursor
- error_check_good curs_close [$curs close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now get ready for duplicate tests
-
- if { [is_rbtree $method] == 1 } {
- puts "Test054: skipping remainder of test for method $method."
- return
- }
-
- puts "\tTest054.b: Duplicate Tests"
- append args " -dup"
-
- # Open a new database for the dup tests so -truncate is not needed.
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test054-dup.db
- set env NULL
- } else {
- set testfile test054-dup.db
- set env [lindex $args $eindex]
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set flags ""
- set txn ""
-
- set db [eval {berkdb_open} $args {$omethod $testfile}]
- error_check_good db_open:dup [is_valid_db $db] TRUE
-
- # Put three keys in the database
- for { set key 1 } { $key <= 3 } {incr key} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} $txn $flags {$key datum$key}]
- error_check_good put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Retrieve keys sequentially so we can figure out their order
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set curs [eval {$db cursor} $txn]
- error_check_good curs_open:dup [is_valid_cursor $curs $db] TRUE
-
- set i 1
- for {set d [$curs get -first] } \
- {[llength $d] != 0 } \
- {set d [$curs get -nextdup] } {
- set key_set($i) [lindex [lindex $d 0] 0]
- incr i
- }
-
- # Now put in a bunch of duplicates for key 2
- for { set d 1 } { $d <= 5 } {incr d} {
- set r [eval {$db put} $txn $flags {$key_set(2) dup_$d}]
- error_check_good dup:put $r 0
- }
-
- # Test case #5.
- puts "\tTest054.b1: Delete dup w/cursor on first item. Get on key."
-
- # Now set the cursor on the first of the duplicate set.
- set r [eval {$curs get} -set {$key_set(2)}]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(2)
- error_check_good curs_get:DB_SET:data $d datum$key_set(2)
-
- # Now do the delete
- set r [$curs del]
- error_check_good curs_del $r 0
-
- # Now do the get
- set r [eval {$db get} $txn {$key_set(2)}]
- error_check_good get_after_del [lindex [lindex $r 0] 1] dup_1
-
- # Test case #6.
- puts "\tTest054.b2: Now get the next duplicate from the cursor."
-
- # Now do next on cursor
- set r [$curs get -nextdup]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(2)
- error_check_good curs_get:DB_NEXT:data $d dup_1
-
- # Test case #3.
- puts "\tTest054.b3: Two cursors in set; each delete different items"
-
- # Open a new cursor.
- set curs2 [eval {$db cursor} $txn]
- error_check_good curs_open [is_valid_cursor $curs2 $db] TRUE
-
- # Set on last of duplicate set.
- set r [$curs2 get -set $key_set(3)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(3)
- error_check_good curs_get:DB_SET:data $d datum$key_set(3)
-
- set r [$curs2 get -prev]
- error_check_bad cursor_get:DB_PREV [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_PREV:key $k $key_set(2)
- error_check_good curs_get:DB_PREV:data $d dup_5
-
- # Delete the item at cursor 1 (dup_1)
- error_check_good curs1_del [$curs del] 0
-
- # Verify curs1 and curs2
- # current should fail
- set ret [$curs get -current]
- error_check_good \
- curs1_get_after_del $ret [list [list [] []]]
-
- set r [$curs2 get -current]
- error_check_bad curs2_get [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_CURRENT:key $k $key_set(2)
- error_check_good curs_get:DB_CURRENT:data $d dup_5
-
- # Now delete the item at cursor 2 (dup_5)
- error_check_good curs2_del [$curs2 del] 0
-
- # Verify curs1 and curs2
- set ret [$curs get -current]
- error_check_good curs1_get:del2 $ret [list [list [] []]]
-
- set ret [$curs2 get -current]
- error_check_good curs2_get:del2 $ret [list [list [] []]]
-
- # Now verify that next and prev work.
-
- set r [$curs2 get -prev]
- error_check_bad cursor_get:DB_PREV [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_PREV:key $k $key_set(2)
- error_check_good curs_get:DB_PREV:data $d dup_4
-
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(2)
- error_check_good curs_get:DB_NEXT:data $d dup_2
-
- puts "\tTest054.b4: Two cursors same item, one delete, one get"
-
- # Move curs2 onto dup_2
- set r [$curs2 get -prev]
- error_check_bad cursor_get:DB_PREV [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_PREV:key $k $key_set(2)
- error_check_good curs_get:DB_PREV:data $d dup_3
-
- set r [$curs2 get -prev]
- error_check_bad cursor_get:DB_PREV [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_PREV:key $k $key_set(2)
- error_check_good curs_get:DB_PREV:data $d dup_2
-
- # delete on curs 1
- error_check_good curs1_del [$curs del] 0
-
- # Verify gets on both 1 and 2
- set ret [$curs get -current]
- error_check_good \
- curs1_get:deleted $ret [list [list [] []]]
- set ret [$curs2 get -current]
- error_check_good \
- curs2_get:deleted $ret [list [list [] []]]
-
- puts "\tTest054.b5: Now do a next on both cursors"
-
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(2)
- error_check_good curs_get:DB_NEXT:data $d dup_3
-
- set r [$curs2 get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(2)
- error_check_good curs_get:DB_NEXT:data $d dup_3
-
- # Close cursor
- error_check_good curs_close [$curs close] 0
- error_check_good curs2_close [$curs2 close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test055.tcl b/bdb/test/test055.tcl
deleted file mode 100644
index 25134dca4be..00000000000
--- a/bdb/test/test055.tcl
+++ /dev/null
@@ -1,141 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test055.tcl,v 11.16 2002/05/22 15:42:55 sue Exp $
-#
-# TEST test055
-# TEST Basic cursor operations.
-# TEST This test checks basic cursor operations.
-# TEST There are N different scenarios to tests:
-# TEST 1. (no dups) Set cursor, retrieve current.
-# TEST 2. (no dups) Set cursor, retrieve next.
-# TEST 3. (no dups) Set cursor, retrieve prev.
-proc test055 { method args } {
- global errorInfo
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test055: $method interspersed cursor and normal operations"
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test055.db
- set env NULL
- } else {
- set testfile test055.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set flags ""
- set txn ""
-
- puts "\tTest055.a: No duplicates"
- set db [eval {berkdb_open -create -mode 0644 $omethod } \
- $args {$testfile}]
- error_check_good db_open:nodup [is_valid_db $db] TRUE
-
- # Put three keys in the database
- for { set key 1 } { $key <= 3 } {incr key} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} $txn $flags {$key datum$key}]
- error_check_good put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Retrieve keys sequentially so we can figure out their order
- set i 1
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set curs [eval {$db cursor} $txn]
- error_check_good curs_open:nodup [is_valid_cursor $curs $db] TRUE
-
- for {set d [$curs get -first] } { [llength $d] != 0 } {\
- set d [$curs get -next] } {
- set key_set($i) [lindex [lindex $d 0] 0]
- incr i
- }
-
- # Test case #1.
- puts "\tTest055.a1: Set cursor, retrieve current"
-
- # Now set the cursor on the middle on.
- set r [$curs get -set $key_set(2)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(2)
- error_check_good \
- curs_get:DB_SET:data $d [pad_data $method datum$key_set(2)]
-
- # Now retrieve current
- set r [$curs get -current]
- error_check_bad cursor_get:DB_CURRENT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_CURRENT:key $k $key_set(2)
- error_check_good \
- curs_get:DB_CURRENT:data $d [pad_data $method datum$key_set(2)]
-
- # Test case #2.
- puts "\tTest055.a2: Set cursor, retrieve previous"
- set r [$curs get -prev]
- error_check_bad cursor_get:DB_PREV [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_PREV:key $k $key_set(1)
- error_check_good \
- curs_get:DB_PREV:data $d [pad_data $method datum$key_set(1)]
-
- # Test case #3.
- puts "\tTest055.a2: Set cursor, retrieve next"
-
- # Now set the cursor on the middle one.
- set r [$curs get -set $key_set(2)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(2)
- error_check_good \
- curs_get:DB_SET:data $d [pad_data $method datum$key_set(2)]
-
- # Now retrieve next
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(3)
- error_check_good \
- curs_get:DB_NEXT:data $d [pad_data $method datum$key_set(3)]
-
- # Close cursor and database.
- error_check_good curs_close [$curs close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test056.tcl b/bdb/test/test056.tcl
deleted file mode 100644
index ef310332ed1..00000000000
--- a/bdb/test/test056.tcl
+++ /dev/null
@@ -1,169 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test056.tcl,v 11.18 2002/05/22 15:42:55 sue Exp $
-#
-# TEST test056
-# TEST Cursor maintenance during deletes.
-# TEST Check if deleting a key when a cursor is on a duplicate of that
-# TEST key works.
-proc test056 { method args } {
- global errorInfo
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- append args " -create -mode 0644 -dup "
- if { [is_record_based $method] == 1 || [is_rbtree $method] } {
- puts "Test056: skipping for method $method"
- return
- }
- puts "Test056: $method delete of key in presence of cursor"
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test056.db
- set env NULL
- } else {
- set testfile test056.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set flags ""
- set txn ""
-
- set db [eval {berkdb_open} $args {$omethod $testfile}]
- error_check_good db_open:dup [is_valid_db $db] TRUE
-
- puts "\tTest056.a: Key delete with cursor on duplicate."
- # Put three keys in the database
- for { set key 1 } { $key <= 3 } {incr key} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} $txn $flags {$key datum$key}]
- error_check_good put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Retrieve keys sequentially so we can figure out their order
- set i 1
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set curs [eval {$db cursor} $txn]
- error_check_good curs_open:dup [is_valid_cursor $curs $db] TRUE
-
- for {set d [$curs get -first] } { [llength $d] != 0 } {
- set d [$curs get -next] } {
- set key_set($i) [lindex [lindex $d 0] 0]
- incr i
- }
-
- # Now put in a bunch of duplicates for key 2
- for { set d 1 } { $d <= 5 } {incr d} {
- set r [eval {$db put} $txn $flags {$key_set(2) dup_$d}]
- error_check_good dup:put $r 0
- }
-
- # Now put the cursor on a duplicate of key 2
-
- # Now set the cursor on the first of the duplicate set.
- set r [$curs get -set $key_set(2)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(2)
- error_check_good curs_get:DB_SET:data $d datum$key_set(2)
-
- # Now do two nexts
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(2)
- error_check_good curs_get:DB_NEXT:data $d dup_1
-
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(2)
- error_check_good curs_get:DB_NEXT:data $d dup_2
-
- # Now do the delete
- set r [eval {$db del} $txn $flags {$key_set(2)}]
- error_check_good delete $r 0
-
- # Now check the get current on the cursor.
- set ret [$curs get -current]
- error_check_good curs_after_del $ret [list [list [] []]]
-
- # Now check that the rest of the database looks intact. There
- # should be only two keys, 1 and 3.
-
- set r [$curs get -first]
- error_check_bad cursor_get:DB_FIRST [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_FIRST:key $k $key_set(1)
- error_check_good curs_get:DB_FIRST:data $d datum$key_set(1)
-
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(3)
- error_check_good curs_get:DB_NEXT:data $d datum$key_set(3)
-
- set r [$curs get -next]
- error_check_good cursor_get:DB_NEXT [llength $r] 0
-
- puts "\tTest056.b:\
- Cursor delete of first item, followed by cursor FIRST"
- # Set to beginning
- set r [$curs get -first]
- error_check_bad cursor_get:DB_FIRST [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_FIRST:key $k $key_set(1)
- error_check_good curs_get:DB_FIRST:data $d datum$key_set(1)
-
- # Now do delete
- error_check_good curs_del [$curs del] 0
-
- # Now do DB_FIRST
- set r [$curs get -first]
- error_check_bad cursor_get:DB_FIRST [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_FIRST:key $k $key_set(3)
- error_check_good curs_get:DB_FIRST:data $d datum$key_set(3)
-
- error_check_good curs_close [$curs close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test057.tcl b/bdb/test/test057.tcl
deleted file mode 100644
index 04fb09ef260..00000000000
--- a/bdb/test/test057.tcl
+++ /dev/null
@@ -1,248 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test057.tcl,v 11.22 2002/05/22 15:42:56 sue Exp $
-#
-# TEST test057
-# TEST Cursor maintenance during key deletes.
-# TEST Check if we handle the case where we delete a key with the cursor on
-# TEST it and then add the same key. The cursor should not get the new item
-# TEST returned, but the item shouldn't disappear.
-# TEST Run test tests, one where the overwriting put is done with a put and
-# TEST one where it's done with a cursor put.
-proc test057 { method args } {
- global errorInfo
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- append args " -create -mode 0644 -dup "
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "Test057: skipping for method $method"
- return
- }
- puts "Test057: $method delete and replace in presence of cursor."
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test057.db
- set env NULL
- } else {
- set testfile test057.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set flags ""
- set txn ""
-
- set db [eval {berkdb_open} $args {$omethod $testfile}]
- error_check_good dbopen:dup [is_valid_db $db] TRUE
-
- puts "\tTest057.a: Set cursor, delete cursor, put with key."
- # Put three keys in the database
- for { set key 1 } { $key <= 3 } {incr key} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} $txn $flags {$key datum$key}]
- error_check_good put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Retrieve keys sequentially so we can figure out their order
- set i 1
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set curs [eval {$db cursor} $txn]
- error_check_good curs_open:dup [is_valid_cursor $curs $db] TRUE
-
- for {set d [$curs get -first] } {[llength $d] != 0 } \
- {set d [$curs get -next] } {
- set key_set($i) [lindex [lindex $d 0] 0]
- incr i
- }
-
- # Now put in a bunch of duplicates for key 2
- for { set d 1 } { $d <= 5 } {incr d} {
- set r [eval {$db put} $txn $flags {$key_set(2) dup_$d}]
- error_check_good dup:put $r 0
- }
-
- # Now put the cursor on key 1
-
- # Now set the cursor on the first of the duplicate set.
- set r [$curs get -set $key_set(1)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(1)
- error_check_good curs_get:DB_SET:data $d datum$key_set(1)
-
- # Now do the delete
- set r [$curs del]
- error_check_good delete $r 0
-
- # Now check the get current on the cursor.
- error_check_good curs_get:del [$curs get -current] [list [list [] []]]
-
- # Now do a put on the key
- set r [eval {$db put} $txn $flags {$key_set(1) new_datum$key_set(1)}]
- error_check_good put $r 0
-
- # Do a get
- set r [eval {$db get} $txn {$key_set(1)}]
- error_check_good get [lindex [lindex $r 0] 1] new_datum$key_set(1)
-
- # Recheck cursor
- error_check_good curs_get:deleted [$curs get -current] [list [list [] []]]
-
- # Move cursor and see if we get the key.
- set r [$curs get -first]
- error_check_bad cursor_get:DB_FIRST [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_FIRST:key $k $key_set(1)
- error_check_good curs_get:DB_FIRST:data $d new_datum$key_set(1)
-
- puts "\tTest057.b: Set two cursor on a key, delete one, overwrite other"
- set curs2 [eval {$db cursor} $txn]
- error_check_good curs2_open [is_valid_cursor $curs2 $db] TRUE
-
- # Set both cursors on the 4rd key
- set r [$curs get -set $key_set(3)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(3)
- error_check_good curs_get:DB_SET:data $d datum$key_set(3)
-
- set r [$curs2 get -set $key_set(3)]
- error_check_bad cursor2_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs2_get:DB_SET:key $k $key_set(3)
- error_check_good curs2_get:DB_SET:data $d datum$key_set(3)
-
- # Now delete through cursor 1
- error_check_good curs1_del [$curs del] 0
-
- # Verify gets on both 1 and 2
- error_check_good curs_get:deleted [$curs get -current] \
- [list [list [] []]]
- error_check_good curs_get:deleted [$curs2 get -current] \
- [list [list [] []]]
-
- # Now do a replace through cursor 2
- set pflags "-current"
- if {[is_hash $method] == 1} {
- error_check_good curs1_get_after_del [is_substr \
- [$curs2 put $pflags new_datum$key_set(3)] "DB_NOTFOUND"] 1
-
- # Gets fail
- error_check_good curs1_get:deleted \
- [$curs get -current] \
- [list [list [] []]]
- error_check_good curs2_get:deleted \
- [$curs get -current] \
- [list [list [] []]]
- } else {
- # btree only, recno is skipped this test
- set ret [$curs2 put $pflags new_datum$key_set(3)]
- error_check_good curs_replace $ret 0
- }
-
- # Gets fail
- #error_check_good curs1_get:deleted [catch {$curs get -current} r] 1
- #error_check_good curs1_get_after_del \
- [is_substr $errorInfo "DB_KEYEMPTY"] 1
- #error_check_good curs2_get:deleted [catch {$curs2 get -current} r] 1
- #error_check_good curs2_get_after_del \
- [is_substr $errorInfo "DB_KEYEMPTY"] 1
-
- puts "\tTest057.c:\
- Set two cursors on a dup, delete one, overwrite other"
-
- # Set both cursors on the 2nd duplicate of key 2
- set r [$curs get -set $key_set(2)]
- error_check_bad cursor_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_SET:key $k $key_set(2)
- error_check_good curs_get:DB_SET:data $d datum$key_set(2)
-
- set r [$curs get -next]
- error_check_bad cursor_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs_get:DB_NEXT:key $k $key_set(2)
- error_check_good curs_get:DB_NEXT:data $d dup_1
-
- set r [$curs2 get -set $key_set(2)]
- error_check_bad cursor2_get:DB_SET [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs2_get:DB_SET:key $k $key_set(2)
- error_check_good curs2_get:DB_SET:data $d datum$key_set(2)
-
- set r [$curs2 get -next]
- error_check_bad cursor2_get:DB_NEXT [llength $r] 0
- set k [lindex [lindex $r 0] 0]
- set d [lindex [lindex $r 0] 1]
- error_check_good curs2_get:DB_NEXT:key $k $key_set(2)
- error_check_good curs2_get:DB_NEXT:data $d dup_1
-
- # Now delete through cursor 1
- error_check_good curs1_del [$curs del] 0
-
- # Verify gets on both 1 and 2
- error_check_good curs_get:deleted [$curs get -current] \
- [list [list [] []]]
- error_check_good curs_get:deleted [$curs2 get -current] \
- [list [list [] []]]
-
- # Now do a replace through cursor 2 -- this will work on btree but
- # not on hash
- if {[is_hash $method] == 1} {
- error_check_good hash_replace \
- [is_substr [$curs2 put -current new_dup_1] "DB_NOTFOUND"] 1
- } else {
- error_check_good curs_replace [$curs2 put -current new_dup_1] 0
- }
-
- # Both gets should fail
- #error_check_good curs1_get:deleted [catch {$curs get -current} r] 1
- #error_check_good curs1_get_after_del \
- [is_substr $errorInfo "DB_KEYEMPTY"] 1
- #error_check_good curs2_get:deleted [catch {$curs2 get -current} r] 1
- #error_check_good curs2_get_after_del \
- [is_substr $errorInfo "DB_KEYEMPTY"] 1
-
- error_check_good curs2_close [$curs2 close] 0
- error_check_good curs_close [$curs close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test058.tcl b/bdb/test/test058.tcl
deleted file mode 100644
index daf164fd6e2..00000000000
--- a/bdb/test/test058.tcl
+++ /dev/null
@@ -1,103 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test058.tcl,v 11.20 2002/02/22 15:26:27 sandstro Exp $
-#
-# TEST test058
-# TEST Verify that deleting and reading duplicates results in correct ordering.
-proc test058 { method args } {
- source ./include.tcl
-
- #
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test058 skipping for env $env"
- return
- }
- set args [convert_args $method $args]
- set encargs ""
- set args [split_encargs $args encargs]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "Test058: skipping for method $method"
- return
- }
- puts "Test058: $method delete dups after inserting after duped key."
-
- # environment
- env_cleanup $testdir
- set eflags "-create -txn $encargs -home $testdir"
- set env [eval {berkdb_env} $eflags]
- error_check_good env [is_valid_env $env] TRUE
-
- # db open
- set flags "-auto_commit -create -mode 0644 -dup -env $env $args"
- set db [eval {berkdb_open} $flags $omethod "test058.db"]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set tn ""
- set tid ""
- set tn [$env txn]
- set tflags "-txn $tn"
-
- puts "\tTest058.a: Adding 10 duplicates"
- # Add a bunch of dups
- for { set i 0 } { $i < 10 } {incr i} {
- set ret \
- [eval {$db put} $tflags {doghouse $i"DUPLICATE_DATA_VALUE"}]
- error_check_good db_put $ret 0
- }
-
- puts "\tTest058.b: Adding key after duplicates"
- # Now add one more key/data AFTER the dup set.
- set ret [eval {$db put} $tflags {zebrahouse NOT_A_DUP}]
- error_check_good db_put $ret 0
-
- error_check_good txn_commit [$tn commit] 0
-
- set tn [$env txn]
- error_check_good txnbegin [is_substr $tn $env] 1
- set tflags "-txn $tn"
-
- # Now delete everything
- puts "\tTest058.c: Deleting duplicated key"
- set ret [eval {$db del} $tflags {doghouse}]
- error_check_good del $ret 0
-
- # Now reput everything
- set pad \
- abcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuvabcdefghijklmnopqrtsuv
-
- puts "\tTest058.d: Reputting duplicates with big data vals"
- for { set i 0 } { $i < 10 } {incr i} {
- set ret [eval {$db put} \
- $tflags {doghouse $i"DUPLICATE_DATA_VALUE"$pad}]
- error_check_good db_put $ret 0
- }
- error_check_good txn_commit [$tn commit] 0
-
- # Check duplicates for order
- set dbc [$db cursor]
- error_check_good db_cursor [is_substr $dbc $db] 1
-
- puts "\tTest058.e: Verifying that duplicates are in order."
- set i 0
- for { set ret [$dbc get -set doghouse] } \
- {$i < 10 && [llength $ret] != 0} \
- { set ret [$dbc get -nextdup] } {
- set data [lindex [lindex $ret 0] 1]
- error_check_good \
- duplicate_value $data $i"DUPLICATE_DATA_VALUE"$pad
- incr i
- }
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
- reset_env $env
-}
diff --git a/bdb/test/test059.tcl b/bdb/test/test059.tcl
deleted file mode 100644
index 596ea7a3c94..00000000000
--- a/bdb/test/test059.tcl
+++ /dev/null
@@ -1,150 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test059.tcl,v 11.18 2002/06/11 15:10:16 sue Exp $
-#
-# TEST test059
-# TEST Cursor ops work with a partial length of 0.
-# TEST Make sure that we handle retrieves of zero-length data items correctly.
-# TEST The following ops, should allow a partial data retrieve of 0-length.
-# TEST db_get
-# TEST db_cget FIRST, NEXT, LAST, PREV, CURRENT, SET, SET_RANGE
-proc test059 { method args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test059: $method 0-length partial data retrieval"
-
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test059.db
- set env NULL
- } else {
- set testfile test059.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- if { [is_record_based $method] == 1 } {
- append gflags " -recno"
- }
-
- puts "\tTest059.a: Populate a database"
- set oflags "-create -mode 0644 $omethod $args $testfile"
- set db [eval {berkdb_open} $oflags]
- error_check_good db_create [is_substr $db db] 1
-
- # Put ten keys in the database
- for { set key 1 } { $key <= 10 } {incr key} {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} $txn $pflags {$key datum$key}]
- error_check_good put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Retrieve keys sequentially so we can figure out their order
- set i 1
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set curs [eval {$db cursor} $txn]
- error_check_good db_curs [is_valid_cursor $curs $db] TRUE
-
- for {set d [$curs get -first] } { [llength $d] != 0 } {
- set d [$curs get -next] } {
- set key_set($i) [lindex [lindex $d 0] 0]
- incr i
- }
-
- puts "\tTest059.a: db get with 0 partial length retrieve"
-
- # Now set the cursor on the middle one.
- set ret [eval {$db get -partial {0 0}} $txn $gflags {$key_set(5)}]
- error_check_bad db_get_0 [llength $ret] 0
-
- puts "\tTest059.a: db cget FIRST with 0 partial length retrieve"
- set ret [$curs get -first -partial {0 0}]
- set data [lindex [lindex $ret 0] 1]
- set key [lindex [lindex $ret 0] 0]
- error_check_good key_check_first $key $key_set(1)
- error_check_good db_cget_first [string length $data] 0
-
- puts "\tTest059.b: db cget NEXT with 0 partial length retrieve"
- set ret [$curs get -next -partial {0 0}]
- set data [lindex [lindex $ret 0] 1]
- set key [lindex [lindex $ret 0] 0]
- error_check_good key_check_next $key $key_set(2)
- error_check_good db_cget_next [string length $data] 0
-
- puts "\tTest059.c: db cget LAST with 0 partial length retrieve"
- set ret [$curs get -last -partial {0 0}]
- set data [lindex [lindex $ret 0] 1]
- set key [lindex [lindex $ret 0] 0]
- error_check_good key_check_last $key $key_set(10)
- error_check_good db_cget_last [string length $data] 0
-
- puts "\tTest059.d: db cget PREV with 0 partial length retrieve"
- set ret [$curs get -prev -partial {0 0}]
- set data [lindex [lindex $ret 0] 1]
- set key [lindex [lindex $ret 0] 0]
- error_check_good key_check_prev $key $key_set(9)
- error_check_good db_cget_prev [string length $data] 0
-
- puts "\tTest059.e: db cget CURRENT with 0 partial length retrieve"
- set ret [$curs get -current -partial {0 0}]
- set data [lindex [lindex $ret 0] 1]
- set key [lindex [lindex $ret 0] 0]
- error_check_good key_check_current $key $key_set(9)
- error_check_good db_cget_current [string length $data] 0
-
- puts "\tTest059.f: db cget SET with 0 partial length retrieve"
- set ret [$curs get -set -partial {0 0} $key_set(7)]
- set data [lindex [lindex $ret 0] 1]
- set key [lindex [lindex $ret 0] 0]
- error_check_good key_check_set $key $key_set(7)
- error_check_good db_cget_set [string length $data] 0
-
- if {[is_btree $method] == 1} {
- puts "\tTest059.g:\
- db cget SET_RANGE with 0 partial length retrieve"
- set ret [$curs get -set_range -partial {0 0} $key_set(5)]
- set data [lindex [lindex $ret 0] 1]
- set key [lindex [lindex $ret 0] 0]
- error_check_good key_check_set $key $key_set(5)
- error_check_good db_cget_set [string length $data] 0
- }
-
- error_check_good curs_close [$curs close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test060.tcl b/bdb/test/test060.tcl
deleted file mode 100644
index 4a18c97f42f..00000000000
--- a/bdb/test/test060.tcl
+++ /dev/null
@@ -1,60 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test060.tcl,v 11.10 2002/05/22 15:42:56 sue Exp $
-#
-# TEST test060
-# TEST Test of the DB_EXCL flag to DB->open().
-# TEST 1) Attempt to open and create a nonexistent database; verify success.
-# TEST 2) Attempt to reopen it; verify failure.
-proc test060 { method args } {
- global errorCode
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test060: $method ($args) Test of the DB_EXCL flag to DB->open"
-
- # Set the database location and make sure the db doesn't exist yet
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test060.db
- set env NULL
- } else {
- set testfile test060.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- # Create the database and check success
- puts "\tTest060.a: open and close non-existent file with DB_EXCL"
- set db [eval {berkdb_open \
- -create -excl -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen:excl [is_valid_db $db] TRUE
-
- # Close it and check success
- error_check_good db_close [$db close] 0
-
- # Try to open it again, and make sure the open fails
- puts "\tTest060.b: open it again with DB_EXCL and make sure it fails"
- set errorCode NONE
- error_check_good open:excl:catch [catch { \
- set db [eval {berkdb_open_noerr \
- -create -excl -mode 0644} $args {$omethod $testfile}]
- } ret ] 1
-
- error_check_good dbopen:excl [is_substr $errorCode EEXIST] 1
-}
diff --git a/bdb/test/test061.tcl b/bdb/test/test061.tcl
deleted file mode 100644
index 65544e88deb..00000000000
--- a/bdb/test/test061.tcl
+++ /dev/null
@@ -1,226 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test061.tcl,v 11.18 2002/02/22 15:26:27 sandstro Exp $
-#
-# TEST test061
-# TEST Test of txn abort and commit for in-memory databases.
-# TEST a) Put + abort: verify absence of data
-# TEST b) Put + commit: verify presence of data
-# TEST c) Overwrite + abort: verify that data is unchanged
-# TEST d) Overwrite + commit: verify that data has changed
-# TEST e) Delete + abort: verify that data is still present
-# TEST f) Delete + commit: verify that data has been deleted
-proc test061 { method args } {
- global alphabet
- global encrypt
- global errorCode
- global passwd
- source ./include.tcl
-
- #
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test061 skipping for env $env"
- return
- }
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- if { [is_queueext $method] == 1} {
- puts "Test061 skipping for method $method"
- return
- }
- set encargs ""
- set args [split_encargs $args encargs]
-
- puts "Test061: Transaction abort and commit test for in-memory data."
- puts "Test061: $method $args"
-
- set key "key"
- set data "data"
- set otherdata "otherdata"
- set txn ""
- set flags ""
- set gflags ""
-
- if { [is_record_based $method] == 1} {
- set key 1
- set gflags " -recno"
- }
-
- puts "\tTest061: Create environment and $method database."
- env_cleanup $testdir
-
- # create environment
- set eflags "-create -txn $encargs -home $testdir"
- set dbenv [eval {berkdb_env} $eflags]
- error_check_good dbenv [is_valid_env $dbenv] TRUE
-
- # db open -- no file specified, in-memory database
- set flags "-auto_commit -create $args $omethod"
- set db [eval {berkdb_open -env} $dbenv $flags]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Here we go with the six test cases. Since we need to verify
- # a different thing each time, and since we can't just reuse
- # the same data if we're to test overwrite, we just
- # plow through rather than writing some impenetrable loop code;
- # each of the cases is only a few lines long, anyway.
-
- puts "\tTest061.a: put/abort"
-
- # txn_begin
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
-
- # put a key
- set ret [eval {$db put} -txn $txn {$key [chop_data $method $data]}]
- error_check_good db_put $ret 0
-
- # check for existence
- set ret [eval {$db get} -txn $txn $gflags {$key}]
- error_check_good get $ret [list [list $key [pad_data $method $data]]]
-
- # abort
- error_check_good txn_abort [$txn abort] 0
-
- # check for *non*-existence
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get $ret {}
-
- puts "\tTest061.b: put/commit"
-
- # txn_begin
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
-
- # put a key
- set ret [eval {$db put} -txn $txn {$key [chop_data $method $data]}]
- error_check_good db_put $ret 0
-
- # check for existence
- set ret [eval {$db get} -txn $txn $gflags {$key}]
- error_check_good get $ret [list [list $key [pad_data $method $data]]]
-
- # commit
- error_check_good txn_commit [$txn commit] 0
-
- # check again for existence
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get $ret [list [list $key [pad_data $method $data]]]
-
- puts "\tTest061.c: overwrite/abort"
-
- # txn_begin
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
-
- # overwrite {key,data} with {key,otherdata}
- set ret [eval {$db put} -txn $txn {$key [chop_data $method $otherdata]}]
- error_check_good db_put $ret 0
-
- # check for existence
- set ret [eval {$db get} -txn $txn $gflags {$key}]
- error_check_good get $ret \
- [list [list $key [pad_data $method $otherdata]]]
-
- # abort
- error_check_good txn_abort [$txn abort] 0
-
- # check that data is unchanged ($data not $otherdata)
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get $ret [list [list $key [pad_data $method $data]]]
-
- puts "\tTest061.d: overwrite/commit"
-
- # txn_begin
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
-
- # overwrite {key,data} with {key,otherdata}
- set ret [eval {$db put} -txn $txn {$key [chop_data $method $otherdata]}]
- error_check_good db_put $ret 0
-
- # check for existence
- set ret [eval {$db get} -txn $txn $gflags {$key}]
- error_check_good get $ret \
- [list [list $key [pad_data $method $otherdata]]]
-
- # commit
- error_check_good txn_commit [$txn commit] 0
-
- # check that data has changed ($otherdata not $data)
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get $ret \
- [list [list $key [pad_data $method $otherdata]]]
-
- puts "\tTest061.e: delete/abort"
-
- # txn_begin
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
-
- # delete
- set ret [eval {$db del} -txn $txn {$key}]
- error_check_good db_put $ret 0
-
- # check for nonexistence
- set ret [eval {$db get} -txn $txn $gflags {$key}]
- error_check_good get $ret {}
-
- # abort
- error_check_good txn_abort [$txn abort] 0
-
- # check for existence
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get $ret \
- [list [list $key [pad_data $method $otherdata]]]
-
- puts "\tTest061.f: delete/commit"
-
- # txn_begin
- set txn [$dbenv txn]
- error_check_good txn_begin [is_valid_txn $txn $dbenv] TRUE
-
- # put a key
- set ret [eval {$db del} -txn $txn {$key}]
- error_check_good db_put $ret 0
-
- # check for nonexistence
- set ret [eval {$db get} -txn $txn $gflags {$key}]
- error_check_good get $ret {}
-
- # commit
- error_check_good txn_commit [$txn commit] 0
-
- # check for continued nonexistence
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get $ret {}
-
- # We're done; clean up.
- error_check_good db_close [eval {$db close}] 0
- error_check_good env_close [eval {$dbenv close}] 0
-
- # Now run db_recover and ensure that it runs cleanly.
- set utilflag ""
- if { $encrypt != 0 } {
- set utilflag "-P $passwd"
- }
- puts "\tTest061.g: Running db_recover -h"
- set ret [catch {eval {exec} $util_path/db_recover -h $testdir \
- $utilflag} res]
- if { $ret != 0 } {
- puts "FAIL: db_recover outputted $res"
- }
- error_check_good db_recover $ret 0
-
- puts "\tTest061.h: Running db_recover -c -h"
- set ret [catch {eval {exec} $util_path/db_recover -c -h $testdir \
- $utilflag} res]
- error_check_good db_recover-c $ret 0
-}
diff --git a/bdb/test/test062.tcl b/bdb/test/test062.tcl
deleted file mode 100644
index 5cacd98a2c0..00000000000
--- a/bdb/test/test062.tcl
+++ /dev/null
@@ -1,153 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test062.tcl,v 11.20 2002/06/11 14:09:57 sue Exp $
-#
-# TEST test062
-# TEST Test of partial puts (using DB_CURRENT) onto duplicate pages.
-# TEST Insert the first 200 words into the dictionary 200 times each with
-# TEST self as key and <random letter>:self as data. Use partial puts to
-# TEST append self again to data; verify correctness.
-proc test062 { method {nentries 200} {ndups 200} {tnum 62} args } {
- global alphabet
- global rand_init
- source ./include.tcl
-
- berkdb srand $rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $omethod"
- return
- }
- # Create the database and open the dictionary
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 200 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- puts "Test0$tnum:\
- $method ($args) $nentries Partial puts and $ndups duplicates."
- set db [eval {berkdb_open -create -mode 0644 \
- $omethod -dup} $args {$testfile} ]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put each key/data pair
- puts "\tTest0$tnum.a: Put loop (initialize database)"
- while { [gets $did str] != -1 && $count < $nentries } {
- for { set i 1 } { $i <= $ndups } { incr i } {
- set pref \
- [string index $alphabet [berkdb random_int 0 25]]
- set datastr $pref:$str
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$str [chop_data $method $datastr]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- set keys($count) $str
-
- incr count
- }
- close $did
-
- puts "\tTest0$tnum.b: Partial puts."
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_substr $dbc $db] 1
-
- # Do a partial write to extend each datum in
- # the regular db by the corresponding dictionary word.
- # We have to go through each key's dup set using -set
- # because cursors are not stable in the hash AM and we
- # want to make sure we hit all the keys.
- for { set i 0 } { $i < $count } { incr i } {
- set key $keys($i)
- for {set ret [$dbc get -set $key]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -nextdup]} {
-
- set k [lindex [lindex $ret 0] 0]
- set orig_d [lindex [lindex $ret 0] 1]
- set d [string range $orig_d 2 end]
- set doff [expr [string length $d] + 2]
- set dlen 0
- error_check_good data_and_key_sanity $d $k
-
- set ret [$dbc get -current]
- error_check_good before_sanity \
- [lindex [lindex $ret 0] 0] \
- [string range [lindex [lindex $ret 0] 1] 2 end]
-
- error_check_good partial_put [eval {$dbc put -current \
- -partial [list $doff $dlen] $d}] 0
-
- set ret [$dbc get -current]
- error_check_good partial_put_correct \
- [lindex [lindex $ret 0] 1] $orig_d$d
- }
- }
-
- puts "\tTest0$tnum.c: Double-checking get loop."
- # Double-check that each datum in the regular db has
- # been appropriately modified.
-
- for {set ret [$dbc get -first]} \
- {[llength $ret] != 0} \
- {set ret [$dbc get -next]} {
-
- set k [lindex [lindex $ret 0] 0]
- set d [lindex [lindex $ret 0] 1]
- error_check_good modification_correct \
- [string range $d 2 end] [repeat $k 2]
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test063.tcl b/bdb/test/test063.tcl
deleted file mode 100644
index 2e8726c8f96..00000000000
--- a/bdb/test/test063.tcl
+++ /dev/null
@@ -1,174 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test063.tcl,v 11.17 2002/05/24 15:24:55 sue Exp $
-#
-# TEST test063
-# TEST Test of the DB_RDONLY flag to DB->open
-# TEST Attempt to both DB->put and DBC->c_put into a database
-# TEST that has been opened DB_RDONLY, and check for failure.
-proc test063 { method args } {
- global errorCode
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- set tnum 63
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set key "key"
- set data "data"
- set key2 "another_key"
- set data2 "more_data"
-
- set gflags ""
- set txn ""
-
- if { [is_record_based $method] == 1 } {
- set key "1"
- set key2 "2"
- append gflags " -recno"
- }
-
- puts "Test0$tnum: $method ($args) DB_RDONLY test."
-
- # Create a test database.
- puts "\tTest0$tnum.a: Creating test database."
- set db [eval {berkdb_open_noerr -create -mode 0644} \
- $omethod $args $testfile]
- error_check_good db_create [is_valid_db $db] TRUE
-
- # Put and get an item so it's nonempty.
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key [chop_data $method $data]}]
- error_check_good initial_put $ret 0
-
- set dbt [eval {$db get} $txn $gflags {$key}]
- error_check_good initial_get $dbt \
- [list [list $key [pad_data $method $data]]]
-
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- if { $eindex == -1 } {
- # Confirm that database is writable. If we are
- # using an env (that may be remote on a server)
- # we cannot do this check.
- error_check_good writable [file writable $testfile] 1
- }
-
- puts "\tTest0$tnum.b: Re-opening DB_RDONLY and attempting to put."
-
- # Now open it read-only and make sure we can get but not put.
- set db [eval {berkdb_open_noerr -rdonly} $args {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbt [eval {$db get} $txn $gflags {$key}]
- error_check_good db_get $dbt \
- [list [list $key [pad_data $method $data]]]
-
- set ret [catch {eval {$db put} $txn \
- {$key2 [chop_data $method $data]}} res]
- error_check_good put_failed $ret 1
- error_check_good db_put_rdonly [is_substr $errorCode "EACCES"] 1
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set errorCode "NONE"
-
- puts "\tTest0$tnum.c: Attempting cursor put."
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_create [is_valid_cursor $dbc $db] TRUE
-
- error_check_good cursor_set [$dbc get -first] $dbt
- set ret [catch {eval {$dbc put} -current $data} res]
- error_check_good c_put_failed $ret 1
- error_check_good dbc_put_rdonly [is_substr $errorCode "EACCES"] 1
-
- set dbt [eval {$db get} $gflags {$key2}]
- error_check_good db_get_key2 $dbt ""
-
- puts "\tTest0$tnum.d: Attempting ordinary delete."
-
- set errorCode "NONE"
- set ret [catch {eval {$db del} $txn {$key}} 1]
- error_check_good del_failed $ret 1
- error_check_good db_del_rdonly [is_substr $errorCode "EACCES"] 1
-
- set dbt [eval {$db get} $txn $gflags {$key}]
- error_check_good db_get_key $dbt \
- [list [list $key [pad_data $method $data]]]
-
- puts "\tTest0$tnum.e: Attempting cursor delete."
- # Just set the cursor to the beginning; we don't care what's there...
- # yet.
- set dbt2 [$dbc get -first]
- error_check_good db_get_first_key $dbt2 $dbt
- set errorCode "NONE"
- set ret [catch {$dbc del} res]
- error_check_good c_del_failed $ret 1
- error_check_good dbc_del_rdonly [is_substr $errorCode "EACCES"] 1
-
- set dbt2 [$dbc get -current]
- error_check_good db_get_key $dbt2 $dbt
-
- puts "\tTest0$tnum.f: Close, reopen db; verify unchanged."
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- set db [eval {berkdb_open} $omethod $args $testfile]
- error_check_good db_reopen [is_valid_db $db] TRUE
-
- set dbc [$db cursor]
- error_check_good cursor_create [is_valid_cursor $dbc $db] TRUE
-
- error_check_good first_there [$dbc get -first] \
- [list [list $key [pad_data $method $data]]]
- error_check_good nomore_there [$dbc get -next] ""
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test064.tcl b/bdb/test/test064.tcl
deleted file mode 100644
index c306b0d9d46..00000000000
--- a/bdb/test/test064.tcl
+++ /dev/null
@@ -1,69 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test064.tcl,v 11.13 2002/05/22 15:42:57 sue Exp $
-#
-# TEST test064
-# TEST Test of DB->get_type
-# TEST Create a database of type specified by method.
-# TEST Make sure DB->get_type returns the right thing with both a normal
-# TEST and DB_UNKNOWN open.
-proc test064 { method args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- set tnum 64
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- puts "Test0$tnum: $method ($args) DB->get_type test."
-
- # Create a test database.
- puts "\tTest0$tnum.a: Creating test database of type $method."
- set db [eval {berkdb_open -create -mode 0644} \
- $omethod $args $testfile]
- error_check_good db_create [is_valid_db $db] TRUE
-
- error_check_good db_close [$db close] 0
-
- puts "\tTest0$tnum.b: get_type after method specifier."
-
- set db [eval {berkdb_open} $omethod $args {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
-
- set type [$db get_type]
- error_check_good get_type $type [string range $omethod 1 end]
-
- error_check_good db_close [$db close] 0
-
- puts "\tTest0$tnum.c: get_type after DB_UNKNOWN."
-
- set db [eval {berkdb_open} $args $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
-
- set type [$db get_type]
- error_check_good get_type $type [string range $omethod 1 end]
-
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test065.tcl b/bdb/test/test065.tcl
deleted file mode 100644
index ea29b4d2db7..00000000000
--- a/bdb/test/test065.tcl
+++ /dev/null
@@ -1,199 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test065.tcl,v 11.16 2002/08/22 18:18:50 sandstro Exp $
-#
-# TEST test065
-# TEST Test of DB->stat(DB_FASTSTAT)
-proc test065 { method args } {
- source ./include.tcl
- global errorCode
- global alphabet
-
- set nentries 10000
- set args [convert_args $method $args]
- set omethod [convert_method $method]
- set tnum 65
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- puts "Test0$tnum: $method ($args) DB->stat(DB_FAST_STAT) test."
-
- puts "\tTest0$tnum.a: Create database and check it while empty."
-
- set db [eval {berkdb_open_noerr -create -mode 0644} \
- $omethod $args $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
-
- set ret [catch {eval $db stat -faststat} res]
-
- error_check_good db_close [$db close] 0
-
- if { ([is_record_based $method] && ![is_queue $method]) \
- || [is_rbtree $method] } {
- error_check_good recordcount_ok [is_substr $res \
- "{{Number of keys} 0}"] 1
- } else {
- puts "\tTest0$tnum: Test complete for method $method."
- return
- }
-
- # If we've got this far, we're on an access method for
- # which record counts makes sense. Thus, we no longer
- # catch EINVALs, and no longer care about __db_errs.
- set db [eval {berkdb_open -create -mode 0644} $omethod $args $testfile]
-
- puts "\tTest0$tnum.b: put $nentries keys."
-
- if { [is_record_based $method] } {
- set gflags " -recno "
- set keypfx ""
- } else {
- set gflags ""
- set keypfx "key"
- }
-
- set txn ""
- set data [pad_data $method $alphabet]
-
- for { set ndx 1 } { $ndx <= $nentries } { incr ndx } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$keypfx$ndx $data}]
- error_check_good db_put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- set ret [$db stat -faststat]
- error_check_good recordcount_after_puts \
- [is_substr $ret "{{Number of keys} $nentries}"] 1
-
- puts "\tTest0$tnum.c: delete 90% of keys."
- set end [expr {$nentries / 10 * 9}]
- for { set ndx 1 } { $ndx <= $end } { incr ndx } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- if { [is_rrecno $method] == 1 } {
- # if we're renumbering, when we hit key 5001 we'll
- # have deleted 5000 and we'll croak! So delete key
- # 1, repeatedly.
- set ret [eval {$db del} $txn {[concat $keypfx 1]}]
- } else {
- set ret [eval {$db del} $txn {$keypfx$ndx}]
- }
- error_check_good db_del $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- set ret [$db stat -faststat]
- if { [is_rrecno $method] == 1 || [is_rbtree $method] == 1 } {
- # We allow renumbering--thus the stat should return 10%
- # of nentries.
- error_check_good recordcount_after_dels [is_substr $ret \
- "{{Number of keys} [expr {$nentries / 10}]}"] 1
- } else {
- # No renumbering--no change in RECORDCOUNT!
- error_check_good recordcount_after_dels \
- [is_substr $ret "{{Number of keys} $nentries}"] 1
- }
-
- puts "\tTest0$tnum.d: put new keys at the beginning."
- set end [expr {$nentries / 10 * 8}]
- for { set ndx 1 } { $ndx <= $end } {incr ndx } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$keypfx$ndx $data}]
- error_check_good db_put_beginning $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- set ret [$db stat -faststat]
- if { [is_rrecno $method] == 1 } {
- # With renumbering we're back up to 80% of $nentries
- error_check_good recordcount_after_dels [is_substr $ret \
- "{{Number of keys} [expr {$nentries / 10 * 8}]}"] 1
- } elseif { [is_rbtree $method] == 1 } {
- # Total records in a btree is now 90% of $nentries
- error_check_good recordcount_after_dels [is_substr $ret \
- "{{Number of keys} [expr {$nentries / 10 * 9}]}"] 1
- } else {
- # No renumbering--still no change in RECORDCOUNT.
- error_check_good recordcount_after_dels [is_substr $ret \
- "{{Number of keys} $nentries}"] 1
- }
-
- puts "\tTest0$tnum.e: put new keys at the end."
- set start [expr {1 + $nentries / 10 * 9}]
- set end [expr {($nentries / 10 * 9) + ($nentries / 10 * 8)}]
- for { set ndx $start } { $ndx <= $end } { incr ndx } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$keypfx$ndx $data}]
- error_check_good db_put_end $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- set ret [$db stat -faststat]
- if { [is_rbtree $method] != 1 } {
- # If this is a recno database, the record count should be up
- # to (1.7 x nentries), the largest number we've seen, with
- # or without renumbering.
- error_check_good recordcount_after_puts2 [is_substr $ret \
- "{{Number of keys} [expr {$start - 1 + $nentries / 10 * 8}]}"] 1
- } else {
- # In an rbtree, 1000 of those keys were overwrites, so there
- # are (.7 x nentries) new keys and (.9 x nentries) old keys
- # for a total of (1.6 x nentries).
- error_check_good recordcount_after_puts2 [is_substr $ret \
- "{{Number of keys} [expr {$start -1 + $nentries / 10 * 7}]}"] 1
- }
-
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test066.tcl b/bdb/test/test066.tcl
deleted file mode 100644
index 13d0894dcae..00000000000
--- a/bdb/test/test066.tcl
+++ /dev/null
@@ -1,99 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test066.tcl,v 11.12 2002/05/24 15:24:56 sue Exp $
-#
-# TEST test066
-# TEST Test of cursor overwrites of DB_CURRENT w/ duplicates.
-# TEST
-# TEST Make sure a cursor put to DB_CURRENT acts as an overwrite in a
-# TEST database with duplicates.
-proc test066 { method args } {
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- set tnum 66
-
- if { [is_record_based $method] || [is_rbtree $method] } {
- puts "Test0$tnum: Skipping for method $method."
- return
- }
-
- puts "Test0$tnum: Test of cursor put to DB_CURRENT with duplicates."
-
- source ./include.tcl
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test066.db
- set env NULL
- } else {
- set testfile test066.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set txn ""
- set key "test"
- set data "olddata"
-
- set db [eval {berkdb_open -create -mode 0644 -dup} $omethod $args \
- $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key [chop_data $method $data]}]
- error_check_good db_put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- set ret [$dbc get -first]
- error_check_good db_get $ret [list [list $key [pad_data $method $data]]]
-
- set newdata "newdata"
- set ret [$dbc put -current [chop_data $method $newdata]]
- error_check_good dbc_put $ret 0
-
- # There should be only one (key,data) pair in the database, and this
- # is it.
- set ret [$dbc get -first]
- error_check_good db_get_first $ret \
- [list [list $key [pad_data $method $newdata]]]
-
- # and this one should come up empty.
- set ret [$dbc get -next]
- error_check_good db_get_next $ret ""
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest0$tnum: Test completed successfully."
-}
diff --git a/bdb/test/test067.tcl b/bdb/test/test067.tcl
deleted file mode 100644
index 5f5a88c4be1..00000000000
--- a/bdb/test/test067.tcl
+++ /dev/null
@@ -1,155 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test067.tcl,v 11.19 2002/06/11 15:19:16 sue Exp $
-#
-# TEST test067
-# TEST Test of DB_CURRENT partial puts onto almost empty duplicate
-# TEST pages, with and without DB_DUP_SORT.
-# TEST
-# TEST Test of DB_CURRENT partial puts on almost-empty duplicate pages.
-# TEST This test was written to address the following issue, #2 in the
-# TEST list of issues relating to bug #0820:
-# TEST
-# TEST 2. DBcursor->put, DB_CURRENT flag, off-page duplicates, hash and btree:
-# TEST In Btree, the DB_CURRENT overwrite of off-page duplicate records
-# TEST first deletes the record and then puts the new one -- this could
-# TEST be a problem if the removal of the record causes a reverse split.
-# TEST Suggested solution is to acquire a cursor to lock down the current
-# TEST record, put a new record after that record, and then delete using
-# TEST the held cursor.
-# TEST
-# TEST It also tests the following, #5 in the same list of issues:
-# TEST 5. DBcursor->put, DB_AFTER/DB_BEFORE/DB_CURRENT flags, DB_DBT_PARTIAL
-# TEST set, duplicate comparison routine specified.
-# TEST The partial change does not change how data items sort, but the
-# TEST record to be put isn't built yet, and that record supplied is the
-# TEST one that's checked for ordering compatibility.
-proc test067 { method {ndups 1000} {tnum 67} args } {
- source ./include.tcl
- global alphabet
- global errorCode
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "\tTest0$tnum: skipping for method $method."
- return
- }
- set txn ""
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
-
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- if { $ndups == 1000 } {
- set ndups 100
- }
- }
- set testdir [get_home $env]
- }
-
- puts "Test0$tnum:\
- $method ($args) Partial puts on near-empty duplicate pages."
-
- foreach dupopt { "-dup" "-dup -dupsort" } {
- #
- # Testdir might get reset from the env's home dir back
- # to the default if this calls something that sources
- # include.tcl, since testdir is a global. Set it correctly
- # here each time through the loop.
- #
- if { $env != "NULL" } {
- set testdir [get_home $env]
- }
- cleanup $testdir $env
- set db [eval {berkdb_open -create -mode 0644 \
- $omethod} $args $dupopt {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
-
- puts "\tTest0$tnum.a ($dupopt): Put $ndups duplicates."
-
- set key "key_test$tnum"
-
- for { set ndx 0 } { $ndx < $ndups } { incr ndx } {
- set data $alphabet$ndx
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- # No need for pad_data since we're skipping recno.
- set ret [eval {$db put} $txn {$key $data}]
- error_check_good put($key,$data) $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # Sync so we can inspect database if the next section bombs.
- error_check_good db_sync [$db sync] 0
- puts "\tTest0$tnum.b ($dupopt):\
- Deleting dups (last first), overwriting each."
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_create [is_valid_cursor $dbc $db] TRUE
-
- set count 0
- while { $count < $ndups - 1 } {
- # set cursor to last item in db
- set ret [$dbc get -last]
- error_check_good \
- verify_key [lindex [lindex $ret 0] 0] $key
-
- # for error reporting
- set currdatum [lindex [lindex $ret 0] 1]
-
- # partial-overwrite it
- # (overwrite offsets 1-4 with "bcde"--which they
- # already are)
-
- # Even though we expect success, we catch this
- # since it might return EINVAL, and we want that
- # to FAIL.
- set errorCode NONE
- set ret [catch {eval $dbc put -current \
- {-partial [list 1 4]} "bcde"} \
- res]
- error_check_good \
- partial_put_valid($currdatum) $errorCode NONE
- error_check_good partial_put($currdatum) $res 0
-
- # delete it
- error_check_good dbc_del [$dbc del] 0
-
- #puts $currdatum
-
- incr count
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
- }
-}
diff --git a/bdb/test/test068.tcl b/bdb/test/test068.tcl
deleted file mode 100644
index 31f4272ba55..00000000000
--- a/bdb/test/test068.tcl
+++ /dev/null
@@ -1,226 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test068.tcl,v 11.17 2002/06/11 15:34:47 sue Exp $
-#
-# TEST test068
-# TEST Test of DB_BEFORE and DB_AFTER with partial puts.
-# TEST Make sure DB_BEFORE and DB_AFTER work properly with partial puts, and
-# TEST check that they return EINVAL if DB_DUPSORT is set or if DB_DUP is not.
-proc test068 { method args } {
- source ./include.tcl
- global alphabet
- global errorCode
-
- set tnum 68
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- set nkeys 1000
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- set nkeys 100
- }
- set testdir [get_home $env]
- }
-
- puts "Test0$tnum:\
- $method ($args) Test of DB_BEFORE/DB_AFTER and partial puts."
- if { [is_record_based $method] == 1 } {
- puts "\tTest0$tnum: skipping for method $method."
- return
- }
-
- # Create a list of $nkeys words to insert into db.
- puts "\tTest0$tnum.a: Initialize word list."
- set txn ""
- set wordlist {}
- set count 0
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nkeys } {
- lappend wordlist $str
- incr count
- }
- close $did
-
- # Sanity check: did we get $nkeys words?
- error_check_good enough_keys [llength $wordlist] $nkeys
-
- # rbtree can't handle dups, so just test the non-dup case
- # if it's the current method.
- if { [is_rbtree $method] == 1 } {
- set dupoptlist { "" }
- } else {
- set dupoptlist { "" "-dup" "-dup -dupsort" }
- }
-
- foreach dupopt $dupoptlist {
- #
- # Testdir might be reset in the loop by some proc sourcing
- # include.tcl. Reset it to the env's home here, before
- # cleanup.
- if { $env != "NULL" } {
- set testdir [get_home $env]
- }
- cleanup $testdir $env
- set db [eval {berkdb_open_noerr -create -mode 0644 \
- $omethod} $args $dupopt {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
-
- puts "\tTest0$tnum.b ($dupopt): DB initialization: put loop."
- foreach word $wordlist {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$word $word}]
- error_check_good db_put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- puts "\tTest0$tnum.c ($dupopt): get loop."
- foreach word $wordlist {
- # Make sure that the Nth word has been correctly
- # inserted, and also that the Nth word is the
- # Nth one we pull out of the database using a cursor.
-
- set dbt [$db get $word]
- error_check_good get_key [list [list $word $word]] $dbt
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good cursor_open [is_valid_cursor $dbc $db] TRUE
-
- puts "\tTest0$tnum.d ($dupopt): DBC->put w/ DB_AFTER."
-
- # Set cursor to the first key; make sure it succeeds.
- # With an unsorted wordlist, we can't be sure that the
- # first item returned will equal the first item in the
- # wordlist, so we just make sure it got something back.
- set dbt [eval {$dbc get -first}]
- error_check_good \
- dbc_get_first [llength $dbt] 1
-
- # If -dup is not set, or if -dupsort is set too, we
- # need to verify that DB_BEFORE and DB_AFTER fail
- # and then move on to the next $dupopt.
- if { $dupopt != "-dup" } {
- set errorCode "NONE"
- set ret [catch {eval $dbc put -after \
- {-partial [list 6 0]} "after"} res]
- error_check_good dbc_put_after_fail $ret 1
- error_check_good dbc_put_after_einval \
- [is_substr $errorCode EINVAL] 1
- puts "\tTest0$tnum ($dupopt): DB_AFTER returns EINVAL."
- set errorCode "NONE"
- set ret [catch {eval $dbc put -before \
- {-partial [list 6 0]} "before"} res]
- error_check_good dbc_put_before_fail $ret 1
- error_check_good dbc_put_before_einval \
- [is_substr $errorCode EINVAL] 1
- puts "\tTest0$tnum ($dupopt): DB_BEFORE returns EINVAL."
- puts "\tTest0$tnum ($dupopt): Correct error returns,\
- skipping further test."
- # continue with broad foreach
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
- continue
- }
-
- puts "\tTest0$tnum.e ($dupopt): DBC->put(DB_AFTER) loop."
- foreach word $wordlist {
- # set cursor to $word
- set dbt [$dbc get -set $word]
- error_check_good \
- dbc_get_set $dbt [list [list $word $word]]
- # put after it
- set ret [$dbc put -after -partial {4 0} after]
- error_check_good dbc_put_after $ret 0
- }
-
- puts "\tTest0$tnum.f ($dupopt): DBC->put(DB_BEFORE) loop."
- foreach word $wordlist {
- # set cursor to $word
- set dbt [$dbc get -set $word]
- error_check_good \
- dbc_get_set $dbt [list [list $word $word]]
- # put before it
- set ret [$dbc put -before -partial {6 0} before]
- error_check_good dbc_put_before $ret 0
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- eval $db sync
- puts "\tTest0$tnum.g ($dupopt): Verify correctness."
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- # loop through the whole db beginning to end,
- # make sure we have, in order, {$word "\0\0\0\0\0\0before"},
- # {$word $word}, {$word "\0\0\0\0after"} for each word.
- set count 0
- while { $count < $nkeys } {
- # Get the first item of each set of three.
- # We don't know what the word is, but set $word to
- # the key and check that the data is
- # "\0\0\0\0\0\0before".
- set dbt [$dbc get -next]
- set word [lindex [lindex $dbt 0] 0]
-
- error_check_good dbc_get_one $dbt \
- [list [list $word "\0\0\0\0\0\0before"]]
-
- set dbt [$dbc get -next]
- error_check_good \
- dbc_get_two $dbt [list [list $word $word]]
-
- set dbt [$dbc get -next]
- error_check_good dbc_get_three $dbt \
- [list [list $word "\0\0\0\0after"]]
-
- incr count
- }
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
- }
-}
diff --git a/bdb/test/test069.tcl b/bdb/test/test069.tcl
deleted file mode 100644
index d986c861358..00000000000
--- a/bdb/test/test069.tcl
+++ /dev/null
@@ -1,14 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test069.tcl,v 11.7 2002/01/11 15:53:52 bostic Exp $
-#
-# TEST test069
-# TEST Test of DB_CURRENT partial puts without duplicates-- test067 w/
-# TEST small ndups to ensure that partial puts to DB_CURRENT work
-# TEST correctly in the absence of duplicate pages.
-proc test069 { method {ndups 50} {tnum 69} args } {
- eval test067 $method $ndups $tnum $args
-}
diff --git a/bdb/test/test070.tcl b/bdb/test/test070.tcl
deleted file mode 100644
index 986fd079589..00000000000
--- a/bdb/test/test070.tcl
+++ /dev/null
@@ -1,142 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test070.tcl,v 11.27 2002/09/05 17:23:07 sandstro Exp $
-#
-# TEST test070
-# TEST Test of DB_CONSUME (Four consumers, 1000 items.)
-# TEST
-# TEST Fork off six processes, four consumers and two producers.
-# TEST The producers will each put 20000 records into a queue;
-# TEST the consumers will each get 10000.
-# TEST Then, verify that no record was lost or retrieved twice.
-proc test070 { method {nconsumers 4} {nproducers 2} \
- {nitems 1000} {mode CONSUME } {start 0} {txn -txn} {tnum 70} args } {
- source ./include.tcl
- global alphabet
- global encrypt
-
- #
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test0$tnum skipping for env $env"
- return
- }
- set omethod [convert_method $method]
- set args [convert_args $method $args]
- if { $encrypt != 0 } {
- puts "Test0$tnum skipping for security"
- return
- }
-
- puts "Test0$tnum: $method ($args) Test of DB_$mode flag to DB->get."
- puts "\tUsing $txn environment."
-
- error_check_good enough_consumers [expr $nconsumers > 0] 1
- error_check_good enough_producers [expr $nproducers > 0] 1
-
- if { [is_queue $method] != 1 } {
- puts "\tSkipping Test0$tnum for method $method."
- return
- }
-
- env_cleanup $testdir
- set testfile test0$tnum.db
-
- # Create environment
- set dbenv [eval {berkdb_env -create $txn -home } $testdir]
- error_check_good dbenv_create [is_valid_env $dbenv] TRUE
-
- # Create database
- set db [eval {berkdb_open -create -mode 0644 -queue}\
- -env $dbenv $args $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
-
- if { $start != 0 } {
- error_check_good set_seed [$db put $start "consumer data"] 0
- puts "\tStarting at $start."
- } else {
- incr start
- }
-
- set pidlist {}
-
- # Divvy up the total number of records amongst the consumers and
- # producers.
- error_check_good cons_div_evenly [expr $nitems % $nconsumers] 0
- error_check_good prod_div_evenly [expr $nitems % $nproducers] 0
- set nperconsumer [expr $nitems / $nconsumers]
- set nperproducer [expr $nitems / $nproducers]
-
- set consumerlog $testdir/CONSUMERLOG.
-
- # Fork consumer processes (we want them to be hungry)
- for { set ndx 0 } { $ndx < $nconsumers } { incr ndx } {
- set output $consumerlog$ndx
- set p [exec $tclsh_path $test_path/wrap.tcl \
- conscript.tcl $testdir/conscript.log.consumer$ndx \
- $testdir $testfile $mode $nperconsumer $output $tnum \
- $args &]
- lappend pidlist $p
- }
- for { set ndx 0 } { $ndx < $nproducers } { incr ndx } {
- set p [exec $tclsh_path $test_path/wrap.tcl \
- conscript.tcl $testdir/conscript.log.producer$ndx \
- $testdir $testfile PRODUCE $nperproducer "" $tnum \
- $args &]
- lappend pidlist $p
- }
-
- # Wait for all children.
- watch_procs $pidlist 10
-
- # Verify: slurp all record numbers into list, sort, and make
- # sure each appears exactly once.
- puts "\tTest0$tnum: Verifying results."
- set reclist {}
- for { set ndx 0 } { $ndx < $nconsumers } { incr ndx } {
- set input $consumerlog$ndx
- set iid [open $input r]
- while { [gets $iid str] != -1 } {
- # Convert high ints to negative ints, to
- # simulate Tcl's behavior on a 32-bit machine
- # even if we're on a 64-bit one.
- if { $str > 0x7fffffff } {
- set str [expr $str - 1 - 0xffffffff]
- }
- lappend reclist $str
- }
- close $iid
- }
- set sortreclist [lsort -integer $reclist]
-
- set nitems [expr $start + $nitems]
- for { set ndx $start } { $ndx < $nitems } { incr ndx } {
- # Convert high ints to negative ints, to simulate
- # 32-bit behavior on 64-bit platforms.
- if { $ndx > 0x7fffffff } {
- set cmp [expr $ndx - 1 - 0xffffffff]
- } else {
- set cmp [expr $ndx + 0]
- }
- # Skip 0 if we are wrapping around
- if { $cmp == 0 } {
- incr ndx
- incr nitems
- incr cmp
- }
- # Be sure to convert ndx to a number before comparing.
- error_check_good pop_num [lindex $sortreclist 0] $cmp
- set sortreclist [lreplace $sortreclist 0 0]
- }
- error_check_good list_ends_empty $sortreclist {}
- error_check_good db_close [$db close] 0
- error_check_good dbenv_close [$dbenv close] 0
-
- puts "\tTest0$tnum completed successfully."
-}
diff --git a/bdb/test/test071.tcl b/bdb/test/test071.tcl
deleted file mode 100644
index 3f2604022f1..00000000000
--- a/bdb/test/test071.tcl
+++ /dev/null
@@ -1,16 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test071.tcl,v 11.9 2002/01/11 15:53:53 bostic Exp $
-#
-# TEST test071
-# TEST Test of DB_CONSUME (One consumer, 10000 items.)
-# TEST This is DB Test 70, with one consumer, one producers, and 10000 items.
-proc test071 { method {nconsumers 1} {nproducers 1}\
- {nitems 10000} {mode CONSUME} {start 0 } {txn -txn} {tnum 71} args } {
-
- eval test070 $method \
- $nconsumers $nproducers $nitems $mode $start $txn $tnum $args
-}
diff --git a/bdb/test/test072.tcl b/bdb/test/test072.tcl
deleted file mode 100644
index 3c08f93975d..00000000000
--- a/bdb/test/test072.tcl
+++ /dev/null
@@ -1,252 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test072.tcl,v 11.27 2002/07/01 15:40:48 krinsky Exp $
-#
-# TEST test072
-# TEST Test of cursor stability when duplicates are moved off-page.
-proc test072 { method {pagesize 512} {ndups 20} {tnum 72} args } {
- source ./include.tcl
- global alphabet
-
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- # Keys must sort $prekey < $key < $postkey.
- set prekey "a key"
- set key "the key"
- set postkey "z key"
-
- # Make these distinguishable from each other and from the
- # alphabets used for the $key's data.
- set predatum "1234567890"
- set postdatum "0987654321"
-
- puts -nonewline "Test0$tnum $omethod ($args): "
- if { [is_record_based $method] || [is_rbtree $method] } {
- puts "Skipping for method $method."
- return
- } else {
- puts "\n Test of cursor stability when\
- duplicates are moved off-page."
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test0$tnum: skipping for specific pagesizes"
- return
- }
-
- append args " -pagesize $pagesize "
- set txn ""
-
- set dlist [list "-dup" "-dup -dupsort"]
- set testid 0
- foreach dupopt $dlist {
- incr testid
- set duptestfile $testfile$testid
- set db [eval {berkdb_open -create -mode 0644} \
- $omethod $args $dupopt {$duptestfile}]
- error_check_good "db open" [is_valid_db $db] TRUE
-
- puts \
-"\tTest0$tnum.a: ($dupopt) Set up surrounding keys and cursors."
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$prekey $predatum}]
- error_check_good pre_put $ret 0
- set ret [eval {$db put} $txn {$postkey $postdatum}]
- error_check_good post_put $ret 0
-
- set precursor [eval {$db cursor} $txn]
- error_check_good precursor [is_valid_cursor $precursor \
- $db] TRUE
- set postcursor [eval {$db cursor} $txn]
- error_check_good postcursor [is_valid_cursor $postcursor \
- $db] TRUE
- error_check_good preset [$precursor get -set $prekey] \
- [list [list $prekey $predatum]]
- error_check_good postset [$postcursor get -set $postkey] \
- [list [list $postkey $postdatum]]
-
- puts "\tTest0$tnum.b: Put/create cursor/verify all cursor loop."
-
- for { set i 0 } { $i < $ndups } { incr i } {
- set datum [format "%4d$alphabet" [expr $i + 1000]]
- set data($i) $datum
-
- # Uncomment these lines to see intermediate steps.
- # error_check_good db_sync($i) [$db sync] 0
- # error_check_good db_dump($i) \
- # [catch {exec $util_path/db_dump \
- # -da $duptestfile > $testdir/out.$i}] 0
-
- set ret [eval {$db put} $txn {$key $datum}]
- error_check_good "db put ($i)" $ret 0
-
- set dbc($i) [eval {$db cursor} $txn]
- error_check_good "db cursor ($i)"\
- [is_valid_cursor $dbc($i) $db] TRUE
-
- error_check_good "dbc get -get_both ($i)"\
- [$dbc($i) get -get_both $key $datum]\
- [list [list $key $datum]]
-
- for { set j 0 } { $j < $i } { incr j } {
- set dbt [$dbc($j) get -current]
- set k [lindex [lindex $dbt 0] 0]
- set d [lindex [lindex $dbt 0] 1]
-
- #puts "cursor $j after $i: $d"
-
- eval {$db sync}
-
- error_check_good\
- "cursor $j key correctness after $i puts" \
- $k $key
- error_check_good\
- "cursor $j data correctness after $i puts" \
- $d $data($j)
- }
-
- # Check correctness of pre- and post- cursors. Do an
- # error_check_good on the lengths first so that we don't
- # spew garbage as the "got" field and screw up our
- # terminal. (It's happened here.)
- set pre_dbt [$precursor get -current]
- set post_dbt [$postcursor get -current]
- error_check_good \
- "key earlier cursor correctness after $i puts" \
- [string length [lindex [lindex $pre_dbt 0] 0]] \
- [string length $prekey]
- error_check_good \
- "data earlier cursor correctness after $i puts" \
- [string length [lindex [lindex $pre_dbt 0] 1]] \
- [string length $predatum]
- error_check_good \
- "key later cursor correctness after $i puts" \
- [string length [lindex [lindex $post_dbt 0] 0]] \
- [string length $postkey]
- error_check_good \
- "data later cursor correctness after $i puts" \
- [string length [lindex [lindex $post_dbt 0] 1]]\
- [string length $postdatum]
-
- error_check_good \
- "earlier cursor correctness after $i puts" \
- $pre_dbt [list [list $prekey $predatum]]
- error_check_good \
- "later cursor correctness after $i puts" \
- $post_dbt [list [list $postkey $postdatum]]
- }
-
- puts "\tTest0$tnum.c: Reverse Put/create cursor/verify all cursor loop."
- set end [expr $ndups * 2 - 1]
- for { set i $end } { $i >= $ndups } { set i [expr $i - 1] } {
- set datum [format "%4d$alphabet" [expr $i + 1000]]
- set data($i) $datum
-
- # Uncomment these lines to see intermediate steps.
- # error_check_good db_sync($i) [$db sync] 0
- # error_check_good db_dump($i) \
- # [catch {exec $util_path/db_dump \
- # -da $duptestfile > $testdir/out.$i}] 0
-
- set ret [eval {$db put} $txn {$key $datum}]
- error_check_good "db put ($i)" $ret 0
-
- error_check_bad dbc($i)_stomped [info exists dbc($i)] 1
- set dbc($i) [eval {$db cursor} $txn]
- error_check_good "db cursor ($i)"\
- [is_valid_cursor $dbc($i) $db] TRUE
-
- error_check_good "dbc get -get_both ($i)"\
- [$dbc($i) get -get_both $key $datum]\
- [list [list $key $datum]]
-
- for { set j $i } { $j < $end } { incr j } {
- set dbt [$dbc($j) get -current]
- set k [lindex [lindex $dbt 0] 0]
- set d [lindex [lindex $dbt 0] 1]
-
- #puts "cursor $j after $i: $d"
-
- eval {$db sync}
-
- error_check_good\
- "cursor $j key correctness after $i puts" \
- $k $key
- error_check_good\
- "cursor $j data correctness after $i puts" \
- $d $data($j)
- }
-
- # Check correctness of pre- and post- cursors. Do an
- # error_check_good on the lengths first so that we don't
- # spew garbage as the "got" field and screw up our
- # terminal. (It's happened here.)
- set pre_dbt [$precursor get -current]
- set post_dbt [$postcursor get -current]
- error_check_good \
- "key earlier cursor correctness after $i puts" \
- [string length [lindex [lindex $pre_dbt 0] 0]] \
- [string length $prekey]
- error_check_good \
- "data earlier cursor correctness after $i puts" \
- [string length [lindex [lindex $pre_dbt 0] 1]] \
- [string length $predatum]
- error_check_good \
- "key later cursor correctness after $i puts" \
- [string length [lindex [lindex $post_dbt 0] 0]] \
- [string length $postkey]
- error_check_good \
- "data later cursor correctness after $i puts" \
- [string length [lindex [lindex $post_dbt 0] 1]]\
- [string length $postdatum]
-
- error_check_good \
- "earlier cursor correctness after $i puts" \
- $pre_dbt [list [list $prekey $predatum]]
- error_check_good \
- "later cursor correctness after $i puts" \
- $post_dbt [list [list $postkey $postdatum]]
- }
-
- # Close cursors.
- puts "\tTest0$tnum.d: Closing cursors."
- for { set i 0 } { $i <= $end } { incr i } {
- error_check_good "dbc close ($i)" [$dbc($i) close] 0
- }
- unset dbc
- error_check_good precursor_close [$precursor close] 0
- error_check_good postcursor_close [$postcursor close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good "db close" [$db close] 0
- }
-}
diff --git a/bdb/test/test073.tcl b/bdb/test/test073.tcl
deleted file mode 100644
index 02a0f3b0d19..00000000000
--- a/bdb/test/test073.tcl
+++ /dev/null
@@ -1,290 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test073.tcl,v 11.23 2002/05/22 15:42:59 sue Exp $
-#
-# TEST test073
-# TEST Test of cursor stability on duplicate pages.
-# TEST
-# TEST Does the following:
-# TEST a. Initialize things by DB->putting ndups dups and
-# TEST setting a reference cursor to point to each.
-# TEST b. c_put ndups dups (and correspondingly expanding
-# TEST the set of reference cursors) after the last one, making sure
-# TEST after each step that all the reference cursors still point to
-# TEST the right item.
-# TEST c. Ditto, but before the first one.
-# TEST d. Ditto, but after each one in sequence first to last.
-# TEST e. Ditto, but after each one in sequence from last to first.
-# TEST occur relative to the new datum)
-# TEST f. Ditto for the two sequence tests, only doing a
-# TEST DBC->c_put(DB_CURRENT) of a larger datum instead of adding a
-# TEST new one.
-proc test073 { method {pagesize 512} {ndups 50} {tnum 73} args } {
- source ./include.tcl
- global alphabet
-
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set key "the key"
- set txn ""
-
- puts -nonewline "Test0$tnum $omethod ($args): "
- if { [is_record_based $method] || [is_rbtree $method] } {
- puts "Skipping for method $method."
- return
- } else {
- puts "cursor stability on duplicate pages."
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test073: skipping for specific pagesizes"
- return
- }
-
- append args " -pagesize $pagesize -dup"
-
- set db [eval {berkdb_open \
- -create -mode 0644} $omethod $args $testfile]
- error_check_good "db open" [is_valid_db $db] TRUE
-
- # Number of outstanding keys.
- set keys 0
-
- puts "\tTest0$tnum.a.1: Initializing put loop; $ndups dups, short data."
-
- for { set i 0 } { $i < $ndups } { incr i } {
- set datum [makedatum_t73 $i 0]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key $datum}]
- error_check_good "db put ($i)" $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set is_long($i) 0
- incr keys
- }
-
- puts "\tTest0$tnum.a.2: Initializing cursor get loop; $keys dups."
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- for { set i 0 } { $i < $keys } { incr i } {
- set datum [makedatum_t73 $i 0]
-
- set dbc($i) [eval {$db cursor} $txn]
- error_check_good "db cursor ($i)"\
- [is_valid_cursor $dbc($i) $db] TRUE
- error_check_good "dbc get -get_both ($i)"\
- [$dbc($i) get -get_both $key $datum]\
- [list [list $key $datum]]
- }
-
- puts "\tTest0$tnum.b: Cursor put (DB_KEYLAST); $ndups new dups,\
- short data."
-
- for { set i 0 } { $i < $ndups } { incr i } {
- # !!! keys contains the number of the next dup
- # to be added (since they start from zero)
-
- set datum [makedatum_t73 $keys 0]
- set curs [eval {$db cursor} $txn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
- error_check_good "c_put(DB_KEYLAST, $keys)"\
- [$curs put -keylast $key $datum] 0
-
- set dbc($keys) $curs
- set is_long($keys) 0
- incr keys
-
- verify_t73 is_long dbc $keys $key
- }
-
- puts "\tTest0$tnum.c: Cursor put (DB_KEYFIRST); $ndups new dups,\
- short data."
-
- for { set i 0 } { $i < $ndups } { incr i } {
- # !!! keys contains the number of the next dup
- # to be added (since they start from zero)
-
- set datum [makedatum_t73 $keys 0]
- set curs [eval {$db cursor} $txn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
- error_check_good "c_put(DB_KEYFIRST, $keys)"\
- [$curs put -keyfirst $key $datum] 0
-
- set dbc($keys) $curs
- set is_long($keys) 0
- incr keys
-
- verify_t73 is_long dbc $keys $key
- }
-
- puts "\tTest0$tnum.d: Cursor put (DB_AFTER) first to last;\
- $keys new dups, short data"
- # We want to add a datum after each key from 0 to the current
- # value of $keys, which we thus need to save.
- set keysnow $keys
- for { set i 0 } { $i < $keysnow } { incr i } {
- set datum [makedatum_t73 $keys 0]
- set curs [eval {$db cursor} $txn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
-
- # Which datum to insert this guy after.
- set curdatum [makedatum_t73 $i 0]
- error_check_good "c_get(DB_GET_BOTH, $i)"\
- [$curs get -get_both $key $curdatum]\
- [list [list $key $curdatum]]
- error_check_good "c_put(DB_AFTER, $i)"\
- [$curs put -after $datum] 0
-
- set dbc($keys) $curs
- set is_long($keys) 0
- incr keys
-
- verify_t73 is_long dbc $keys $key
- }
-
- puts "\tTest0$tnum.e: Cursor put (DB_BEFORE) last to first;\
- $keys new dups, short data"
-
- for { set i [expr $keys - 1] } { $i >= 0 } { incr i -1 } {
- set datum [makedatum_t73 $keys 0]
- set curs [eval {$db cursor} $txn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
-
- # Which datum to insert this guy before.
- set curdatum [makedatum_t73 $i 0]
- error_check_good "c_get(DB_GET_BOTH, $i)"\
- [$curs get -get_both $key $curdatum]\
- [list [list $key $curdatum]]
- error_check_good "c_put(DB_BEFORE, $i)"\
- [$curs put -before $datum] 0
-
- set dbc($keys) $curs
- set is_long($keys) 0
- incr keys
-
- if { $i % 10 == 1 } {
- verify_t73 is_long dbc $keys $key
- }
- }
- verify_t73 is_long dbc $keys $key
-
- puts "\tTest0$tnum.f: Cursor put (DB_CURRENT), first to last,\
- growing $keys data."
- set keysnow $keys
- for { set i 0 } { $i < $keysnow } { incr i } {
- set olddatum [makedatum_t73 $i 0]
- set newdatum [makedatum_t73 $i 1]
- set curs [eval {$db cursor} $txn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
-
- error_check_good "c_get(DB_GET_BOTH, $i)"\
- [$curs get -get_both $key $olddatum]\
- [list [list $key $olddatum]]
- error_check_good "c_put(DB_CURRENT, $i)"\
- [$curs put -current $newdatum] 0
-
- error_check_good "cursor close" [$curs close] 0
-
- set is_long($i) 1
-
- if { $i % 10 == 1 } {
- verify_t73 is_long dbc $keys $key
- }
- }
- verify_t73 is_long dbc $keys $key
-
- # Close cursors.
- puts "\tTest0$tnum.g: Closing cursors."
- for { set i 0 } { $i < $keys } { incr i } {
- error_check_good "dbc close ($i)" [$dbc($i) close] 0
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good "db close" [$db close] 0
-}
-
-# !!!: This procedure is also used by test087.
-proc makedatum_t73 { num is_long } {
- global alphabet
- if { $is_long == 1 } {
- set a $alphabet$alphabet$alphabet
- } else {
- set a abcdefghijklm
- }
-
- # format won't do leading zeros, alas.
- if { $num / 1000 > 0 } {
- set i $num
- } elseif { $num / 100 > 0 } {
- set i 0$num
- } elseif { $num / 10 > 0 } {
- set i 00$num
- } else {
- set i 000$num
- }
-
- return $i$a
-}
-
-# !!!: This procedure is also used by test087.
-proc verify_t73 { is_long_array curs_array numkeys key } {
- upvar $is_long_array is_long
- upvar $curs_array dbc
- upvar db db
-
- #useful for debugging, perhaps.
- eval $db sync
-
- for { set j 0 } { $j < $numkeys } { incr j } {
- set dbt [$dbc($j) get -current]
- set k [lindex [lindex $dbt 0] 0]
- set d [lindex [lindex $dbt 0] 1]
-
- error_check_good\
- "cursor $j key correctness (with $numkeys total items)"\
- $k $key
- error_check_good\
- "cursor $j data correctness (with $numkeys total items)"\
- $d [makedatum_t73 $j $is_long($j)]
- }
-}
diff --git a/bdb/test/test074.tcl b/bdb/test/test074.tcl
deleted file mode 100644
index 7f620db2d97..00000000000
--- a/bdb/test/test074.tcl
+++ /dev/null
@@ -1,271 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test074.tcl,v 11.17 2002/05/24 15:24:56 sue Exp $
-#
-# TEST test074
-# TEST Test of DB_NEXT_NODUP.
-proc test074 { method {dir -nextnodup} {nitems 100} {tnum 74} args } {
- source ./include.tcl
- global alphabet
- global rand_init
-
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- berkdb srand $rand_init
-
- # Data prefix--big enough that we get a mix of on-page, off-page,
- # and multi-off-page dups with the default nitems
- if { [is_fixed_length $method] == 1 } {
- set globaldata "somedata"
- } else {
- set globaldata [repeat $alphabet 4]
- }
-
- puts "Test0$tnum $omethod ($args): Test of $dir"
-
- # First, test non-dup (and not-very-interesting) case with
- # all db types.
-
- puts "\tTest0$tnum.a: No duplicates."
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum-nodup.db
- set env NULL
- } else {
- set testfile test0$tnum-nodup.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
- set db [eval {berkdb_open -create -mode 0644} $omethod\
- $args {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
- set txn ""
-
- # Insert nitems items.
- puts "\t\tTest0$tnum.a.1: Put loop."
- for {set i 1} {$i <= $nitems} {incr i} {
- #
- # If record based, set key to $i * 2 to leave
- # holes/unused entries for further testing.
- #
- if {[is_record_based $method] == 1} {
- set key [expr $i * 2]
- } else {
- set key "key$i"
- }
- set data "$globaldata$i"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key \
- [chop_data $method $data]}]
- error_check_good put($i) $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- puts "\t\tTest0$tnum.a.2: Get($dir)"
-
- # foundarray($i) is set when key number i is found in the database
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- # Initialize foundarray($i) to zero for all $i
- for {set i 1} {$i < $nitems} {incr i} {
- set foundarray($i) 0
- }
-
- # Walk database using $dir and record each key gotten.
- for {set i 1} {$i <= $nitems} {incr i} {
- set dbt [$dbc get $dir]
- set key [lindex [lindex $dbt 0] 0]
- if {[is_record_based $method] == 1} {
- set num [expr $key / 2]
- set desired_key $key
- error_check_good $method:num $key [expr $num * 2]
- } else {
- set num [string range $key 3 end]
- set desired_key key$num
- }
-
- error_check_good dbt_correct($i) $dbt\
- [list [list $desired_key\
- [pad_data $method $globaldata$num]]]
-
- set foundarray($num) 1
- }
-
- puts "\t\tTest0$tnum.a.3: Final key."
- error_check_good last_db_get [$dbc get $dir] [list]
-
- puts "\t\tTest0$tnum.a.4: Verify loop."
- for { set i 1 } { $i <= $nitems } { incr i } {
- error_check_good found_key($i) $foundarray($i) 1
- }
-
- error_check_good dbc_close(nodup) [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- # If we are a method that doesn't allow dups, verify that
- # we get an empty list if we try to use DB_NEXT_DUP
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- puts "\t\tTest0$tnum.a.5: Check DB_NEXT_DUP for $method."
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- set dbt [$dbc get $dir]
- error_check_good $method:nextdup [$dbc get -nextdup] [list]
- error_check_good dbc_close(nextdup) [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- error_check_good db_close(nodup) [$db close] 0
-
- # Quit here if we're a method that won't allow dups.
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "\tTest0$tnum: Skipping remainder for method $method."
- return
- }
-
- foreach opt { "-dup" "-dupsort" } {
-
- #
- # If we are using an env, then testfile should just be the
- # db name. Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum$opt.db
- } else {
- set testfile test0$tnum$opt.db
- }
-
- if { [string compare $opt "-dupsort"] == 0 } {
- set opt "-dup -dupsort"
- }
-
- puts "\tTest0$tnum.b: Duplicates ($opt)."
-
- puts "\t\tTest0$tnum.b.1 ($opt): Put loop."
- set db [eval {berkdb_open -create -mode 0644}\
- $opt $omethod $args {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
-
- # Insert nitems different keys such that key i has i dups.
- for {set i 1} {$i <= $nitems} {incr i} {
- set key key$i
-
- for {set j 1} {$j <= $i} {incr j} {
- if { $j < 10 } {
- set data "${globaldata}00$j"
- } elseif { $j < 100 } {
- set data "${globaldata}0$j"
- } else {
- set data "$globaldata$j"
- }
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn \
- [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key $data}]
- error_check_good put($i,$j) $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- }
-
- # Initialize foundarray($i) to 0 for all i.
- unset foundarray
- for { set i 1 } { $i <= $nitems } { incr i } {
- set foundarray($i) 0
- }
-
- # Get loop--after each get, move forward a random increment
- # within the duplicate set.
- puts "\t\tTest0$tnum.b.2 ($opt): Get loop."
- set one "001"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good dbc($opt) [is_valid_cursor $dbc $db] TRUE
- for { set i 1 } { $i <= $nitems } { incr i } {
- set dbt [$dbc get $dir]
- set key [lindex [lindex $dbt 0] 0]
- set num [string range $key 3 end]
-
- set desired_key key$num
- if { [string compare $dir "-prevnodup"] == 0 } {
- if { $num < 10 } {
- set one "00$num"
- } elseif { $num < 100 } {
- set one "0$num"
- } else {
- set one $num
- }
- }
-
- error_check_good dbt_correct($i) $dbt\
- [list [list $desired_key\
- "$globaldata$one"]]
-
- set foundarray($num) 1
-
- # Go forward by some number w/i dup set.
- set inc [berkdb random_int 0 [expr $num - 1]]
- for { set j 0 } { $j < $inc } { incr j } {
- eval {$dbc get -nextdup}
- }
- }
-
- puts "\t\tTest0$tnum.b.3 ($opt): Final key."
- error_check_good last_db_get($opt) [$dbc get $dir] [list]
-
- # Verify
- puts "\t\tTest0$tnum.b.4 ($opt): Verify loop."
- for { set i 1 } { $i <= $nitems } { incr i } {
- error_check_good found_key($i) $foundarray($i) 1
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
- }
-}
diff --git a/bdb/test/test075.tcl b/bdb/test/test075.tcl
deleted file mode 100644
index 540d8f0ed73..00000000000
--- a/bdb/test/test075.tcl
+++ /dev/null
@@ -1,205 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test075.tcl,v 11.21 2002/08/08 15:38:11 bostic Exp $
-#
-# TEST test075
-# TEST Test of DB->rename().
-# TEST (formerly test of DB_TRUNCATE cached page invalidation [#1487])
-proc test075 { method { tnum 75 } args } {
- global encrypt
- global errorCode
- global errorInfo
-
- source ./include.tcl
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- puts "Test0$tnum: $method ($args): Test of DB->rename()"
- # If we are using an env, then testfile should just be the
- # db name. Otherwise it is the test directory and the name.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- # If we are using an env, then skip this test.
- # It needs its own.
- incr eindex
- set env [lindex $args $eindex]
- puts "Skipping test075 for env $env"
- return
- }
- if { $encrypt != 0 } {
- puts "Skipping test075 for security"
- return
- }
-
- # Define absolute pathnames
- set curdir [pwd]
- cd $testdir
- set fulldir [pwd]
- cd $curdir
- set reldir $testdir
-
- # Set up absolute and relative pathnames for test
- set paths [list $fulldir $reldir]
- foreach path $paths {
- puts "\tTest0$tnum: starting test of $path path"
- set oldfile $path/test0$tnum-old.db
- set newfile $path/test0$tnum.db
- set env NULL
- set envargs ""
-
- # Loop through test using the following rename options
- # 1. no environment, not in transaction
- # 2. with environment, not in transaction
- # 3. rename with auto-commit
- # 4. rename in committed transaction
- # 5. rename in aborted transaction
-
- foreach op "noenv env auto commit abort" {
-
- puts "\tTest0$tnum.a: Create/rename file with $op"
-
- # Make sure we're starting with a clean slate.
-
- if { $op == "noenv" } {
- cleanup $path $env
- if { $env == "NULL" } {
- error_check_bad "$oldfile exists" \
- [file exists $oldfile] 1
- error_check_bad "$newfile exists" \
- [file exists $newfile] 1
- }
- }
-
- if { $op == "env" } {
- env_cleanup $path
- set env [berkdb_env -create -home $path]
- set envargs "-env $env"
- error_check_good env_open [is_valid_env $env] TRUE
- }
-
- if { $op == "auto" || $op == "commit" || $op == "abort" } {
- env_cleanup $path
- set env [berkdb_env -create -home $path -txn]
- set envargs "-env $env"
- error_check_good env_open [is_valid_env $env] TRUE
- }
-
- puts "\t\tTest0$tnum.a.1: create"
- set db [eval {berkdb_open -create -mode 0644} \
- $omethod $envargs $args $oldfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- if { $env == "NULL" } {
- error_check_bad \
- "$oldfile exists" [file exists $oldfile] 0
- error_check_bad \
- "$newfile exists" [file exists $newfile] 1
- }
-
- # The nature of the key and data are unimportant;
- # use numeric key to record-based methods don't need
- # special treatment.
- set key 1
- set data [pad_data $method data]
-
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
-
- puts "\t\tTest0$tnum.a.2: rename"
- if { $env == "NULL" } {
- error_check_bad \
- "$oldfile exists" [file exists $oldfile] 0
- error_check_bad \
- "$newfile exists" [file exists $newfile] 1
- }
-
- # Regular renames use berkdb dbrename but transaction
- # protected renames must use $env dbrename.
- if { $op == "noenv" || $op == "env" } {
- error_check_good rename_file [eval {berkdb dbrename} \
- $envargs $oldfile $newfile] 0
- } elseif { $op == "auto" } {
- error_check_good rename_file [eval {$env dbrename} \
- -auto_commit $oldfile $newfile] 0
- } else {
- # $op is "abort" or "commit"
- set txn [$env txn]
- error_check_good rename_file [eval {$env dbrename} \
- -txn $txn $oldfile $newfile] 0
- error_check_good txn_$op [$txn $op] 0
- }
-
- if { $env == "NULL" } {
- error_check_bad \
- "$oldfile exists" [file exists $oldfile] 1
- error_check_bad \
- "$newfile exists" [file exists $newfile] 0
- }
-
- puts "\t\tTest0$tnum.a.3: check"
- # Open again with create to make sure we're not caching or
- # anything silly. In the normal case (no env), we already
- # know the file doesn't exist.
- set odb [eval {berkdb_open -create -mode 0644} \
- $envargs $omethod $args $oldfile]
- set ndb [eval {berkdb_open -create -mode 0644} \
- $envargs $omethod $args $newfile]
- error_check_good odb_open [is_valid_db $odb] TRUE
- error_check_good ndb_open [is_valid_db $ndb] TRUE
-
- # The DBT from the "old" database should be empty,
- # not the "new" one, except in the case of an abort.
- set odbt [$odb get $key]
- if { $op == "abort" } {
- error_check_good odbt_has_data [llength $odbt] 1
- } else {
- set ndbt [$ndb get $key]
- error_check_good odbt_empty [llength $odbt] 0
- error_check_bad ndbt_empty [llength $ndbt] 0
- error_check_good ndbt [lindex \
- [lindex $ndbt 0] 1] $data
- }
- error_check_good odb_close [$odb close] 0
- error_check_good ndb_close [$ndb close] 0
-
- # Now there's both an old and a new. Rename the
- # "new" to the "old" and make sure that fails.
- #
- # XXX Ideally we'd do this test even when there's
- # an external environment, but that env has
- # errpfx/errfile set now. :-(
- puts "\tTest0$tnum.b: Make sure rename fails\
- instead of overwriting"
- if { $env != "NULL" } {
- error_check_good env_close [$env close] 0
- set env [berkdb_env_noerr -home $path]
- error_check_good env_open2 \
- [is_valid_env $env] TRUE
- set ret [catch {eval {berkdb dbrename} \
- -env $env $newfile $oldfile} res]
- error_check_bad rename_overwrite $ret 0
- error_check_good rename_overwrite_ret \
- [is_substr $errorCode EEXIST] 1
- }
-
- # Verify and then start over from a clean slate.
- verify_dir $path "\tTest0$tnum.c: "
- cleanup $path $env
- if { $env != "NULL" } {
- error_check_good env_close [$env close] 0
- }
- if { $env == "NULL" } {
- error_check_bad "$oldfile exists" \
- [file exists $oldfile] 1
- error_check_bad "$newfile exists" \
- [file exists $newfile] 1
-
- set oldfile test0$tnum-old.db
- set newfile test0$tnum.db
- }
- }
- }
-}
diff --git a/bdb/test/test076.tcl b/bdb/test/test076.tcl
deleted file mode 100644
index 9f7b1ed2972..00000000000
--- a/bdb/test/test076.tcl
+++ /dev/null
@@ -1,80 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test076.tcl,v 1.18 2002/07/08 20:16:31 sue Exp $
-#
-# TEST test076
-# TEST Test creation of many small databases in a single environment. [#1528].
-proc test076 { method { ndbs 1000 } { tnum 76 } args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set encargs ""
- set args [split_encargs $args encargs]
- set omethod [convert_method $method]
-
- if { [is_record_based $method] == 1 } {
- set key ""
- } else {
- set key "key"
- }
- set data "datamoredatamoredata"
-
- # Create an env if we weren't passed one.
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- if { $eindex == -1 } {
- set deleteenv 1
- env_cleanup $testdir
- set env [eval {berkdb_env -create -home} $testdir $encargs]
- error_check_good env [is_valid_env $env] TRUE
- set args "$args -env $env"
- } else {
- set deleteenv 0
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- if { $ndbs == 1000 } {
- set ndbs 100
- }
- }
- set testdir [get_home $env]
- }
- puts -nonewline "Test0$tnum $method ($args): "
- puts -nonewline "Create $ndbs"
- puts " small databases in one env."
-
- cleanup $testdir $env
- set txn ""
-
- for { set i 1 } { $i <= $ndbs } { incr i } {
- set testfile test0$tnum.$i.db
-
- set db [eval {berkdb_open -create -mode 0644}\
- $args $omethod $testfile]
- error_check_good db_open($i) [is_valid_db $db] TRUE
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key$i \
- [chop_data $method $data$i]}]
- error_check_good db_put($i) $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close($i) [$db close] 0
- }
-
- if { $deleteenv == 1 } {
- error_check_good env_close [$env close] 0
- }
-
- puts "\tTest0$tnum passed."
-}
diff --git a/bdb/test/test077.tcl b/bdb/test/test077.tcl
deleted file mode 100644
index 99cf432af20..00000000000
--- a/bdb/test/test077.tcl
+++ /dev/null
@@ -1,93 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test077.tcl,v 1.10 2002/05/24 15:24:57 sue Exp $
-#
-# TEST test077
-# TEST Test of DB_GET_RECNO [#1206].
-proc test077 { method { nkeys 1000 } { pagesize 512 } { tnum 77 } args } {
- source ./include.tcl
- global alphabet
-
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- puts "Test0$tnum: Test of DB_GET_RECNO."
-
- if { [is_rbtree $method] != 1 } {
- puts "\tTest0$tnum: Skipping for method $method."
- return
- }
-
- set data $alphabet
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set db [eval {berkdb_open -create -mode 0644\
- -pagesize $pagesize} $omethod $args {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
-
- puts "\tTest0$tnum.a: Populating database."
- set txn ""
-
- for { set i 1 } { $i <= $nkeys } { incr i } {
- set key [format %5d $i]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$key $data}]
- error_check_good db_put($key) $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- puts "\tTest0$tnum.b: Verifying record numbers."
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good dbc_open [is_valid_cursor $dbc $db] TRUE
-
- set i 1
- for { set dbt [$dbc get -first] } \
- { [string length $dbt] != 0 } \
- { set dbt [$dbc get -next] } {
- set recno [$dbc get -get_recno]
- set keynum [expr [lindex [lindex $dbt 0] 0]]
-
- # Verify that i, the number that is the key, and recno
- # are all equal.
- error_check_good key($i) $keynum $i
- error_check_good recno($i) $recno $i
- incr i
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
diff --git a/bdb/test/test078.tcl b/bdb/test/test078.tcl
deleted file mode 100644
index 45a1d46466e..00000000000
--- a/bdb/test/test078.tcl
+++ /dev/null
@@ -1,130 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test078.tcl,v 1.18 2002/06/20 19:01:02 sue Exp $
-#
-# TEST test078
-# TEST Test of DBC->c_count(). [#303]
-proc test078 { method { nkeys 100 } { pagesize 512 } { tnum 78 } args } {
- source ./include.tcl
- global alphabet rand_init
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test0$tnum: Test of key counts."
-
- berkdb srand $rand_init
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- }
-
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum-a.db
- set env NULL
- } else {
- set testfile test0$tnum-a.db
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- puts "\tTest0$tnum.a: No duplicates, trivial answer."
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test078: skipping for specific pagesizes"
- return
- }
-
- set db [eval {berkdb_open -create -mode 0644\
- -pagesize $pagesize} $omethod $args {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
- set txn ""
-
- for { set i 1 } { $i <= $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$i\
- [pad_data $method $alphabet$i]}]
- error_check_good put.a($i) $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good count.a [$db count $i] 1
- }
- error_check_good db_close.a [$db close] 0
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts \
- "\tTest0$tnum.b: Duplicates not supported in $method, skipping."
- return
- }
-
- foreach tuple {{b sorted "-dup -dupsort"} {c unsorted "-dup"}} {
- set letter [lindex $tuple 0]
- set dupopt [lindex $tuple 2]
-
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum-b.db
- set env NULL
- } else {
- set testfile test0$tnum-b.db
- set env [lindex $args $eindex]
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- puts "\tTest0$tnum.$letter: Duplicates ([lindex $tuple 1])."
-
- puts "\t\tTest0$tnum.$letter.1: Populating database."
-
- set db [eval {berkdb_open -create -mode 0644\
- -pagesize $pagesize} $dupopt $omethod $args {$testfile}]
- error_check_good db_open [is_valid_db $db] TRUE
-
- for { set i 1 } { $i <= $nkeys } { incr i } {
- for { set j 0 } { $j < $i } { incr j } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn \
- [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {$i\
- [pad_data $method $j$alphabet]}]
- error_check_good put.$letter,$i $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
- }
-
- puts -nonewline "\t\tTest0$tnum.$letter.2: "
- puts "Verifying dup counts on first dup."
- for { set i 1 } { $i < $nkeys } { incr i } {
- error_check_good count.$letter,$i \
- [$db count $i] $i
- }
-
- puts -nonewline "\t\tTest0$tnum.$letter.3: "
- puts "Verifying dup counts on random dup."
- for { set i 1 } { $i < $nkeys } { incr i } {
- set key [berkdb random_int 1 $nkeys]
- error_check_good count.$letter,$i \
- [$db count $i] $i
- }
- error_check_good db_close.$letter [$db close] 0
- }
-}
diff --git a/bdb/test/test079.tcl b/bdb/test/test079.tcl
deleted file mode 100644
index 70fd4e05090..00000000000
--- a/bdb/test/test079.tcl
+++ /dev/null
@@ -1,20 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test079.tcl,v 11.8 2002/01/11 15:53:54 bostic Exp $
-#
-# TEST test079
-# TEST Test of deletes in large trees. (test006 w/ sm. pagesize).
-# TEST
-# TEST Check that delete operations work in large btrees. 10000 entries
-# TEST and a pagesize of 512 push this out to a four-level btree, with a
-# TEST small fraction of the entries going on overflow pages.
-proc test079 { method {nentries 10000} {pagesize 512} {tnum 79} args} {
- if { [ is_queueext $method ] == 1 } {
- set method "queue";
- lappend args "-extent" "20"
- }
- eval {test006 $method $nentries 1 $tnum -pagesize $pagesize} $args
-}
diff --git a/bdb/test/test080.tcl b/bdb/test/test080.tcl
deleted file mode 100644
index 9f649496f68..00000000000
--- a/bdb/test/test080.tcl
+++ /dev/null
@@ -1,126 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test080.tcl,v 11.16 2002/08/08 15:38:12 bostic Exp $
-#
-# TEST test080
-# TEST Test of DB->remove()
-proc test080 { method {tnum 80} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test0$tnum: Test of DB->remove()"
-
- # Determine full path
- set curdir [pwd]
- cd $testdir
- set fulldir [pwd]
- cd $curdir
-
- # Test both relative and absolute path
- set paths [list $fulldir $testdir]
-
- # If we are using an env, then skip this test.
- # It needs its own.
- set eindex [lsearch -exact $args "-env"]
- set encargs ""
- set args [split_encargs $args encargs]
- if { $encargs != ""} {
- puts "Skipping test080 for security"
- return
- }
- if { $eindex != -1 } {
- incr eindex
- set e [lindex $args $eindex]
- puts "Skipping test080 for env $e"
- return
- }
-
- foreach path $paths {
-
- set dbfile test0$tnum.db
- set testfile $path/$dbfile
-
- # Loop through test using the following remove options
- # 1. no environment, not in transaction
- # 2. with environment, not in transaction
- # 3. rename with auto-commit
- # 4. rename in committed transaction
- # 5. rename in aborted transaction
-
- foreach op "noenv env auto commit abort" {
-
- # Make sure we're starting with a clean slate.
- env_cleanup $testdir
- if { $op == "noenv" } {
- set dbfile $testfile
- set e NULL
- set envargs ""
- } else {
- if { $op == "env" } {
- set largs ""
- } else {
- set largs " -txn"
- }
- set e [eval {berkdb_env -create -home $path} $largs]
- set envargs "-env $e"
- error_check_good env_open [is_valid_env $e] TRUE
- }
-
- puts "\tTest0$tnum: dbremove with $op in $path"
- puts "\tTest0$tnum.a.1: Create file"
- set db [eval {berkdb_open -create -mode 0644} $omethod \
- $envargs $args {$dbfile}]
- error_check_good db_open [is_valid_db $db] TRUE
-
- # The nature of the key and data are unimportant;
- # use numeric key to record-based methods don't need
- # special treatment.
- set key 1
- set data [pad_data $method data]
-
- error_check_good dbput [$db put $key $data] 0
- error_check_good dbclose [$db close] 0
- error_check_good file_exists_before \
- [file exists $testfile] 1
-
- # Use berkdb dbremove for non-transactional tests
- # and $env dbremove for transactional tests
- puts "\tTest0$tnum.a.2: Remove file"
- if { $op == "noenv" || $op == "env" } {
- error_check_good remove_$op \
- [eval {berkdb dbremove} $envargs $dbfile] 0
- } elseif { $op == "auto" } {
- error_check_good remove_$op \
- [eval {$e dbremove} -auto_commit $dbfile] 0
- } else {
- # $op is "abort" or "commit"
- set txn [$e txn]
- error_check_good remove_$op \
- [eval {$e dbremove} -txn $txn $dbfile] 0
- error_check_good txn_$op [$txn $op] 0
- }
-
- puts "\tTest0$tnum.a.3: Check that file is gone"
- # File should now be gone, except in the case of an abort.
- if { $op != "abort" } {
- error_check_good exists_after \
- [file exists $testfile] 0
- } else {
- error_check_good exists_after \
- [file exists $testfile] 1
- }
-
- if { $e != "NULL" } {
- error_check_good env_close [$e close] 0
- }
-
- set dbfile test0$tnum-old.db
- set testfile $path/$dbfile
- }
- }
-}
diff --git a/bdb/test/test081.tcl b/bdb/test/test081.tcl
deleted file mode 100644
index 37c2b44ac33..00000000000
--- a/bdb/test/test081.tcl
+++ /dev/null
@@ -1,15 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test081.tcl,v 11.6 2002/01/11 15:53:55 bostic Exp $
-#
-# TEST test081
-# TEST Test off-page duplicates and overflow pages together with
-# TEST very large keys (key/data as file contents).
-proc test081 { method {ndups 13} {tnum 81} args} {
- source ./include.tcl
-
- eval {test017 $method 1 $ndups $tnum} $args
-}
diff --git a/bdb/test/test082.tcl b/bdb/test/test082.tcl
deleted file mode 100644
index e8c1fa45a92..00000000000
--- a/bdb/test/test082.tcl
+++ /dev/null
@@ -1,14 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test082.tcl,v 11.5 2002/01/11 15:53:55 bostic Exp $
-#
-# TEST test082
-# TEST Test of DB_PREV_NODUP (uses test074).
-proc test082 { method {dir -prevnodup} {nitems 100} {tnum 82} args} {
- source ./include.tcl
-
- eval {test074 $method $dir $nitems $tnum} $args
-}
diff --git a/bdb/test/test083.tcl b/bdb/test/test083.tcl
deleted file mode 100644
index e4168ee1c43..00000000000
--- a/bdb/test/test083.tcl
+++ /dev/null
@@ -1,162 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test083.tcl,v 11.13 2002/06/24 14:06:38 sue Exp $
-#
-# TEST test083
-# TEST Test of DB->key_range.
-proc test083 { method {pgsz 512} {maxitems 5000} {step 2} args} {
- source ./include.tcl
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- puts "Test083 $method ($args): Test of DB->key_range"
- if { [is_btree $method] != 1 } {
- puts "\tTest083: Skipping for method $method."
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test083: skipping for specific pagesizes"
- return
- }
-
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- if { $eindex == -1 } {
- set testfile $testdir/test083.db
- set env NULL
- } else {
- set testfile test083.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
-
- # We assume that numbers will be at most six digits wide
- error_check_bad maxitems_range [expr $maxitems > 999999] 1
-
- # We want to test key_range on a variety of sizes of btree.
- # Start at ten keys and work up to $maxitems keys, at each step
- # multiplying the number of keys by $step.
- for { set nitems 10 } { $nitems <= $maxitems }\
- { set nitems [expr $nitems * $step] } {
-
- puts "\tTest083.a: Opening new database"
- if { $env != "NULL"} {
- set testdir [get_home $env]
- }
- cleanup $testdir $env
- set db [eval {berkdb_open -create -mode 0644} \
- -pagesize $pgsz $omethod $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- t83_build $db $nitems $env $txnenv
- t83_test $db $nitems $env $txnenv
-
- error_check_good db_close [$db close] 0
- }
-}
-
-proc t83_build { db nitems env txnenv } {
- source ./include.tcl
-
- puts "\tTest083.b: Populating database with $nitems keys"
-
- set keylist {}
- puts "\t\tTest083.b.1: Generating key list"
- for { set i 0 } { $i < $nitems } { incr i } {
- lappend keylist $i
- }
-
- # With randomly ordered insertions, the range of errors we
- # get from key_range can be unpredictably high [#2134]. For now,
- # just skip the randomization step.
- #puts "\t\tTest083.b.2: Randomizing key list"
- #set keylist [randomize_list $keylist]
- #puts "\t\tTest083.b.3: Populating database with randomized keys"
-
- puts "\t\tTest083.b.2: Populating database"
- set data [repeat . 50]
- set txn ""
- foreach keynum $keylist {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {key[format %6d $keynum] $data}]
- error_check_good db_put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-}
-
-proc t83_test { db nitems env txnenv } {
- # Look at the first key, then at keys about 1/4, 1/2, 3/4, and
- # all the way through the database. Make sure the key_ranges
- # aren't off by more than 10%.
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- } else {
- set txn ""
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good dbc [is_valid_cursor $dbc $db] TRUE
-
- puts "\tTest083.c: Verifying ranges..."
-
- for { set i 0 } { $i < $nitems } \
- { incr i [expr $nitems / [berkdb random_int 3 16]] } {
- puts "\t\t...key $i"
- error_check_bad key0 [llength [set dbt [$dbc get -first]]] 0
-
- for { set j 0 } { $j < $i } { incr j } {
- error_check_bad key$j \
- [llength [set dbt [$dbc get -next]]] 0
- }
-
- set ranges [$db keyrange [lindex [lindex $dbt 0] 0]]
-
- #puts $ranges
- error_check_good howmanyranges [llength $ranges] 3
-
- set lessthan [lindex $ranges 0]
- set morethan [lindex $ranges 2]
-
- set rangesum [expr $lessthan + [lindex $ranges 1] + $morethan]
-
- roughly_equal $rangesum 1 0.05
-
- # Wild guess.
- if { $nitems < 500 } {
- set tol 0.3
- } elseif { $nitems > 500 } {
- set tol 0.15
- }
-
- roughly_equal $lessthan [expr $i * 1.0 / $nitems] $tol
-
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-}
-
-proc roughly_equal { a b tol } {
- error_check_good "$a =~ $b" [expr $a - $b < $tol] 1
-}
diff --git a/bdb/test/test084.tcl b/bdb/test/test084.tcl
deleted file mode 100644
index 89bc13978b0..00000000000
--- a/bdb/test/test084.tcl
+++ /dev/null
@@ -1,53 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test084.tcl,v 11.11 2002/07/13 18:09:14 margo Exp $
-#
-# TEST test084
-# TEST Basic sanity test (test001) with large (64K) pages.
-proc test084 { method {nentries 10000} {tnum 84} {pagesize 65536} args} {
- source ./include.tcl
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum-empty.db
- set env NULL
- } else {
- set testfile test0$tnum-empty.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
-
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test084: skipping for specific pagesizes"
- return
- }
-
- cleanup $testdir $env
-
- set args "-pagesize $pagesize $args"
-
- eval {test001 $method $nentries 0 $tnum 0} $args
-
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- # For good measure, create a second database that's empty
- # with the large page size. (There was a verifier bug that
- # choked on empty 64K pages. [#2408])
- set db [eval {berkdb_open -create -mode 0644} $args $omethod $testfile]
- error_check_good empty_db [is_valid_db $db] TRUE
- error_check_good empty_db_close [$db close] 0
-}
diff --git a/bdb/test/test085.tcl b/bdb/test/test085.tcl
deleted file mode 100644
index b0412d6fe68..00000000000
--- a/bdb/test/test085.tcl
+++ /dev/null
@@ -1,332 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test085.tcl,v 1.13 2002/08/08 17:23:46 sandstro Exp $
-#
-# TEST test085
-# TEST Test of cursor behavior when a cursor is pointing to a deleted
-# TEST btree key which then has duplicates added. [#2473]
-proc test085 { method {pagesize 512} {onp 3} {offp 10} {tnum 85} args } {
- source ./include.tcl
- global alphabet
-
- set omethod [convert_method $method]
- set args [convert_args $method $args]
- set encargs ""
- set args [split_encargs $args encargs]
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
-
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test085: skipping for specific pagesizes"
- return
- }
- cleanup $testdir $env
-
- # Keys must sort $prekey < $key < $postkey.
- set prekey "AA"
- set key "BBB"
- set postkey "CCCC"
-
- # Make these distinguishable from each other and from the
- # alphabets used for the $key's data.
- set predatum "1234567890"
- set datum $alphabet
- set postdatum "0987654321"
- set txn ""
-
- append args " -pagesize $pagesize -dup"
-
- puts -nonewline "Test0$tnum $omethod ($args): "
-
- # Skip for all non-btrees. (Rbtrees don't count as btrees, for
- # now, since they don't support dups.)
- if { [is_btree $method] != 1 } {
- puts "Skipping for method $method."
- return
- } else {
- puts "Duplicates w/ deleted item cursor."
- }
-
- # Repeat the test with both on-page and off-page numbers of dups.
- foreach ndups "$onp $offp" {
- # Put operations we want to test on a cursor set to the
- # deleted item, the key to use with them, and what should
- # come before and after them given a placement of
- # the deleted item at the beginning or end of the dupset.
- set final [expr $ndups - 1]
- set putops {
- {{-before} "" $predatum {[test085_ddatum 0]} beginning}
- {{-before} "" {[test085_ddatum $final]} $postdatum end}
- {{-current} "" $predatum {[test085_ddatum 0]} beginning}
- {{-current} "" {[test085_ddatum $final]} $postdatum end}
- {{-keyfirst} $key $predatum {[test085_ddatum 0]} beginning}
- {{-keyfirst} $key $predatum {[test085_ddatum 0]} end}
- {{-keylast} $key {[test085_ddatum $final]} $postdatum beginning}
- {{-keylast} $key {[test085_ddatum $final]} $postdatum end}
- {{-after} "" $predatum {[test085_ddatum 0]} beginning}
- {{-after} "" {[test085_ddatum $final]} $postdatum end}
- }
-
- # Get operations we want to test on a cursor set to the
- # deleted item, any args to get, and the expected key/data pair.
- set getops {
- {{-current} "" "" "" beginning}
- {{-current} "" "" "" end}
- {{-next} "" $key {[test085_ddatum 0]} beginning}
- {{-next} "" $postkey $postdatum end}
- {{-prev} "" $prekey $predatum beginning}
- {{-prev} "" $key {[test085_ddatum $final]} end}
- {{-first} "" $prekey $predatum beginning}
- {{-first} "" $prekey $predatum end}
- {{-last} "" $postkey $postdatum beginning}
- {{-last} "" $postkey $postdatum end}
- {{-nextdup} "" $key {[test085_ddatum 0]} beginning}
- {{-nextdup} "" EMPTYLIST "" end}
- {{-nextnodup} "" $postkey $postdatum beginning}
- {{-nextnodup} "" $postkey $postdatum end}
- {{-prevnodup} "" $prekey $predatum beginning}
- {{-prevnodup} "" $prekey $predatum end}
- }
-
- set txn ""
- foreach pair $getops {
- set op [lindex $pair 0]
- puts "\tTest0$tnum: Get ($op) with $ndups duplicates,\
- cursor at the [lindex $pair 4]."
- set db [eval {berkdb_open -create \
- -mode 0644} $omethod $encargs $args $testfile]
- error_check_good "db open" [is_valid_db $db] TRUE
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn \
- [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [test085_setup $db $txn]
-
- set beginning [expr [string compare \
- [lindex $pair 4] "beginning"] == 0]
-
- for { set i 0 } { $i < $ndups } { incr i } {
- if { $beginning } {
- error_check_good db_put($i) \
- [eval {$db put} $txn \
- {$key [test085_ddatum $i]}] 0
- } else {
- set c [eval {$db cursor} $txn]
- set j [expr $ndups - $i - 1]
- error_check_good db_cursor($j) \
- [is_valid_cursor $c $db] TRUE
- set d [test085_ddatum $j]
- error_check_good dbc_put($j) \
- [$c put -keyfirst $key $d] 0
- error_check_good c_close [$c close] 0
- }
- }
-
- set gargs [lindex $pair 1]
- set ekey ""
- set edata ""
- eval set ekey [lindex $pair 2]
- eval set edata [lindex $pair 3]
-
- set dbt [eval $dbc get $op $gargs]
- if { [string compare $ekey EMPTYLIST] == 0 } {
- error_check_good dbt($op,$ndups) \
- [llength $dbt] 0
- } else {
- error_check_good dbt($op,$ndups) $dbt \
- [list [list $ekey $edata]]
- }
- error_check_good "dbc close" [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good "db close" [$db close] 0
- verify_dir $testdir "\t\t"
-
- # Remove testfile so we can do without truncate flag.
- # This is okay because we've already done verify and
- # dump/load.
- if { $env == "NULL" } {
- set ret [eval {berkdb dbremove} \
- $encargs $testfile]
- } elseif { $txnenv == 1 } {
- set ret [eval "$env dbremove" \
- -auto_commit $encargs $testfile]
- } else {
- set ret [eval {berkdb dbremove} \
- -env $env $encargs $testfile]
- }
- error_check_good dbremove $ret 0
-
- }
-
- foreach pair $putops {
- # Open and set up database.
- set op [lindex $pair 0]
- puts "\tTest0$tnum: Put ($op) with $ndups duplicates,\
- cursor at the [lindex $pair 4]."
- set db [eval {berkdb_open -create \
- -mode 0644} $omethod $args $encargs $testfile]
- error_check_good "db open" [is_valid_db $db] TRUE
-
- set beginning [expr [string compare \
- [lindex $pair 4] "beginning"] == 0]
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [test085_setup $db $txn]
-
- # Put duplicates.
- for { set i 0 } { $i < $ndups } { incr i } {
- if { $beginning } {
- error_check_good db_put($i) \
- [eval {$db put} $txn \
- {$key [test085_ddatum $i]}] 0
- } else {
- set c [eval {$db cursor} $txn]
- set j [expr $ndups - $i - 1]
- error_check_good db_cursor($j) \
- [is_valid_cursor $c $db] TRUE
- set d [test085_ddatum $j]
- error_check_good dbc_put($j) \
- [$c put -keyfirst $key $d] 0
- error_check_good c_close [$c close] 0
- }
- }
-
- # Set up cursors for stability test.
- set pre_dbc [eval {$db cursor} $txn]
- error_check_good pre_set [$pre_dbc get -set $prekey] \
- [list [list $prekey $predatum]]
- set post_dbc [eval {$db cursor} $txn]
- error_check_good post_set [$post_dbc get -set $postkey]\
- [list [list $postkey $postdatum]]
- set first_dbc [eval {$db cursor} $txn]
- error_check_good first_set \
- [$first_dbc get -get_both $key [test085_ddatum 0]] \
- [list [list $key [test085_ddatum 0]]]
- set last_dbc [eval {$db cursor} $txn]
- error_check_good last_set \
- [$last_dbc get -get_both $key [test085_ddatum \
- [expr $ndups - 1]]] \
- [list [list $key [test085_ddatum [expr $ndups -1]]]]
-
- set k [lindex $pair 1]
- set d_before ""
- set d_after ""
- eval set d_before [lindex $pair 2]
- eval set d_after [lindex $pair 3]
- set newdatum "NewDatum"
- error_check_good dbc_put($op,$ndups) \
- [eval $dbc put $op $k $newdatum] 0
- error_check_good dbc_prev($op,$ndups) \
- [lindex [lindex [$dbc get -prev] 0] 1] \
- $d_before
- error_check_good dbc_current($op,$ndups) \
- [lindex [lindex [$dbc get -next] 0] 1] \
- $newdatum
-
- error_check_good dbc_next($op,$ndups) \
- [lindex [lindex [$dbc get -next] 0] 1] \
- $d_after
-
- # Verify stability of pre- and post- cursors.
- error_check_good pre_stable [$pre_dbc get -current] \
- [list [list $prekey $predatum]]
- error_check_good post_stable [$post_dbc get -current] \
- [list [list $postkey $postdatum]]
- error_check_good first_stable \
- [$first_dbc get -current] \
- [list [list $key [test085_ddatum 0]]]
- error_check_good last_stable \
- [$last_dbc get -current] \
- [list [list $key [test085_ddatum [expr $ndups -1]]]]
-
- foreach c "$pre_dbc $post_dbc $first_dbc $last_dbc" {
- error_check_good ${c}_close [$c close] 0
- }
-
- error_check_good "dbc close" [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good "db close" [$db close] 0
- verify_dir $testdir "\t\t"
-
- # Remove testfile so we can do without truncate flag.
- # This is okay because we've already done verify and
- # dump/load.
- if { $env == "NULL" } {
- set ret [eval {berkdb dbremove} \
- $encargs $testfile]
- } elseif { $txnenv == 1 } {
- set ret [eval "$env dbremove" \
- -auto_commit $encargs $testfile]
- } else {
- set ret [eval {berkdb dbremove} \
- -env $env $encargs $testfile]
- }
- error_check_good dbremove $ret 0
- }
- }
-}
-
-# Set up the test database; put $prekey, $key, and $postkey with their
-# respective data, and then delete $key with a new cursor. Return that
-# cursor, still pointing to the deleted item.
-proc test085_setup { db txn } {
- upvar key key
- upvar prekey prekey
- upvar postkey postkey
- upvar predatum predatum
- upvar postdatum postdatum
-
- # no one else should ever see this one!
- set datum "bbbbbbbb"
-
- error_check_good pre_put [eval {$db put} $txn {$prekey $predatum}] 0
- error_check_good main_put [eval {$db put} $txn {$key $datum}] 0
- error_check_good post_put [eval {$db put} $txn {$postkey $postdatum}] 0
-
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $dbc $db] TRUE
-
- error_check_good dbc_getset [$dbc get -get_both $key $datum] \
- [list [list $key $datum]]
-
- error_check_good dbc_del [$dbc del] 0
-
- return $dbc
-}
-
-proc test085_ddatum { a } {
- global alphabet
- return $a$alphabet
-}
diff --git a/bdb/test/test086.tcl b/bdb/test/test086.tcl
deleted file mode 100644
index e15aa1d8bb9..00000000000
--- a/bdb/test/test086.tcl
+++ /dev/null
@@ -1,166 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test086.tcl,v 11.9 2002/08/06 17:58:00 sandstro Exp $
-#
-# TEST test086
-# TEST Test of cursor stability across btree splits/rsplits with
-# TEST subtransaction aborts (a variant of test048). [#2373]
-proc test086 { method args } {
- global errorCode
- source ./include.tcl
-
- set tstn 086
- set args [convert_args $method $args]
- set encargs ""
- set args [split_encargs $args encargs]
-
- if { [is_btree $method] != 1 } {
- puts "Test$tstn skipping for method $method."
- return
- }
-
- set method "-btree"
-
- puts "\tTest$tstn: Test of cursor stability across aborted\
- btree splits."
-
- set key "key"
- set data "data"
- set txn ""
- set flags ""
-
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then this test won't work.
- if { $eindex == -1 } {
- # But we will be using our own env...
- set testfile test0$tstn.db
- } else {
- puts "\tTest$tstn: Environment provided; skipping test."
- return
- }
- set t1 $testdir/t1
- env_cleanup $testdir
-
- set env [eval {berkdb_env -create -home $testdir -txn} $encargs]
- error_check_good berkdb_env [is_valid_env $env] TRUE
-
- puts "\tTest$tstn.a: Create $method database."
- set oflags "-auto_commit -create -env $env -mode 0644 $args $method"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set nkeys 5
- # Fill page w/ small key/data pairs, keep at leaf
- #
- puts "\tTest$tstn.b: Fill page with $nkeys small key/data pairs."
- set txn [$env txn]
- error_check_good txn [is_valid_txn $txn $env] TRUE
- for { set i 0 } { $i < $nkeys } { incr i } {
- set ret [$db put -txn $txn key000$i $data$i]
- error_check_good dbput $ret 0
- }
- error_check_good commit [$txn commit] 0
-
- # get db ordering, set cursors
- puts "\tTest$tstn.c: Set cursors on each of $nkeys pairs."
- set txn [$env txn]
- error_check_good txn [is_valid_txn $txn $env] TRUE
- for {set i 0; set ret [$db get -txn $txn key000$i]} {\
- $i < $nkeys && [llength $ret] != 0} {\
- incr i; set ret [$db get -txn $txn key000$i]} {
- set key_set($i) [lindex [lindex $ret 0] 0]
- set data_set($i) [lindex [lindex $ret 0] 1]
- set dbc [$db cursor -txn $txn]
- set dbc_set($i) $dbc
- error_check_good db_cursor:$i [is_substr $dbc_set($i) $db] 1
- set ret [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc_set($i)_get:set [llength $ret] 0
- }
-
- # Create child txn.
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn [is_valid_txn $txn $env] TRUE
-
- # if mkeys is above 1000, need to adjust below for lexical order
- set mkeys 1000
- puts "\tTest$tstn.d: Add $mkeys pairs to force split."
- for {set i $nkeys} { $i < $mkeys } { incr i } {
- if { $i >= 100 } {
- set ret [$db put -txn $ctxn key0$i $data$i]
- } elseif { $i >= 10 } {
- set ret [$db put -txn $ctxn key00$i $data$i]
- } else {
- set ret [$db put -txn $ctxn key000$i $data$i]
- }
- error_check_good dbput:more $ret 0
- }
-
- puts "\tTest$tstn.e: Abort."
- error_check_good ctxn_abort [$ctxn abort] 0
-
- puts "\tTest$tstn.f: Check and see that cursors maintained reference."
- for {set i 0} { $i < $nkeys } {incr i} {
- set ret [$dbc_set($i) get -current]
- error_check_bad dbc$i:get:current [llength $ret] 0
- set ret2 [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc$i:get:set [llength $ret2] 0
- error_check_good dbc$i:get(match) $ret $ret2
- }
-
- # Put (and this time keep) the keys that caused the split.
- # We'll delete them to test reverse splits.
- puts "\tTest$tstn.g: Put back added keys."
- for {set i $nkeys} { $i < $mkeys } { incr i } {
- if { $i >= 100 } {
- set ret [$db put -txn $txn key0$i $data$i]
- } elseif { $i >= 10 } {
- set ret [$db put -txn $txn key00$i $data$i]
- } else {
- set ret [$db put -txn $txn key000$i $data$i]
- }
- error_check_good dbput:more $ret 0
- }
-
- puts "\tTest$tstn.h: Delete added keys to force reverse split."
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn [is_valid_txn $txn $env] TRUE
- for {set i $nkeys} { $i < $mkeys } { incr i } {
- if { $i >= 100 } {
- error_check_good db_del:$i [$db del -txn $ctxn key0$i] 0
- } elseif { $i >= 10 } {
- error_check_good db_del:$i \
- [$db del -txn $ctxn key00$i] 0
- } else {
- error_check_good db_del:$i \
- [$db del -txn $ctxn key000$i] 0
- }
- }
-
- puts "\tTest$tstn.i: Abort."
- error_check_good ctxn_abort [$ctxn abort] 0
-
- puts "\tTest$tstn.j: Verify cursor reference."
- for {set i 0} { $i < $nkeys } {incr i} {
- set ret [$dbc_set($i) get -current]
- error_check_bad dbc$i:get:current [llength $ret] 0
- set ret2 [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc$i:get:set [llength $ret2] 0
- error_check_good dbc$i:get(match) $ret $ret2
- }
-
- puts "\tTest$tstn.j: Cleanup."
- # close cursors
- for {set i 0} { $i < $nkeys } {incr i} {
- error_check_good dbc_close:$i [$dbc_set($i) close] 0
- }
-
- error_check_good commit [$txn commit] 0
- error_check_good dbclose [$db close] 0
- error_check_good envclose [$env close] 0
-
- puts "\tTest$tstn complete."
-}
diff --git a/bdb/test/test087.tcl b/bdb/test/test087.tcl
deleted file mode 100644
index 089664a0002..00000000000
--- a/bdb/test/test087.tcl
+++ /dev/null
@@ -1,290 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test087.tcl,v 11.14 2002/07/08 20:16:31 sue Exp $
-#
-# TEST test087
-# TEST Test of cursor stability when converting to and modifying
-# TEST off-page duplicate pages with subtransaction aborts. [#2373]
-# TEST
-# TEST Does the following:
-# TEST a. Initialize things by DB->putting ndups dups and
-# TEST setting a reference cursor to point to each. Do each put twice,
-# TEST first aborting, then committing, so we're sure to abort the move
-# TEST to off-page dups at some point.
-# TEST b. c_put ndups dups (and correspondingly expanding
-# TEST the set of reference cursors) after the last one, making sure
-# TEST after each step that all the reference cursors still point to
-# TEST the right item.
-# TEST c. Ditto, but before the first one.
-# TEST d. Ditto, but after each one in sequence first to last.
-# TEST e. Ditto, but after each one in sequence from last to first.
-# TEST occur relative to the new datum)
-# TEST f. Ditto for the two sequence tests, only doing a
-# TEST DBC->c_put(DB_CURRENT) of a larger datum instead of adding a
-# TEST new one.
-proc test087 { method {pagesize 512} {ndups 50} {tnum 87} args } {
- source ./include.tcl
- global alphabet
-
- set args [convert_args $method $args]
- set encargs ""
- set args [split_encargs $args encargs]
- set omethod [convert_method $method]
-
- puts "Test0$tnum $omethod ($args): "
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then return
- if { $eindex != -1 } {
- puts "Environment specified; skipping."
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test087: skipping for specific pagesizes"
- return
- }
- env_cleanup $testdir
- set testfile test0$tnum.db
- set key "the key"
- append args " -pagesize $pagesize -dup"
-
- if { [is_record_based $method] || [is_rbtree $method] } {
- puts "Skipping for method $method."
- return
- } else {
- puts "Cursor stability on dup. pages w/ aborts."
- }
-
- set env [eval {berkdb_env -create -home $testdir -txn} $encargs]
- error_check_good env_create [is_valid_env $env] TRUE
-
- set db [eval {berkdb_open -auto_commit \
- -create -env $env -mode 0644} $omethod $args $testfile]
- error_check_good "db open" [is_valid_db $db] TRUE
-
- # Number of outstanding keys.
- set keys $ndups
-
- puts "\tTest0$tnum.a: put/abort/put/commit loop;\
- $ndups dups, short data."
- set txn [$env txn]
- error_check_good txn [is_valid_txn $txn $env] TRUE
- for { set i 0 } { $i < $ndups } { incr i } {
- set datum [makedatum_t73 $i 0]
-
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn(abort,$i) [is_valid_txn $ctxn $env] TRUE
- error_check_good "db put/abort ($i)" \
- [$db put -txn $ctxn $key $datum] 0
- error_check_good ctxn_abort($i) [$ctxn abort] 0
-
- verify_t73 is_long dbc [expr $i - 1] $key
-
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn(commit,$i) [is_valid_txn $ctxn $env] TRUE
- error_check_good "db put/commit ($i)" \
- [$db put -txn $ctxn $key $datum] 0
- error_check_good ctxn_commit($i) [$ctxn commit] 0
-
- set is_long($i) 0
-
- set dbc($i) [$db cursor -txn $txn]
- error_check_good "db cursor ($i)"\
- [is_valid_cursor $dbc($i) $db] TRUE
- error_check_good "dbc get -get_both ($i)"\
- [$dbc($i) get -get_both $key $datum]\
- [list [list $key $datum]]
-
- verify_t73 is_long dbc $i $key
- }
-
- puts "\tTest0$tnum.b: Cursor put (DB_KEYLAST); $ndups new dups,\
- short data."
-
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn($i) [is_valid_txn $ctxn $env] TRUE
- for { set i 0 } { $i < $ndups } { incr i } {
- # !!! keys contains the number of the next dup
- # to be added (since they start from zero)
- set datum [makedatum_t73 $keys 0]
- set curs [$db cursor -txn $ctxn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
- error_check_good "c_put(DB_KEYLAST, $keys)"\
- [$curs put -keylast $key $datum] 0
-
- # We can't do a verification while a child txn is active,
- # or we'll run into trouble when DEBUG_ROP is enabled.
- # If this test has trouble, though, uncommenting this
- # might be illuminating--it makes things a bit more rigorous
- # and works fine when DEBUG_ROP is not enabled.
- # verify_t73 is_long dbc $keys $key
- error_check_good curs_close [$curs close] 0
- }
- error_check_good ctxn_abort [$ctxn abort] 0
- verify_t73 is_long dbc $keys $key
-
- puts "\tTest0$tnum.c: Cursor put (DB_KEYFIRST); $ndups new dups,\
- short data."
-
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn($i) [is_valid_txn $ctxn $env] TRUE
- for { set i 0 } { $i < $ndups } { incr i } {
- # !!! keys contains the number of the next dup
- # to be added (since they start from zero)
-
- set datum [makedatum_t73 $keys 0]
- set curs [$db cursor -txn $ctxn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
- error_check_good "c_put(DB_KEYFIRST, $keys)"\
- [$curs put -keyfirst $key $datum] 0
-
- # verify_t73 is_long dbc $keys $key
- error_check_good curs_close [$curs close] 0
- }
- # verify_t73 is_long dbc $keys $key
- # verify_t73 is_long dbc $keys $key
- error_check_good ctxn_abort [$ctxn abort] 0
- verify_t73 is_long dbc $keys $key
-
- puts "\tTest0$tnum.d: Cursor put (DB_AFTER) first to last;\
- $keys new dups, short data"
- # We want to add a datum after each key from 0 to the current
- # value of $keys, which we thus need to save.
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn($i) [is_valid_txn $ctxn $env] TRUE
- set keysnow $keys
- for { set i 0 } { $i < $keysnow } { incr i } {
- set datum [makedatum_t73 $keys 0]
- set curs [$db cursor -txn $ctxn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
-
- # Which datum to insert this guy after.
- set curdatum [makedatum_t73 $i 0]
- error_check_good "c_get(DB_GET_BOTH, $i)"\
- [$curs get -get_both $key $curdatum]\
- [list [list $key $curdatum]]
- error_check_good "c_put(DB_AFTER, $i)"\
- [$curs put -after $datum] 0
-
- # verify_t73 is_long dbc $keys $key
- error_check_good curs_close [$curs close] 0
- }
- error_check_good ctxn_abort [$ctxn abort] 0
- verify_t73 is_long dbc $keys $key
-
- puts "\tTest0$tnum.e: Cursor put (DB_BEFORE) last to first;\
- $keys new dups, short data"
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn($i) [is_valid_txn $ctxn $env] TRUE
- for { set i [expr $keys - 1] } { $i >= 0 } { incr i -1 } {
- set datum [makedatum_t73 $keys 0]
- set curs [$db cursor -txn $ctxn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
-
- # Which datum to insert this guy before.
- set curdatum [makedatum_t73 $i 0]
- error_check_good "c_get(DB_GET_BOTH, $i)"\
- [$curs get -get_both $key $curdatum]\
- [list [list $key $curdatum]]
- error_check_good "c_put(DB_BEFORE, $i)"\
- [$curs put -before $datum] 0
-
- # verify_t73 is_long dbc $keys $key
- error_check_good curs_close [$curs close] 0
- }
- error_check_good ctxn_abort [$ctxn abort] 0
- verify_t73 is_long dbc $keys $key
-
- puts "\tTest0$tnum.f: Cursor put (DB_CURRENT), first to last,\
- growing $keys data."
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn($i) [is_valid_txn $ctxn $env] TRUE
- for { set i 0 } { $i < $keysnow } { incr i } {
- set olddatum [makedatum_t73 $i 0]
- set newdatum [makedatum_t73 $i 1]
- set curs [$db cursor -txn $ctxn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db]\
- TRUE
-
- error_check_good "c_get(DB_GET_BOTH, $i)"\
- [$curs get -get_both $key $olddatum]\
- [list [list $key $olddatum]]
- error_check_good "c_put(DB_CURRENT, $i)"\
- [$curs put -current $newdatum] 0
-
- set is_long($i) 1
-
- # verify_t73 is_long dbc $keys $key
- error_check_good curs_close [$curs close] 0
- }
- error_check_good ctxn_abort [$ctxn abort] 0
- for { set i 0 } { $i < $keysnow } { incr i } {
- set is_long($i) 0
- }
- verify_t73 is_long dbc $keys $key
-
- # Now delete the first item, abort the deletion, and make sure
- # we're still sane.
- puts "\tTest0$tnum.g: Cursor delete first item, then abort delete."
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn($i) [is_valid_txn $ctxn $env] TRUE
- set curs [$db cursor -txn $ctxn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db] TRUE
- set datum [makedatum_t73 0 0]
- error_check_good "c_get(DB_GET_BOTH, 0)"\
- [$curs get -get_both $key $datum] [list [list $key $datum]]
- error_check_good "c_del(0)" [$curs del] 0
- error_check_good curs_close [$curs close] 0
- error_check_good ctxn_abort [$ctxn abort] 0
- verify_t73 is_long dbc $keys $key
-
- # Ditto, for the last item.
- puts "\tTest0$tnum.h: Cursor delete last item, then abort delete."
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn($i) [is_valid_txn $ctxn $env] TRUE
- set curs [$db cursor -txn $ctxn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db] TRUE
- set datum [makedatum_t73 [expr $keys - 1] 0]
- error_check_good "c_get(DB_GET_BOTH, [expr $keys - 1])"\
- [$curs get -get_both $key $datum] [list [list $key $datum]]
- error_check_good "c_del(0)" [$curs del] 0
- error_check_good curs_close [$curs close] 0
- error_check_good ctxn_abort [$ctxn abort] 0
- verify_t73 is_long dbc $keys $key
-
- # Ditto, for all the items.
- puts "\tTest0$tnum.i: Cursor delete all items, then abort delete."
- set ctxn [$env txn -parent $txn]
- error_check_good ctxn($i) [is_valid_txn $ctxn $env] TRUE
- set curs [$db cursor -txn $ctxn]
- error_check_good "db cursor create" [is_valid_cursor $curs $db] TRUE
- set datum [makedatum_t73 0 0]
- error_check_good "c_get(DB_GET_BOTH, 0)"\
- [$curs get -get_both $key $datum] [list [list $key $datum]]
- error_check_good "c_del(0)" [$curs del] 0
- for { set i 1 } { $i < $keys } { incr i } {
- error_check_good "c_get(DB_NEXT, $i)"\
- [$curs get -next] [list [list $key [makedatum_t73 $i 0]]]
- error_check_good "c_del($i)" [$curs del] 0
- }
- error_check_good curs_close [$curs close] 0
- error_check_good ctxn_abort [$ctxn abort] 0
- verify_t73 is_long dbc $keys $key
-
- # Close cursors.
- puts "\tTest0$tnum.j: Closing cursors."
- for { set i 0 } { $i < $keys } { incr i } {
- error_check_good "dbc close ($i)" [$dbc($i) close] 0
- }
- error_check_good "db close" [$db close] 0
- error_check_good txn_commit [$txn commit] 0
- error_check_good "env close" [$env close] 0
-}
diff --git a/bdb/test/test088.tcl b/bdb/test/test088.tcl
deleted file mode 100644
index 7065b4cd642..00000000000
--- a/bdb/test/test088.tcl
+++ /dev/null
@@ -1,172 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test088.tcl,v 11.12 2002/08/05 19:23:51 sandstro Exp $
-#
-# TEST test088
-# TEST Test of cursor stability across btree splits with very
-# TEST deep trees (a variant of test048). [#2514]
-proc test088 { method args } {
- global errorCode alphabet
- source ./include.tcl
-
- set tstn 088
- set args [convert_args $method $args]
-
- if { [is_btree $method] != 1 } {
- puts "Test$tstn skipping for method $method."
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test088: skipping for specific pagesizes"
- return
- }
-
- set method "-btree"
-
- puts "\tTest$tstn: Test of cursor stability across btree splits."
-
- set key "key$alphabet$alphabet$alphabet"
- set data "data$alphabet$alphabet$alphabet"
- set txn ""
- set flags ""
-
- puts "\tTest$tstn.a: Create $method database."
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test$tstn.db
- set env NULL
- } else {
- set testfile test$tstn.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- set ps 512
- set txn ""
- set oflags "-create -pagesize $ps -mode 0644 $args $method"
- set db [eval {berkdb_open} $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set nkeys 5
- # Fill page w/ key/data pairs.
- #
- puts "\tTest$tstn.b: Fill page with $nkeys small key/data pairs."
- for { set i 0 } { $i < $nkeys } { incr i } {
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn {${key}00000$i $data$i}]
- error_check_good dbput $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- # get db ordering, set cursors
- puts "\tTest$tstn.c: Set cursors on each of $nkeys pairs."
- # if mkeys is above 1000, need to adjust below for lexical order
- set mkeys 30000
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- set mkeys 300
- }
- for {set i 0; set ret [$db get ${key}00000$i]} {\
- $i < $nkeys && [llength $ret] != 0} {\
- incr i; set ret [$db get ${key}00000$i]} {
- set key_set($i) [lindex [lindex $ret 0] 0]
- set data_set($i) [lindex [lindex $ret 0] 1]
- set dbc [eval {$db cursor} $txn]
- set dbc_set($i) $dbc
- error_check_good db_cursor:$i [is_substr $dbc_set($i) $db] 1
- set ret [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc_set($i)_get:set [llength $ret] 0
- }
-
- puts "\tTest$tstn.d: Add $mkeys pairs to force splits."
- for {set i $nkeys} { $i < $mkeys } { incr i } {
- if { $i >= 10000 } {
- set ret [eval {$db put} $txn {${key}0$i $data$i}]
- } elseif { $i >= 1000 } {
- set ret [eval {$db put} $txn {${key}00$i $data$i}]
- } elseif { $i >= 100 } {
- set ret [eval {$db put} $txn {${key}000$i $data$i}]
- } elseif { $i >= 10 } {
- set ret [eval {$db put} $txn {${key}0000$i $data$i}]
- } else {
- set ret [eval {$db put} $txn {${key}00000$i $data$i}]
- }
- error_check_good dbput:more $ret 0
- }
-
- puts "\tTest$tstn.e: Make sure splits happened."
- # XXX cannot execute stat in presence of txns and cursors.
- if { $txnenv == 0 } {
- error_check_bad stat:check-split [is_substr [$db stat] \
- "{{Internal pages} 0}"] 1
- }
-
- puts "\tTest$tstn.f: Check to see that cursors maintained reference."
- for {set i 0} { $i < $nkeys } {incr i} {
- set ret [$dbc_set($i) get -current]
- error_check_bad dbc$i:get:current [llength $ret] 0
- set ret2 [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc$i:get:set [llength $ret2] 0
- error_check_good dbc$i:get(match) $ret $ret2
- }
-
- puts "\tTest$tstn.g: Delete added keys to force reverse splits."
- for {set i $nkeys} { $i < $mkeys } { incr i } {
- if { $i >= 10000 } {
- set ret [eval {$db del} $txn {${key}0$i}]
- } elseif { $i >= 1000 } {
- set ret [eval {$db del} $txn {${key}00$i}]
- } elseif { $i >= 100 } {
- set ret [eval {$db del} $txn {${key}000$i}]
- } elseif { $i >= 10 } {
- set ret [eval {$db del} $txn {${key}0000$i}]
- } else {
- set ret [eval {$db del} $txn {${key}00000$i}]
- }
- error_check_good dbput:more $ret 0
- }
-
- puts "\tTest$tstn.h: Verify cursor reference."
- for {set i 0} { $i < $nkeys } {incr i} {
- set ret [$dbc_set($i) get -current]
- error_check_bad dbc$i:get:current [llength $ret] 0
- set ret2 [$dbc_set($i) get -set $key_set($i)]
- error_check_bad dbc$i:get:set [llength $ret2] 0
- error_check_good dbc$i:get(match) $ret $ret2
- }
-
- puts "\tTest$tstn.i: Cleanup."
- # close cursors
- for {set i 0} { $i < $nkeys } {incr i} {
- error_check_good dbc_close:$i [$dbc_set($i) close] 0
- }
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good dbclose [$db close] 0
-
- puts "\tTest$tstn complete."
-}
diff --git a/bdb/test/test089.tcl b/bdb/test/test089.tcl
deleted file mode 100644
index d378152f203..00000000000
--- a/bdb/test/test089.tcl
+++ /dev/null
@@ -1,180 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test089.tcl,v 11.2 2002/08/08 15:38:12 bostic Exp $
-#
-# TEST test089
-# TEST Concurrent Data Store test (CDB)
-# TEST
-# TEST Enhanced CDB testing to test off-page dups, cursor dups and
-# TEST cursor operations like c_del then c_get.
-proc test089 { method {nentries 1000} args } {
- global datastr
- global encrypt
- source ./include.tcl
-
- #
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test089 skipping for env $env"
- return
- }
- set encargs ""
- set args [convert_args $method $args]
- set oargs [split_encargs $args encargs]
- set omethod [convert_method $method]
-
- puts "Test089: ($oargs) $method CDB Test cursor/dup operations"
-
- # Process arguments
- # Create the database and open the dictionary
- set testfile test089.db
- set testfile1 test089a.db
-
- env_cleanup $testdir
-
- set env [eval {berkdb_env -create -cdb} $encargs -home $testdir]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- set db [eval {berkdb_open -env $env -create \
- -mode 0644 $omethod} $oargs {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set db1 [eval {berkdb_open -env $env -create \
- -mode 0644 $omethod} $oargs {$testfile1}]
- error_check_good dbopen [is_valid_db $db1] TRUE
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put each key/data pair
- puts "\tTest089.a: put loop"
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $datastr]}]
- error_check_good put:$db $ret 0
- set ret [eval {$db1 put} \
- $txn $pflags {$key [chop_data $method $datastr]}]
- error_check_good put:$db1 $ret 0
- incr count
- }
- close $did
- error_check_good close:$db [$db close] 0
- error_check_good close:$db1 [$db1 close] 0
-
- # Database is created, now set up environment
-
- # Remove old mpools and Open/create the lock and mpool regions
- error_check_good env:close:$env [$env close] 0
- set ret [eval {berkdb envremove} $encargs -home $testdir]
- error_check_good env_remove $ret 0
-
- set env [eval {berkdb_env_noerr -create -cdb} $encargs -home $testdir]
- error_check_good dbenv [is_valid_widget $env env] TRUE
-
- # This tests the failure found in #1923
- puts "\tTest089.b: test delete then get"
-
- set db1 [eval {berkdb_open_noerr -env $env -create \
- -mode 0644 $omethod} $oargs {$testfile1}]
- error_check_good dbopen [is_valid_db $db1] TRUE
-
- set dbc [$db1 cursor -update]
- error_check_good dbcursor [is_valid_cursor $dbc $db1] TRUE
-
- for {set kd [$dbc get -first] } { [llength $kd] != 0 } \
- {set kd [$dbc get -next] } {
- error_check_good dbcdel [$dbc del] 0
- }
- error_check_good dbc_close [$dbc close] 0
-
- puts "\tTest089.c: CDB cursor dups"
- set dbc [$db1 cursor -update]
- error_check_good dbcursor [is_valid_cursor $dbc $db1] TRUE
- set stat [catch {$dbc dup} ret]
- error_check_bad wr_cdup_stat $stat 0
- error_check_good wr_cdup [is_substr $ret \
- "Cannot duplicate writeable cursor"] 1
-
- set dbc_ro [$db1 cursor]
- error_check_good dbcursor [is_valid_cursor $dbc_ro $db1] TRUE
- set dup_dbc [$dbc_ro dup]
- error_check_good rd_cdup [is_valid_cursor $dup_dbc $db1] TRUE
-
- error_check_good dbc_close [$dbc close] 0
- error_check_good dbc_close [$dbc_ro close] 0
- error_check_good dbc_close [$dup_dbc close] 0
- error_check_good db_close [$db1 close] 0
- error_check_good env_close [$env close] 0
-
- if { [is_btree $method] != 1 } {
- puts "Skipping rest of test089 for $method method."
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Skipping rest of test089 for specific pagesizes"
- return
- }
- append oargs " -dup "
- test089_dup $testdir $encargs $oargs $omethod $nentries
- append oargs " -dupsort "
- test089_dup $testdir $encargs $oargs $omethod $nentries
-}
-
-proc test089_dup { testdir encargs oargs method nentries } {
-
- env_cleanup $testdir
- set env [eval {berkdb_env -create -cdb} $encargs -home $testdir]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- #
- # Set pagesize small to generate lots of off-page dups
- #
- set page 512
- set nkeys 5
- set data "data"
- set key "test089_key"
- set testfile test089.db
- puts "\tTest089.d: CDB ($oargs) off-page dups"
- set oflags "-env $env -create -mode 0644 $oargs $method"
- set db [eval {berkdb_open} -pagesize $page $oflags $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- puts "\tTest089.e: Fill page with $nkeys keys, with $nentries dups"
- for { set k 0 } { $k < $nkeys } { incr k } {
- for { set i 0 } { $i < $nentries } { incr i } {
- set ret [$db put $key $i$data$k]
- error_check_good dbput $ret 0
- }
- }
-
- # Verify we have off-page duplicates
- set stat [$db stat]
- error_check_bad stat:offpage [is_substr $stat "{{Internal pages} 0}"] 1
-
- set dbc [$db cursor -update]
- error_check_good dbcursor [is_valid_cursor $dbc $db] TRUE
-
- puts "\tTest089.f: test delete then get of off-page dups"
- for {set kd [$dbc get -first] } { [llength $kd] != 0 } \
- {set kd [$dbc get -next] } {
- error_check_good dbcdel [$dbc del] 0
- }
- error_check_good dbc_close [$dbc close] 0
- error_check_good db_close [$db close] 0
- error_check_good env_close [$env close] 0
-}
diff --git a/bdb/test/test090.tcl b/bdb/test/test090.tcl
deleted file mode 100644
index da90688ffc5..00000000000
--- a/bdb/test/test090.tcl
+++ /dev/null
@@ -1,16 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test090.tcl,v 11.10 2002/08/15 20:55:21 sandstro Exp $
-#
-# TEST test090
-# TEST Test for functionality near the end of the queue using test001.
-proc test090 { method {nentries 10000} {txn -txn} {tnum "90"} args} {
- if { [is_queueext $method ] == 0 } {
- puts "Skipping test0$tnum for $method."
- return;
- }
- eval {test001 $method $nentries 4294967000 $tnum 0} $args
-}
diff --git a/bdb/test/test091.tcl b/bdb/test/test091.tcl
deleted file mode 100644
index cfd2a60ebb5..00000000000
--- a/bdb/test/test091.tcl
+++ /dev/null
@@ -1,20 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test091.tcl,v 11.7 2002/01/11 15:53:56 bostic Exp $
-#
-# TEST test091
-# TEST Test of DB_CONSUME_WAIT.
-proc test091 { method {nconsumers 4} \
- {nproducers 2} {nitems 1000} {start 0 } {tnum "91"} args} {
- if { [is_queue $method ] == 0 } {
- puts "Skipping test0$tnum for $method."
- return;
- }
- eval {test070 $method \
- $nconsumers $nproducers $nitems WAIT $start -txn $tnum } $args
- eval {test070 $method \
- $nconsumers $nproducers $nitems WAIT $start -cdb $tnum } $args
-}
diff --git a/bdb/test/test092.tcl b/bdb/test/test092.tcl
deleted file mode 100644
index 29c1c55a9a9..00000000000
--- a/bdb/test/test092.tcl
+++ /dev/null
@@ -1,241 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test092.tcl,v 11.13 2002/02/22 15:26:28 sandstro Exp $
-#
-# TEST test092
-# TEST Test of DB_DIRTY_READ [#3395]
-# TEST
-# TEST We set up a database with nentries in it. We then open the
-# TEST database read-only twice. One with dirty read and one without.
-# TEST We open the database for writing and update some entries in it.
-# TEST Then read those new entries via db->get (clean and dirty), and
-# TEST via cursors (clean and dirty).
-proc test092 { method {nentries 1000} args } {
- source ./include.tcl
- #
- # If we are using an env, then skip this test. It needs its own.
- set eindex [lsearch -exact $args "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- puts "Test092 skipping for env $env"
- return
- }
- set args [convert_args $method $args]
- set encargs ""
- set args [split_encargs $args encargs]
- set omethod [convert_method $method]
-
- puts "Test092: Dirty Read Test $method $nentries"
-
- # Create the database and open the dictionary
- set testfile test092.db
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
-
- env_cleanup $testdir
-
- set lmax [expr $nentries * 2]
- set lomax [expr $nentries * 2]
- set env [eval {berkdb_env -create -txn} $encargs -home $testdir \
- -lock_max_locks $lmax -lock_max_objects $lomax]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- set db [eval {berkdb_open -env $env -create \
- -mode 0644 $omethod} $args {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Here is the loop where we put each key/data pair.
- # Key is entry, data is entry also.
- puts "\tTest092.a: put loop"
- set count 0
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- global kvals
-
- set key [expr $count + 1]
- set kvals($key) [pad_data $method $str]
- } else {
- set key $str
- }
- set ret [eval {$db put} {$key [chop_data $method $str]}]
- error_check_good put:$db $ret 0
- incr count
- }
- close $did
- error_check_good close:$db [$db close] 0
-
- puts "\tTest092.b: Opening all the handles"
- #
- # Open all of our handles.
- # We need:
- # 1. Our main txn (t).
- # 2. A txn that can read dirty data (tdr).
- # 3. A db handle for writing via txn (dbtxn).
- # 4. A db handle for clean data (dbcl).
- # 5. A db handle for dirty data (dbdr).
- # 6. A cursor handle for dirty txn data (clean db handle using
- # the dirty txn handle on the cursor call) (dbccl1).
- # 7. A cursor handle for dirty data (dirty on get call) (dbcdr0).
- # 8. A cursor handle for dirty data (dirty on cursor call) (dbcdr1).
- set t [$env txn]
- error_check_good txnbegin [is_valid_txn $t $env] TRUE
-
- set tdr [$env txn -dirty]
- error_check_good txnbegin:dr [is_valid_txn $tdr $env] TRUE
- set dbtxn [eval {berkdb_open -auto_commit -env $env -dirty \
- -mode 0644 $omethod} {$testfile}]
- error_check_good dbopen:dbtxn [is_valid_db $dbtxn] TRUE
-
- set dbcl [eval {berkdb_open -auto_commit -env $env \
- -rdonly -mode 0644 $omethod} {$testfile}]
- error_check_good dbopen:dbcl [is_valid_db $dbcl] TRUE
-
- set dbdr [eval {berkdb_open -auto_commit -env $env -dirty \
- -rdonly -mode 0644 $omethod} {$testfile}]
- error_check_good dbopen:dbdr [is_valid_db $dbdr] TRUE
-
- set dbccl [$dbcl cursor -txn $tdr]
- error_check_good dbcurs:dbcl [is_valid_cursor $dbccl $dbcl] TRUE
-
- set dbcdr0 [$dbdr cursor]
- error_check_good dbcurs:dbdr0 [is_valid_cursor $dbcdr0 $dbdr] TRUE
-
- set dbcdr1 [$dbdr cursor -dirty]
- error_check_good dbcurs:dbdr1 [is_valid_cursor $dbcdr1 $dbdr] TRUE
-
- #
- # Now that we have all of our handles, change all the data in there
- # to be the key and data the same, but data is capitalized.
- puts "\tTest092.c: put/get data within a txn"
- set gflags ""
- if { [is_record_based $method] == 1 } {
- set checkfunc test092dr_recno.check
- append gflags " -recno"
- } else {
- set checkfunc test092dr.check
- }
- set count 0
- set did [open $dict]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- set ustr [string toupper $str]
- set clret [list [list $key [pad_data $method $str]]]
- set drret [list [list $key [pad_data $method $ustr]]]
- #
- # Put the data in the txn.
- #
- set ret [eval {$dbtxn put} -txn $t \
- {$key [chop_data $method $ustr]}]
- error_check_good put:$dbtxn $ret 0
-
- #
- # Now get the data using the different db handles and
- # make sure it is dirty or clean data.
- #
- # Using the dirty txn should show us dirty data
- set ret [eval {$dbcl get -txn $tdr} $gflags {$key}]
- error_check_good dbdr2:get $ret $drret
-
- set ret [eval {$dbdr get -dirty} $gflags {$key}]
- error_check_good dbdr1:get $ret $drret
-
- set ret [eval {$dbdr get -txn $tdr} $gflags {$key}]
- error_check_good dbdr2:get $ret $drret
-
- incr count
- }
- close $did
-
- puts "\tTest092.d: Check dirty data using dirty txn and clean db/cursor"
- dump_file_walk $dbccl $t1 $checkfunc "-first" "-next"
-
- puts "\tTest092.e: Check dirty data using -dirty cget flag"
- dump_file_walk $dbcdr0 $t2 $checkfunc "-first" "-next" "-dirty"
-
- puts "\tTest092.f: Check dirty data using -dirty cursor"
- dump_file_walk $dbcdr1 $t3 $checkfunc "-first" "-next"
-
- #
- # We must close these before aborting the real txn
- # because they all hold read locks on the pages.
- #
- error_check_good dbccl:close [$dbccl close] 0
- error_check_good dbcdr0:close [$dbcdr0 close] 0
- error_check_good dbcdr1:close [$dbcdr1 close] 0
-
- #
- # Now abort the modifying transaction and rerun the data checks.
- #
- puts "\tTest092.g: Aborting the write-txn"
- error_check_good txnabort [$t abort] 0
-
- set dbccl [$dbcl cursor -txn $tdr]
- error_check_good dbcurs:dbcl [is_valid_cursor $dbccl $dbcl] TRUE
-
- set dbcdr0 [$dbdr cursor]
- error_check_good dbcurs:dbdr0 [is_valid_cursor $dbcdr0 $dbdr] TRUE
-
- set dbcdr1 [$dbdr cursor -dirty]
- error_check_good dbcurs:dbdr1 [is_valid_cursor $dbcdr1 $dbdr] TRUE
-
- if { [is_record_based $method] == 1 } {
- set checkfunc test092cl_recno.check
- } else {
- set checkfunc test092cl.check
- }
- puts "\tTest092.h: Check clean data using -dirty cget flag"
- dump_file_walk $dbccl $t1 $checkfunc "-first" "-next"
-
- puts "\tTest092.i: Check clean data using -dirty cget flag"
- dump_file_walk $dbcdr0 $t2 $checkfunc "-first" "-next" "-dirty"
-
- puts "\tTest092.j: Check clean data using -dirty cursor"
- dump_file_walk $dbcdr1 $t3 $checkfunc "-first" "-next"
-
- # Clean up our handles
- error_check_good dbccl:close [$dbccl close] 0
- error_check_good tdrcommit [$tdr commit] 0
- error_check_good dbcdr0:close [$dbcdr0 close] 0
- error_check_good dbcdr1:close [$dbcdr1 close] 0
- error_check_good dbclose [$dbcl close] 0
- error_check_good dbclose [$dbdr close] 0
- error_check_good dbclose [$dbtxn close] 0
- error_check_good envclose [$env close] 0
-}
-
-# Check functions for test092; keys and data are identical
-# Clean checks mean keys and data are identical.
-# Dirty checks mean data are uppercase versions of keys.
-proc test092cl.check { key data } {
- error_check_good "key/data mismatch" $key $data
-}
-
-proc test092cl_recno.check { key data } {
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data $kvals($key)
-}
-
-proc test092dr.check { key data } {
- error_check_good "key/data mismatch" $key [string tolower $data]
-}
-
-proc test092dr_recno.check { key data } {
- global kvals
-
- error_check_good key"$key"_exists [info exists kvals($key)] 1
- error_check_good "key/data mismatch, key $key" $data \
- [string toupper $kvals($key)]
-}
-
diff --git a/bdb/test/test093.tcl b/bdb/test/test093.tcl
deleted file mode 100644
index e3f8f0103c6..00000000000
--- a/bdb/test/test093.tcl
+++ /dev/null
@@ -1,393 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test093.tcl,v 11.20 2002/06/20 19:01:02 sue Exp $
-#
-# TEST test093
-# TEST Test using set_bt_compare.
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; retrieve each.
-# TEST After all are entered, retrieve all; compare output to original.
-# TEST Close file, reopen, do retrieve and re-verify.
-proc test093 { method {nentries 10000} {tnum "93"} args} {
- source ./include.tcl
- global btvals
- global btvalsck
- global errorInfo
-
- set dbargs [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_btree $method] != 1 } {
- puts "Test0$tnum: skipping for method $method."
- return
- }
- set txnenv 0
- set eindex [lsearch -exact $dbargs "-env"]
- if { $eindex != -1 } {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $dbargs $eindex]
- set rpcenv [is_rpcenv $env]
- if { $rpcenv == 1 } {
- puts "Test0$tnum: skipping for RPC"
- return
- }
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append dbargs " -auto_commit "
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- cleanup $testdir $env
- }
- puts "Test0$tnum: $method ($args) $nentries using btcompare"
-
-
- test093_run $omethod $dbargs $nentries $tnum test093_cmp1 test093_sort1
- test093_runbig $omethod $dbargs $nentries $tnum \
- test093_cmp1 test093_sort1
- test093_run $omethod $dbargs $nentries $tnum test093_cmp2 test093_sort2
- #
- # Don't bother running the second, really slow, comparison
- # function on test093_runbig (file contents).
-
- # Clean up so verification doesn't fail. (There's currently
- # no way to specify a comparison function to berkdb dbverify.)
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- set eindex [lsearch -exact $dbargs "-env"]
- if { $eindex == -1 } {
- set env NULL
- } else {
- incr eindex
- set env [lindex $dbargs $eindex]
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-}
-
-proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
- source ./include.tcl
- global btvals
- global btvalsck
-
- # Create the database and open the dictionary
- set eindex [lsearch -exact $dbargs "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- set txnenv 0
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $dbargs $eindex]
- set txnenv [is_txnenv $env]
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set db [eval {berkdb_open -btcompare $cmpfunc \
- -create -mode 0644} $method $dbargs $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set did [open $dict]
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set pflags ""
- set gflags ""
- set txn ""
- set btvals {}
- set btvalsck {}
- set checkfunc test093_check
- puts "\tTest0$tnum.a: put/get loop"
- # Here is the loop where we put and get each key/data pair
- set count 0
- while { [gets $did str] != -1 && $count < $nentries } {
- set key $str
- set str [reverse $str]
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval \
- {$db put} $txn $pflags {$key [chop_data $method $str]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- lappend btvals $key
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good \
- get $ret [list [list $key [pad_data $method $str]]]
-
- incr count
- }
- close $did
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Now compare the keys to see if they match the dictionary (or ints)
- set q q
- filehead $nentries $dict $t2
- filesort $t2 $t3
- file rename -force $t3 $t2
- filesort $t1 $t3
-
- error_check_good Test0$tnum:diff($t3,$t2) \
- [filecmp $t3 $t2] 0
-
- puts "\tTest0$tnum.c: dump file in order"
- # Now, reopen the file and run the last test again.
- # We open it here, ourselves, because all uses of the db
- # need to have the correct comparison func set. Then
- # call dump_file_direction directly.
- set btvalsck {}
- set db [eval {berkdb_open -btcompare $cmpfunc -rdonly} \
- $dbargs $method $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file_direction $db $txn $t1 $checkfunc "-first" "-next"
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- #
- # We need to sort btvals according to the comparison function.
- # Once that is done, btvalsck and btvals should be the same.
- puts "\tTest0$tnum.d: check file order"
-
- $sortfunc
-
- error_check_good btvals:len [llength $btvals] [llength $btvalsck]
- for {set i 0} {$i < $nentries} {incr i} {
- error_check_good vals:$i [lindex $btvals $i] \
- [lindex $btvalsck $i]
- }
-}
-
-proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
- source ./include.tcl
- global btvals
- global btvalsck
-
- # Create the database and open the dictionary
- set eindex [lsearch -exact $dbargs "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- set txnenv 0
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum.db
- set env NULL
- } else {
- set testfile test0$tnum.db
- incr eindex
- set env [lindex $dbargs $eindex]
- set txnenv [is_txnenv $env]
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- set db [eval {berkdb_open -btcompare $cmpfunc \
- -create -mode 0644} $method $dbargs $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- set t4 $testdir/t4
- set t5 $testdir/t5
- set pflags ""
- set gflags ""
- set txn ""
- set btvals {}
- set btvalsck {}
- set checkfunc test093_checkbig
- puts "\tTest0$tnum.e:\
- big key put/get loop key=filecontents data=filename"
-
- # Here is the loop where we put and get each key/data pair
- set file_list [get_file_list 1]
-
- set count 0
- foreach f $file_list {
- set fid [open $f r]
- fconfigure $fid -translation binary
- set key [read $fid]
- close $fid
-
- set key $f$key
-
- set fcopy [open $t5 w]
- fconfigure $fcopy -translation binary
- puts -nonewline $fcopy $key
- close $fcopy
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} $txn $pflags {$key \
- [chop_data $method $f]}]
- error_check_good put_file $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- lappend btvals $key
-
- # Should really catch errors
- set fid [open $t4 w]
- fconfigure $fid -translation binary
- if [catch {eval {$db get} $gflags {$key}} data] {
- puts -nonewline $fid $data
- } else {
- # Data looks like {{key data}}
- set key [lindex [lindex $data 0] 0]
- puts -nonewline $fid $key
- }
- close $fid
- error_check_good \
- Test093:diff($t5,$t4) [filecmp $t5 $t4] 0
-
- incr count
- }
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.f: big dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 $checkfunc
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest0$tnum.g: dump file in order"
- # Now, reopen the file and run the last test again.
- # We open it here, ourselves, because all uses of the db
- # need to have the correct comparison func set. Then
- # call dump_file_direction directly.
-
- set btvalsck {}
- set db [eval {berkdb_open -btcompare $cmpfunc -rdonly} \
- $dbargs $method $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file_direction $db $txn $t1 $checkfunc "-first" "-next"
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- #
- # We need to sort btvals according to the comparison function.
- # Once that is done, btvalsck and btvals should be the same.
- puts "\tTest0$tnum.h: check file order"
-
- $sortfunc
- error_check_good btvals:len [llength $btvals] [llength $btvalsck]
-
- set end [llength $btvals]
- for {set i 0} {$i < $end} {incr i} {
- error_check_good vals:$i [lindex $btvals $i] \
- [lindex $btvalsck $i]
- }
-}
-
-# Simple bt comparison.
-proc test093_cmp1 { a b } {
- return [string compare $b $a]
-}
-
-# Simple bt sorting.
-proc test093_sort1 {} {
- global btvals
- #
- # This one is easy, just sort in reverse.
- #
- set btvals [lsort -decreasing $btvals]
-}
-
-proc test093_cmp2 { a b } {
- set arev [reverse $a]
- set brev [reverse $b]
- return [string compare $arev $brev]
-}
-
-proc test093_sort2 {} {
- global btvals
-
- # We have to reverse them, then sorts them.
- # Then reverse them back to real words.
- set rbtvals {}
- foreach i $btvals {
- lappend rbtvals [reverse $i]
- }
- set rbtvals [lsort -increasing $rbtvals]
- set newbtvals {}
- foreach i $rbtvals {
- lappend newbtvals [reverse $i]
- }
- set btvals $newbtvals
-}
-
-# Check function for test093; keys and data are identical
-proc test093_check { key data } {
- global btvalsck
-
- error_check_good "key/data mismatch" $data [reverse $key]
- lappend btvalsck $key
-}
-
-# Check function for test093 big keys;
-proc test093_checkbig { key data } {
- source ./include.tcl
- global btvalsck
-
- set fid [open $data r]
- fconfigure $fid -translation binary
- set cont [read $fid]
- close $fid
- error_check_good "key/data mismatch" $key $data$cont
- lappend btvalsck $key
-}
-
diff --git a/bdb/test/test094.tcl b/bdb/test/test094.tcl
deleted file mode 100644
index 781052913f4..00000000000
--- a/bdb/test/test094.tcl
+++ /dev/null
@@ -1,251 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test094.tcl,v 11.16 2002/06/20 19:01:02 sue Exp $
-#
-# TEST test094
-# TEST Test using set_dup_compare.
-# TEST
-# TEST Use the first 10,000 entries from the dictionary.
-# TEST Insert each with self as key and data; retrieve each.
-# TEST After all are entered, retrieve all; compare output to original.
-# TEST Close file, reopen, do retrieve and re-verify.
-proc test094 { method {nentries 10000} {ndups 10} {tnum "94"} args} {
- source ./include.tcl
- global errorInfo
-
- set dbargs [convert_args $method $args]
- set omethod [convert_method $method]
-
- if { [is_btree $method] != 1 && [is_hash $method] != 1 } {
- puts "Test0$tnum: skipping for method $method."
- return
- }
-
- set txnenv 0
- set eindex [lsearch -exact $dbargs "-env"]
- # Create the database and open the dictionary
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum-a.db
- set env NULL
- } else {
- set testfile test0$tnum-a.db
- incr eindex
- set env [lindex $dbargs $eindex]
- set rpcenv [is_rpcenv $env]
- if { $rpcenv == 1 } {
- puts "Test0$tnum: skipping for RPC"
- return
- }
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append dbargs " -auto_commit "
- if { $nentries == 10000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- }
- set testdir [get_home $env]
- }
- puts "Test0$tnum: $method ($args) $nentries \
- with $ndups dups using dupcompare"
-
- cleanup $testdir $env
-
- set db [eval {berkdb_open_noerr -dupcompare test094_cmp \
- -dup -dupsort -create -mode 0644} $omethod $dbargs {$testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
- set t1 $testdir/t1
- set pflags ""
- set gflags ""
- set txn ""
- puts "\tTest0$tnum.a: $nentries put/get duplicates loop"
- # Here is the loop where we put and get each key/data pair
- set count 0
- set dlist {}
- for {set i 0} {$i < $ndups} {incr i} {
- set dlist [linsert $dlist 0 $i]
- }
- while { [gets $did str] != -1 && $count < $nentries } {
- set key $str
- for {set i 0} {$i < $ndups} {incr i} {
- set data $i:$str
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $omethod $data]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get [llength $ret] $ndups
- incr count
- }
- close $did
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest0$tnum.b: traverse checking duplicates before close"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- # Set up second testfile so truncate flag is not needed.
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test0$tnum-b.db
- set env NULL
- } else {
- set testfile test0$tnum-b.db
- set env [lindex $dbargs $eindex]
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- #
- # Test dupcompare with data items big enough to force offpage dups.
- #
- puts "\tTest0$tnum.c: big key put/get dup loop key=filename data=filecontents"
- set db [eval {berkdb_open -dupcompare test094_cmp -dup -dupsort \
- -create -mode 0644} $omethod $dbargs $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Here is the loop where we put and get each key/data pair
- set file_list [get_file_list 1]
- if { [llength $file_list] > $nentries } {
- set file_list [lrange $file_list 1 $nentries]
- }
-
- set count 0
- foreach f $file_list {
- set fid [open $f r]
- fconfigure $fid -translation binary
- set cont [read $fid]
- close $fid
-
- set key $f
- for {set i 0} {$i < $ndups} {incr i} {
- set data $i:$cont
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $omethod $data]}]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- }
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good get [llength $ret] $ndups
- incr count
- }
-
- puts "\tTest0$tnum.d: traverse checking duplicates before close"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dup_file_check $db $txn $t1 $dlist
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- set testdir [get_home $env]
- }
- error_check_good db_close [$db close] 0
-
- # Clean up the test directory, since there's currently
- # no way to specify a dup_compare function to berkdb dbverify
- # and without one it will fail.
- cleanup $testdir $env
-}
-
-# Simple dup comparison.
-proc test094_cmp { a b } {
- return [string compare $b $a]
-}
-
-# Check if each key appears exactly [llength dlist] times in the file with
-# the duplicate tags matching those that appear in dlist.
-proc test094_dup_big { db txn tmpfile dlist {extra 0}} {
- source ./include.tcl
-
- set outf [open $tmpfile w]
- # Now we will get each key from the DB and dump to outfile
- set c [eval {$db cursor} $txn]
- set lastkey ""
- set done 0
- while { $done != 1} {
- foreach did $dlist {
- set rec [$c get "-next"]
- if { [string length $rec] == 0 } {
- set done 1
- break
- }
- set key [lindex [lindex $rec 0] 0]
- set fulldata [lindex [lindex $rec 0] 1]
- set id [id_of $fulldata]
- set d [data_of $fulldata]
- if { [string compare $key $lastkey] != 0 && \
- $id != [lindex $dlist 0] } {
- set e [lindex $dlist 0]
- error "FAIL: \tKey \
- $key, expected dup id $e, got $id"
- }
- error_check_good dupget.data $d $key
- error_check_good dupget.id $id $did
- set lastkey $key
- }
- #
- # Some tests add an extra dup (like overflow entries)
- # Check id if it exists.
- if { $extra != 0} {
- set okey $key
- set rec [$c get "-next"]
- if { [string length $rec] != 0 } {
- set key [lindex [lindex $rec 0] 0]
- #
- # If this key has no extras, go back for
- # next iteration.
- if { [string compare $key $lastkey] != 0 } {
- set key $okey
- set rec [$c get "-prev"]
- } else {
- set fulldata [lindex [lindex $rec 0] 1]
- set id [id_of $fulldata]
- set d [data_of $fulldata]
- error_check_bad dupget.data1 $d $key
- error_check_good dupget.id1 $id $extra
- }
- }
- }
- if { $done != 1 } {
- puts $outf $key
- }
- }
- close $outf
- error_check_good curs_close [$c close] 0
-}
diff --git a/bdb/test/test095.tcl b/bdb/test/test095.tcl
deleted file mode 100644
index 5543f346b7e..00000000000
--- a/bdb/test/test095.tcl
+++ /dev/null
@@ -1,296 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test095.tcl,v 11.16 2002/08/08 15:38:12 bostic Exp $
-#
-# TEST test095
-# TEST Bulk get test. [#2934]
-proc test095 { method {nsets 1000} {noverflows 25} {tnum 95} args } {
- source ./include.tcl
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set basename $testdir/test0$tnum
- set env NULL
- # If we've our own env, no reason to swap--this isn't
- # an mpool test.
- set carg { -cachesize {0 25000000 0} }
- } else {
- set basename test0$tnum
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- puts "Skipping for environment with txns"
- return
- }
- set testdir [get_home $env]
- set carg {}
- }
- cleanup $testdir $env
-
- puts "Test0$tnum: $method ($args) Bulk get test"
-
- if { [is_record_based $method] == 1 || [is_rbtree $method] == 1 } {
- puts "Test0$tnum skipping for method $method"
- return
- }
-
- # We run the meat of the test twice: once with unsorted dups,
- # once with sorted dups.
- for { set dflag "-dup"; set sort "unsorted"; set diter 0 } \
- { $diter < 2 } \
- { set dflag "-dup -dupsort"; set sort "sorted"; incr diter } {
- set testfile $basename-$sort.db
- set did [open $dict]
-
- # Open and populate the database with $nsets sets of dups.
- # Each set contains as many dups as its number
- puts "\tTest0$tnum.a:\
- Creating database with $nsets sets of $sort dups."
- set dargs "$dflag $carg $args"
- set db [eval {berkdb_open -create} $omethod $dargs $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
- t95_populate $db $did $nsets 0
-
- # Run basic get tests.
- t95_gettest $db $tnum b [expr 8192] 1
- t95_gettest $db $tnum c [expr 10 * 8192] 0
-
- # Run cursor get tests.
- t95_cgettest $db $tnum d [expr 100] 1
- t95_cgettest $db $tnum e [expr 10 * 8192] 0
-
- # Run invalid flag combination tests
- # Sync and reopen test file so errors won't be sent to stderr
- error_check_good db_sync [$db sync] 0
- set noerrdb [eval berkdb_open_noerr $dargs $testfile]
- t95_flagtest $noerrdb $tnum f [expr 8192]
- t95_cflagtest $noerrdb $tnum g [expr 100]
- error_check_good noerrdb_close [$noerrdb close] 0
-
- # Set up for overflow tests
- set max [expr 4000 * $noverflows]
- puts "\tTest0$tnum.h: Growing\
- database with $noverflows overflow sets (max item size $max)"
- t95_populate $db $did $noverflows 4000
-
- # Run overflow get tests.
- t95_gettest $db $tnum i [expr 10 * 8192] 1
- t95_gettest $db $tnum j [expr $max * 2] 1
- t95_gettest $db $tnum k [expr $max * $noverflows * 2] 0
-
- # Run overflow cursor get tests.
- t95_cgettest $db $tnum l [expr 10 * 8192] 1
- t95_cgettest $db $tnum m [expr $max * 2] 0
-
- error_check_good db_close [$db close] 0
- close $did
- }
-}
-
-proc t95_gettest { db tnum letter bufsize expectfail } {
- t95_gettest_body $db $tnum $letter $bufsize $expectfail 0
-}
-proc t95_cgettest { db tnum letter bufsize expectfail } {
- t95_gettest_body $db $tnum $letter $bufsize $expectfail 1
-}
-proc t95_flagtest { db tnum letter bufsize } {
- t95_flagtest_body $db $tnum $letter $bufsize 0
-}
-proc t95_cflagtest { db tnum letter bufsize } {
- t95_flagtest_body $db $tnum $letter $bufsize 1
-}
-
-# Basic get test
-proc t95_gettest_body { db tnum letter bufsize expectfail usecursor } {
- global errorCode
-
- if { $usecursor == 0 } {
- set action "db get -multi"
- } else {
- set action "dbc get -multi -set/-next"
- }
- puts "\tTest0$tnum.$letter: $action with bufsize $bufsize"
-
- set allpassed TRUE
- set saved_err ""
-
- # Cursor for $usecursor.
- if { $usecursor != 0 } {
- set getcurs [$db cursor]
- error_check_good getcurs [is_valid_cursor $getcurs $db] TRUE
- }
-
- # Traverse DB with cursor; do get/c_get(DB_MULTIPLE) on each item.
- set dbc [$db cursor]
- error_check_good is_valid_dbc [is_valid_cursor $dbc $db] TRUE
- for { set dbt [$dbc get -first] } { [llength $dbt] != 0 } \
- { set dbt [$dbc get -nextnodup] } {
- set key [lindex [lindex $dbt 0] 0]
- set datum [lindex [lindex $dbt 0] 1]
-
- if { $usecursor == 0 } {
- set ret [catch {eval $db get -multi $bufsize $key} res]
- } else {
- set res {}
- for { set ret [catch {eval $getcurs get -multi $bufsize\
- -set $key} tres] } \
- { $ret == 0 && [llength $tres] != 0 } \
- { set ret [catch {eval $getcurs get -multi $bufsize\
- -nextdup} tres]} {
- eval lappend res $tres
- }
- }
-
- # If we expect a failure, be more tolerant if the above fails;
- # just make sure it's an ENOMEM, mark it, and move along.
- if { $expectfail != 0 && $ret != 0 } {
- error_check_good multi_failure_errcode \
- [is_substr $errorCode ENOMEM] 1
- set allpassed FALSE
- continue
- }
- error_check_good get_multi($key) $ret 0
- t95_verify $res FALSE
- }
-
- set ret [catch {eval $db get -multi $bufsize} res]
-
- if { $expectfail == 1 } {
- error_check_good allpassed $allpassed FALSE
- puts "\t\tTest0$tnum.$letter:\
- returned at least one ENOMEM (as expected)"
- } else {
- error_check_good allpassed $allpassed TRUE
- puts "\t\tTest0$tnum.$letter: succeeded (as expected)"
- }
-
- error_check_good dbc_close [$dbc close] 0
- if { $usecursor != 0 } {
- error_check_good getcurs_close [$getcurs close] 0
- }
-}
-
-# Test of invalid flag combinations for -multi
-proc t95_flagtest_body { db tnum letter bufsize usecursor } {
- global errorCode
-
- if { $usecursor == 0 } {
- set action "db get -multi "
- } else {
- set action "dbc get -multi "
- }
- puts "\tTest0$tnum.$letter: $action with invalid flag combinations"
-
- # Cursor for $usecursor.
- if { $usecursor != 0 } {
- set getcurs [$db cursor]
- error_check_good getcurs [is_valid_cursor $getcurs $db] TRUE
- }
-
- if { $usecursor == 0 } {
- # Disallowed flags for basic -multi get
- set badflags [list consume consume_wait {rmw some_key}]
-
- foreach flag $badflags {
- catch {eval $db get -multi $bufsize -$flag} ret
- error_check_good \
- db:get:multi:$flag [is_substr $errorCode EINVAL] 1
- }
- } else {
- # Disallowed flags for cursor -multi get
- set cbadflags [list last get_recno join_item \
- {multi_key 1000} prev prevnodup]
-
- set dbc [$db cursor]
- $dbc get -first
- foreach flag $cbadflags {
- catch {eval $dbc get -multi $bufsize -$flag} ret
- error_check_good dbc:get:multi:$flag \
- [is_substr $errorCode EINVAL] 1
- }
- error_check_good dbc_close [$dbc close] 0
- }
- if { $usecursor != 0 } {
- error_check_good getcurs_close [$getcurs close] 0
- }
- puts "\t\tTest0$tnum.$letter completed"
-}
-
-# Verify that a passed-in list of key/data pairs all match the predicted
-# structure (e.g. {{thing1 thing1.0}}, {{key2 key2.0} {key2 key2.1}}).
-proc t95_verify { res multiple_keys } {
- global alphabet
-
- set i 0
-
- set orig_key [lindex [lindex $res 0] 0]
- set nkeys [string trim $orig_key $alphabet']
- set base_key [string trim $orig_key 0123456789]
- set datum_count 0
-
- while { 1 } {
- set key [lindex [lindex $res $i] 0]
- set datum [lindex [lindex $res $i] 1]
-
- if { $datum_count >= $nkeys } {
- if { [llength $key] != 0 } {
- # If there are keys beyond $nkeys, we'd
- # better have multiple_keys set.
- error_check_bad "keys beyond number $i allowed"\
- $multiple_keys FALSE
-
- # If multiple_keys is set, accept the new key.
- set orig_key $key
- set nkeys [eval string trim \
- $orig_key {$alphabet'}]
- set base_key [eval string trim \
- $orig_key 0123456789]
- set datum_count 0
- } else {
- # datum_count has hit nkeys. We're done.
- return
- }
- }
-
- error_check_good returned_key($i) $key $orig_key
- error_check_good returned_datum($i) \
- $datum $base_key.[format %4u $datum_count]
- incr datum_count
- incr i
- }
-}
-
-# Add nsets dup sets, each consisting of {word$ndups word$n} pairs,
-# with "word" having (i * pad_bytes) bytes extra padding.
-proc t95_populate { db did nsets pad_bytes } {
- set txn ""
- for { set i 1 } { $i <= $nsets } { incr i } {
- # basekey is a padded dictionary word
- gets $did basekey
-
- append basekey [repeat "a" [expr $pad_bytes * $i]]
-
- # key is basekey with the number of dups stuck on.
- set key $basekey$i
-
- for { set j 0 } { $j < $i } { incr j } {
- set data $basekey.[format %4u $j]
- error_check_good db_put($key,$data) \
- [eval {$db put} $txn {$key $data}] 0
- }
- }
-
- # This will make debugging easier, and since the database is
- # read-only from here out, it's cheap.
- error_check_good db_sync [$db sync] 0
-}
diff --git a/bdb/test/test096.tcl b/bdb/test/test096.tcl
deleted file mode 100644
index 042df19eac7..00000000000
--- a/bdb/test/test096.tcl
+++ /dev/null
@@ -1,202 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test096.tcl,v 11.19 2002/08/19 20:09:29 margo Exp $
-#
-# TEST test096
-# TEST Db->truncate test.
-proc test096 { method {pagesize 512} {nentries 50} {ndups 4} args} {
- global fixed_len
- source ./include.tcl
-
- set orig_fixed_len $fixed_len
- set args [convert_args $method $args]
- set encargs ""
- set args [split_encargs $args encargs]
- set omethod [convert_method $method]
-
- puts "Test096: $method db truncate method test"
- if { [is_record_based $method] == 1 || \
- [is_rbtree $method] == 1 } {
- puts "Test096 skipping for method $method"
- return
- }
- set pgindex [lsearch -exact $args "-pagesize"]
- if { $pgindex != -1 } {
- puts "Test096: Skipping for specific pagesizes"
- return
- }
-
- # Create the database and open the dictionary
- set eindex [lsearch -exact $args "-env"]
- set testfile test096.db
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 0 } {
- puts "Environment w/o txns specified; skipping."
- return
- }
- if { $nentries == 1000 } {
- set nentries 100
- }
- reduce_dups nentries ndups
- set testdir [get_home $env]
- set closeenv 0
- } else {
- env_cleanup $testdir
-
- #
- # We need an env for exclusive-use testing.
- set env [eval {berkdb_env -create -home $testdir -txn} $encargs]
- error_check_good env_create [is_valid_env $env] TRUE
- set closeenv 1
- }
-
- set t1 $testdir/t1
-
- puts "\tTest096.a: Create $nentries entries"
- set db [eval {berkdb_open -create -auto_commit \
- -env $env $omethod -mode 0644} $args $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
-
- set did [open $dict]
- set count 0
- set txn ""
- set pflags ""
- set gflags ""
- while { [gets $did str] != -1 && $count < $nentries } {
- set key $str
- set datastr [reverse $str]
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $datastr]}]
- error_check_good put $ret 0
- error_check_good txn [$t commit] 0
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_good $key:dbget [llength $ret] 1
-
- incr count
- }
- close $did
-
- puts "\tTest096.b: Truncate database"
- error_check_good dbclose [$db close] 0
- set dbtr [eval {berkdb_open -create -auto_commit \
- -env $env $omethod -mode 0644} $args $testfile]
- error_check_good db_open [is_valid_db $dbtr] TRUE
-
- set ret [$dbtr truncate -auto_commit]
- error_check_good dbtrunc $ret $nentries
- error_check_good db_close [$dbtr close] 0
-
- set db [eval {berkdb_open -env $env} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set ret [$db get -glob *]
- error_check_good dbget [llength $ret] 0
- error_check_good dbclose [$db close] 0
- error_check_good dbverify [verify_dir $testdir "\tTest096.c: "] 0
-
- #
- # Remove database, and create a new one with dups.
- #
- puts "\tTest096.d: Create $nentries entries with $ndups duplicates"
- set ret [berkdb dbremove -env $env -auto_commit $testfile]
- set db [eval {berkdb_open -pagesize $pagesize -dup -auto_commit \
- -create -env $env $omethod -mode 0644} $args $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
- set did [open $dict]
- set count 0
- set txn ""
- set pflags ""
- set gflags ""
- while { [gets $did str] != -1 && $count < $nentries } {
- set key $str
- for { set i 1 } { $i <= $ndups } { incr i } {
- set datastr $i:$str
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- set ret [eval {$db put} \
- $txn $pflags {$key [chop_data $method $datastr]}]
- error_check_good put $ret 0
- error_check_good txn [$t commit] 0
- }
-
- set ret [eval {$db get} $gflags {$key}]
- error_check_bad $key:dbget_dups [llength $ret] 0
- error_check_good $key:dbget_dups1 [llength $ret] $ndups
-
- incr count
- }
- close $did
- set dlist ""
- for { set i 1 } {$i <= $ndups} {incr i} {
- lappend dlist $i
- }
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- dup_check $db $txn $t1 $dlist
- error_check_good txn [$t commit] 0
- puts "\tTest096.e: Verify off page duplicates status"
- set stat [$db stat]
- error_check_bad stat:offpage [is_substr $stat \
- "{{Duplicate pages} 0}"] 1
-
- set recs [expr $ndups * $count]
- error_check_good dbclose [$db close] 0
-
- puts "\tTest096.f: Truncate database in a txn then abort"
- set txn [$env txn]
-
- set dbtr [eval {berkdb_open -auto_commit -create \
- -env $env $omethod -mode 0644} $args $testfile]
- error_check_good db_open [is_valid_db $dbtr] TRUE
- error_check_good txnbegin [is_valid_txn $txn $env] TRUE
-
- set ret [$dbtr truncate -txn $txn]
- error_check_good dbtrunc $ret $recs
-
- error_check_good txnabort [$txn abort] 0
- error_check_good db_close [$dbtr close] 0
-
- set db [eval {berkdb_open -auto_commit -env $env} $args $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set ret [$db get -glob *]
- error_check_good dbget [llength $ret] $recs
- error_check_good dbclose [$db close] 0
-
- puts "\tTest096.g: Truncate database in a txn then commit"
- set txn [$env txn]
- error_check_good txnbegin [is_valid_txn $txn $env] TRUE
-
- set dbtr [eval {berkdb_open -auto_commit -create \
- -env $env $omethod -mode 0644} $args $testfile]
- error_check_good db_open [is_valid_db $dbtr] TRUE
-
- set ret [$dbtr truncate -txn $txn]
- error_check_good dbtrunc $ret $recs
-
- error_check_good txncommit [$txn commit] 0
- error_check_good db_close [$dbtr close] 0
-
- set db [berkdb_open -auto_commit -env $env $testfile]
- error_check_good dbopen [is_valid_db $db] TRUE
- set ret [$db get -glob *]
- error_check_good dbget [llength $ret] 0
- error_check_good dbclose [$db close] 0
-
- set testdir [get_home $env]
- error_check_good dbverify [verify_dir $testdir "\tTest096.h: "] 0
-
- if { $closeenv == 1 } {
- error_check_good envclose [$env close] 0
- }
-}
diff --git a/bdb/test/test097.tcl b/bdb/test/test097.tcl
deleted file mode 100644
index 6e43b820b2f..00000000000
--- a/bdb/test/test097.tcl
+++ /dev/null
@@ -1,188 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test097.tcl,v 11.8 2002/09/04 18:47:42 sue Exp $
-#
-# TEST test097
-# TEST Open up a large set of database files simultaneously.
-# TEST Adjust for local file descriptor resource limits.
-# TEST Then use the first 1000 entries from the dictionary.
-# TEST Insert each with self as key and a fixed, medium length data string;
-# TEST retrieve each. After all are entered, retrieve all; compare output
-# TEST to original.
-
-proc test097 { method {ndbs 500} {nentries 400} args } {
- global pad_datastr
- source ./include.tcl
-
- set largs [convert_args $method $args]
- set encargs ""
- set largs [split_encargs $largs encargs]
-
- # Open an environment, with a 1MB cache.
- set eindex [lsearch -exact $largs "-env"]
- if { $eindex != -1 } {
- incr eindex
- set env [lindex $largs $eindex]
- puts "Test097: $method: skipping for env $env"
- return
- }
- env_cleanup $testdir
- set env [eval {berkdb_env -create \
- -cachesize { 0 1048576 1 } -txn} -home $testdir $encargs]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- # Create the database and open the dictionary
- set testfile test097.db
- set t1 $testdir/t1
- set t2 $testdir/t2
- set t3 $testdir/t3
- #
- # When running with HAVE_MUTEX_SYSTEM_RESOURCES,
- # we can run out of mutex lock slots due to the nature of this test.
- # So, for this test, increase the number of pages per extent
- # to consume fewer resources.
- #
- if { [is_queueext $method] } {
- set numdb [expr $ndbs / 4]
- set eindex [lsearch -exact $largs "-extent"]
- error_check_bad extent $eindex -1
- incr eindex
- set extval [lindex $largs $eindex]
- set extval [expr $extval * 4]
- set largs [lreplace $largs $eindex $eindex $extval]
- }
- puts -nonewline "Test097: $method ($largs) "
- puts "$nentries entries in at most $ndbs simultaneous databases"
-
- puts "\tTest097.a: Simultaneous open"
- set numdb [test097_open tdb $ndbs $method $env $testfile $largs]
- if { $numdb == 0 } {
- puts "\tTest097: Insufficient resources available -- skipping."
- error_check_good envclose [$env close] 0
- return
- }
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 0
-
- # Here is the loop where we put and get each key/data pair
- if { [is_record_based $method] == 1 } {
- append gflags "-recno"
- }
- puts "\tTest097.b: put/get on $numdb databases"
- set datastr "abcdefghij"
- set pad_datastr [pad_data $method $datastr]
- while { [gets $did str] != -1 && $count < $nentries } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } else {
- set key $str
- }
- for { set i 1 } { $i <= $numdb } { incr i } {
- set ret [eval {$tdb($i) put} $txn $pflags \
- {$key [chop_data $method $datastr]}]
- error_check_good put $ret 0
- set ret [eval {$tdb($i) get} $gflags {$key}]
- error_check_good get $ret [list [list $key \
- [pad_data $method $datastr]]]
- }
- incr count
- }
- close $did
-
- # Now we will get each key from the DB and compare the results
- # to the original.
- puts "\tTest097.c: dump and check files"
- for { set j 1 } { $j <= $numdb } { incr j } {
- dump_file $tdb($j) $txn $t1 test097.check
- error_check_good db_close [$tdb($j) close] 0
-
- # Now compare the keys to see if they match the dictionary
- if { [is_record_based $method] == 1 } {
- set oid [open $t2 w]
- for {set i 1} {$i <= $nentries} {set i [incr i]} {
- puts $oid $i
- }
- close $oid
- filesort $t2 $t3
- file rename -force $t3 $t2
- } else {
- set q q
- filehead $nentries $dict $t3
- filesort $t3 $t2
- }
- filesort $t1 $t3
-
- error_check_good Test097:diff($t3,$t2) [filecmp $t3 $t2] 0
- }
- error_check_good envclose [$env close] 0
-}
-
-# Check function for test097; data should be fixed are identical
-proc test097.check { key data } {
- global pad_datastr
- error_check_good "data mismatch for key $key" $data $pad_datastr
-}
-
-proc test097_open { tdb ndbs method env testfile largs } {
- global errorCode
- upvar $tdb db
-
- set j 0
- set numdb $ndbs
- if { [is_queueext $method] } {
- set numdb [expr $ndbs / 4]
- }
- set omethod [convert_method $method]
- for { set i 1 } {$i <= $numdb } { incr i } {
- set stat [catch {eval {berkdb_open -env $env \
- -pagesize 512 -create -mode 0644} \
- $largs {$omethod $testfile.$i}} db($i)]
- #
- # Check if we've reached our limit
- #
- if { $stat == 1 } {
- set min 20
- set em [is_substr $errorCode EMFILE]
- set en [is_substr $errorCode ENFILE]
- error_check_good open_ret [expr $em || $en] 1
- puts \
- "\tTest097.a.1 Encountered resource limits opening $i files, adjusting"
- if { [is_queueext $method] } {
- set end [expr $j / 4]
- set min 10
- } else {
- set end [expr $j - 10]
- }
- #
- # If we cannot open even $min files, then this test is
- # not very useful. Close up shop and go back.
- #
- if { $end < $min } {
- test097_close db 1 $j
- return 0
- }
- test097_close db [expr $end + 1] $j
- return $end
- } else {
- error_check_good dbopen [is_valid_db $db($i)] TRUE
- set j $i
- }
- }
- return $j
-}
-
-proc test097_close { tdb start end } {
- upvar $tdb db
-
- for { set i $start } { $i <= $end } { incr i } {
- error_check_good db($i)close [$db($i) close] 0
- }
-}
diff --git a/bdb/test/test098.tcl b/bdb/test/test098.tcl
deleted file mode 100644
index 320e0258a84..00000000000
--- a/bdb/test/test098.tcl
+++ /dev/null
@@ -1,91 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test098.tcl,v 1.5 2002/07/11 20:38:36 sandstro Exp $
-#
-# TEST test098
-# TEST Test of DB_GET_RECNO and secondary indices. Open a primary and
-# TEST a secondary, and do a normal cursor get followed by a get_recno.
-# TEST (This is a smoke test for "Bug #1" in [#5811].)
-
-proc test098 { method args } {
- source ./include.tcl
-
- set omethod [convert_method $method]
- set args [convert_args $method $args]
-
- puts "Test098: $omethod ($args): DB_GET_RECNO and secondary indices."
-
- if { [is_rbtree $method] != 1 } {
- puts "\tTest098: Skipping for method $method."
- return
- }
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- set txn ""
- set auto ""
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set base $testdir/test098
- set env NULL
- } else {
- set base test098
- incr eindex
- set env [lindex $args $eindex]
- set rpcenv [is_rpcenv $env]
- if { $rpcenv == 1 } {
- puts "Test098: Skipping for RPC"
- return
- }
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- set auto " -auto_commit "
- }
- set testdir [get_home $env]
- }
- cleanup $testdir $env
-
- puts "\tTest098.a: Set up databases."
-
- set adb [eval {berkdb_open} $omethod $args $auto \
- {-create} $base-primary.db]
- error_check_good adb_create [is_valid_db $adb] TRUE
-
- set bdb [eval {berkdb_open} $omethod $args $auto \
- {-create} $base-secondary.db]
- error_check_good bdb_create [is_valid_db $bdb] TRUE
-
- set ret [eval $adb associate $auto [callback_n 0] $bdb]
- error_check_good associate $ret 0
-
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set ret [eval {$adb put} $txn aaa data1]
- error_check_good put $ret 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
-
- set bc [$bdb cursor]
- error_check_good cursor [is_valid_cursor $bc $bdb] TRUE
-
- puts "\tTest098.b: c_get(DB_FIRST) on the secondary."
- error_check_good get_first [$bc get -first] \
- [list [list [[callback_n 0] aaa data1] data1]]
-
- puts "\tTest098.c: c_get(DB_GET_RECNO) on the secondary."
- error_check_good get_recno [$bc get -get_recno] 1
-
- error_check_good c_close [$bc close] 0
-
- error_check_good bdb_close [$bdb close] 0
- error_check_good adb_close [$adb close] 0
-}
diff --git a/bdb/test/test099.tcl b/bdb/test/test099.tcl
deleted file mode 100644
index db177ce5fff..00000000000
--- a/bdb/test/test099.tcl
+++ /dev/null
@@ -1,177 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test099.tcl,v 1.2 2002/08/08 15:38:13 bostic Exp $
-#
-# TEST test099
-# TEST
-# TEST Test of DB->get and DBC->c_get with set_recno and get_recno.
-# TEST
-# TEST Populate a small btree -recnum database.
-# TEST After all are entered, retrieve each using -recno with DB->get.
-# TEST Open a cursor and do the same for DBC->c_get with set_recno.
-# TEST Verify that set_recno sets the record number position properly.
-# TEST Verify that get_recno returns the correct record numbers.
-proc test099 { method {nentries 10000} args } {
- source ./include.tcl
-
- set args [convert_args $method $args]
- set omethod [convert_method $method]
-
- puts "Test099: Test of set_recno and get_recno in DBC->c_get."
- if { [is_rbtree $method] != 1 } {
- puts "Test099: skipping for method $method."
- return
- }
-
- set txnenv 0
- set eindex [lsearch -exact $args "-env"]
- #
- # If we are using an env, then testfile should just be the db name.
- # Otherwise it is the test directory and the name.
- if { $eindex == -1 } {
- set testfile $testdir/test099.db
- set env NULL
- } else {
- set testfile test099.db
- incr eindex
- set env [lindex $args $eindex]
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append args " -auto_commit "
- #
- # If we are using txns and running with the
- # default, set the default down a bit.
- #
- if { $nentries == 10000 } {
- set nentries 100
- }
- }
- set testdir [get_home $env]
- }
- set t1 $testdir/t1
- cleanup $testdir $env
-
- # Create the database and open the dictionary
- set db [eval {berkdb_open \
- -create -mode 0644} $args {$omethod $testfile}]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- set did [open $dict]
-
- set pflags ""
- set gflags ""
- set txn ""
- set count 1
-
- append gflags " -recno"
-
- puts "\tTest099.a: put loop"
- # Here is the loop where we put each key/data pair
- while { [gets $did str] != -1 && $count < $nentries } {
-# global kvals
-# set key [expr $count]
-# set kvals($key) [pad_data $method $str]
- set key $str
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set r [eval {$db put} \
- $txn $pflags {$key [chop_data $method $str]}]
- error_check_good db_put $r 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- incr count
- }
- close $did
-
- puts "\tTest099.b: dump file"
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- dump_file $db $txn $t1 test099.check
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-
- puts "\tTest099.c: Test set_recno then get_recno"
- set db [eval {berkdb_open -rdonly} $args $omethod $testfile ]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Open a cursor
- if { $txnenv == 1 } {
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- set dbc [eval {$db cursor} $txn]
- error_check_good db_cursor [is_substr $dbc $db] 1
-
- set did [open $t1]
- set recno 1
-
- # Create key(recno) array to use for later comparison
- while { [gets $did str] != -1 } {
- set kvals($recno) $str
- incr recno
- }
-
- set recno 1
- set ret [$dbc get -first]
- error_check_bad dbc_get_first [llength $ret] 0
-
- # First walk forward through the database ....
- while { $recno < $count } {
- # Test set_recno: verify it sets the record number properly.
- set current [$dbc get -current]
- set r [$dbc get -set_recno $recno]
- error_check_good set_recno $current $r
- # Test set_recno: verify that we find the expected key
- # at the current record number position.
- set k [lindex [lindex $r 0] 0]
- error_check_good set_recno $kvals($recno) $k
-
- # Test get_recno: verify that the return from
- # get_recno matches the record number just set.
- set g [$dbc get -get_recno]
- error_check_good get_recno $recno $g
- set ret [$dbc get -next]
- incr recno
- }
-
- # ... and then backward.
- set recno [expr $count - 1]
- while { $recno > 0 } {
- # Test set_recno: verify that we find the expected key
- # at the current record number position.
- set r [$dbc get -set_recno $recno]
- set k [lindex [lindex $r 0] 0]
- error_check_good set_recno $kvals($recno) $k
-
- # Test get_recno: verify that the return from
- # get_recno matches the record number just set.
- set g [$dbc get -get_recno]
- error_check_good get_recno $recno $g
- set recno [expr $recno - 1]
- }
-
- error_check_good cursor_close [$dbc close] 0
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
- close $did
-}
-
-# Check function for dumped file; data should be fixed are identical
-proc test099.check { key data } {
- error_check_good "data mismatch for key $key" $key $data
-}
diff --git a/bdb/test/test100.tcl b/bdb/test/test100.tcl
deleted file mode 100644
index f80b2e526dd..00000000000
--- a/bdb/test/test100.tcl
+++ /dev/null
@@ -1,17 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test100.tcl,v 11.1 2002/08/15 20:55:20 sandstro Exp $
-#
-# TEST test100
-# TEST Test for functionality near the end of the queue
-# TEST using test025 (DB_APPEND).
-proc test100 { method {nentries 10000} {txn -txn} {tnum "100"} args} {
- if { [is_queueext $method ] == 0 } {
- puts "Skipping test0$tnum for $method."
- return;
- }
- eval {test025 $method $nentries 4294967000 $tnum} $args
-}
diff --git a/bdb/test/test101.tcl b/bdb/test/test101.tcl
deleted file mode 100644
index 7e5c8fc30fc..00000000000
--- a/bdb/test/test101.tcl
+++ /dev/null
@@ -1,17 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: test101.tcl,v 11.1 2002/08/15 20:55:20 sandstro Exp $
-#
-# TEST test101
-# TEST Test for functionality near the end of the queue
-# TEST using test070 (DB_CONSUME).
-proc test101 { method {nentries 10000} {txn -txn} {tnum "101"} args} {
- if { [is_queueext $method ] == 0 } {
- puts "Skipping test0$tnum for $method."
- return;
- }
- eval {test070 $method 4 2 1000 WAIT 4294967000 $txn $tnum} $args
-}
diff --git a/bdb/test/testparams.tcl b/bdb/test/testparams.tcl
deleted file mode 100644
index 6628db532d7..00000000000
--- a/bdb/test/testparams.tcl
+++ /dev/null
@@ -1,194 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: testparams.tcl,v 11.117 2002/09/05 02:30:00 margo Exp $
-
-set subs {bigfile dead env lock log memp mutex recd rep rpc rsrc \
- sdb sdbtest sec si test txn}
-
-set num_test(bigfile) 2
-set num_test(dead) 7
-set num_test(env) 11
-set num_test(lock) 5
-set num_test(log) 5
-set num_test(memp) 3
-set num_test(mutex) 3
-set num_test(recd) 20
-set num_test(rep) 5
-set num_test(rpc) 5
-set num_test(rsrc) 4
-set num_test(sdb) 12
-set num_test(sdbtest) 2
-set num_test(sec) 2
-set num_test(si) 6
-set num_test(test) 101
-set num_test(txn) 9
-
-set parms(recd001) 0
-set parms(recd002) 0
-set parms(recd003) 0
-set parms(recd004) 0
-set parms(recd005) ""
-set parms(recd006) 0
-set parms(recd007) ""
-set parms(recd008) {4 4}
-set parms(recd009) 0
-set parms(recd010) 0
-set parms(recd011) {200 15 1}
-set parms(recd012) {0 49 25 100 5}
-set parms(recd013) 100
-set parms(recd014) ""
-set parms(recd015) ""
-set parms(recd016) ""
-set parms(recd017) 0
-set parms(recd018) 10
-set parms(recd019) 50
-set parms(recd020) ""
-set parms(subdb001) ""
-set parms(subdb002) 10000
-set parms(subdb003) 1000
-set parms(subdb004) ""
-set parms(subdb005) 100
-set parms(subdb006) 100
-set parms(subdb007) ""
-set parms(subdb008) ""
-set parms(subdb009) ""
-set parms(subdb010) ""
-set parms(subdb011) {13 10}
-set parms(subdb012) ""
-set parms(test001) {10000 0 "01" 0}
-set parms(test002) 10000
-set parms(test003) ""
-set parms(test004) {10000 4 0}
-set parms(test005) 10000
-set parms(test006) {10000 0 6}
-set parms(test007) {10000 7}
-set parms(test008) {8 0}
-set parms(test009) ""
-set parms(test010) {10000 5 10}
-set parms(test011) {10000 5 11}
-set parms(test012) ""
-set parms(test013) 10000
-set parms(test014) 10000
-set parms(test015) {7500 0}
-set parms(test016) 10000
-set parms(test017) {0 19 17}
-set parms(test018) 10000
-set parms(test019) 10000
-set parms(test020) 10000
-set parms(test021) 10000
-set parms(test022) ""
-set parms(test023) ""
-set parms(test024) 10000
-set parms(test025) {10000 0 25}
-set parms(test026) {2000 5 26}
-set parms(test027) {100}
-set parms(test028) ""
-set parms(test029) 10000
-set parms(test030) 10000
-set parms(test031) {10000 5 31}
-set parms(test032) {10000 5 32}
-set parms(test033) {10000 5 33}
-set parms(test034) 10000
-set parms(test035) 10000
-set parms(test036) 10000
-set parms(test037) 100
-set parms(test038) {10000 5 38}
-set parms(test039) {10000 5 39}
-set parms(test040) 10000
-set parms(test041) 10000
-set parms(test042) 1000
-set parms(test043) 10000
-set parms(test044) {5 10 0}
-set parms(test045) 1000
-set parms(test046) ""
-set parms(test047) ""
-set parms(test048) ""
-set parms(test049) ""
-set parms(test050) ""
-set parms(test051) ""
-set parms(test052) ""
-set parms(test053) ""
-set parms(test054) ""
-set parms(test055) ""
-set parms(test056) ""
-set parms(test057) ""
-set parms(test058) ""
-set parms(test059) ""
-set parms(test060) ""
-set parms(test061) ""
-set parms(test062) {200 200 62}
-set parms(test063) ""
-set parms(test064) ""
-set parms(test065) ""
-set parms(test066) ""
-set parms(test067) {1000 67}
-set parms(test068) ""
-set parms(test069) {50 69}
-set parms(test070) {4 2 1000 CONSUME 0 -txn 70}
-set parms(test071) {1 1 10000 CONSUME 0 -txn 71}
-set parms(test072) {512 20 72}
-set parms(test073) {512 50 73}
-set parms(test074) {-nextnodup 100 74}
-set parms(test075) {75}
-set parms(test076) {1000 76}
-set parms(test077) {1000 512 77}
-set parms(test078) {100 512 78}
-set parms(test079) {10000 512 79}
-set parms(test080) {80}
-set parms(test081) {13 81}
-set parms(test082) {-prevnodup 100 82}
-set parms(test083) {512 5000 2}
-set parms(test084) {10000 84 65536}
-set parms(test085) {512 3 10 85}
-set parms(test086) ""
-set parms(test087) {512 50 87}
-set parms(test088) ""
-set parms(test089) 1000
-set parms(test090) {10000 -txn 90}
-set parms(test091) {4 2 1000 0 91}
-set parms(test092) {1000}
-set parms(test093) {10000 93}
-set parms(test094) {10000 10 94}
-set parms(test095) {1000 25 95}
-set parms(test096) {512 1000 19}
-set parms(test097) {500 400}
-set parms(test098) ""
-set parms(test099) 10000
-set parms(test100) {10000 -txn 100}
-set parms(test101) {10000 -txn 101}
-
-# RPC server executables. Each of these is tested (if it exists)
-# when running the RPC tests.
-set svc_list { berkeley_db_svc berkeley_db_cxxsvc \
- berkeley_db_javasvc }
-set rpc_svc berkeley_db_svc
-
-# Shell script tests. Each list entry is a {directory filename} pair,
-# invoked with "/bin/sh filename".
-set shelltest_list {
- { scr001 chk.code }
- { scr002 chk.def }
- { scr003 chk.define }
- { scr004 chk.javafiles }
- { scr005 chk.nl }
- { scr006 chk.offt }
- { scr007 chk.proto }
- { scr008 chk.pubdef }
- { scr009 chk.srcfiles }
- { scr010 chk.str }
- { scr011 chk.tags }
- { scr012 chk.vx_code }
- { scr013 chk.stats }
- { scr014 chk.err }
- { scr015 chk.cxxtests }
- { scr016 chk.javatests }
- { scr017 chk.db185 }
- { scr018 chk.comma }
- { scr019 chk.include }
- { scr020 chk.inc }
- { scr021 chk.flags }
- { scr022 chk.rr }
-}
diff --git a/bdb/test/testutils.tcl b/bdb/test/testutils.tcl
deleted file mode 100644
index d1f89dd1e15..00000000000
--- a/bdb/test/testutils.tcl
+++ /dev/null
@@ -1,3209 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: testutils.tcl,v 11.165 2002/09/05 17:54:04 sandstro Exp $
-#
-# Test system utilities
-#
-# Timestamp -- print time along with elapsed time since last invocation
-# of timestamp.
-proc timestamp {{opt ""}} {
- global __timestamp_start
-
- set now [clock seconds]
-
- # -c accurate to the click, instead of the second.
- # -r seconds since the Epoch
- # -t current time in the format expected by db_recover -t.
- # -w wallclock time
- # else wallclock plus elapsed time.
- if {[string compare $opt "-r"] == 0} {
- return $now
- } elseif {[string compare $opt "-t"] == 0} {
- return [clock format $now -format "%y%m%d%H%M.%S"]
- } elseif {[string compare $opt "-w"] == 0} {
- return [clock format $now -format "%c"]
- } else {
- if {[string compare $opt "-c"] == 0} {
- set printclicks 1
- } else {
- set printclicks 0
- }
-
- if {[catch {set start $__timestamp_start}] != 0} {
- set __timestamp_start $now
- }
- set start $__timestamp_start
-
- set elapsed [expr $now - $start]
- set the_time [clock format $now -format ""]
- set __timestamp_start $now
-
- if { $printclicks == 1 } {
- set pc_print [format ".%08u" [__fix_num [clock clicks]]]
- } else {
- set pc_print ""
- }
-
- format "%02d:%02d:%02d$pc_print (%02d:%02d:%02d)" \
- [__fix_num [clock format $now -format "%H"]] \
- [__fix_num [clock format $now -format "%M"]] \
- [__fix_num [clock format $now -format "%S"]] \
- [expr $elapsed / 3600] \
- [expr ($elapsed % 3600) / 60] \
- [expr ($elapsed % 3600) % 60]
- }
-}
-
-proc __fix_num { num } {
- set num [string trimleft $num "0"]
- if {[string length $num] == 0} {
- set num "0"
- }
- return $num
-}
-
-# Add a {key,data} pair to the specified database where
-# key=filename and data=file contents.
-proc put_file { db txn flags file } {
- source ./include.tcl
-
- set fid [open $file r]
- fconfigure $fid -translation binary
- set data [read $fid]
- close $fid
-
- set ret [eval {$db put} $txn $flags {$file $data}]
- error_check_good put_file $ret 0
-}
-
-# Get a {key,data} pair from the specified database where
-# key=filename and data=file contents and then write the
-# data to the specified file.
-proc get_file { db txn flags file outfile } {
- source ./include.tcl
-
- set fid [open $outfile w]
- fconfigure $fid -translation binary
- if [catch {eval {$db get} $txn $flags {$file}} data] {
- puts -nonewline $fid $data
- } else {
- # Data looks like {{key data}}
- set data [lindex [lindex $data 0] 1]
- puts -nonewline $fid $data
- }
- close $fid
-}
-
-# Add a {key,data} pair to the specified database where
-# key=file contents and data=file name.
-proc put_file_as_key { db txn flags file } {
- source ./include.tcl
-
- set fid [open $file r]
- fconfigure $fid -translation binary
- set filecont [read $fid]
- close $fid
-
- # Use not the file contents, but the file name concatenated
- # before the file contents, as a key, to ensure uniqueness.
- set data $file$filecont
-
- set ret [eval {$db put} $txn $flags {$data $file}]
- error_check_good put_file $ret 0
-}
-
-# Get a {key,data} pair from the specified database where
-# key=file contents and data=file name
-proc get_file_as_key { db txn flags file} {
- source ./include.tcl
-
- set fid [open $file r]
- fconfigure $fid -translation binary
- set filecont [read $fid]
- close $fid
-
- set data $file$filecont
-
- return [eval {$db get} $txn $flags {$data}]
-}
-
-# open file and call dump_file to dumpkeys to tempfile
-proc open_and_dump_file {
- dbname env outfile checkfunc dump_func beg cont } {
- global encrypt
- global passwd
- source ./include.tcl
-
- set encarg ""
- if { $encrypt > 0 && $env == "NULL" } {
- set encarg "-encryptany $passwd"
- }
- set envarg ""
- set txn ""
- set txnenv 0
- if { $env != "NULL" } {
- append envarg " -env $env "
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append envarg " -auto_commit "
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- }
- set db [eval {berkdb open} $envarg -rdonly -unknown $encarg $dbname]
- error_check_good dbopen [is_valid_db $db] TRUE
- $dump_func $db $txn $outfile $checkfunc $beg $cont
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
-
-# open file and call dump_file to dumpkeys to tempfile
-proc open_and_dump_subfile {
- dbname env outfile checkfunc dump_func beg cont subdb} {
- global encrypt
- global passwd
- source ./include.tcl
-
- set encarg ""
- if { $encrypt > 0 && $env == "NULL" } {
- set encarg "-encryptany $passwd"
- }
- set envarg ""
- set txn ""
- set txnenv 0
- if { $env != "NULL" } {
- append envarg "-env $env"
- set txnenv [is_txnenv $env]
- if { $txnenv == 1 } {
- append envarg " -auto_commit "
- set t [$env txn]
- error_check_good txn [is_valid_txn $t $env] TRUE
- set txn "-txn $t"
- }
- }
- set db [eval {berkdb open -rdonly -unknown} \
- $envarg $encarg {$dbname $subdb}]
- error_check_good dbopen [is_valid_db $db] TRUE
- $dump_func $db $txn $outfile $checkfunc $beg $cont
- if { $txnenv == 1 } {
- error_check_good txn [$t commit] 0
- }
- error_check_good db_close [$db close] 0
-}
-
-# Sequentially read a file and call checkfunc on each key/data pair.
-# Dump the keys out to the file specified by outfile.
-proc dump_file { db txn outfile checkfunc } {
- source ./include.tcl
-
- dump_file_direction $db $txn $outfile $checkfunc "-first" "-next"
-}
-
-proc dump_file_direction { db txn outfile checkfunc start continue } {
- source ./include.tcl
-
- # Now we will get each key from the DB and dump to outfile
- set c [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $c $db] TRUE
- dump_file_walk $c $outfile $checkfunc $start $continue
- error_check_good curs_close [$c close] 0
-}
-
-proc dump_file_walk { c outfile checkfunc start continue {flag ""} } {
- set outf [open $outfile w]
- for {set d [eval {$c get} $flag $start] } \
- { [llength $d] != 0 } \
- {set d [eval {$c get} $flag $continue] } {
- set kd [lindex $d 0]
- set k [lindex $kd 0]
- set d2 [lindex $kd 1]
- $checkfunc $k $d2
- puts $outf $k
- # XXX: Geoff Mainland
- # puts $outf "$k $d2"
- }
- close $outf
-}
-
-proc dump_binkey_file { db txn outfile checkfunc } {
- source ./include.tcl
-
- dump_binkey_file_direction $db $txn $outfile $checkfunc \
- "-first" "-next"
-}
-proc dump_bin_file { db txn outfile checkfunc } {
- source ./include.tcl
-
- dump_bin_file_direction $db $txn $outfile $checkfunc "-first" "-next"
-}
-
-# Note: the following procedure assumes that the binary-file-as-keys were
-# inserted into the database by put_file_as_key, and consist of the file
-# name followed by the file contents as key, to ensure uniqueness.
-proc dump_binkey_file_direction { db txn outfile checkfunc begin cont } {
- source ./include.tcl
-
- set d1 $testdir/d1
-
- set outf [open $outfile w]
-
- # Now we will get each key from the DB and dump to outfile
- set c [eval {$db cursor} $txn]
- error_check_good db_cursor [is_valid_cursor $c $db] TRUE
-
- set inf $d1
- for {set d [$c get $begin] } { [llength $d] != 0 } \
- {set d [$c get $cont] } {
- set kd [lindex $d 0]
- set keyfile [lindex $kd 0]
- set data [lindex $kd 1]
-
- set ofid [open $d1 w]
- fconfigure $ofid -translation binary
-
- # Chop off the first few bytes--that's the file name,
- # added for uniqueness in put_file_as_key, which we don't
- # want in the regenerated file.
- set namelen [string length $data]
- set keyfile [string range $keyfile $namelen end]
- puts -nonewline $ofid $keyfile
- close $ofid
-
- $checkfunc $data $d1
- puts $outf $data
- flush $outf
- }
- close $outf
- error_check_good curs_close [$c close] 0
- fileremove $d1
-}
-
-proc dump_bin_file_direction { db txn outfile checkfunc begin cont } {
- source ./include.tcl
-
- set d1 $testdir/d1
-
- set outf [open $outfile w]
-
- # Now we will get each key from the DB and dump to outfile
- set c [eval {$db cursor} $txn]
-
- for {set d [$c get $begin] } \
- { [llength $d] != 0 } {set d [$c get $cont] } {
- set k [lindex [lindex $d 0] 0]
- set data [lindex [lindex $d 0] 1]
- set ofid [open $d1 w]
- fconfigure $ofid -translation binary
- puts -nonewline $ofid $data
- close $ofid
-
- $checkfunc $k $d1
- puts $outf $k
- }
- close $outf
- error_check_good curs_close [$c close] 0
- fileremove -f $d1
-}
-
-proc make_data_str { key } {
- set datastr ""
- for {set i 0} {$i < 10} {incr i} {
- append datastr $key
- }
- return $datastr
-}
-
-proc error_check_bad { func result bad {txn 0}} {
- if { [binary_compare $result $bad] == 0 } {
- if { $txn != 0 } {
- $txn abort
- }
- flush stdout
- flush stderr
- error "FAIL:[timestamp] $func returned error value $bad"
- }
-}
-
-proc error_check_good { func result desired {txn 0} } {
- if { [binary_compare $desired $result] != 0 } {
- if { $txn != 0 } {
- $txn abort
- }
- flush stdout
- flush stderr
- error "FAIL:[timestamp]\
- $func: expected $desired, got $result"
- }
-}
-
-# Locks have the prefix of their manager.
-proc is_substr { str sub } {
- if { [string first $sub $str] == -1 } {
- return 0
- } else {
- return 1
- }
-}
-
-proc release_list { l } {
-
- # Now release all the locks
- foreach el $l {
- catch { $el put } ret
- error_check_good lock_put $ret 0
- }
-}
-
-proc debug { {stop 0} } {
- global __debug_on
- global __debug_print
- global __debug_test
-
- set __debug_on 1
- set __debug_print 1
- set __debug_test $stop
-}
-
-# Check if each key appears exactly [llength dlist] times in the file with
-# the duplicate tags matching those that appear in dlist.
-proc dup_check { db txn tmpfile dlist {extra 0}} {
- source ./include.tcl
-
- set outf [open $tmpfile w]
- # Now we will get each key from the DB and dump to outfile
- set c [eval {$db cursor} $txn]
- set lastkey ""
- set done 0
- while { $done != 1} {
- foreach did $dlist {
- set rec [$c get "-next"]
- if { [string length $rec] == 0 } {
- set done 1
- break
- }
- set key [lindex [lindex $rec 0] 0]
- set fulldata [lindex [lindex $rec 0] 1]
- set id [id_of $fulldata]
- set d [data_of $fulldata]
- if { [string compare $key $lastkey] != 0 && \
- $id != [lindex $dlist 0] } {
- set e [lindex $dlist 0]
- error "FAIL: \tKey \
- $key, expected dup id $e, got $id"
- }
- error_check_good dupget.data $d $key
- error_check_good dupget.id $id $did
- set lastkey $key
- }
- #
- # Some tests add an extra dup (like overflow entries)
- # Check id if it exists.
- if { $extra != 0} {
- set okey $key
- set rec [$c get "-next"]
- if { [string length $rec] != 0 } {
- set key [lindex [lindex $rec 0] 0]
- #
- # If this key has no extras, go back for
- # next iteration.
- if { [string compare $key $lastkey] != 0 } {
- set key $okey
- set rec [$c get "-prev"]
- } else {
- set fulldata [lindex [lindex $rec 0] 1]
- set id [id_of $fulldata]
- set d [data_of $fulldata]
- error_check_bad dupget.data1 $d $key
- error_check_good dupget.id1 $id $extra
- }
- }
- }
- if { $done != 1 } {
- puts $outf $key
- }
- }
- close $outf
- error_check_good curs_close [$c close] 0
-}
-
-# Check if each key appears exactly [llength dlist] times in the file with
-# the duplicate tags matching those that appear in dlist.
-proc dup_file_check { db txn tmpfile dlist } {
- source ./include.tcl
-
- set outf [open $tmpfile w]
- # Now we will get each key from the DB and dump to outfile
- set c [eval {$db cursor} $txn]
- set lastkey ""
- set done 0
- while { $done != 1} {
- foreach did $dlist {
- set rec [$c get "-next"]
- if { [string length $rec] == 0 } {
- set done 1
- break
- }
- set key [lindex [lindex $rec 0] 0]
- if { [string compare $key $lastkey] != 0 } {
- #
- # If we changed files read in new contents.
- #
- set fid [open $key r]
- fconfigure $fid -translation binary
- set filecont [read $fid]
- close $fid
- }
- set fulldata [lindex [lindex $rec 0] 1]
- set id [id_of $fulldata]
- set d [data_of $fulldata]
- if { [string compare $key $lastkey] != 0 && \
- $id != [lindex $dlist 0] } {
- set e [lindex $dlist 0]
- error "FAIL: \tKey \
- $key, expected dup id $e, got $id"
- }
- error_check_good dupget.data $d $filecont
- error_check_good dupget.id $id $did
- set lastkey $key
- }
- if { $done != 1 } {
- puts $outf $key
- }
- }
- close $outf
- error_check_good curs_close [$c close] 0
-}
-
-# Parse duplicate data entries of the form N:data. Data_of returns
-# the data part; id_of returns the numerical part
-proc data_of {str} {
- set ndx [string first ":" $str]
- if { $ndx == -1 } {
- return ""
- }
- return [ string range $str [expr $ndx + 1] end]
-}
-
-proc id_of {str} {
- set ndx [string first ":" $str]
- if { $ndx == -1 } {
- return ""
- }
-
- return [ string range $str 0 [expr $ndx - 1]]
-}
-
-proc nop { {args} } {
- return
-}
-
-# Partial put test procedure.
-# Munges a data val through three different partial puts. Stores
-# the final munged string in the dvals array so that you can check
-# it later (dvals should be global). We take the characters that
-# are being replaced, make them capitals and then replicate them
-# some number of times (n_add). We do this at the beginning of the
-# data, at the middle and at the end. The parameters are:
-# db, txn, key -- as per usual. Data is the original data element
-# from which we are starting. n_replace is the number of characters
-# that we will replace. n_add is the number of times we will add
-# the replaced string back in.
-proc partial_put { method db txn gflags key data n_replace n_add } {
- global dvals
- source ./include.tcl
-
- # Here is the loop where we put and get each key/data pair
- # We will do the initial put and then three Partial Puts
- # for the beginning, middle and end of the string.
-
- eval {$db put} $txn {$key [chop_data $method $data]}
-
- # Beginning change
- set s [string range $data 0 [ expr $n_replace - 1 ] ]
- set repl [ replicate [string toupper $s] $n_add ]
-
- # This is gross, but necessary: if this is a fixed-length
- # method, and the chopped length of $repl is zero,
- # it's because the original string was zero-length and our data item
- # is all nulls. Set repl to something non-NULL.
- if { [is_fixed_length $method] && \
- [string length [chop_data $method $repl]] == 0 } {
- set repl [replicate "." $n_add]
- }
-
- set newstr [chop_data $method $repl[string range $data $n_replace end]]
- set ret [eval {$db put} $txn {-partial [list 0 $n_replace] \
- $key [chop_data $method $repl]}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $gflags $txn {$key}]
- error_check_good get $ret [list [list $key [pad_data $method $newstr]]]
-
- # End Change
- set len [string length $newstr]
- set spl [expr $len - $n_replace]
- # Handle case where $n_replace > $len
- if { $spl < 0 } {
- set spl 0
- }
-
- set s [string range $newstr [ expr $len - $n_replace ] end ]
- # Handle zero-length keys
- if { [string length $s] == 0 } { set s "A" }
-
- set repl [ replicate [string toupper $s] $n_add ]
- set newstr [chop_data $method \
- [string range $newstr 0 [expr $spl - 1 ] ]$repl]
-
- set ret [eval {$db put} $txn \
- {-partial [list $spl $n_replace] $key [chop_data $method $repl]}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $gflags $txn {$key}]
- error_check_good get $ret [list [list $key [pad_data $method $newstr]]]
-
- # Middle Change
- set len [string length $newstr]
- set mid [expr $len / 2 ]
- set beg [expr $mid - [expr $n_replace / 2] ]
- set end [expr $beg + $n_replace - 1]
- set s [string range $newstr $beg $end]
- set repl [ replicate [string toupper $s] $n_add ]
- set newstr [chop_data $method [string range $newstr 0 \
- [expr $beg - 1 ] ]$repl[string range $newstr [expr $end + 1] end]]
-
- set ret [eval {$db put} $txn {-partial [list $beg $n_replace] \
- $key [chop_data $method $repl]}]
- error_check_good put $ret 0
-
- set ret [eval {$db get} $gflags $txn {$key}]
- error_check_good get $ret [list [list $key [pad_data $method $newstr]]]
-
- set dvals($key) [pad_data $method $newstr]
-}
-
-proc replicate { str times } {
- set res $str
- for { set i 1 } { $i < $times } { set i [expr $i * 2] } {
- append res $res
- }
- return $res
-}
-
-proc repeat { str n } {
- set ret ""
- while { $n > 0 } {
- set ret $str$ret
- incr n -1
- }
- return $ret
-}
-
-proc isqrt { l } {
- set s [expr sqrt($l)]
- set ndx [expr [string first "." $s] - 1]
- return [string range $s 0 $ndx]
-}
-
-# If we run watch_procs multiple times without an intervening
-# testdir cleanup, it's possible that old sentinel files will confuse
-# us. Make sure they're wiped out before we spawn any other processes.
-proc sentinel_init { } {
- source ./include.tcl
-
- set filelist {}
- set ret [catch {glob $testdir/begin.*} result]
- if { $ret == 0 } {
- set filelist $result
- }
-
- set ret [catch {glob $testdir/end.*} result]
- if { $ret == 0 } {
- set filelist [concat $filelist $result]
- }
-
- foreach f $filelist {
- fileremove $f
- }
-}
-
-proc watch_procs { pidlist {delay 30} {max 3600} {quiet 0} } {
- source ./include.tcl
-
- set elapsed 0
-
- # Don't start watching the processes until a sentinel
- # file has been created for each one.
- foreach pid $pidlist {
- while { [file exists $testdir/begin.$pid] == 0 } {
- tclsleep $delay
- incr elapsed $delay
- # If pids haven't been created in one-tenth
- # of the time allowed for the whole test,
- # there's a problem. Report an error and fail.
- if { $elapsed > [expr {$max / 10}] } {
- puts "FAIL: begin.pid not created"
- break
- }
- }
- }
-
- while { 1 } {
-
- tclsleep $delay
- incr elapsed $delay
-
- # Find the list of processes with outstanding sentinel
- # files (i.e. a begin.pid and no end.pid).
- set beginlist {}
- set endlist {}
- set ret [catch {glob $testdir/begin.*} result]
- if { $ret == 0 } {
- set beginlist $result
- }
- set ret [catch {glob $testdir/end.*} result]
- if { $ret == 0 } {
- set endlist $result
- }
-
- set bpids {}
- catch {unset epids}
- foreach begfile $beginlist {
- lappend bpids [string range $begfile \
- [string length $testdir/begin.] end]
- }
- foreach endfile $endlist {
- set epids([string range $endfile \
- [string length $testdir/end.] end]) 1
- }
-
- # The set of processes that we still want to watch, $l,
- # is the set of pids that have begun but not ended
- # according to their sentinel files.
- set l {}
- foreach p $bpids {
- if { [info exists epids($p)] == 0 } {
- lappend l $p
- }
- }
-
- set rlist {}
- foreach i $l {
- set r [ catch { exec $KILL -0 $i } result ]
- if { $r == 0 } {
- lappend rlist $i
- }
- }
- if { [ llength $rlist] == 0 } {
- break
- } else {
- puts "[timestamp] processes running: $rlist"
- }
-
- if { $elapsed > $max } {
- # We have exceeded the limit; kill processes
- # and report an error
- foreach i $l {
- tclkill $i
- }
- }
- }
- if { $quiet == 0 } {
- puts "All processes have exited."
- }
-}
-
-# These routines are all used from within the dbscript.tcl tester.
-proc db_init { dbp do_data } {
- global a_keys
- global l_keys
- source ./include.tcl
-
- set txn ""
- set nk 0
- set lastkey ""
-
- set a_keys() BLANK
- set l_keys ""
-
- set c [$dbp cursor]
- for {set d [$c get -first] } { [llength $d] != 0 } {
- set d [$c get -next] } {
- set k [lindex [lindex $d 0] 0]
- set d2 [lindex [lindex $d 0] 1]
- incr nk
- if { $do_data == 1 } {
- if { [info exists a_keys($k)] } {
- lappend a_keys($k) $d2]
- } else {
- set a_keys($k) $d2
- }
- }
-
- lappend l_keys $k
- }
- error_check_good curs_close [$c close] 0
-
- return $nk
-}
-
-proc pick_op { min max n } {
- if { $n == 0 } {
- return add
- }
-
- set x [berkdb random_int 1 12]
- if {$n < $min} {
- if { $x <= 4 } {
- return put
- } elseif { $x <= 8} {
- return get
- } else {
- return add
- }
- } elseif {$n > $max} {
- if { $x <= 4 } {
- return put
- } elseif { $x <= 8 } {
- return get
- } else {
- return del
- }
-
- } elseif { $x <= 3 } {
- return del
- } elseif { $x <= 6 } {
- return get
- } elseif { $x <= 9 } {
- return put
- } else {
- return add
- }
-}
-
-# random_data: Generate a string of random characters.
-# If recno is 0 - Use average to pick a length between 1 and 2 * avg.
-# If recno is non-0, generate a number between 1 and 2 ^ (avg * 2),
-# that will fit into a 32-bit integer.
-# If the unique flag is 1, then make sure that the string is unique
-# in the array "where".
-proc random_data { avg unique where {recno 0} } {
- upvar #0 $where arr
- global debug_on
- set min 1
- set max [expr $avg+$avg-1]
- if { $recno } {
- #
- # Tcl seems to have problems with values > 30.
- #
- if { $max > 30 } {
- set max 30
- }
- set maxnum [expr int(pow(2, $max))]
- }
- while {1} {
- set len [berkdb random_int $min $max]
- set s ""
- if {$recno} {
- set s [berkdb random_int 1 $maxnum]
- } else {
- for {set i 0} {$i < $len} {incr i} {
- append s [int_to_char [berkdb random_int 0 25]]
- }
- }
-
- if { $unique == 0 || [info exists arr($s)] == 0 } {
- break
- }
- }
-
- return $s
-}
-
-proc random_key { } {
- global l_keys
- global nkeys
- set x [berkdb random_int 0 [expr $nkeys - 1]]
- return [lindex $l_keys $x]
-}
-
-proc is_err { desired } {
- set x [berkdb random_int 1 100]
- if { $x <= $desired } {
- return 1
- } else {
- return 0
- }
-}
-
-proc pick_cursput { } {
- set x [berkdb random_int 1 4]
- switch $x {
- 1 { return "-keylast" }
- 2 { return "-keyfirst" }
- 3 { return "-before" }
- 4 { return "-after" }
- }
-}
-
-proc random_cursor { curslist } {
- global l_keys
- global nkeys
-
- set x [berkdb random_int 0 [expr [llength $curslist] - 1]]
- set dbc [lindex $curslist $x]
-
- # We want to randomly set the cursor. Pick a key.
- set k [random_key]
- set r [$dbc get "-set" $k]
- error_check_good cursor_get:$k [is_substr Error $r] 0
-
- # Now move forward or backward some hops to randomly
- # position the cursor.
- set dist [berkdb random_int -10 10]
-
- set dir "-next"
- set boundary "-first"
- if { $dist < 0 } {
- set dir "-prev"
- set boundary "-last"
- set dist [expr 0 - $dist]
- }
-
- for { set i 0 } { $i < $dist } { incr i } {
- set r [ record $dbc get $dir $k ]
- if { [llength $d] == 0 } {
- set r [ record $dbc get $k $boundary ]
- }
- error_check_bad dbcget [llength $r] 0
- }
- return { [linsert r 0 $dbc] }
-}
-
-proc record { args } {
-# Recording every operation makes tests ridiculously slow on
-# NT, so we are commenting this out; for debugging purposes,
-# it will undoubtedly be useful to uncomment this.
-# puts $args
-# flush stdout
- return [eval $args]
-}
-
-proc newpair { k data } {
- global l_keys
- global a_keys
- global nkeys
-
- set a_keys($k) $data
- lappend l_keys $k
- incr nkeys
-}
-
-proc rempair { k } {
- global l_keys
- global a_keys
- global nkeys
-
- unset a_keys($k)
- set n [lsearch $l_keys $k]
- error_check_bad rempair:$k $n -1
- set l_keys [lreplace $l_keys $n $n]
- incr nkeys -1
-}
-
-proc changepair { k data } {
- global l_keys
- global a_keys
- global nkeys
-
- set a_keys($k) $data
-}
-
-proc changedup { k olddata newdata } {
- global l_keys
- global a_keys
- global nkeys
-
- set d $a_keys($k)
- error_check_bad changedup:$k [llength $d] 0
-
- set n [lsearch $d $olddata]
- error_check_bad changedup:$k $n -1
-
- set a_keys($k) [lreplace $a_keys($k) $n $n $newdata]
-}
-
-# Insert a dup into the a_keys array with DB_KEYFIRST.
-proc adddup { k olddata newdata } {
- global l_keys
- global a_keys
- global nkeys
-
- set d $a_keys($k)
- if { [llength $d] == 0 } {
- lappend l_keys $k
- incr nkeys
- set a_keys($k) { $newdata }
- }
-
- set ndx 0
-
- set d [linsert d $ndx $newdata]
- set a_keys($k) $d
-}
-
-proc remdup { k data } {
- global l_keys
- global a_keys
- global nkeys
-
- set d [$a_keys($k)]
- error_check_bad changedup:$k [llength $d] 0
-
- set n [lsearch $d $olddata]
- error_check_bad changedup:$k $n -1
-
- set a_keys($k) [lreplace $a_keys($k) $n $n]
-}
-
-proc dump_full_file { db txn outfile checkfunc start continue } {
- source ./include.tcl
-
- set outf [open $outfile w]
- # Now we will get each key from the DB and dump to outfile
- set c [eval {$db cursor} $txn]
- error_check_good dbcursor [is_valid_cursor $c $db] TRUE
-
- for {set d [$c get $start] } { [string length $d] != 0 } {
- set d [$c get $continue] } {
- set k [lindex [lindex $d 0] 0]
- set d2 [lindex [lindex $d 0] 1]
- $checkfunc $k $d2
- puts $outf "$k\t$d2"
- }
- close $outf
- error_check_good curs_close [$c close] 0
-}
-
-proc int_to_char { i } {
- global alphabet
-
- return [string index $alphabet $i]
-}
-
-proc dbcheck { key data } {
- global l_keys
- global a_keys
- global nkeys
- global check_array
-
- if { [lsearch $l_keys $key] == -1 } {
- error "FAIL: Key |$key| not in list of valid keys"
- }
-
- set d $a_keys($key)
-
- if { [info exists check_array($key) ] } {
- set check $check_array($key)
- } else {
- set check {}
- }
-
- if { [llength $d] > 1 } {
- if { [llength $check] != [llength $d] } {
- # Make the check array the right length
- for { set i [llength $check] } { $i < [llength $d] } \
- {incr i} {
- lappend check 0
- }
- set check_array($key) $check
- }
-
- # Find this data's index
- set ndx [lsearch $d $data]
- if { $ndx == -1 } {
- error "FAIL: \
- Data |$data| not found for key $key. Found |$d|"
- }
-
- # Set the bit in the check array
- set check_array($key) [lreplace $check_array($key) $ndx $ndx 1]
- } elseif { [string compare $d $data] != 0 } {
- error "FAIL: \
- Invalid data |$data| for key |$key|. Expected |$d|."
- } else {
- set check_array($key) 1
- }
-}
-
-# Dump out the file and verify it
-proc filecheck { file txn } {
- global check_array
- global l_keys
- global nkeys
- global a_keys
- source ./include.tcl
-
- if { [info exists check_array] == 1 } {
- unset check_array
- }
-
- open_and_dump_file $file NULL $file.dump dbcheck dump_full_file \
- "-first" "-next"
-
- # Check that everything we checked had all its data
- foreach i [array names check_array] {
- set count 0
- foreach j $check_array($i) {
- if { $j != 1 } {
- puts -nonewline "Key |$i| never found datum"
- puts " [lindex $a_keys($i) $count]"
- }
- incr count
- }
- }
-
- # Check that all keys appeared in the checked array
- set count 0
- foreach k $l_keys {
- if { [info exists check_array($k)] == 0 } {
- puts "filecheck: key |$k| not found. Data: $a_keys($k)"
- }
- incr count
- }
-
- if { $count != $nkeys } {
- puts "filecheck: Got $count keys; expected $nkeys"
- }
-}
-
-proc cleanup { dir env { quiet 0 } } {
- global gen_upgrade
- global is_qnx_test
- global old_encrypt
- global passwd
- global upgrade_dir
- global upgrade_be
- global upgrade_method
- global upgrade_name
- source ./include.tcl
-
- if { $gen_upgrade == 1 } {
- set vers [berkdb version]
- set maj [lindex $vers 0]
- set min [lindex $vers 1]
-
- # Is this machine big or little endian? We want to mark
- # the test directories appropriately, since testing
- # little-endian databases generated by a big-endian machine,
- # and/or vice versa, is interesting.
- if { [big_endian] } {
- set myendianness be
- } else {
- set myendianness le
- }
-
- if { $upgrade_be == 1 } {
- set version_dir "$myendianness-$maj.${min}be"
- set en be
- } else {
- set version_dir "$myendianness-$maj.${min}le"
- set en le
- }
-
- set dest $upgrade_dir/$version_dir/$upgrade_method
- exec mkdir -p $dest
-
- set dbfiles [glob -nocomplain $dir/*.db]
- foreach dbfile $dbfiles {
- set basename [string range $dbfile \
- [expr [string length $dir] + 1] end-3]
-
- set newbasename $upgrade_name-$basename
-
- # db_dump file
- error_check_good db_dump($dbfile) \
- [catch {exec $util_path/db_dump -k $dbfile > \
- $dir/$newbasename.dump}] 0
-
- # tcl_dump file
- upgrade_dump $dbfile \
- $dir/$newbasename.tcldump
-
- # Rename dbfile and any dbq files.
- file rename $dbfile $dir/$newbasename-$en.db
- foreach dbq \
- [glob -nocomplain $dir/__dbq.$basename.db.*] {
- set s [string length $dir/__dbq.]
- set newname [string replace $dbq $s \
- [expr [string length $basename] + $s - 1] \
- $newbasename-$en]
- file rename $dbq $newname
- }
- set cwd [pwd]
- cd $dir
- catch {eval exec tar -cvf $dest/$newbasename.tar \
- [glob $newbasename* __dbq.$newbasename-$en.db.*]}
- catch {exec gzip -9v $dest/$newbasename.tar}
- cd $cwd
- }
- }
-
-# check_handles
- set remfiles {}
- set ret [catch { glob $dir/* } result]
- if { $ret == 0 } {
- foreach fileorig $result {
- #
- # We:
- # - Ignore any env-related files, which are
- # those that have __db.* or log.* if we are
- # running in an env. Also ignore files whose
- # names start with REPDIR_; these are replication
- # subdirectories.
- # - Call 'dbremove' on any databases.
- # Remove any remaining temp files.
- #
- switch -glob -- $fileorig {
- */DIR_* -
- */__db.* -
- */log.* {
- if { $env != "NULL" } {
- continue
- } else {
- if { $is_qnx_test } {
- catch {berkdb envremove -force \
- -home $dir} r
- }
- lappend remfiles $fileorig
- }
- }
- *.db {
- set envargs ""
- set encarg ""
- #
- # If in an env, it should be open crypto
- # or not already.
- #
- if { $env != "NULL"} {
- set file [file tail $fileorig]
- set envargs " -env $env "
- if { [is_txnenv $env] } {
- append envargs " -auto_commit "
- }
- } else {
- if { $old_encrypt != 0 } {
- set encarg "-encryptany $passwd"
- }
- set file $fileorig
- }
-
- # If a database is left in a corrupt
- # state, dbremove might not be able to handle
- # it (it does an open before the remove).
- # Be prepared for this, and if necessary,
- # just forcibly remove the file with a warning
- # message.
- set ret [catch \
- {eval {berkdb dbremove} $envargs $encarg \
- $file} res]
- if { $ret != 0 } {
- # If it failed, there is a chance
- # that the previous run was using
- # encryption and we cannot know about
- # it (different tclsh instantiation).
- # Try to remove it with crypto.
- if { $env == "NULL" && \
- $old_encrypt == 0} {
- set ret [catch \
- {eval {berkdb dbremove} \
- -encryptany $passwd \
- $envargs $file} res]
- }
- if { $ret != 0 } {
- if { $quiet == 0 } {
- puts \
- "FAIL: dbremove in cleanup failed: $res"
- }
- set file $fileorig
- lappend remfiles $file
- }
- }
- }
- default {
- lappend remfiles $fileorig
- }
- }
- }
- if {[llength $remfiles] > 0} {
- eval fileremove -f $remfiles
- }
- }
-}
-
-proc log_cleanup { dir } {
- source ./include.tcl
-
- set files [glob -nocomplain $dir/log.*]
- if { [llength $files] != 0} {
- foreach f $files {
- fileremove -f $f
- }
- }
-}
-
-proc env_cleanup { dir } {
- global old_encrypt
- global passwd
- source ./include.tcl
-
- set encarg ""
- if { $old_encrypt != 0 } {
- set encarg "-encryptany $passwd"
- }
- set stat [catch {eval {berkdb envremove -home} $dir $encarg} ret]
- #
- # If something failed and we are left with a region entry
- # in /dev/shmem that is zero-length, the envremove will
- # succeed, and the shm_unlink will succeed, but it will not
- # remove the zero-length entry from /dev/shmem. Remove it
- # using fileremove or else all other tests using an env
- # will immediately fail.
- #
- if { $is_qnx_test == 1 } {
- set region_files [glob -nocomplain /dev/shmem/$dir*]
- if { [llength $region_files] != 0 } {
- foreach f $region_files {
- fileremove -f $f
- }
- }
- }
- log_cleanup $dir
- cleanup $dir NULL
-}
-
-proc remote_cleanup { server dir localdir } {
- set home [file tail $dir]
- error_check_good cleanup:remove [berkdb envremove -home $home \
- -server $server] 0
- catch {exec rsh $server rm -f $dir/*} ret
- cleanup $localdir NULL
-}
-
-proc help { cmd } {
- if { [info command $cmd] == $cmd } {
- set is_proc [lsearch [info procs $cmd] $cmd]
- if { $is_proc == -1 } {
- # Not a procedure; must be a C command
- # Let's hope that it takes some parameters
- # and that it prints out a message
- puts "Usage: [eval $cmd]"
- } else {
- # It is a tcl procedure
- puts -nonewline "Usage: $cmd"
- set args [info args $cmd]
- foreach a $args {
- set is_def [info default $cmd $a val]
- if { $is_def != 0 } {
- # Default value
- puts -nonewline " $a=$val"
- } elseif {$a == "args"} {
- # Print out flag values
- puts " options"
- args
- } else {
- # No default value
- puts -nonewline " $a"
- }
- }
- puts ""
- }
- } else {
- puts "$cmd is not a command"
- }
-}
-
-# Run a recovery test for a particular operation
-# Notice that we catch the return from CP and do not do anything with it.
-# This is because Solaris CP seems to exit non-zero on occasion, but
-# everything else seems to run just fine.
-#
-# We split it into two functions so that the preparation and command
-# could be executed in a different process than the recovery.
-#
-proc op_codeparse { encodedop op } {
- set op1 ""
- set op2 ""
- switch $encodedop {
- "abort" {
- set op1 $encodedop
- set op2 ""
- }
- "commit" {
- set op1 $encodedop
- set op2 ""
- }
- "prepare-abort" {
- set op1 "prepare"
- set op2 "abort"
- }
- "prepare-commit" {
- set op1 "prepare"
- set op2 "commit"
- }
- "prepare-discard" {
- set op1 "prepare"
- set op2 "discard"
- }
- }
-
- if { $op == "op" } {
- return $op1
- } else {
- return $op2
- }
-}
-
-proc op_recover { encodedop dir env_cmd dbfile cmd msg } {
- source ./include.tcl
-
- set op [op_codeparse $encodedop "op"]
- set op2 [op_codeparse $encodedop "sub"]
- puts "\t$msg $encodedop"
- set gidf ""
- if { $op == "prepare" } {
- sentinel_init
-
- # Fork off a child to run the cmd
- # We append the gid, so start here making sure
- # we don't have old gid's around.
- set outfile $testdir/childlog
- fileremove -f $testdir/gidfile
- set gidf $testdir/gidfile
- set pidlist {}
- # puts "$tclsh_path $test_path/recdscript.tcl $testdir/recdout \
- # $op $dir $env_cmd $dbfile $gidf $cmd"
- set p [exec $tclsh_path $test_path/wrap.tcl recdscript.tcl \
- $testdir/recdout $op $dir $env_cmd $dbfile $gidf $cmd &]
- lappend pidlist $p
- watch_procs $pidlist 5
- set f1 [open $testdir/recdout r]
- set r [read $f1]
- puts -nonewline $r
- close $f1
- fileremove -f $testdir/recdout
- } else {
- op_recover_prep $op $dir $env_cmd $dbfile $gidf $cmd
- }
- op_recover_rec $op $op2 $dir $env_cmd $dbfile $gidf
-}
-
-proc op_recover_prep { op dir env_cmd dbfile gidf cmd } {
- global log_log_record_types
- global recd_debug
- global recd_id
- global recd_op
- source ./include.tcl
-
- #puts "op_recover: $op $dir $env $dbfile $cmd"
-
- set init_file $dir/t1
- set afterop_file $dir/t2
- set final_file $dir/t3
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $dir
- }
-
- # Save the initial file and open the environment and the file
- catch { file copy -force $dir/$dbfile $dir/$dbfile.init } res
- copy_extent_file $dir $dbfile init
-
- convert_encrypt $env_cmd
- set env [eval $env_cmd]
- error_check_good envopen [is_valid_env $env] TRUE
-
- set db [berkdb open -auto_commit -env $env $dbfile]
- error_check_good dbopen [is_valid_db $db] TRUE
-
- # Dump out file contents for initial case
- open_and_dump_file $dbfile $env $init_file nop \
- dump_file_direction "-first" "-next"
-
- set t [$env txn]
- error_check_bad txn_begin $t NULL
- error_check_good txn_begin [is_substr $t "txn"] 1
-
- # Now fill in the db, tmgr, and the txnid in the command
- set exec_cmd $cmd
-
- set i [lsearch $cmd ENV]
- if { $i != -1 } {
- set exec_cmd [lreplace $exec_cmd $i $i $env]
- }
-
- set i [lsearch $cmd TXNID]
- if { $i != -1 } {
- set exec_cmd [lreplace $exec_cmd $i $i $t]
- }
-
- set i [lsearch $exec_cmd DB]
- if { $i != -1 } {
- set exec_cmd [lreplace $exec_cmd $i $i $db]
- }
-
- # To test DB_CONSUME, we need to expect a record return, not "0".
- set i [lsearch $exec_cmd "-consume"]
- if { $i != -1 } {
- set record_exec_cmd_ret 1
- } else {
- set record_exec_cmd_ret 0
- }
-
- # For the DB_APPEND test, we need to expect a return other than
- # 0; set this flag to be more lenient in the error_check_good.
- set i [lsearch $exec_cmd "-append"]
- if { $i != -1 } {
- set lenient_exec_cmd_ret 1
- } else {
- set lenient_exec_cmd_ret 0
- }
-
- # Execute command and commit/abort it.
- set ret [eval $exec_cmd]
- if { $record_exec_cmd_ret == 1 } {
- error_check_good "\"$exec_cmd\"" [llength [lindex $ret 0]] 2
- } elseif { $lenient_exec_cmd_ret == 1 } {
- error_check_good "\"$exec_cmd\"" [expr $ret > 0] 1
- } else {
- error_check_good "\"$exec_cmd\"" $ret 0
- }
-
- set record_exec_cmd_ret 0
- set lenient_exec_cmd_ret 0
-
- # Sync the file so that we can capture a snapshot to test recovery.
- error_check_good sync:$db [$db sync] 0
-
- catch { file copy -force $dir/$dbfile $dir/$dbfile.afterop } res
- copy_extent_file $dir $dbfile afterop
- open_and_dump_file $dir/$dbfile.afterop NULL \
- $afterop_file nop dump_file_direction "-first" "-next"
-
- #puts "\t\t\tExecuting txn_$op:$t"
- if { $op == "prepare" } {
- set gid [make_gid global:$t]
- set gfd [open $gidf w+]
- puts $gfd $gid
- close $gfd
- error_check_good txn_$op:$t [$t $op $gid] 0
- } else {
- error_check_good txn_$op:$t [$t $op] 0
- }
-
- switch $op {
- "commit" { puts "\t\tCommand executed and committed." }
- "abort" { puts "\t\tCommand executed and aborted." }
- "prepare" { puts "\t\tCommand executed and prepared." }
- }
-
- # Sync the file so that we can capture a snapshot to test recovery.
- error_check_good sync:$db [$db sync] 0
-
- catch { file copy -force $dir/$dbfile $dir/$dbfile.final } res
- copy_extent_file $dir $dbfile final
- open_and_dump_file $dir/$dbfile.final NULL \
- $final_file nop dump_file_direction "-first" "-next"
-
- # If this is an abort or prepare-abort, it should match the
- # original file.
- # If this was a commit or prepare-commit, then this file should
- # match the afterop file.
- # If this was a prepare without an abort or commit, we still
- # have transactions active, and peering at the database from
- # another environment will show data from uncommitted transactions.
- # Thus we just skip this in the prepare-only case; what
- # we care about are the results of a prepare followed by a
- # recovery, which we test later.
- if { $op == "commit" } {
- filesort $afterop_file $afterop_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(post-$op,pre-commit):diff($afterop_file,$final_file) \
- [filecmp $afterop_file.sort $final_file.sort] 0
- } elseif { $op == "abort" } {
- filesort $init_file $init_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(initial,post-$op):diff($init_file,$final_file) \
- [filecmp $init_file.sort $final_file.sort] 0
- } else {
- # Make sure this really is one of the prepare tests
- error_check_good assert:prepare-test $op "prepare"
- }
-
- # Running recovery on this database should not do anything.
- # Flush all data to disk, close the environment and save the
- # file.
- # XXX DO NOT CLOSE FILE ON PREPARE -- if you are prepared,
- # you really have an active transaction and you're not allowed
- # to close files that are being acted upon by in-process
- # transactions.
- if { $op != "prepare" } {
- error_check_good close:$db [$db close] 0
- }
-
- #
- # If we are running 'prepare' don't close the env with an
- # active transaction. Leave it alone so the close won't
- # quietly abort it on us.
- if { [is_substr $op "prepare"] != 1 } {
- error_check_good envclose [$env close] 0
- }
- return
-}
-
-proc op_recover_rec { op op2 dir env_cmd dbfile gidf} {
- global log_log_record_types
- global recd_debug
- global recd_id
- global recd_op
- global encrypt
- global passwd
- source ./include.tcl
-
- #puts "op_recover_rec: $op $op2 $dir $env_cmd $dbfile $gidf"
-
- set init_file $dir/t1
- set afterop_file $dir/t2
- set final_file $dir/t3
-
- # Keep track of the log types we've seen
- if { $log_log_record_types == 1} {
- logtrack_read $dir
- }
-
- berkdb debug_check
- puts -nonewline "\t\top_recover_rec: Running recovery ... "
- flush stdout
-
- set recargs "-h $dir -c "
- if { $encrypt > 0 } {
- append recargs " -P $passwd "
- }
- set stat [catch {eval exec $util_path/db_recover -e $recargs} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- }
- puts -nonewline "complete ... "
-
- #
- # We cannot run db_recover here because that will open an env, run
- # recovery, then close it, which will abort the outstanding txns.
- # We want to do it ourselves.
- #
- set env [eval $env_cmd]
- error_check_good dbenv [is_valid_widget $env env] TRUE
-
- error_check_good db_verify [verify_dir $testdir "\t\t" 0 1] 0
- puts "verified"
-
- # If we left a txn as prepared, but not aborted or committed,
- # we need to do a txn_recover. Make sure we have the same
- # number of txns we want.
- if { $op == "prepare"} {
- set txns [$env txn_recover]
- error_check_bad txnrecover [llength $txns] 0
- set gfd [open $gidf r]
- set origgid [read -nonewline $gfd]
- close $gfd
- set txnlist [lindex $txns 0]
- set t [lindex $txnlist 0]
- set gid [lindex $txnlist 1]
- error_check_good gidcompare $gid $origgid
- puts "\t\t\tExecuting txn_$op2:$t"
- error_check_good txn_$op2:$t [$t $op2] 0
- #
- # If we are testing discard, we do need to resolve
- # the txn, so get the list again and now abort it.
- #
- if { $op2 == "discard" } {
- set txns [$env txn_recover]
- error_check_bad txnrecover [llength $txns] 0
- set txnlist [lindex $txns 0]
- set t [lindex $txnlist 0]
- set gid [lindex $txnlist 1]
- error_check_good gidcompare $gid $origgid
- puts "\t\t\tExecuting txn_abort:$t"
- error_check_good disc_txn_abort:$t [$t abort] 0
- }
- }
-
- open_and_dump_file $dir/$dbfile NULL $final_file nop \
- dump_file_direction "-first" "-next"
- if { $op == "commit" || $op2 == "commit" } {
- filesort $afterop_file $afterop_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(post-$op,pre-commit):diff($afterop_file,$final_file) \
- [filecmp $afterop_file.sort $final_file.sort] 0
- } else {
- filesort $init_file $init_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(initial,post-$op):diff($init_file,$final_file) \
- [filecmp $init_file.sort $final_file.sort] 0
- }
-
- # Now close the environment, substitute a file that will need
- # recovery and try running recovery again.
- reset_env $env
- if { $op == "commit" || $op2 == "commit" } {
- catch { file copy -force $dir/$dbfile.init $dir/$dbfile } res
- move_file_extent $dir $dbfile init copy
- } else {
- catch { file copy -force $dir/$dbfile.afterop $dir/$dbfile } res
- move_file_extent $dir $dbfile afterop copy
- }
-
- berkdb debug_check
- puts -nonewline "\t\tRunning recovery on pre-op database ... "
- flush stdout
-
- set stat [catch {eval exec $util_path/db_recover $recargs} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- }
- puts -nonewline "complete ... "
-
- error_check_good db_verify_preop [verify_dir $testdir "\t\t" 0 1] 0
-
- puts "verified"
-
- set env [eval $env_cmd]
-
- open_and_dump_file $dir/$dbfile NULL $final_file nop \
- dump_file_direction "-first" "-next"
- if { $op == "commit" || $op2 == "commit" } {
- filesort $final_file $final_file.sort
- filesort $afterop_file $afterop_file.sort
- error_check_good \
- diff(post-$op,recovered):diff($afterop_file,$final_file) \
- [filecmp $afterop_file.sort $final_file.sort] 0
- } else {
- filesort $init_file $init_file.sort
- filesort $final_file $final_file.sort
- error_check_good \
- diff(initial,post-$op):diff($init_file,$final_file) \
- [filecmp $init_file.sort $final_file.sort] 0
- }
-
- # This should just close the environment, not blow it away.
- reset_env $env
-}
-
-proc populate { db method txn n dups bigdata } {
- source ./include.tcl
-
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < $n } {
- if { [is_record_based $method] == 1 } {
- set key [expr $count + 1]
- } elseif { $dups == 1 } {
- set key duplicate_key
- } else {
- set key $str
- }
- if { $bigdata == 1 && [berkdb random_int 1 3] == 1} {
- set str [replicate $str 1000]
- }
-
- set ret [$db put -txn $txn $key $str]
- error_check_good db_put:$key $ret 0
- incr count
- }
- close $did
- return 0
-}
-
-proc big_populate { db txn n } {
- source ./include.tcl
-
- set did [open $dict]
- set count 0
- while { [gets $did str] != -1 && $count < $n } {
- set key [replicate $str 50]
- set ret [$db put -txn $txn $key $str]
- error_check_good db_put:$key $ret 0
- incr count
- }
- close $did
- return 0
-}
-
-proc unpopulate { db txn num } {
- source ./include.tcl
-
- set c [eval {$db cursor} "-txn $txn"]
- error_check_bad $db:cursor $c NULL
- error_check_good $db:cursor [is_substr $c $db] 1
-
- set i 0
- for {set d [$c get -first] } { [llength $d] != 0 } {
- set d [$c get -next] } {
- $c del
- incr i
- if { $num != 0 && $ >= $num } {
- break
- }
- }
- error_check_good cursor_close [$c close] 0
- return 0
-}
-
-proc reset_env { env } {
- error_check_good env_close [$env close] 0
-}
-
-proc minlocks { myenv locker_id obj_id num } {
- return [countlocks $myenv $locker_id $obj_id $num ]
-}
-
-proc maxlocks { myenv locker_id obj_id num } {
- return [countlocks $myenv $locker_id $obj_id $num ]
-}
-
-proc minwrites { myenv locker_id obj_id num } {
- return [countlocks $myenv $locker_id $obj_id $num ]
-}
-
-proc countlocks { myenv locker_id obj_id num } {
- set locklist ""
- for { set i 0} {$i < [expr $obj_id * 4]} { incr i } {
- set r [catch {$myenv lock_get read $locker_id \
- [expr $obj_id * 1000 + $i]} l ]
- if { $r != 0 } {
- puts $l
- return ERROR
- } else {
- error_check_good lockget:$obj_id [is_substr $l $myenv] 1
- lappend locklist $l
- }
- }
-
- # Now acquire a write lock
- if { $obj_id != 1 } {
- set r [catch {$myenv lock_get write $locker_id \
- [expr $obj_id * 1000 + 10]} l ]
- if { $r != 0 } {
- puts $l
- return ERROR
- } else {
- error_check_good lockget:$obj_id [is_substr $l $myenv] 1
- lappend locklist $l
- }
- }
-
- set ret [ring $myenv $locker_id $obj_id $num]
-
- foreach l $locklist {
- error_check_good lockput:$l [$l put] 0
- }
-
- return $ret
-}
-
-# This routine will let us obtain a ring of deadlocks.
-# Each locker will get a lock on obj_id, then sleep, and
-# then try to lock (obj_id + 1) % num.
-# When the lock is finally granted, we release our locks and
-# return 1 if we got both locks and DEADLOCK if we deadlocked.
-# The results here should be that 1 locker deadlocks and the
-# rest all finish successfully.
-proc ring { myenv locker_id obj_id num } {
- source ./include.tcl
-
- if {[catch {$myenv lock_get write $locker_id $obj_id} lock1] != 0} {
- puts $lock1
- return ERROR
- } else {
- error_check_good lockget:$obj_id [is_substr $lock1 $myenv] 1
- }
-
- tclsleep 30
- set nextobj [expr ($obj_id + 1) % $num]
- set ret 1
- if {[catch {$myenv lock_get write $locker_id $nextobj} lock2] != 0} {
- if {[string match "*DEADLOCK*" $lock2] == 1} {
- set ret DEADLOCK
- } else {
- puts $lock2
- set ret ERROR
- }
- } else {
- error_check_good lockget:$obj_id [is_substr $lock2 $myenv] 1
- }
-
- # Now release the first lock
- error_check_good lockput:$lock1 [$lock1 put] 0
-
- if {$ret == 1} {
- error_check_bad lockget:$obj_id $lock2 NULL
- error_check_good lockget:$obj_id [is_substr $lock2 $myenv] 1
- error_check_good lockput:$lock2 [$lock2 put] 0
- }
- return $ret
-}
-
-# This routine will create massive deadlocks.
-# Each locker will get a readlock on obj_id, then sleep, and
-# then try to upgrade the readlock to a write lock.
-# When the lock is finally granted, we release our first lock and
-# return 1 if we got both locks and DEADLOCK if we deadlocked.
-# The results here should be that 1 locker succeeds in getting all
-# the locks and everyone else deadlocks.
-proc clump { myenv locker_id obj_id num } {
- source ./include.tcl
-
- set obj_id 10
- if {[catch {$myenv lock_get read $locker_id $obj_id} lock1] != 0} {
- puts $lock1
- return ERROR
- } else {
- error_check_good lockget:$obj_id \
- [is_valid_lock $lock1 $myenv] TRUE
- }
-
- tclsleep 30
- set ret 1
- if {[catch {$myenv lock_get write $locker_id $obj_id} lock2] != 0} {
- if {[string match "*DEADLOCK*" $lock2] == 1} {
- set ret DEADLOCK
- } else {
- set ret ERROR
- }
- } else {
- error_check_good \
- lockget:$obj_id [is_valid_lock $lock2 $myenv] TRUE
- }
-
- # Now release the first lock
- error_check_good lockput:$lock1 [$lock1 put] 0
-
- if {$ret == 1} {
- error_check_good \
- lockget:$obj_id [is_valid_lock $lock2 $myenv] TRUE
- error_check_good lockput:$lock2 [$lock2 put] 0
- }
- return $ret
- }
-
-proc dead_check { t procs timeout dead clean other } {
- error_check_good $t:$procs:other $other 0
- switch $t {
- ring {
- # with timeouts the number of deadlocks is unpredictable
- if { $timeout != 0 && $dead > 1 } {
- set clean [ expr $clean + $dead - 1]
- set dead 1
- }
- error_check_good $t:$procs:deadlocks $dead 1
- error_check_good $t:$procs:success $clean \
- [expr $procs - 1]
- }
- clump {
- error_check_good $t:$procs:deadlocks $dead \
- [expr $procs - 1]
- error_check_good $t:$procs:success $clean 1
- }
- oldyoung {
- error_check_good $t:$procs:deadlocks $dead 1
- error_check_good $t:$procs:success $clean \
- [expr $procs - 1]
- }
- minlocks {
- error_check_good $t:$procs:deadlocks $dead 1
- error_check_good $t:$procs:success $clean \
- [expr $procs - 1]
- }
- maxlocks {
- error_check_good $t:$procs:deadlocks $dead 1
- error_check_good $t:$procs:success $clean \
- [expr $procs - 1]
- }
- minwrites {
- error_check_good $t:$procs:deadlocks $dead 1
- error_check_good $t:$procs:success $clean \
- [expr $procs - 1]
- }
- default {
- error "Test $t not implemented"
- }
- }
-}
-
-proc rdebug { id op where } {
- global recd_debug
- global recd_id
- global recd_op
-
- set recd_debug $where
- set recd_id $id
- set recd_op $op
-}
-
-proc rtag { msg id } {
- set tag [lindex $msg 0]
- set tail [expr [string length $tag] - 2]
- set tag [string range $tag $tail $tail]
- if { $id == $tag } {
- return 1
- } else {
- return 0
- }
-}
-
-proc zero_list { n } {
- set ret ""
- while { $n > 0 } {
- lappend ret 0
- incr n -1
- }
- return $ret
-}
-
-proc check_dump { k d } {
- puts "key: $k data: $d"
-}
-
-proc reverse { s } {
- set res ""
- for { set i 0 } { $i < [string length $s] } { incr i } {
- set res "[string index $s $i]$res"
- }
-
- return $res
-}
-
-#
-# This is a internal only proc. All tests should use 'is_valid_db' etc.
-#
-proc is_valid_widget { w expected } {
- # First N characters must match "expected"
- set l [string length $expected]
- incr l -1
- if { [string compare [string range $w 0 $l] $expected] != 0 } {
- return $w
- }
-
- # Remaining characters must be digits
- incr l 1
- for { set i $l } { $i < [string length $w] } { incr i} {
- set c [string index $w $i]
- if { $c < "0" || $c > "9" } {
- return $w
- }
- }
-
- return TRUE
-}
-
-proc is_valid_db { db } {
- return [is_valid_widget $db db]
-}
-
-proc is_valid_env { env } {
- return [is_valid_widget $env env]
-}
-
-proc is_valid_cursor { dbc db } {
- return [is_valid_widget $dbc $db.c]
-}
-
-proc is_valid_lock { lock env } {
- return [is_valid_widget $lock $env.lock]
-}
-
-proc is_valid_logc { logc env } {
- return [is_valid_widget $logc $env.logc]
-}
-
-proc is_valid_mpool { mpool env } {
- return [is_valid_widget $mpool $env.mp]
-}
-
-proc is_valid_page { page mpool } {
- return [is_valid_widget $page $mpool.pg]
-}
-
-proc is_valid_txn { txn env } {
- return [is_valid_widget $txn $env.txn]
-}
-
-proc is_valid_mutex { m env } {
- return [is_valid_widget $m $env.mutex]
-}
-
-proc is_valid_lock {l env} {
- return [is_valid_widget $l $env.lock]
-}
-
-proc is_valid_locker {l } {
- return [is_valid_widget $l ""]
-}
-
-proc send_cmd { fd cmd {sleep 2}} {
- source ./include.tcl
-
- puts $fd "if \[catch {set v \[$cmd\] ; puts \$v} ret\] { \
- puts \"FAIL: \$ret\" \
- }"
- puts $fd "flush stdout"
- flush $fd
- berkdb debug_check
- tclsleep $sleep
-
- set r [rcv_result $fd]
- return $r
-}
-
-proc rcv_result { fd } {
- set r [gets $fd result]
- error_check_bad remote_read $r -1
-
- return $result
-}
-
-proc send_timed_cmd { fd rcv_too cmd } {
- set c1 "set start \[timestamp -r\]; "
- set c2 "puts \[expr \[timestamp -r\] - \$start\]"
- set full_cmd [concat $c1 $cmd ";" $c2]
-
- puts $fd $full_cmd
- puts $fd "flush stdout"
- flush $fd
- return 0
-}
-
-#
-# The rationale behind why we have *two* "data padding" routines is outlined
-# below:
-#
-# Both pad_data and chop_data truncate data that is too long. However,
-# pad_data also adds the pad character to pad data out to the fixed length
-# record length.
-#
-# Which routine you call does not depend on the length of the data you're
-# using, but on whether you're doing a put or a get. When we do a put, we
-# have to make sure the data isn't longer than the size of a record because
-# otherwise we'll get an error (use chop_data). When we do a get, we want to
-# check that db padded everything correctly (use pad_data on the value against
-# which we are comparing).
-#
-# We don't want to just use the pad_data routine for both purposes, because
-# we want to be able to test whether or not db is padding correctly. For
-# example, the queue access method had a bug where when a record was
-# overwritten (*not* a partial put), only the first n bytes of the new entry
-# were written, n being the new entry's (unpadded) length. So, if we did
-# a put with key,value pair (1, "abcdef") and then a put (1, "z"), we'd get
-# back (1,"zbcdef"). If we had used pad_data instead of chop_data, we would
-# have gotten the "correct" result, but we wouldn't have found this bug.
-proc chop_data {method data} {
- global fixed_len
-
- if {[is_fixed_length $method] == 1 && \
- [string length $data] > $fixed_len} {
- return [eval {binary format a$fixed_len $data}]
- } else {
- return $data
- }
-}
-
-proc pad_data {method data} {
- global fixed_len
-
- if {[is_fixed_length $method] == 1} {
- return [eval {binary format a$fixed_len $data}]
- } else {
- return $data
- }
-}
-
-proc make_fixed_length {method data {pad 0}} {
- global fixed_len
- global fixed_pad
-
- if {[is_fixed_length $method] == 1} {
- if {[string length $data] > $fixed_len } {
- error_check_bad make_fixed_len:TOO_LONG 1 1
- }
- while { [string length $data] < $fixed_len } {
- set data [format $data%c $fixed_pad]
- }
- }
- return $data
-}
-
-proc make_gid {data} {
- while { [string length $data] < 127 } {
- set data [format ${data}0]
- }
- return $data
-}
-
-proc make_gid {data} {
- while { [string length $data] < 128 } {
- set data [format ${data}0]
- }
- return $data
-}
-
-# shift data for partial
-# pad with fixed pad (which is NULL)
-proc partial_shift { data offset direction} {
- global fixed_len
-
- set len [expr $fixed_len - 1]
-
- if { [string compare $direction "right"] == 0 } {
- for { set i 1} { $i <= $offset } {incr i} {
- set data [binary format x1a$len $data]
- }
- } elseif { [string compare $direction "left"] == 0 } {
- for { set i 1} { $i <= $offset } {incr i} {
- set data [string range $data 1 end]
- set data [binary format a$len $data]
- }
- }
- return $data
-}
-
-# string compare does not always work to compare
-# this data, nor does expr (==)
-# specialized routine for comparison
-# (for use in fixed len recno and q)
-proc binary_compare { data1 data2 } {
- if { [string length $data1] != [string length $data2] || \
- [string compare -length \
- [string length $data1] $data1 $data2] != 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc convert_method { method } {
- switch -- $method {
- -btree -
- -dbtree -
- dbtree -
- -ddbtree -
- ddbtree -
- -rbtree -
- BTREE -
- DB_BTREE -
- DB_RBTREE -
- RBTREE -
- bt -
- btree -
- db_btree -
- db_rbtree -
- rbt -
- rbtree { return "-btree" }
-
- -dhash -
- -ddhash -
- -hash -
- DB_HASH -
- HASH -
- dhash -
- ddhash -
- db_hash -
- h -
- hash { return "-hash" }
-
- -queue -
- DB_QUEUE -
- QUEUE -
- db_queue -
- q -
- qam -
- queue { return "-queue" }
-
- -queueextent -
- QUEUEEXTENT -
- qe -
- qamext -
- -queueext -
- queueextent -
- queueext { return "-queue" }
-
- -frecno -
- -recno -
- -rrecno -
- DB_FRECNO -
- DB_RECNO -
- DB_RRECNO -
- FRECNO -
- RECNO -
- RRECNO -
- db_frecno -
- db_recno -
- db_rrecno -
- frec -
- frecno -
- rec -
- recno -
- rrec -
- rrecno { return "-recno" }
-
- default { error "FAIL:[timestamp] $method: unknown method" }
- }
-}
-
-proc split_encargs { largs encargsp } {
- global encrypt
- upvar $encargsp e
- set eindex [lsearch $largs "-encrypta*"]
- if { $eindex == -1 } {
- set e ""
- set newl $largs
- } else {
- set eend [expr $eindex + 1]
- set e [lrange $largs $eindex $eend]
- set newl [lreplace $largs $eindex $eend "-encrypt"]
- }
- return $newl
-}
-
-proc convert_encrypt { largs } {
- global encrypt
- global old_encrypt
-
- set old_encrypt $encrypt
- set encrypt 0
- if { [lsearch $largs "-encrypt*"] != -1 } {
- set encrypt 1
- }
-}
-
-# If recno-with-renumbering or btree-with-renumbering is specified, then
-# fix the arguments to specify the DB_RENUMBER/DB_RECNUM option for the
-# -flags argument.
-proc convert_args { method {largs ""} } {
- global fixed_len
- global fixed_pad
- global gen_upgrade
- global upgrade_be
- source ./include.tcl
-
- if { [string first - $largs] == -1 &&\
- [string compare $largs ""] != 0 &&\
- [string compare $largs {{}}] != 0 } {
- set errstring "args must contain a hyphen; does this test\
- have no numeric args?"
- puts "FAIL:[timestamp] $errstring (largs was $largs)"
- return -code return
- }
-
- convert_encrypt $largs
- if { $gen_upgrade == 1 && $upgrade_be == 1 } {
- append largs " -lorder 4321 "
- } elseif { $gen_upgrade == 1 && $upgrade_be != 1 } {
- append largs " -lorder 1234 "
- }
-
- if { [is_rrecno $method] == 1 } {
- append largs " -renumber "
- } elseif { [is_rbtree $method] == 1 } {
- append largs " -recnum "
- } elseif { [is_dbtree $method] == 1 } {
- append largs " -dup "
- } elseif { [is_ddbtree $method] == 1 } {
- append largs " -dup "
- append largs " -dupsort "
- } elseif { [is_dhash $method] == 1 } {
- append largs " -dup "
- } elseif { [is_ddhash $method] == 1 } {
- append largs " -dup "
- append largs " -dupsort "
- } elseif { [is_queueext $method] == 1 } {
- append largs " -extent 2 "
- }
-
- if {[is_fixed_length $method] == 1} {
- append largs " -len $fixed_len -pad $fixed_pad "
- }
- return $largs
-}
-
-proc is_btree { method } {
- set names { -btree BTREE DB_BTREE bt btree }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_dbtree { method } {
- set names { -dbtree dbtree }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_ddbtree { method } {
- set names { -ddbtree ddbtree }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_rbtree { method } {
- set names { -rbtree rbtree RBTREE db_rbtree DB_RBTREE rbt }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_recno { method } {
- set names { -recno DB_RECNO RECNO db_recno rec recno}
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_rrecno { method } {
- set names { -rrecno rrecno RRECNO db_rrecno DB_RRECNO rrec }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_frecno { method } {
- set names { -frecno frecno frec FRECNO db_frecno DB_FRECNO}
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_hash { method } {
- set names { -hash DB_HASH HASH db_hash h hash }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_dhash { method } {
- set names { -dhash dhash }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_ddhash { method } {
- set names { -ddhash ddhash }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_queue { method } {
- if { [is_queueext $method] == 1 } {
- return 1
- }
-
- set names { -queue DB_QUEUE QUEUE db_queue q queue qam }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_queueext { method } {
- set names { -queueextent queueextent QUEUEEXTENT qe qamext \
- queueext -queueext }
- if { [lsearch $names $method] >= 0 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_record_based { method } {
- if { [is_recno $method] || [is_frecno $method] ||
- [is_rrecno $method] || [is_queue $method] } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_fixed_length { method } {
- if { [is_queue $method] || [is_frecno $method] } {
- return 1
- } else {
- return 0
- }
-}
-
-# Sort lines in file $in and write results to file $out.
-# This is a more portable alternative to execing the sort command,
-# which has assorted issues on NT [#1576].
-# The addition of a "-n" argument will sort numerically.
-proc filesort { in out { arg "" } } {
- set i [open $in r]
-
- set ilines {}
- while { [gets $i line] >= 0 } {
- lappend ilines $line
- }
-
- if { [string compare $arg "-n"] == 0 } {
- set olines [lsort -integer $ilines]
- } else {
- set olines [lsort $ilines]
- }
-
- close $i
-
- set o [open $out w]
- foreach line $olines {
- puts $o $line
- }
-
- close $o
-}
-
-# Print lines up to the nth line of infile out to outfile, inclusive.
-# The optional beg argument tells us where to start.
-proc filehead { n infile outfile { beg 0 } } {
- set in [open $infile r]
- set out [open $outfile w]
-
- # Sed uses 1-based line numbers, and so we do too.
- for { set i 1 } { $i < $beg } { incr i } {
- if { [gets $in junk] < 0 } {
- break
- }
- }
-
- for { } { $i <= $n } { incr i } {
- if { [gets $in line] < 0 } {
- break
- }
- puts $out $line
- }
-
- close $in
- close $out
-}
-
-# Remove file (this replaces $RM).
-# Usage: fileremove filenames =~ rm; fileremove -f filenames =~ rm -rf.
-proc fileremove { args } {
- set forceflag ""
- foreach a $args {
- if { [string first - $a] == 0 } {
- # It's a flag. Better be f.
- if { [string first f $a] != 1 } {
- return -code error "bad flag to fileremove"
- } else {
- set forceflag "-force"
- }
- } else {
- eval {file delete $forceflag $a}
- }
- }
-}
-
-proc findfail { args } {
- foreach a $args {
- if { [file exists $a] == 0 } {
- continue
- }
- set f [open $a r]
- while { [gets $f line] >= 0 } {
- if { [string first FAIL $line] == 0 } {
- close $f
- return 1
- }
- }
- close $f
- }
- return 0
-}
-
-# Sleep for s seconds.
-proc tclsleep { s } {
- # On Windows, the system time-of-day clock may update as much
- # as 55 ms late due to interrupt timing. Don't take any
- # chances; sleep extra-long so that when tclsleep 1 returns,
- # it's guaranteed to be a new second.
- after [expr $s * 1000 + 56]
-}
-
-# Kill a process.
-proc tclkill { id } {
- source ./include.tcl
-
- while { [ catch {exec $KILL -0 $id} ] == 0 } {
- catch {exec $KILL -9 $id}
- tclsleep 5
- }
-}
-
-# Compare two files, a la diff. Returns 1 if non-identical, 0 if identical.
-proc filecmp { file_a file_b } {
- set fda [open $file_a r]
- set fdb [open $file_b r]
-
- set nra 0
- set nrb 0
-
- # The gets can't be in the while condition because we'll
- # get short-circuit evaluated.
- while { $nra >= 0 && $nrb >= 0 } {
- set nra [gets $fda aline]
- set nrb [gets $fdb bline]
-
- if { $nra != $nrb || [string compare $aline $bline] != 0} {
- close $fda
- close $fdb
- return 1
- }
- }
-
- close $fda
- close $fdb
- return 0
-}
-
-# Give two SORTED files, one of which is a complete superset of the other,
-# extract out the unique portions of the superset and put them in
-# the given outfile.
-proc fileextract { superset subset outfile } {
- set sup [open $superset r]
- set sub [open $subset r]
- set outf [open $outfile w]
-
- # The gets can't be in the while condition because we'll
- # get short-circuit evaluated.
- set nrp [gets $sup pline]
- set nrb [gets $sub bline]
- while { $nrp >= 0 } {
- if { $nrp != $nrb || [string compare $pline $bline] != 0} {
- puts $outf $pline
- } else {
- set nrb [gets $sub bline]
- }
- set nrp [gets $sup pline]
- }
-
- close $sup
- close $sub
- close $outf
- return 0
-}
-
-# Verify all .db files in the specified directory.
-proc verify_dir { {directory $testdir} \
- { pref "" } { noredo 0 } { quiet 0 } { nodump 0 } { cachesize 0 } } {
- global encrypt
- global passwd
-
- # If we're doing database verification between tests, we don't
- # want to do verification twice without an intervening cleanup--some
- # test was skipped. Always verify by default (noredo == 0) so
- # that explicit calls to verify_dir during tests don't require
- # cleanup commands.
- if { $noredo == 1 } {
- if { [file exists $directory/NOREVERIFY] == 1 } {
- if { $quiet == 0 } {
- puts "Skipping verification."
- }
- return
- }
- set f [open $directory/NOREVERIFY w]
- close $f
- }
-
- if { [catch {glob $directory/*.db} dbs] != 0 } {
- # No files matched
- return
- }
- if { [file exists /dev/stderr] == 1 } {
- set errfilearg "-errfile /dev/stderr "
- } else {
- set errfilearg ""
- }
- set errpfxarg {-errpfx "FAIL: verify" }
- set errarg $errfilearg$errpfxarg
- set ret 0
-
- # Open an env, so that we have a large enough cache. Pick
- # a fairly generous default if we haven't specified something else.
-
- if { $cachesize == 0 } {
- set cachesize [expr 1024 * 1024]
- }
- set encarg ""
- if { $encrypt != 0 } {
- set encarg "-encryptaes $passwd"
- }
-
- set env [eval {berkdb_env -create -private} $encarg \
- {-cachesize [list 0 $cachesize 0]}]
- set earg " -env $env $errarg "
-
- foreach db $dbs {
- if { [catch {eval {berkdb dbverify} $earg $db} res] != 0 } {
- puts $res
- puts "FAIL:[timestamp] Verification of $db failed."
- set ret 1
- continue
- } else {
- error_check_good verify:$db $res 0
- if { $quiet == 0 } {
- puts "${pref}Verification of $db succeeded."
- }
- }
-
- # Skip the dump if it's dangerous to do it.
- if { $nodump == 0 } {
- if { [catch {eval dumploadtest $db} res] != 0 } {
- puts $res
- puts "FAIL:[timestamp] Dump/load of $db failed."
- set ret 1
- continue
- } else {
- error_check_good dumpload:$db $res 0
- if { $quiet == 0 } {
- puts \
- "${pref}Dump/load of $db succeeded."
- }
- }
- }
- }
-
- error_check_good vrfyenv_close [$env close] 0
-
- return $ret
-}
-
-# Is the database handle in $db a master database containing subdbs?
-proc check_for_subdbs { db } {
- set stat [$db stat]
- for { set i 0 } { [string length [lindex $stat $i]] > 0 } { incr i } {
- set elem [lindex $stat $i]
- if { [string compare [lindex $elem 0] Flags] == 0 } {
- # This is the list of flags; look for
- # "subdatabases".
- if { [is_substr [lindex $elem 1] subdatabases] } {
- return 1
- }
- }
- }
- return 0
-}
-
-proc dumploadtest { db {subdb ""} } {
- global util_path
- global encrypt
- global passwd
-
- set newdbname $db-dumpload.db
-
- # Open original database, or subdb if we have one.
- set dbarg ""
- set utilflag ""
- if { $encrypt != 0 } {
- set dbarg "-encryptany $passwd"
- set utilflag "-P $passwd"
- }
- set max_size [expr 15 * 1024]
- if { [string length $subdb] == 0 } {
- set olddb [eval {berkdb_open -rdonly} $dbarg $db]
- error_check_good olddb($db) [is_valid_db $olddb] TRUE
-
- if { [check_for_subdbs $olddb] } {
- # If $db has subdatabases, dumploadtest each one
- # separately.
- set oc [$olddb cursor]
- error_check_good orig_cursor($db) \
- [is_valid_cursor $oc $olddb] TRUE
-
- for { set dbt [$oc get -first] } \
- { [llength $dbt] > 0 } \
- { set dbt [$oc get -next] } {
- set subdb [lindex [lindex $dbt 0] 0]
-
- # Skip any files over this size. The problem is
- # that when when we dump/load it, files that are
- # too big result in E2BIG errors because the
- # arguments to db_dump are too long. 64K seems
- # to be the limit (on FreeBSD), cut it to 32K
- # just to be safe.
- if {[string length $subdb] < $max_size && \
- [string length $subdb] != 0} {
- dumploadtest $db $subdb
- }
- }
- error_check_good oldcclose [$oc close] 0
- error_check_good olddbclose [$olddb close] 0
- return 0
- }
- # No subdatabase
- set have_subdb 0
- } else {
- set olddb [eval {berkdb_open -rdonly} $dbarg {$db $subdb}]
- error_check_good olddb($db) [is_valid_db $olddb] TRUE
-
- set have_subdb 1
- }
-
- # Do a db_dump test. Dump/load each file.
- if { $have_subdb } {
- set rval [catch {eval {exec $util_path/db_dump} $utilflag -k \
- -s {$subdb} $db | \
- $util_path/db_load $utilflag $newdbname} res]
- } else {
- set rval [catch {eval {exec $util_path/db_dump} $utilflag -k \
- $db | $util_path/db_load $utilflag $newdbname} res]
- }
- error_check_good db_dump/db_load($db:$res) $rval 0
-
- # Now open new database.
- set newdb [eval {berkdb_open -rdonly} $dbarg $newdbname]
- error_check_good newdb($db) [is_valid_db $newdb] TRUE
-
- # Walk through olddb and newdb and make sure their contents
- # are identical.
- set oc [$olddb cursor]
- set nc [$newdb cursor]
- error_check_good orig_cursor($db) \
- [is_valid_cursor $oc $olddb] TRUE
- error_check_good new_cursor($db) \
- [is_valid_cursor $nc $newdb] TRUE
-
- for { set odbt [$oc get -first] } { [llength $odbt] > 0 } \
- { set odbt [$oc get -next] } {
- set ndbt [$nc get -get_both \
- [lindex [lindex $odbt 0] 0] [lindex [lindex $odbt 0] 1]]
- error_check_good db_compare($db/$newdbname) $ndbt $odbt
- }
-
- for { set ndbt [$nc get -first] } { [llength $ndbt] > 0 } \
- { set ndbt [$nc get -next] } {
- set odbt [$oc get -get_both \
- [lindex [lindex $ndbt 0] 0] [lindex [lindex $ndbt 0] 1]]
- error_check_good db_compare_back($db) $odbt $ndbt
- }
-
- error_check_good orig_cursor_close($db) [$oc close] 0
- error_check_good new_cursor_close($db) [$nc close] 0
-
- error_check_good orig_db_close($db) [$olddb close] 0
- error_check_good new_db_close($db) [$newdb close] 0
-
- eval berkdb dbremove $dbarg $newdbname
-
- return 0
-}
-
-# Generate randomly ordered, guaranteed-unique four-character strings that can
-# be used to differentiate duplicates without creating duplicate duplicates.
-# (test031 & test032) randstring_init is required before the first call to
-# randstring and initializes things for up to $i distinct strings; randstring
-# gets the next string.
-proc randstring_init { i } {
- global rs_int_list alphabet
-
- # Fail if we can't generate sufficient unique strings.
- if { $i > [expr 26 * 26 * 26 * 26] } {
- set errstring\
- "Duplicate set too large for random string generator"
- puts "FAIL:[timestamp] $errstring"
- return -code return $errstring
- }
-
- set rs_int_list {}
-
- # generate alphabet array
- for { set j 0 } { $j < 26 } { incr j } {
- set a($j) [string index $alphabet $j]
- }
-
- # Generate a list with $i elements, { aaaa, aaab, ... aaaz, aaba ...}
- for { set d1 0 ; set j 0 } { $d1 < 26 && $j < $i } { incr d1 } {
- for { set d2 0 } { $d2 < 26 && $j < $i } { incr d2 } {
- for { set d3 0 } { $d3 < 26 && $j < $i } { incr d3 } {
- for { set d4 0 } { $d4 < 26 && $j < $i } \
- { incr d4 } {
- lappend rs_int_list \
- $a($d1)$a($d2)$a($d3)$a($d4)
- incr j
- }
- }
- }
- }
-
- # Randomize the list.
- set rs_int_list [randomize_list $rs_int_list]
-}
-
-# Randomize a list. Returns a randomly-reordered copy of l.
-proc randomize_list { l } {
- set i [llength $l]
-
- for { set j 0 } { $j < $i } { incr j } {
- # Pick a random element from $j to the end
- set k [berkdb random_int $j [expr $i - 1]]
-
- # Swap it with element $j
- set t1 [lindex $l $j]
- set t2 [lindex $l $k]
-
- set l [lreplace $l $j $j $t2]
- set l [lreplace $l $k $k $t1]
- }
-
- return $l
-}
-
-proc randstring {} {
- global rs_int_list
-
- if { [info exists rs_int_list] == 0 || [llength $rs_int_list] == 0 } {
- set errstring "randstring uninitialized or used too often"
- puts "FAIL:[timestamp] $errstring"
- return -code return $errstring
- }
-
- set item [lindex $rs_int_list 0]
- set rs_int_list [lreplace $rs_int_list 0 0]
-
- return $item
-}
-
-# Takes a variable-length arg list, and returns a list containing the list of
-# the non-hyphenated-flag arguments, followed by a list of each alphanumeric
-# flag it finds.
-proc extractflags { args } {
- set inflags 1
- set flags {}
- while { $inflags == 1 } {
- set curarg [lindex $args 0]
- if { [string first "-" $curarg] == 0 } {
- set i 1
- while {[string length [set f \
- [string index $curarg $i]]] > 0 } {
- incr i
- if { [string compare $f "-"] == 0 } {
- set inflags 0
- break
- } else {
- lappend flags $f
- }
- }
- set args [lrange $args 1 end]
- } else {
- set inflags 0
- }
- }
- return [list $args $flags]
-}
-
-# Wrapper for berkdb open, used throughout the test suite so that we can
-# set an errfile/errpfx as appropriate.
-proc berkdb_open { args } {
- global is_envmethod
-
- if { [info exists is_envmethod] == 0 } {
- set is_envmethod 0
- }
-
- set errargs {}
- if { $is_envmethod == 0 && [file exists /dev/stderr] == 1 } {
- append errargs " -errfile /dev/stderr "
- append errargs " -errpfx \\F\\A\\I\\L"
- }
-
- eval {berkdb open} $errargs $args
-}
-
-# Version without errpfx/errfile, used when we're expecting a failure.
-proc berkdb_open_noerr { args } {
- eval {berkdb open} $args
-}
-
-# Wrapper for berkdb env, used throughout the test suite so that we can
-# set an errfile/errpfx as appropriate.
-proc berkdb_env { args } {
- global is_envmethod
-
- if { [info exists is_envmethod] == 0 } {
- set is_envmethod 0
- }
-
- set errargs {}
- if { $is_envmethod == 0 && [file exists /dev/stderr] == 1 } {
- append errargs " -errfile /dev/stderr "
- append errargs " -errpfx \\F\\A\\I\\L"
- }
-
- eval {berkdb env} $errargs $args
-}
-
-# Version without errpfx/errfile, used when we're expecting a failure.
-proc berkdb_env_noerr { args } {
- eval {berkdb env} $args
-}
-
-proc check_handles { {outf stdout} } {
- global ohandles
-
- set handles [berkdb handles]
- if {[llength $handles] != [llength $ohandles]} {
- puts $outf "WARNING: Open handles during cleanup: $handles"
- }
- set ohandles $handles
-}
-
-proc open_handles { } {
- return [llength [berkdb handles]]
-}
-
-proc move_file_extent { dir dbfile tag op } {
- set curfiles [get_extfiles $dir $dbfile ""]
- set tagfiles [get_extfiles $dir $dbfile $tag]
- #
- # We want to copy or rename only those that have been saved,
- # so delete all the current extent files so that we don't
- # end up with extra ones we didn't restore from our saved ones.
- foreach extfile $curfiles {
- file delete -force $extfile
- }
- foreach extfile $tagfiles {
- set i [string last "." $extfile]
- incr i
- set extnum [string range $extfile $i end]
- set dbq [make_ext_filename $dir $dbfile $extnum]
- #
- # We can either copy or rename
- #
- file $op -force $extfile $dbq
- }
-}
-
-proc copy_extent_file { dir dbfile tag { op copy } } {
- set files [get_extfiles $dir $dbfile ""]
- foreach extfile $files {
- set i [string last "." $extfile]
- incr i
- set extnum [string range $extfile $i end]
- file $op -force $extfile $dir/__dbq.$dbfile.$tag.$extnum
- }
-}
-
-proc get_extfiles { dir dbfile tag } {
- if { $tag == "" } {
- set filepat $dir/__dbq.$dbfile.\[0-9\]*
- } else {
- set filepat $dir/__dbq.$dbfile.$tag.\[0-9\]*
- }
- return [glob -nocomplain -- $filepat]
-}
-
-proc make_ext_filename { dir dbfile extnum } {
- return $dir/__dbq.$dbfile.$extnum
-}
-
-# All pids for Windows 9X are negative values. When we want to have
-# unsigned int values, unique to the process, we'll take the absolute
-# value of the pid. This avoids unsigned/signed mistakes, yet
-# guarantees uniqueness, since each system has pids that are all
-# either positive or negative.
-#
-proc sanitized_pid { } {
- set mypid [pid]
- if { $mypid < 0 } {
- set mypid [expr - $mypid]
- }
- puts "PID: [pid] $mypid\n"
- return $mypid
-}
-
-#
-# Extract the page size field from a stat record. Return -1 if
-# none is found.
-#
-proc get_pagesize { stat } {
- foreach field $stat {
- set title [lindex $field 0]
- if {[string compare $title "Page size"] == 0} {
- return [lindex $field 1]
- }
- }
- return -1
-}
-
-# Get a globbed list of source files and executables to use as large
-# data items in overflow page tests.
-proc get_file_list { {small 0} } {
- global is_windows_test
- global is_qnx_test
- global src_root
-
- if { $is_qnx_test } {
- set small 1
- }
- if { $small && $is_windows_test } {
- return [glob $src_root/*/*.c */env*.obj]
- } elseif { $small } {
- return [glob $src_root/*/*.c ./env*.o]
- } elseif { $is_windows_test } {
- return \
- [glob $src_root/*/*.c */*.obj */libdb??.dll */libdb??d.dll]
- } else {
- return [glob $src_root/*/*.c ./*.o ./.libs/libdb-?.?.s?]
- }
-}
-
-proc is_cdbenv { env } {
- set sys [$env attributes]
- if { [lsearch $sys -cdb] != -1 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_lockenv { env } {
- set sys [$env attributes]
- if { [lsearch $sys -lock] != -1 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_logenv { env } {
- set sys [$env attributes]
- if { [lsearch $sys -log] != -1 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_mpoolenv { env } {
- set sys [$env attributes]
- if { [lsearch $sys -mpool] != -1 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_rpcenv { env } {
- set sys [$env attributes]
- if { [lsearch $sys -rpc] != -1 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_secenv { env } {
- set sys [$env attributes]
- if { [lsearch $sys -crypto] != -1 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc is_txnenv { env } {
- set sys [$env attributes]
- if { [lsearch $sys -txn] != -1 } {
- return 1
- } else {
- return 0
- }
-}
-
-proc get_home { env } {
- set sys [$env attributes]
- set h [lsearch $sys -home]
- if { $h == -1 } {
- return NULL
- }
- incr h
- return [lindex $sys $h]
-}
-
-proc reduce_dups { nent ndp } {
- upvar $nent nentries
- upvar $ndp ndups
-
- # If we are using a txnenv, assume it is using
- # the default maximum number of locks, cut back
- # so that we don't run out of locks. Reduce
- # by 25% until we fit.
- #
- while { [expr $nentries * $ndups] > 5000 } {
- set nentries [expr ($nentries / 4) * 3]
- set ndups [expr ($ndups / 4) * 3]
- }
-}
-
-proc getstats { statlist field } {
- foreach pair $statlist {
- set txt [lindex $pair 0]
- if { [string equal $txt $field] == 1 } {
- return [lindex $pair 1]
- }
- }
- return -1
-}
-
-proc big_endian { } {
- global tcl_platform
- set e $tcl_platform(byteOrder)
- if { [string compare $e littleEndian] == 0 } {
- return 0
- } elseif { [string compare $e bigEndian] == 0 } {
- return 1
- } else {
- error "FAIL: Unknown endianness $e"
- }
-}
diff --git a/bdb/test/txn001.tcl b/bdb/test/txn001.tcl
deleted file mode 100644
index 406ef35751c..00000000000
--- a/bdb/test/txn001.tcl
+++ /dev/null
@@ -1,116 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn001.tcl,v 11.35 2002/05/10 17:44:28 sue Exp $
-#
-
-# TEST txn001
-# TEST Begin, commit, abort testing.
-proc txn001 { {tnum "01"} { max 1024 } { ntxns 50 } } {
- source ./include.tcl
- global txn_curid
- global txn_maxid
-
- puts -nonewline "Txn0$tnum: Basic begin, commit, abort"
-
- if { $tnum != "01"} {
- puts " (with ID wrap)"
- } else {
- puts ""
- }
-
- # Open environment
- env_cleanup $testdir
-
- set env [eval {berkdb_env -create -mode 0644 -txn \
- -txn_max $max -home $testdir}]
- error_check_good evn_open [is_valid_env $env] TRUE
- error_check_good txn_id_set \
- [ $env txn_id_set $txn_curid $txn_maxid ] 0
- txn001_suba $ntxns $env $tnum
- txn001_subb $ntxns $env $tnum
- txn001_subc $ntxns $env $tnum
- # Close and unlink the file
- error_check_good env_close:$env [$env close] 0
-}
-
-proc txn001_suba { ntxns env tnum } {
- source ./include.tcl
-
- # We will create a bunch of transactions and commit them.
- set txn_list {}
- set tid_list {}
- puts "\tTxn0$tnum.a: Beginning/Committing $ntxns Transactions in $env"
- for { set i 0 } { $i < $ntxns } { incr i } {
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
-
- lappend txn_list $txn
-
- set tid [$txn id]
- error_check_good tid_check [lsearch $tid_list $tid] -1
-
- lappend tid_list $tid
- }
-
- # Now commit them all
- foreach t $txn_list {
- error_check_good txn_commit:$t [$t commit] 0
- }
-}
-
-proc txn001_subb { ntxns env tnum } {
- # We will create a bunch of transactions and abort them.
- set txn_list {}
- set tid_list {}
- puts "\tTxn0$tnum.b: Beginning/Aborting Transactions"
- for { set i 0 } { $i < $ntxns } { incr i } {
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
-
- lappend txn_list $txn
-
- set tid [$txn id]
- error_check_good tid_check [lsearch $tid_list $tid] -1
-
- lappend tid_list $tid
- }
-
- # Now abort them all
- foreach t $txn_list {
- error_check_good txn_abort:$t [$t abort] 0
- }
-}
-
-proc txn001_subc { ntxns env tnum } {
- # We will create a bunch of transactions and commit them.
- set txn_list {}
- set tid_list {}
- puts "\tTxn0$tnum.c: Beginning/Prepare/Committing Transactions"
- for { set i 0 } { $i < $ntxns } { incr i } {
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
-
- lappend txn_list $txn
-
- set tid [$txn id]
- error_check_good tid_check [lsearch $tid_list $tid] -1
-
- lappend tid_list $tid
- }
-
- # Now prepare them all
- foreach t $txn_list {
- error_check_good txn_prepare:$t \
- [$t prepare [make_gid global:$t]] 0
- }
-
- # Now commit them all
- foreach t $txn_list {
- error_check_good txn_commit:$t [$t commit] 0
- }
-
-}
-
diff --git a/bdb/test/txn002.tcl b/bdb/test/txn002.tcl
deleted file mode 100644
index 5107472644d..00000000000
--- a/bdb/test/txn002.tcl
+++ /dev/null
@@ -1,91 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn002.tcl,v 11.38 2002/05/10 17:44:29 sue Exp $
-#
-
-# TEST txn002
-# TEST Verify that read-only transactions do not write log records.
-proc txn002 { {tnum "02" } { max 1024 } { ntxns 50 } } {
- source ./include.tcl
- global txn_curid
- global txn_maxid
-
- puts -nonewline "Txn0$tnum: Read-only transaction test ($max) ($ntxns)"
-
- if { $tnum != "02" } {
- puts " (with ID wrap)"
- } else {
- puts ""
- }
-
- env_cleanup $testdir
- set env [berkdb \
- env -create -mode 0644 -txn -txn_max $max -home $testdir]
- error_check_good dbenv [is_valid_env $env] TRUE
- error_check_good txn_id_set \
- [$env txn_id_set $txn_curid $txn_maxid ] 0
-
- # Save the current bytes in the log.
- set off_start [txn002_logoff $env]
-
- # We will create a bunch of transactions and commit them.
- set txn_list {}
- set tid_list {}
- puts "\tTxn0$tnum.a: Beginning/Committing Transactions"
- for { set i 0 } { $i < $ntxns } { incr i } {
- set txn [$env txn]
- error_check_good txn_begin [is_valid_txn $txn $env] TRUE
-
- lappend txn_list $txn
-
- set tid [$txn id]
- error_check_good tid_check [lsearch $tid_list $tid] -1
-
- lappend tid_list $tid
- }
- foreach t $txn_list {
- error_check_good txn_commit:$t [$t commit] 0
- }
-
- # Make sure we haven't written any new log records except
- # potentially some recycle records if we were wrapping txnids.
- set off_stop [txn002_logoff $env]
- if { $off_stop != $off_start } {
- txn002_recycle_only $testdir
- }
-
- error_check_good env_close [$env close] 0
-}
-
-proc txn002_logoff { env } {
- set stat [$env log_stat]
- foreach i $stat {
- foreach {txt val} $i {break}
- if { [string compare \
- $txt {Current log file offset}] == 0 } {
- return $val
- }
- }
-}
-
-# Make sure that the only log records found are txn_recycle records
-proc txn002_recycle_only { dir } {
- global util_path
-
- set tmpfile $dir/printlog.out
- set stat [catch {exec $util_path/db_printlog -h $dir > $tmpfile} ret]
- error_check_good db_printlog $stat 0
-
- set f [open $tmpfile r]
- while { [gets $f record] >= 0 } {
- set r [regexp {\[[^\]]*\]\[[^\]]*\]([^\:]*)\:} $record whl name]
- if { $r == 1 } {
- error_check_good record_type __txn_recycle $name
- }
- }
- close $f
- fileremove $tmpfile
-}
diff --git a/bdb/test/txn003.tcl b/bdb/test/txn003.tcl
deleted file mode 100644
index 71e450cf9ce..00000000000
--- a/bdb/test/txn003.tcl
+++ /dev/null
@@ -1,238 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn003.tcl,v 11.40 2002/09/05 17:23:08 sandstro Exp $
-#
-
-# TEST txn003
-# TEST Test abort/commit/prepare of txns with outstanding child txns.
-proc txn003 { {tnum "03"} } {
- source ./include.tcl
- global txn_curid
- global txn_maxid
-
- puts -nonewline "Txn0$tnum: Outstanding child transaction test"
-
- if { $tnum != "03" } {
- puts " (with ID wrap)"
- } else {
- puts ""
- }
- env_cleanup $testdir
- set testfile txn003.db
-
- set env_cmd "berkdb_env_noerr -create -txn -home $testdir"
- set env [eval $env_cmd]
- error_check_good dbenv [is_valid_env $env] TRUE
- error_check_good txn_id_set \
- [$env txn_id_set $txn_curid $txn_maxid] 0
-
- set oflags {-auto_commit -create -btree -mode 0644 -env $env $testfile}
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
-
- #
- # Put some data so that we can check commit or abort of child
- #
- set key 1
- set origdata some_data
- set newdata this_is_new_data
- set newdata2 some_other_new_data
-
- error_check_good db_put [$db put -auto_commit $key $origdata] 0
- error_check_good dbclose [$db close] 0
-
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
-
- txn003_check $db $key "Origdata" $origdata
-
- puts "\tTxn0$tnum.a: Parent abort"
- set parent [$env txn]
- error_check_good txn_begin [is_valid_txn $parent $env] TRUE
- set child [$env txn -parent $parent]
- error_check_good txn_begin [is_valid_txn $child $env] TRUE
- error_check_good db_put [$db put -txn $child $key $newdata] 0
- error_check_good parent_abort [$parent abort] 0
- txn003_check $db $key "parent_abort" $origdata
- # Check child handle is invalid
- set stat [catch {$child abort} ret]
- error_check_good child_handle $stat 1
- error_check_good child_h2 [is_substr $ret "invalid command name"] 1
-
- puts "\tTxn0$tnum.b: Parent commit"
- set parent [$env txn]
- error_check_good txn_begin [is_valid_txn $parent $env] TRUE
- set child [$env txn -parent $parent]
- error_check_good txn_begin [is_valid_txn $child $env] TRUE
- error_check_good db_put [$db put -txn $child $key $newdata] 0
- error_check_good parent_commit [$parent commit] 0
- txn003_check $db $key "parent_commit" $newdata
- # Check child handle is invalid
- set stat [catch {$child abort} ret]
- error_check_good child_handle $stat 1
- error_check_good child_h2 [is_substr $ret "invalid command name"] 1
- error_check_good dbclose [$db close] 0
- error_check_good env_close [$env close] 0
-
- #
- # Since the data check assumes what has come before, the 'commit'
- # operation must be last.
- #
- set hdr "\tTxn0$tnum"
- set rlist {
- {begin ".c"}
- {prepare ".d"}
- {abort ".e"}
- {commit ".f"}
- }
- set count 0
- foreach pair $rlist {
- incr count
- set op [lindex $pair 0]
- set msg [lindex $pair 1]
- set msg $hdr$msg
- txn003_body $env_cmd $testfile $testdir $key $newdata2 $msg $op
- set env [eval $env_cmd]
- error_check_good dbenv [is_valid_env $env] TRUE
-
- berkdb debug_check
- set db [eval {berkdb_open} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
- #
- # For prepare we'll then just
- # end up aborting after we test what we need to.
- # So set gooddata to the same as abort.
- switch $op {
- abort {
- set gooddata $newdata
- }
- begin {
- set gooddata $newdata
- }
- commit {
- set gooddata $newdata2
- }
- prepare {
- set gooddata $newdata
- }
- }
- txn003_check $db $key "parent_$op" $gooddata
- error_check_good dbclose [$db close] 0
- error_check_good env_close [$env close] 0
- }
-
- # We can't do the attempted child discard on Windows
- # because it will leave open files that can't be removed.
- # Skip the remainder of the test for Windows.
- if { $is_windows_test == 1 } {
- puts "Skipping remainder of test for Windows"
- return
- }
- puts "\tTxn0$tnum.g: Attempt child prepare"
- set env [eval $env_cmd]
- error_check_good dbenv [is_valid_env $env] TRUE
- berkdb debug_check
- set db [eval {berkdb_open_noerr} $oflags]
- error_check_good db_open [is_valid_db $db] TRUE
-
- set parent [$env txn]
- error_check_good txn_begin [is_valid_txn $parent $env] TRUE
- set child [$env txn -parent $parent]
- error_check_good txn_begin [is_valid_txn $child $env] TRUE
- error_check_good db_put [$db put -txn $child $key $newdata] 0
- set gid [make_gid child_prepare:$child]
- set stat [catch {$child prepare $gid} ret]
- error_check_good child_prepare $stat 1
- error_check_good child_prep_err [is_substr $ret "txn prepare"] 1
-
- puts "\tTxn0$tnum.h: Attempt child discard"
- set stat [catch {$child discard} ret]
- error_check_good child_discard $stat 1
-
- # We just panic'd the region, so the next operations will fail.
- # No matter, we still have to clean up all the handles.
-
- set stat [catch {$parent commit} ret]
- error_check_good parent_commit $stat 1
- error_check_good parent_commit:fail [is_substr $ret "DB_RUNRECOVERY"] 1
-
- set stat [catch {$db close} ret]
- error_check_good db_close $stat 1
- error_check_good db_close:fail [is_substr $ret "DB_RUNRECOVERY"] 1
-
- set stat [catch {$env close} ret]
- error_check_good env_close $stat 1
- error_check_good env_close:fail [is_substr $ret "DB_RUNRECOVERY"] 1
-}
-
-proc txn003_body { env_cmd testfile dir key newdata2 msg op } {
- source ./include.tcl
-
- berkdb debug_check
- sentinel_init
- set gidf $dir/gidfile
- fileremove -f $gidf
- set pidlist {}
- puts "$msg.0: Executing child script to prepare txns"
- berkdb debug_check
- set p [exec $tclsh_path $test_path/wrap.tcl txnscript.tcl \
- $testdir/txnout $env_cmd $testfile $gidf $key $newdata2 &]
- lappend pidlist $p
- watch_procs $pidlist 5
- set f1 [open $testdir/txnout r]
- set r [read $f1]
- puts $r
- close $f1
- fileremove -f $testdir/txnout
-
- berkdb debug_check
- puts -nonewline "$msg.1: Running recovery ... "
- flush stdout
- berkdb debug_check
- set env [eval $env_cmd "-recover"]
- error_check_good dbenv-recover [is_valid_env $env] TRUE
- puts "complete"
-
- puts "$msg.2: getting txns from txn_recover"
- set txnlist [$env txn_recover]
- error_check_good txnlist_len [llength $txnlist] 1
- set tpair [lindex $txnlist 0]
-
- set gfd [open $gidf r]
- set ret [gets $gfd parentgid]
- close $gfd
- set txn [lindex $tpair 0]
- set gid [lindex $tpair 1]
- if { $op == "begin" } {
- puts "$msg.2: $op new txn"
- } else {
- puts "$msg.2: $op parent"
- }
- error_check_good gidcompare $gid $parentgid
- if { $op == "prepare" } {
- set gid [make_gid prepare_recover:$txn]
- set stat [catch {$txn $op $gid} ret]
- error_check_good prep_error $stat 1
- error_check_good prep_err \
- [is_substr $ret "transaction already prepared"] 1
- error_check_good txn:prep_abort [$txn abort] 0
- } elseif { $op == "begin" } {
- set stat [catch {$env txn} ret]
- error_check_good begin_error $stat 1
- error_check_good begin_err \
- [is_substr $ret "not yet committed transactions is incomplete"] 1
- error_check_good txn:prep_abort [$txn abort] 0
- } else {
- error_check_good txn:$op [$txn $op] 0
- }
- error_check_good envclose [$env close] 0
-}
-
-proc txn003_check { db key msg gooddata } {
- set kd [$db get $key]
- set data [lindex [lindex $kd 0] 1]
- error_check_good $msg $data $gooddata
-}
diff --git a/bdb/test/txn004.tcl b/bdb/test/txn004.tcl
deleted file mode 100644
index 75e1b40043f..00000000000
--- a/bdb/test/txn004.tcl
+++ /dev/null
@@ -1,62 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn004.tcl,v 11.39 2002/05/15 17:14:06 sandstro Exp $
-#
-
-# TEST txn004
-# TEST Test of wraparound txnids (txn001)
-proc txn004 { } {
- source ./include.tcl
- global txn_curid
- global txn_maxid
-
- set orig_curid $txn_curid
- set orig_maxid $txn_maxid
- puts "\tTxn004.1: wraparound txnids"
- set txn_curid [expr $txn_maxid - 2]
- txn001 "04.1"
- puts "\tTxn004.2: closer wraparound txnids"
- set txn_curid [expr $txn_maxid - 3]
- set txn_maxid [expr $txn_maxid - 2]
- txn001 "04.2"
-
- puts "\tTxn004.3: test wraparound txnids"
- txn_idwrap_check $testdir
- set txn_curid $orig_curid
- set txn_maxid $orig_maxid
- return
-}
-
-proc txn_idwrap_check { testdir } {
- global txn_curid
- global txn_maxid
-
- env_cleanup $testdir
-
- # Open/create the txn region
- set e [berkdb_env -create -txn -home $testdir]
- error_check_good env_open [is_substr $e env] 1
-
- set txn1 [$e txn]
- error_check_good txn1 [is_valid_txn $txn1 $e] TRUE
- error_check_good txn_id_set \
- [$e txn_id_set [expr $txn_maxid - 1] $txn_maxid] 0
-
- set txn2 [$e txn]
- error_check_good txn2 [is_valid_txn $txn2 $e] TRUE
-
- # txn3 will require a wraparound txnid
- # XXX How can we test it has a wrapped id?
- set txn3 [$e txn]
- error_check_good wrap_txn3 [is_valid_txn $txn3 $e] TRUE
-
- error_check_good free_txn1 [$txn1 commit] 0
- error_check_good free_txn2 [$txn2 commit] 0
- error_check_good free_txn3 [$txn3 commit] 0
-
- error_check_good close [$e close] 0
-}
-
diff --git a/bdb/test/txn005.tcl b/bdb/test/txn005.tcl
deleted file mode 100644
index 604f3ad7de4..00000000000
--- a/bdb/test/txn005.tcl
+++ /dev/null
@@ -1,75 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn005.tcl,v 11.35 2002/08/08 15:38:14 bostic Exp $
-#
-
-# TEST txn005
-# TEST Test transaction ID wraparound and recovery.
-proc txn005 {} {
- source ./include.tcl
- global txn_curid
- global txn_maxid
-
- env_cleanup $testdir
- puts "Txn005: Test transaction wraparound recovery"
-
- # Open/create the txn region
- puts "\tTxn005.a: Create environment"
- set e [berkdb_env -create -txn -home $testdir]
- error_check_good env_open [is_valid_env $e] TRUE
-
- set txn1 [$e txn]
- error_check_good txn1 [is_valid_txn $txn1 $e] TRUE
-
- set db [berkdb_open -env $e -txn $txn1 -create -btree txn005.db]
- error_check_good db [is_valid_db $db] TRUE
- error_check_good txn1_commit [$txn1 commit] 0
-
- puts "\tTxn005.b: Set txn ids"
- error_check_good txn_id_set \
- [$e txn_id_set [expr $txn_maxid - 1] $txn_maxid] 0
-
- # txn2 and txn3 will require a wraparound txnid
- set txn2 [$e txn]
- error_check_good txn2 [is_valid_txn $txn2 $e] TRUE
-
- error_check_good put [$db put -txn $txn2 "a" ""] 0
- error_check_good txn2_commit [$txn2 commit] 0
-
- error_check_good get_a [$db get "a"] "{a {}}"
-
- error_check_good close [$db close] 0
-
- set txn3 [$e txn]
- error_check_good txn3 [is_valid_txn $txn3 $e] TRUE
-
- set db [berkdb_open -env $e -txn $txn3 -btree txn005.db]
- error_check_good db [is_valid_db $db] TRUE
-
- error_check_good put2 [$db put -txn $txn3 "b" ""] 0
- error_check_good sync [$db sync] 0
- error_check_good txn3_abort [$txn3 abort] 0
- error_check_good dbclose [$db close] 0
- error_check_good eclose [$e close] 0
-
- puts "\tTxn005.c: Run recovery"
- set stat [catch {exec $util_path/db_recover -h $testdir -e -c} result]
- if { $stat == 1 } {
- error "FAIL: Recovery error: $result."
- }
-
- puts "\tTxn005.d: Check data"
- set e [berkdb_env -txn -home $testdir]
- error_check_good env_open [is_valid_env $e] TRUE
-
- set db [berkdb_open -env $e -auto_commit -btree txn005.db]
- error_check_good db [is_valid_db $db] TRUE
-
- error_check_good get_a [$db get "a"] "{a {}}"
- error_check_bad get_b [$db get "b"] "{b {}}"
- error_check_good dbclose [$db close] 0
- error_check_good eclose [$e close] 0
-}
diff --git a/bdb/test/txn006.tcl b/bdb/test/txn006.tcl
deleted file mode 100644
index 7bf37d34dfc..00000000000
--- a/bdb/test/txn006.tcl
+++ /dev/null
@@ -1,47 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn006.tcl,v 1.5 2002/08/01 19:59:19 sue Exp $
-#
-#
-#TEST txn006
-#TEST Test dump/load in transactional environment.
-proc txn006 { { iter 50 } } {
- source ./include.tcl
- set testfile txn006.db
-
- puts "Txn006: Test dump/load in transaction environment"
- env_cleanup $testdir
-
- puts "\tTxn006.a: Create environment and database"
- # Open/create the txn region
- set e [berkdb_env -create -home $testdir -txn]
- error_check_good env_open [is_valid_env $e] TRUE
-
- # Open/create database
- set db [berkdb_open -auto_commit -env $e \
- -create -btree -dup $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
-
- # Start a transaction
- set txn [$e txn]
- error_check_good txn [is_valid_txn $txn $e] TRUE
-
- puts "\tTxn006.b: Put data"
- # Put some data
- for { set i 1 } { $i < $iter } { incr i } {
- error_check_good put [$db put -txn $txn key$i data$i] 0
- }
-
- # End transaction, close db
- error_check_good txn_commit [$txn commit] 0
- error_check_good db_close [$db close] 0
- error_check_good env_close [$e close] 0
-
- puts "\tTxn006.c: dump/load"
- # Dump and load
- exec $util_path/db_dump -p -h $testdir $testfile | \
- $util_path/db_load -h $testdir $testfile
-}
diff --git a/bdb/test/txn007.tcl b/bdb/test/txn007.tcl
deleted file mode 100644
index f67dc209f92..00000000000
--- a/bdb/test/txn007.tcl
+++ /dev/null
@@ -1,57 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn007.tcl,v 11.3 2002/08/08 15:38:14 bostic Exp $
-#
-#TEST txn007
-#TEST Test of DB_TXN_WRITE_NOSYNC
-proc txn007 { { iter 50 } } {
- source ./include.tcl
- set testfile txn007.db
-
- puts "Txn007: DB_TXN_WRITE_NOSYNC"
- env_cleanup $testdir
-
- # Open/create the txn region
- puts "\tTxn007.a: Create env and database with -wrnosync"
- set e [berkdb_env -create -home $testdir -txn -wrnosync]
- error_check_good env_open [is_valid_env $e] TRUE
-
- # Open/create database
- set db [berkdb open -auto_commit -env $e \
- -create -btree -dup $testfile]
- error_check_good db_open [is_valid_db $db] TRUE
-
- # Put some data
- puts "\tTxn007.b: Put $iter data items in individual transactions"
- for { set i 1 } { $i < $iter } { incr i } {
- # Start a transaction
- set txn [$e txn]
- error_check_good txn [is_valid_txn $txn $e] TRUE
- $db put -txn $txn key$i data$i
- error_check_good txn_commit [$txn commit] 0
- }
- set stat [$e log_stat]
- puts "\tTxn007.c: Check log stats"
- foreach i $stat {
- set txt [lindex $i 0]
- if { [string equal $txt {Times log written}] == 1 } {
- set wrval [lindex $i 1]
- }
- if { [string equal $txt {Times log flushed}] == 1 } {
- set syncval [lindex $i 1]
- }
- }
- error_check_good wrval [expr $wrval >= $iter] 1
- #
- # We should have written at least 'iter' number of times,
- # but not synced on any of those.
- #
- set val [expr $wrval - $iter]
- error_check_good syncval [expr $syncval <= $val] 1
-
- error_check_good db_close [$db close] 0
- error_check_good env_close [$e close] 0
-}
diff --git a/bdb/test/txn008.tcl b/bdb/test/txn008.tcl
deleted file mode 100644
index ad57ea0eeaa..00000000000
--- a/bdb/test/txn008.tcl
+++ /dev/null
@@ -1,32 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn008.tcl,v 11.3 2002/05/10 17:55:54 sue Exp $
-#
-
-# TEST txn008
-# TEST Test of wraparound txnids (txn002)
-proc txn008 { } {
- source ./include.tcl
- global txn_curid
- global txn_maxid
-
- set orig_curid $txn_curid
- set orig_maxid $txn_maxid
- puts "\tTxn008.1: wraparound txnids"
- set txn_curid [expr $txn_maxid - 2]
- txn002 "08.1"
- puts "\tTxn008.2: closer wraparound txnids"
- set txn_curid [expr $txn_maxid - 3]
- set txn_maxid [expr $txn_maxid - 2]
- txn002 "08.2"
-
- puts "\tTxn008.3: test wraparound txnids"
- txn_idwrap_check $testdir
- set txn_curid $orig_curid
- set txn_maxid $orig_maxid
- return
-}
-
diff --git a/bdb/test/txn009.tcl b/bdb/test/txn009.tcl
deleted file mode 100644
index 784c0068a41..00000000000
--- a/bdb/test/txn009.tcl
+++ /dev/null
@@ -1,32 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txn009.tcl,v 11.3 2002/05/10 17:55:55 sue Exp $
-#
-
-# TEST txn009
-# TEST Test of wraparound txnids (txn003)
-proc txn009 { } {
- source ./include.tcl
- global txn_curid
- global txn_maxid
-
- set orig_curid $txn_curid
- set orig_maxid $txn_maxid
- puts "\tTxn009.1: wraparound txnids"
- set txn_curid [expr $txn_maxid - 2]
- txn003 "09.1"
- puts "\tTxn009.2: closer wraparound txnids"
- set txn_curid [expr $txn_maxid - 3]
- set txn_maxid [expr $txn_maxid - 2]
- txn003 "09.2"
-
- puts "\tTxn009.3: test wraparound txnids"
- txn_idwrap_check $testdir
- set txn_curid $orig_curid
- set txn_maxid $orig_maxid
- return
-}
-
diff --git a/bdb/test/txnscript.tcl b/bdb/test/txnscript.tcl
deleted file mode 100644
index 1a4a1b6f2ec..00000000000
--- a/bdb/test/txnscript.tcl
+++ /dev/null
@@ -1,67 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1996-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: txnscript.tcl,v 11.3 2002/01/23 15:33:40 bostic Exp $
-#
-# Txn003 script - outstanding child prepare script
-# Usage: txnscript envcmd dbcmd gidf key data
-# envcmd: command to open env
-# dbfile: name of database file
-# gidf: name of global id file
-# key: key to use
-# data: new data to use
-
-source ./include.tcl
-source $test_path/test.tcl
-source $test_path/testutils.tcl
-
-set usage "txnscript envcmd dbfile gidfile key data"
-
-# Verify usage
-if { $argc != 5 } {
- puts stderr "FAIL:[timestamp] Usage: $usage"
- exit
-}
-
-# Initialize arguments
-set envcmd [ lindex $argv 0 ]
-set dbfile [ lindex $argv 1 ]
-set gidfile [ lindex $argv 2 ]
-set key [ lindex $argv 3 ]
-set data [ lindex $argv 4 ]
-
-set dbenv [eval $envcmd]
-error_check_good envopen [is_valid_env $dbenv] TRUE
-
-set usedb 1
-set db [berkdb_open -auto_commit -env $dbenv $dbfile]
-error_check_good dbopen [is_valid_db $db] TRUE
-
-puts "\tTxnscript.a: begin parent and child txn"
-set parent [$dbenv txn]
-error_check_good parent [is_valid_txn $parent $dbenv] TRUE
-set child [$dbenv txn -parent $parent]
-error_check_good parent [is_valid_txn $child $dbenv] TRUE
-
-puts "\tTxnscript.b: Modify data"
-error_check_good db_put [$db put -txn $child $key $data] 0
-
-set gfd [open $gidfile w+]
-set gid [make_gid txnscript:$parent]
-puts $gfd $gid
-puts "\tTxnscript.c: Prepare parent only"
-error_check_good txn_prepare:$parent [$parent prepare $gid] 0
-close $gfd
-
-puts "\tTxnscript.d: Check child handle"
-set stat [catch {$child abort} ret]
-error_check_good child_handle $stat 1
-error_check_good child_h2 [is_substr $ret "invalid command name"] 1
-
-#
-# We do not close the db or env, but exit with the txns outstanding.
-#
-puts "\tTxnscript completed successfully"
-flush stdout
diff --git a/bdb/test/update.tcl b/bdb/test/update.tcl
deleted file mode 100644
index 2bedfacc793..00000000000
--- a/bdb/test/update.tcl
+++ /dev/null
@@ -1,93 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: update.tcl,v 11.11 2002/01/11 15:53:58 bostic Exp $
-
-source ./include.tcl
-global update_dir
-set update_dir "$test_path/update_test"
-
-proc update { } {
- source ./include.tcl
- global update_dir
-
- foreach version [glob $update_dir/*] {
- regexp \[^\/\]*$ $version version
- foreach method [glob $update_dir/$version/*] {
- regexp \[^\/\]*$ $method method
- foreach file [glob $update_dir/$version/$method/*] {
- regexp (\[^\/\]*)\.tar\.gz$ $file dummy name
- foreach endianness {"le" "be"} {
- puts "Update:\
- $version $method $name $endianness"
- set ret [catch {_update $update_dir $testdir $version $method $name $endianness 1 1} message]
- if { $ret != 0 } {
- puts $message
- }
- }
- }
- }
- }
-}
-
-proc _update { source_dir temp_dir \
- version method file endianness do_db_load_test do_update_test } {
- source include.tcl
- global errorInfo
-
- cleanup $temp_dir NULL
-
- exec sh -c \
-"gzcat $source_dir/$version/$method/$file.tar.gz | (cd $temp_dir && tar xf -)"
-
- if { $do_db_load_test } {
- set ret [catch \
- {exec $util_path/db_load -f "$temp_dir/$file.dump" \
- "$temp_dir/update.db"} message]
- error_check_good \
- "Update load: $version $method $file $message" $ret 0
-
- set ret [catch \
- {exec $util_path/db_dump -f "$temp_dir/update.dump" \
- "$temp_dir/update.db"} message]
- error_check_good \
- "Update dump: $version $method $file $message" $ret 0
-
- error_check_good "Update diff.1.1: $version $method $file" \
- [filecmp "$temp_dir/$file.dump" "$temp_dir/update.dump"] 0
- error_check_good \
- "Update diff.1.2: $version $method $file" $ret ""
- }
-
- if { $do_update_test } {
- set ret [catch \
- {berkdb open -update "$temp_dir/$file-$endianness.db"} db]
- if { $ret == 1 } {
- if { ![is_substr $errorInfo "version upgrade"] } {
- set fnl [string first "\n" $errorInfo]
- set theError \
- [string range $errorInfo 0 [expr $fnl - 1]]
- error $theError
- }
- } else {
- error_check_good dbopen [is_valid_db $db] TRUE
- error_check_good dbclose [$db close] 0
-
- set ret [catch \
- {exec $util_path/db_dump -f \
- "$temp_dir/update.dump" \
- "$temp_dir/$file-$endianness.db"} message]
- error_check_good "Update\
- dump: $version $method $file $message" $ret 0
-
- error_check_good \
- "Update diff.2: $version $method $file" \
- [filecmp "$temp_dir/$file.dump" \
- "$temp_dir/update.dump"] 0
- error_check_good \
- "Update diff.2: $version $method $file" $ret ""
- }
- }
-}
diff --git a/bdb/test/upgrade.tcl b/bdb/test/upgrade.tcl
deleted file mode 100644
index 1c0ffc5461a..00000000000
--- a/bdb/test/upgrade.tcl
+++ /dev/null
@@ -1,294 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 1999-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: upgrade.tcl,v 11.22 2002/07/28 03:22:41 krinsky Exp $
-
-source ./include.tcl
-
-global upgrade_dir
-# set upgrade_dir "$test_path/upgrade_test"
-set upgrade_dir "$test_path/upgrade/databases"
-
-global gen_upgrade
-set gen_upgrade 0
-
-global upgrade_dir
-global upgrade_be
-global upgrade_method
-global upgrade_name
-
-proc upgrade { { archived_test_loc "DEFAULT" } } {
- source ./include.tcl
- global upgrade_dir
-
- set saved_upgrade_dir $upgrade_dir
-
- puts -nonewline "Upgrade test: "
- if { $archived_test_loc == "DEFAULT" } {
- puts "using default archived databases in $upgrade_dir."
- } else {
- set upgrade_dir $archived_test_loc
- puts "using archived databases in $upgrade_dir."
- }
-
- foreach version [glob $upgrade_dir/*] {
- if { [string first CVS $version] != -1 } { continue }
- regexp \[^\/\]*$ $version version
- foreach method [glob $upgrade_dir/$version/*] {
- regexp \[^\/\]*$ $method method
- foreach file [glob $upgrade_dir/$version/$method/*] {
- regexp (\[^\/\]*)\.tar\.gz$ $file dummy name
-
- cleanup $testdir NULL 1
- #puts "$upgrade_dir/$version/$method/$name.tar.gz"
- set curdir [pwd]
- cd $testdir
- set tarfd [open "|tar xf -" w]
- cd $curdir
-
- catch {exec gunzip -c "$upgrade_dir/$version/$method/$name.tar.gz" >@$tarfd}
- close $tarfd
-
- set f [open $testdir/$name.tcldump {RDWR CREAT}]
- close $f
-
- # It may seem suboptimal to exec a separate
- # tclsh for each subtest, but this is
- # necessary to keep the testing process
- # from consuming a tremendous amount of
- # memory.
- if { [file exists $testdir/$name-le.db] } {
- set ret [catch {exec $tclsh_path\
- << "source $test_path/test.tcl;\
- _upgrade_test $testdir $version\
- $method\
- $name le"} message]
- puts $message
- if { $ret != 0 } {
- #exit
- }
- }
-
- if { [file exists $testdir/$name-be.db] } {
- set ret [catch {exec $tclsh_path\
- << "source $test_path/test.tcl;\
- _upgrade_test $testdir $version\
- $method\
- $name be"} message]
- puts $message
- if { $ret != 0 } {
- #exit
- }
- }
-
- set ret [catch {exec $tclsh_path\
- << "source $test_path/test.tcl;\
- _db_load_test $testdir $version $method\
- $name"} message]
- puts $message
- if { $ret != 0 } {
- #exit
- }
-
- }
- }
- }
- set upgrade_dir $saved_upgrade_dir
-
- # Don't provide a return value.
- return
-}
-
-proc _upgrade_test { temp_dir version method file endianness } {
- source include.tcl
- global errorInfo
-
- puts "Upgrade: $version $method $file $endianness"
-
- set ret [berkdb upgrade "$temp_dir/$file-$endianness.db"]
- error_check_good dbupgrade $ret 0
-
- error_check_good dbupgrade_verify [verify_dir $temp_dir "" 0 0 1] 0
-
- upgrade_dump "$temp_dir/$file-$endianness.db" "$temp_dir/temp.dump"
-
- error_check_good "Upgrade diff.$endianness: $version $method $file" \
- [filecmp "$temp_dir/$file.tcldump" "$temp_dir/temp.dump"] 0
-}
-
-proc _db_load_test { temp_dir version method file } {
- source include.tcl
- global errorInfo
-
- puts "db_load: $version $method $file"
-
- set ret [catch \
- {exec $util_path/db_load -f "$temp_dir/$file.dump" \
- "$temp_dir/upgrade.db"} message]
- error_check_good \
- "Upgrade load: $version $method $file $message" $ret 0
-
- upgrade_dump "$temp_dir/upgrade.db" "$temp_dir/temp.dump"
-
- error_check_good "Upgrade diff.1.1: $version $method $file" \
- [filecmp "$temp_dir/$file.tcldump" "$temp_dir/temp.dump"] 0
-}
-
-proc gen_upgrade { dir } {
- global gen_upgrade
- global upgrade_dir
- global upgrade_be
- global upgrade_method
- global upgrade_name
- global num_test
- global parms
- source ./include.tcl
-
- set gen_upgrade 1
- set upgrade_dir $dir
-
- foreach i "btree rbtree hash recno rrecno frecno queue queueext" {
- puts "Running $i tests"
- set upgrade_method $i
- set start 1
- for { set j $start } { $j <= $num_test(test) } { incr j } {
- set upgrade_name [format "test%03d" $j]
- if { [info exists parms($upgrade_name)] != 1 } {
- continue
- }
-
- foreach upgrade_be { 0 1 } {
- if [catch {exec $tclsh_path \
- << "source $test_path/test.tcl;\
- global gen_upgrade upgrade_be;\
- global upgrade_method upgrade_name;\
- set gen_upgrade 1;\
- set upgrade_be $upgrade_be;\
- set upgrade_method $upgrade_method;\
- set upgrade_name $upgrade_name;\
- run_method -$i $j $j"} res] {
- puts "FAIL: $upgrade_name $i"
- }
- puts $res
- cleanup $testdir NULL 1
- }
- }
- }
- set gen_upgrade 0
-}
-
-proc upgrade_dump { database file {stripnulls 0} } {
- global errorInfo
-
- set db [berkdb open $database]
- set dbc [$db cursor]
-
- set f [open $file w+]
- fconfigure $f -encoding binary -translation binary
-
- #
- # Get a sorted list of keys
- #
- set key_list ""
- set pair [$dbc get -first]
-
- while { 1 } {
- if { [llength $pair] == 0 } {
- break
- }
- set k [lindex [lindex $pair 0] 0]
- lappend key_list $k
- set pair [$dbc get -next]
- }
-
- # Discard duplicated keys; we now have a key for each
- # duplicate, not each unique key, and we don't want to get each
- # duplicate multiple times when we iterate over key_list.
- set uniq_keys ""
- foreach key $key_list {
- if { [info exists existence_list($key)] == 0 } {
- lappend uniq_keys $key
- }
- set existence_list($key) 1
- }
- set key_list $uniq_keys
-
- set key_list [lsort -command _comp $key_list]
-
- #
- # Get the data for each key
- #
- set i 0
- foreach key $key_list {
- set pair [$dbc get -set $key]
- if { $stripnulls != 0 } {
- # the Tcl interface to db versions before 3.X
- # added nulls at the end of all keys and data, so
- # we provide functionality to strip that out.
- set key [strip_null $key]
- }
- set data_list {}
- catch { while { [llength $pair] != 0 } {
- set data [lindex [lindex $pair 0] 1]
- if { $stripnulls != 0 } {
- set data [strip_null $data]
- }
- lappend data_list [list $data]
- set pair [$dbc get -nextdup]
- } }
- #lsort -command _comp data_list
- set data_list [lsort -command _comp $data_list]
- puts -nonewline $f [binary format i [string length $key]]
- puts -nonewline $f $key
- puts -nonewline $f [binary format i [llength $data_list]]
- for { set j 0 } { $j < [llength $data_list] } { incr j } {
- puts -nonewline $f [binary format i [string length [concat [lindex $data_list $j]]]]
- puts -nonewline $f [concat [lindex $data_list $j]]
- }
- if { [llength $data_list] == 0 } {
- puts "WARNING: zero-length data list"
- }
- incr i
- }
-
- close $f
- error_check_good upgrade_dump_c_close [$dbc close] 0
- error_check_good upgrade_dump_db_close [$db close] 0
-}
-
-proc _comp { a b } {
- if { 0 } {
- # XXX
- set a [strip_null [concat $a]]
- set b [strip_null [concat $b]]
- #return [expr [concat $a] < [concat $b]]
- } else {
- set an [string first "\0" $a]
- set bn [string first "\0" $b]
-
- if { $an != -1 } {
- set a [string range $a 0 [expr $an - 1]]
- }
- if { $bn != -1 } {
- set b [string range $b 0 [expr $bn - 1]]
- }
- }
- #puts "$a $b"
- return [string compare $a $b]
-}
-
-proc strip_null { str } {
- set len [string length $str]
- set last [expr $len - 1]
-
- set termchar [string range $str $last $last]
- if { [string compare $termchar \0] == 0 } {
- set ret [string range $str 0 [expr $last - 1]]
- } else {
- set ret $str
- }
-
- return $ret
-}
diff --git a/bdb/test/wordlist b/bdb/test/wordlist
deleted file mode 100644
index 03ea15f7277..00000000000
--- a/bdb/test/wordlist
+++ /dev/null
@@ -1,10001 +0,0 @@
-cooperate
-benighted
-apologist's
-addresser
-cataract
-colonially
-atoned
-avow
-bathroom
-anaesthesia
-columnated
-bogs
-astral
-barbed
-captives
-acclaims
-adjutants
-affidavits
-baptisms
-bubbling
-classic
-allaying
-component
-battlement
-backtrack
-
-courage
-bore
-advertisement
-attests
-bunny's
-airlifts
-cajole
-cataloging
-airily
-collected
-abridged
-compel
-aftermath
-barrow
-approve
-chillier
-bequest
-attendant
-abjures
-adjudication
-banished
-asymptotes
-borrower
-caustic
-claim
-cohabitation
-corporacies
-buoy
-benchmark's
-averting
-anecdote's
-caress
-annihilate
-cajoles
-anywhere
-apparitions
-coves
-bribed
-casually
-clue's
-asserted
-architects
-abstained
-attitude
-accumulating
-coalesced
-angelic
-agnostic
-breathed
-bother
-congregating
-amatory
-caging
-countryside
-chapel
-buttonhole
-bartenders
-bridging
-bombardment
-accurately
-confirmed
-alleviated
-acquiring
-bruise
-antelope
-albums
-allusive
-corker
-cavity's
-compliment
-climb
-caterpillar
-almond
-authenticated
-balkan
-assembly's
-acidity
-abases
-bonny
-been
-abbots
-abductor's
-aerials
-cancels
-chalked
-beeps
-affirms
-contrariness
-clearest
-appropriations
-critiquing
-affluence
-bouts
-abiding
-comprises
-brunches
-biology
-conceptualization's
-assaying
-abutter
-adorable
-beatable
-appenders
-aggressors
-agrarian
-bottleneck
-angled
-beholds
-bereaved
-creation
-animated
-candied
-bar
-aeronautics
-cousin's
-cleaver
-alienation
-billet
-bungler
-contention
-businessman
-braids
-assert
-boisterous
-consolidate
-breathing
-ballot
-averted
-conscientiously
-bellow
-brazenness
-coaches
-bulldog
-classify
-checksum
-almond's
-cornered
-caskets
-capacitors
-beefer
-connoisseurs
-consisted
-adore
-circumvented
-colonels
-addenda
-boost
-compatibility's
-bumblebee
-commonest
-containment
-active
-absorption's
-creaks
-administer
-beset
-aborted
-aforesaid
-aridity
-broken
-azimuths
-aerial
-addition's
-aggrieve
-anthology
-circuitous
-checks
-alley's
-beam
-boss
-corrupting
-absolutes
-asteroid's
-bandstands
-beatitude's
-analogue's
-busts
-confession
-bedstead
-affairs
-blackmailers
-collared
-buckboard
-assassin
-accessor
-adjudging
-binders
-constituent's
-blister
-aromas
-approved
-absorbent
-barbarously
-cat's
-builder
-brandish
-assailing
-constitute
-christening
-acutely
-amount
-blurry
-blocks
-advertise
-chain
-brigade's
-confusion
-beds
-arrangers
-colonizers
-beautifying
-bankruptcy
-bedazzles
-candidates
-clearness
-admonishment's
-behind
-abbreviations
-basting
-ballasts
-amateurism
-celled
-constituted
-bonfire
-bugled
-advisee's
-battled
-budded
-burners
-causeway's
-calibrate
-brambly
-befuddles
-azure
-busiest
-admiringly
-appropriator
-accumulator
-cables
-abhor
-civil
-botulinus
-creaked
-bismuth
-astronomical
-abscissas
-bodice
-aunt
-cascades
-cares
-comradeship
-assemblages
-boater
-bellmen
-admission's
-ambitious
-baldness
-abortive
-controlled
-chinked
-coded
-courtrooms
-arteriolar
-cooler's
-cared
-brewer
-christians
-barbecues
-contacts
-blackjack's
-buzzing
-blasters
-accords
-braziers
-allegretto
-catered
-breveting
-cleaning
-amicably
-bummed
-consulted
-allegro's
-accumulator's
-compartmented
-condemned
-concludes
-bitwise
-cheered
-appropriator's
-accessors
-casting
-carolina's
-accompanying
-budding
-correspond
-bach's
-angel's
-bearing
-arresters
-biweekly
-character
-badgering
-cantankerous
-avalanching
-adjudges
-barometer
-append
-continuations
-burped
-boxtop's
-abstention
-amp
-axiomatized
-bimonthlies
-aghast
-arresting
-breakwater's
-continuing
-bridle
-bobbin's
-antagonistically
-blindly
-biochemical
-biologically
-antifundamentalist
-confer
-cloudiness
-bonded
-comfortingly
-caption
-blackmailed
-bidders
-breakpoint
-brigadier
-criminals
-coyotes
-casserole's
-annex
-cereals
-breadboxes
-belgian
-conductivity
-counterexample
-anarchist
-couches
-atavistic
-clipped
-button
-axiomatic
-capping
-correcting
-chase
-chastise
-angle
-burnished
-beauteously
-antipodes
-crippling
-crowns
-amends
-bah
-brigadiers
-alleged
-correctives
-bristles
-buzzards
-barbs
-bagel
-adaptation
-caliber
-browner
-apprehensions
-bonnet
-anachronistically
-composites
-bothered
-assurer
-arc
-chaser
-bastards
-calmed
-bunches
-apocalypse
-countably
-crowned
-contrivance
-boomerang's
-airplane's
-boarded
-consumption
-attuning
-blamed
-cooing
-annihilation
-abused
-absence
-coin
-coronaries
-applicatively
-binomial
-ablates
-banishes
-boating
-companions
-bilking
-captivate
-comment
-claimants
-admonish
-ameliorated
-bankruptcies
-author
-cheat
-chocolates
-botch
-averring
-beneath
-crudely
-creeping
-acolytes
-ass's
-cheese's
-checksum's
-chillers
-bracelet
-archenemy
-assistantship
-baroque
-butterfly
-coolie's
-anecdote
-coring
-cleansing
-accreditation
-ceaselessly
-attitudes
-bag
-belong
-assented
-aped
-constrains
-balalaikas
-consent
-carpeting
-conspiracy
-allude
-contradictory
-adverb's
-constitutive
-arterial
-admirable
-begot
-affectation
-antiquate
-attribution
-competition's
-bovine
-commodores
-alerters
-abatements
-corks
-battlements
-cave
-buoys
-credible
-bowdlerizes
-connector
-amorphously
-boredom
-bashing
-creams
-arthropods
-amalgamated
-ballets
-chafe
-autograph
-age
-aid
-colleague's
-atrocious
-carbonizing
-chutes
-barbecued
-circuits
-bandages
-corporations
-beehive
-bandwagon
-accommodated
-councillor's
-belted
-airdrop
-confrontations
-chieftain's
-canonicalization
-amyl
-abjectness
-choke
-consider
-adjuster
-crossover's
-agreeing
-consolations
-capitalizers
-binges
-annihilating
-callers
-coordinate
-banshees
-biscuits
-absorbency
-corollary
-corresponded
-aristocrat's
-banally
-cruiser
-bathtub's
-abbreviated
-balkiness
-crew
-acidulous
-air
-birdies
-canvassing
-concretion
-blackjacks
-controller's
-aquarius
-charm
-clip
-awarder
-consistently
-calibrated
-bushwhacking
-avaricious
-ceaselessness
-basically
-accolades
-adduction
-commending
-consulates
-certifiable
-admire
-bankers
-appropriateness
-bandlimits
-chill
-adds
-constable
-chirping
-cologne
-cowardice
-baklava
-amusedly
-blackberry
-crises
-bedeviling
-botching
-backbend
-attaining
-continuity
-artistry
-beginner
-cleaner's
-adores
-commemorating
-amusement
-burial
-bungalow's
-abstinence
-contractually
-advancement's
-conjecture
-buckling
-conferrer
-cherub's
-belonged
-classifications
-baseball
-carbonation
-craved
-bans
-aphid
-arbor
-ague
-acropolis
-applied
-aspired
-calibrating
-abundance
-appeased
-chanted
-ascent
-convenes
-beep
-bottles
-aborigines
-clips
-acquainting
-aiming
-creditor's
-abolitionists
-cloves
-containments
-bungling
-bunt
-anchors
-brazed
-communicator's
-brew
-accumulate
-addicting
-actively
-befog
-anachronisms
-bumblers
-closest
-calculators
-absurdity
-colleagues
-college
-assesses
-conflicted
-associational
-betide
-conceptualization
-adjutant
-alliances
-corresponding
-barometers
-cot
-brooch's
-coiled
-arboreal
-convicted
-artless
-certificates
-bourbon
-astonish
-bust
-correlate
-amounts
-anal
-abstraction's
-corns
-conqueror's
-boldly
-bob's
-beer
-blanks
-corpses
-contingent
-blackly
-backed
-appearances
-cancers
-actuating
-apprehension's
-colorings
-anglicanism
-armament
-armer
-bizarre
-begotten
-actions
-archly
-capriciously
-clue
-contractor
-contributions
-agendas
-coached
-blamable
-annoyers
-coupons
-brooked
-assortment
-axes
-celebrates
-courageously
-baroqueness
-blasphemous
-asserter
-contents
-correctly
-challenged
-bulldoze
-casement
-acknowledge
-bitterness
-belongs
-allotments
-chalice's
-bequest's
-adjacent
-consumer's
-conservatively
-coalition
-background's
-backache
-befouls
-brushfire's
-analysts
-branch
-airways
-awaiting
-breakfast
-anoints
-baying
-contrary
-bilge
-chasm's
-babes
-afresh
-centerpiece's
-barked
-coffin
-assumed
-actresses
-accentuating
-aching
-abet
-balancers
-consumptively
-cagers
-backing
-angiography
-chord's
-cheapened
-bewailed
-arson
-begged
-convergent
-bowlers
-conflicting
-confiscated
-bitch
-bloody
-brushfires
-bleach
-computation's
-choppers
-circuitously
-chancing
-bunker
-concept's
-alacrity
-boyhood
-ammo
-bobwhites
-carter
-ardent
-bier
-airway's
-brownies
-aura
-cannibalizing
-confirms
-australian
-barrage
-closures
-assertive
-abstainer
-bicarbonate
-clone
-back
-cipher
-crown
-cannibalizes
-away
-crafty
-airings
-amtrak
-comical
-burnish
-continuum
-apparition
-apologizing
-blot
-blacker
-characters
-built
-apparent
-applicative
-assiduous
-attorneys
-affectionately
-bobbing
-baggy
-comic's
-attempt
-appealers
-amortize
-bonanza
-backwards
-bowers
-anemometer
-ambulance's
-creeps
-abduction's
-coal
-chiller
-adjudications
-clogging
-ascending
-bookkeeper
-crawlers
-battery's
-artifacts
-attributions
-amusements
-aftermost
-allophones
-bemoaned
-comptroller
-bugger's
-buoyancy
-booboo
-award
-amplifying
-certify
-bivariate
-attunes
-asteroidal
-chant
-collectively
-chasteness
-chapels
-copiousness
-benign
-armies
-competing
-buss
-awakened
-breakpoint's
-conceptualizing
-cleansers
-acorns
-conveyance's
-bluer
-battle
-budges
-characteristically
-be
-contour
-beguiling
-awarding
-armhole
-airship's
-bathtub
-breathable
-crowded
-compiles
-certain
-brutalizing
-bacteria
-baronies
-abode
-blacksmith
-brinkmanship
-capitalizations
-cousin
-botany
-avionic
-companion
-consists
-connoisseur's
-avalanched
-claimant's
-backstitches
-affixes
-bikes
-atomically
-cowed
-asleep
-becomingly
-acorn's
-complainers
-appreciated
-cross
-cringed
-booting
-attitudinal
-broadcasting
-childishly
-breeze's
-craven
-boll
-clause's
-burden
-appendages
-atemporal
-allah
-carnival's
-anchorage
-adjures
-besought
-abounding
-crucifying
-arrangements
-antiquarians
-burrows
-antipode
-canvas
-constable's
-coopers
-ascended
-companionship
-bakery's
-bayonets
-conclusively
-boasters
-beneficiaries
-conspicuous
-contriver
-architecture
-breakthroughs
-brownie's
-blur
-academics
-antagonist
-contemplates
-arena
-caravan's
-administers
-comprehensively
-convey
-bigot
-blitz
-bibliography's
-coerced
-assail
-amazons
-banned
-alabaster
-concluding
-bouquet
-barks
-acquaintances
-astonishment
-constraint
-backpack's
-breakthroughes
-blocking
-accomplishers
-catastrophe
-bushels
-algae
-ailment's
-anemometers
-beginning's
-chefs
-converse
-cornerstone
-astound
-assuring
-adornment
-anyone
-alumni
-club
-bestselling
-businessmen
-constructed
-attendee's
-cooped
-ablute
-chronicler
-alaska
-clam
-canonicals
-concerned
-aligned
-creek
-burrow
-allay
-admirals
-blackens
-compressing
-confirm
-cows
-battleship's
-belched
-affixing
-chalices
-choirs
-absentee's
-baseboard's
-apportionment
-adheres
-accounts
-chef
-access
-clearings
-accompanists
-concentrating
-ado
-bathos
-bailiff
-continuance
-ball
-bearer
-congress
-cites
-can't
-balloon
-crams
-consults
-bungled
-bike's
-apes
-assassinations
-colt's
-consecrate
-ancients
-chick
-analyst
-adsorbing
-burntly
-accompanist's
-apprehensive
-bengal
-boughs
-ankles
-anchored
-benefits
-accommodation
-amiss
-brink
-chewers
-blueberry's
-chairs
-adjoin
-bivalve
-autobiography's
-automated
-comparisons
-climbed
-artists
-congruent
-cold
-atonement
-cashier
-armageddon
-allocations
-bereavements
-bumblebees
-blew
-busboys
-bottoming
-alternations
-apprenticed
-bestial
-cinder's
-consumption's
-abbey's
-amended
-continued
-birefringent
-barbados
-ability's
-compulsory
-antler
-centerpieces
-accountant's
-arrogant
-ballads
-ascenders
-appliers
-adjustment's
-blabbed
-baits
-activity's
-clod's
-adjudicating
-bleak
-commutes
-bumming
-beating
-cohesiveness
-branded
-acknowledger
-communications
-blockhouses
-booklets
-consenters
-creek's
-consulting
-binary
-coaster
-ascription
-bushwhack
-boggles
-affidavit's
-arrangement's
-congressionally
-convenient
-avoider
-abaft
-bootlegger's
-befriending
-ceases
-carbonizes
-clumps
-commented
-competence
-conversing
-butting
-astonishing
-armful
-allegory's
-crisis
-critiques
-concurred
-conservative
-aristotelian
-blizzard's
-corner
-amateur's
-compare
-affiliations
-bestseller
-batch
-cleanly
-assayed
-bravos
-bowls
-conceptualized
-babe's
-algorithm's
-baptist
-cheeks
-conquerer
-bidder's
-behaving
-briefcase's
-analogues
-amply
-attitude's
-apple
-crossable
-ambushed
-besmirches
-creditors
-bandwagons
-continentally
-adjuncts
-concerns
-agers
-cop
-amoebas
-bisected
-bombing
-appendices
-cocking
-bused
-babied
-compounds
-asserts
-believably
-alert
-apostate
-catalysts
-aureomycin
-convex
-beetle's
-banishing
-agitating
-bystanders
-bow
-connotes
-blanch
-charmingly
-animal's
-baritones
-brier
-astronomer
-company's
-balding
-actually
-aunt's
-avalanches
-acquisition
-base
-compilations
-bathtubs
-actualization
-chanced
-atom
-banged
-befuddled
-apologized
-componentwise
-britisher
-began
-conservationist
-actuate
-crosser
-appended
-bitten
-ambivalence
-acetate
-conversions
-buzzwords
-askance
-abolishing
-birdied
-creeds
-anglers
-colossal
-bereft
-chock
-apprentice
-cooper
-besmirching
-allocating
-antiques
-bikini's
-bonders
-afflictive
-augmentation
-atheist
-bucket
-bibliophile
-annexes
-beguiles
-birdbaths
-amendments
-animators
-asymptotically
-communally
-barber
-biographers
-arguable
-confidant
-apologies
-adorns
-contacting
-coarsest
-artichokes
-arraign
-absorbing
-alden
-commercially
-cabbage's
-coincides
-clumping
-cents
-alleviater
-buzzard
-braked
-anesthetized
-bugling
-capitalist
-befriended
-appreciatively
-boomtown's
-cozier
-critic's
-correspondent
-bard
-attenuator
-bake
-brings
-chews
-anechoic
-brutal
-colder
-buckshot
-canvassers
-analytic
-allies
-alloys
-awake
-alienates
-bin's
-crimes
-constructible
-classifiers
-bulb
-cream
-banquet
-axiomatize
-adjourn
-converted
-auditioned
-comfortably
-bandwidth
-cannibalize
-ascensions
-bussing
-balloons
-contenders
-commemoration
-aspersions
-consultation
-cashes
-belting
-augurs
-architectural
-bluebird's
-breastworks
-absconded
-bullets
-bloodstain's
-blunder
-astronautics
-coo
-approves
-authority
-assure
-amsterdam
-acquitted
-adversity
-celebrate
-bred
-bridged
-bloc's
-bullied
-affinity
-breezes
-baptistry's
-constitutions
-avouch
-amazingly
-consolation
-abnormality
-clashes
-buttes
-buzzard's
-breathers
-chipmunk
-contented
-carol's
-armers
-amazedly
-comprehends
-canonicalize
-breakthrough
-arbitrator
-butterfat
-cases
-besiegers
-affianced
-amelia
-bush
-airplane
-annulled
-bike
-alternated
-attackers
-convene
-aficionado
-anachronism's
-crude
-carelessness
-akin
-combated
-assisting
-clocker
-attacked
-briefed
-antic's
-attendants
-attracting
-cope
-allotting
-bandwidths
-add
-assaulting
-breakage
-climes
-arrival's
-burp
-accelerator
-capacitance
-arabians
-bankruptcy's
-archeological
-coins
-browbeating
-chasm
-cardinalities
-compartmentalize
-courter
-assess
-abreaction
-brakes
-compatibly
-compression
-characterizable
-briefing's
-alto's
-classifiable
-contrast
-correlation
-colonial
-applying
-authorizers
-contesters
-basely
-cherries
-clicking
-cornfield's
-alarmingly
-conferences
-business's
-banker
-bloomed
-airfield
-attracts
-building
-commutative
-atomization
-competitions
-boatsmen
-acquirable
-arkansas
-command
-beings
-compactors
-anodize
-arguments
-conforming
-adsorption
-accustomed
-blends
-bowstring's
-blackout
-appender
-buggy
-bricklaying
-chart
-calmer
-cage
-attractive
-causation's
-athenian
-advise
-cranks
-containers
-besotter
-beret
-attender
-cone
-bills
-aligns
-brushlike
-brownest
-bosom's
-berth
-accountably
-bequeathed
-affirmatively
-boundless
-alleyways
-commute
-bendable
-abhors
-calculation
-affidavit
-answerable
-bellicose
-counterfeiting
-admiral's
-chisel
-bridesmaids
-believers
-aggregated
-conspicuously
-abased
-armenian
-conspirator
-canonical
-assignable
-barrage's
-clearance's
-casts
-administratively
-befoul
-chaffer
-amazer
-colorer
-broaching
-crevice
-aniline
-coursing
-compassionate
-adhesive
-bibliographies
-corrects
-augments
-between
-causer
-amorist
-cellist's
-acoustical
-baseless
-cigarettes
-astuteness
-appropriators
-convincing
-bellhop's
-bemoaning
-calmingly
-chronologically
-castles
-algebraically
-appointees
-academic
-blunderings
-assassins
-barrel
-accuracy
-amortized
-ballpark
-acrobat's
-brazier's
-abortively
-coarser
-airfields
-contester
-circus's
-creased
-amorphous
-accomplisher
-blabs
-butchers
-crackles
-bachelor
-aviators
-chariot's
-circumflex
-binocular
-alienating
-artificially
-agreement's
-aglow
-afghan
-abrupt
-annihilates
-apologetic
-barge
-betters
-algorithms
-conjurer
-chargeable
-brindle
-alphabetizes
-coder
-availing
-bandpass
-arrogance
-convent's
-advertiser
-connected
-basso
-breakfaster
-comic
-congenial
-beau
-courters
-adapters
-abruptly
-chemicals
-bringed
-creaming
-butterer
-attained
-actuals
-averred
-brainwash
-centerpiece
-blabbermouth
-byproduct's
-adaptable
-automata
-art
-cheery
-beheld
-beehive's
-claimed
-crucial
-brokenness
-agility
-combating
-cleft
-amenity
-after
-configuration
-contrasting
-coarsely
-brass
-barnstormed
-bowel
-bridesmaid's
-cornfield
-crazing
-autocracies
-adult
-conceptualizations
-corroboration
-bedders
-arroyo
-alarmist
-boatman
-chests
-burglary
-budgets
-canary's
-arraigning
-chin
-barnstorms
-blamers
-brimful
-calculate
-cellular
-contended
-challenges
-brusque
-bikinis
-arithmetics
-chairpersons
-class
-aircraft
-capably
-centralize
-awhile
-compacting
-courteous
-archaeologist's
-cram
-adagio
-affronts
-amplitude's
-bureau's
-audaciously
-autism
-blueberries
-an
-chips
-confiner
-chopper's
-chronology
-breaching
-bead
-amass
-camouflage
-compensation
-aspect
-broker
-atrophy
-balk
-bloodless
-barnyard
-benefactor's
-airdrops
-caused
-anthem
-activist's
-bottomless
-arrogates
-avoided
-bouncy
-clarified
-articulate
-almoner
-communists
-blokes
-butternut
-clockings
-barium
-blows
-criticism's
-associations
-brute
-bleeds
-alliteration's
-bluestocking
-boxwood
-clearer
-allegiance
-conceptualizes
-captivating
-bolshevik's
-belabored
-biographic
-contaminates
-chanticleer's
-adjusted
-childhood
-arguing
-cape
-conversantly
-compensating
-collaborations
-arraignment's
-blasted
-charging
-aggregation
-apprentices
-bird
-codifiers
-ballistic
-breve
-bells
-carolina
-chalk
-buckles
-boyfriend's
-adorn
-accoutrements
-availability
-antisymmetry
-blades
-alluded
-asterisks
-bookcases
-additive
-consents
-advanced
-balalaika
-coders
-caliph
-alundum
-are
-controllable
-blazing
-clattered
-asiatic
-axiomatizes
-ace
-coining
-column
-auditor's
-carol
-concatenated
-arrayed
-capital
-cautioner
-clan
-beauteous
-abbreviate
-asteroids
-canal's
-consolidation
-closets
-concealer
-crevices
-abed
-complex
-conviction's
-abide
-arrests
-begrudges
-adolescent
-conceals
-cells
-circles
-bravest
-compromiser
-bagels
-areas
-afore
-allergies
-arrangement
-attraction's
-amulets
-abstraction
-captured
-crouched
-brothers
-cash
-achieving
-bastard
-compete
-boiling
-beaching
-amphetamines
-clerking
-congestion
-alleviates
-angry
-bared
-comprehended
-bloodstain
-constituency's
-automating
-aerial's
-counterfeit
-besotted
-basses
-biofeedback
-compilation's
-band
-consulate
-appellant
-cough
-antennae
-contend
-anniversary
-boor
-artifactually
-aerobics
-booths
-chubbiest
-consumable
-assignments
-bromide's
-confined
-breakers
-alongside
-courtier
-boisterously
-bilaterally
-alternation
-auspiciously
-arbitrated
-condemning
-burns
-correspondents
-composition
-cavalierly
-coverlets
-capacities
-clatter
-apotheoses
-cartography
-ceased
-capitalized
-auditor
-appendicitis
-chops
-barony
-anemometry
-befouled
-briefer
-chest
-begetting
-bloats
-bookseller's
-commitment
-confides
-carcass's
-battering
-altruistically
-ballots
-adornments
-broaden
-angularly
-coefficient
-cataloged
-brae
-advantage
-anthems
-calculated
-counseling
-agitate
-accentuated
-camel
-ambivalent
-bedposts
-beacons
-chubbier
-cheerer
-assumes
-concord
-autumns
-convention's
-alpha
-adulterates
-arbiters
-archaically
-criteria
-achilles
-cheaper
-bulling
-associators
-bloater
-brawler
-ability
-adherents
-commonwealth
-coyote's
-centrally
-bequeathing
-abandonment
-circumstantially
-courteously
-borrow
-countermeasure's
-capricious
-allied
-anagram's
-absorptive
-assuage
-asset
-booked
-aspects
-commits
-crates
-capacitive
-condones
-assimilates
-carriage
-competitor's
-cocoons
-aggravated
-caravans
-arbitrator's
-baked
-balanced
-annihilated
-addressable
-autonomous
-bandwagon's
-contesting
-burrowing
-coroutines
-abjection
-correctable
-applauded
-bragged
-code
-aggressiveness
-cluttered
-attacking
-chide
-am
-coasters
-blizzard
-contentment
-altruism
-certifier
-capturing
-combinators
-carefree
-activate
-blindfolding
-assassinating
-approximate
-biplane's
-aplenty
-arteriosclerosis
-concentrates
-antisymmetric
-assurances
-anarchist's
-ascend
-advancing
-atrocities
-butt's
-bearable
-craftiness
-categorized
-barn
-contributor's
-arises
-bushy
-bisque
-coasted
-bargaining
-area's
-couples
-cabs
-barter
-bulletin
-chisels
-broadcasters
-contingency
-bywords
-antimicrobial
-coexisted
-blinding
-arithmetize
-coweringly
-convince
-competed
-bauble's
-crab
-boggling
-advocacy
-atlas
-assembled
-ancient
-bloodstream
-balking
-bin
-bully
-affirm
-cruelest
-atone
-conserved
-confession's
-bat
-captive
-aster
-blames
-colonel's
-bones
-borderline
-cleanses
-classified
-crudest
-contiguity
-bailing
-ablaze
-bender
-attendee
-clobbers
-aliasing
-autopilot
-coolers
-cache
-allayed
-barnyards
-britons
-appointment
-adaptor
-blockers
-abridges
-bloodiest
-betrothal
-bombards
-bony
-bus
-canary
-antinomy
-awash
-comrades
-ablating
-collectible
-boats
-brand
-church
-bandy
-adhering
-barred
-ammunition
-chime
-accompaniment's
-battleground's
-composing
-caveats
-armor
-amoeba
-composure
-collides
-avowed
-banding
-counsels
-asymmetric
-abbreviates
-balky
-adjudicates
-anointing
-accursed
-copse
-action
-construction's
-accents
-ambition's
-caressing
-cosmetic
-accession
-clutters
-censures
-allusions
-belittled
-armchair
-abode's
-conception's
-ascribe
-aliases
-ancestry
-ax
-companionable
-aright
-boxed
-brighteners
-alloy's
-checkable
-arraignments
-bed
-bunkhouses
-abbeys
-ceasing
-companies
-cherishing
-chunk's
-barony's
-chinning
-burdens
-briskness
-beggarly
-beloved
-clambered
-constitutionality
-beguiled
-archers
-alleyway
-apostle's
-consulate's
-antiformant
-categories
-construct
-aliments
-acquired
-blotted
-alterations
-adolescent's
-cranes
-bluntest
-accusation
-chafer
-airstrips
-abolished
-bothersome
-churchly
-airy
-bedded
-awareness
-alliterative
-arose
-amputates
-civilization's
-arenas
-certifying
-aspirators
-carbon's
-bunching
-aerates
-bilked
-checking
-cloned
-administrations
-canvasses
-colorless
-chamber
-circumspectly
-benedictine
-advisedly
-classifier
-approachable
-banners
-concurrently
-chores
-agape
-convention
-bindings
-budget
-comedies
-ants
-ambassadors
-chroniclers
-carrots
-colorful
-bulkhead's
-coherence
-buyer
-aggressions
-congressional
-commoners
-cheapen
-concealed
-columnates
-anarchy
-actress's
-baseboards
-creature's
-centuries
-barbarian
-concrete
-bicycles
-acceptably
-acclimating
-biceps
-bloodhound's
-becalmed
-apostle
-bible
-conjunctive
-comb
-ballers
-bickering
-adulterous
-austrian
-applicable
-blackberries
-creasing
-catalogs
-avert
-asparagus
-cambridge
-bird's
-belgians
-admonished
-admirations
-conscientious
-crescent's
-connectives
-blissful
-commenting
-bagged
-assimilate
-abounded
-copyright's
-advancement
-axiom's
-compilation
-circumlocution's
-catheter
-chances
-concretely
-codification
-browned
-clustering
-bum's
-clauses
-boundlessness
-arteriole's
-alfresco
-begrudged
-blustered
-anglican
-adjoined
-bamboo
-bathed
-consortium
-carrot's
-cloak
-album
-bunglers
-approbate
-colored
-aim
-cowboy
-alienate
-cleverest
-ambiguous
-confrontation's
-clear
-africa
-bowline's
-astronauts
-belayed
-censorship
-animation
-bedrooms
-chasms
-compared
-cogitated
-barbarians
-accomplices
-columnizes
-beaming
-busied
-counterpointing
-aluminum
-coconut's
-acclamation
-chokers
-biomedicine
-basalt
-buckwheat
-cardinality's
-bafflers
-arid
-chap's
-abound
-biblical
-backbone
-anticipation
-condemner
-angular
-advisability
-believing
-boiler
-arclike
-abetter
-bespeaks
-axiomatically
-coarse
-auditions
-bludgeoning
-clam's
-chief
-arrow
-cementing
-anxiety
-aberrations
-brushes
-cherub
-corollary's
-bunters
-beefers
-barbiturate
-circumlocution
-conjoined
-charities
-coverage
-campaigner
-burrowed
-barracks
-bristling
-accomplice
-abandoned
-bull
-caked
-century's
-bantu
-bristled
-airer
-bench
-bevy
-chamberlain's
-attention
-cloning
-camouflaging
-alder
-counter
-credibly
-approvingly
-breakup
-artillery
-celestially
-bail
-baker
-bullish
-canvass
-conversationally
-bringers
-augment
-creditably
-butterers
-botswana
-contemptible
-bribing
-adumbrate
-barb
-calico
-alludes
-amplified
-chills
-cloak's
-aver
-arthropod's
-budgeter
-bereavement
-cellars
-crewing
-blackmailer
-ayes
-bedsteads
-breachers
-bazaar
-centered
-celebrity
-blameless
-abscissa
-aerators
-awaited
-british
-adversary
-cowslip
-buttons
-confusing
-buggy's
-belts
-canceled
-addresses
-bribes
-condoning
-bonneted
-coarsen
-amazement
-angels
-chemise
-carbonates
-apostolic
-bandit's
-contending
-consummate
-counterclockwise
-beneficence
-benefitted
-contradicts
-comfortabilities
-anemone
-conductive
-articles
-bookcase
-burst
-baptizes
-countless
-costs
-agonizes
-byte
-creeper
-begs
-bunnies
-attract
-able
-calories
-baskets
-american
-brunt
-cognition
-closing
-chef's
-backbone's
-complicates
-cloister
-bedsprings
-arrays
-brigs
-archbishop
-buckler
-clove
-catholic's
-bellboys
-chairmen
-clap
-clarifications
-ambuscade
-bight
-bellyfull
-allowance's
-academy's
-acquiescence
-ambush
-catches
-at
-billion
-contact
-bees
-adopters
-approximately
-chiseled
-attributively
-criers
-codification's
-cowslips
-contradictions
-buttock's
-categorically
-counterpart's
-confessor
-appreciably
-adjusts
-altitude
-construe
-cancer
-bay
-aristocratic
-alleviaters
-binoculars
-axiomatizing
-changer
-bustle
-civic
-bostonians
-crops
-authorizations
-cogitation
-baptize
-caressed
-abase
-ariser
-axiomatization
-aggravates
-confiscation
-bowdlerize
-backspaced
-alters
-clarity
-blots
-bland
-belligerent's
-burgher
-cardinally
-bookcase's
-buggers
-byte's
-avarice
-crowding
-beriberi
-allegories
-coronets
-cell
-calculative
-adduce
-amperes
-bladders
-adages
-contests
-cognizant
-actuates
-ambiguity
-brighten
-concert
-conviction
-booty
-ashtray
-braves
-blouses
-avoiders
-confederate
-bombings
-couplings
-convictions
-attractiveness
-chronicled
-corers
-anger
-covertly
-aural
-asynchrony
-arrowheads
-breakdown's
-bulletins
-ceremonialness
-clipper
-bracelets
-anthropomorphically
-benedict
-connecting
-bacterium
-achievers
-abutter's
-autocorrelate
-coupling
-blanketer
-continental
-assignment
-conundrum
-arab
-besides
-cheerful
-blowup
-bastion
-arrive
-combines
-agar
-cookie
-astronaut's
-constraint's
-article's
-confiscations
-bounded
-adjudicate
-belligerently
-boron
-brownness
-adept
-creep
-abduction
-accosting
-asylum
-autographed
-clash
-chiseler
-clumsily
-capitally
-braking
-absenting
-bagatelle's
-comet
-basked
-anything
-buffeted
-absentia
-bounty
-carols
-characteristic's
-constructive
-comforting
-aflame
-brainwashed
-booby
-aspirations
-adjudge
-behaviorism
-computability
-assessment
-consultations
-bowstring
-acknowledgment
-arranger
-chancellor
-attest
-compresses
-concessions
-asymmetrically
-administering
-clamoring
-arraigned
-archived
-admonition
-actor's
-aimers
-colorers
-booklet
-calibers
-affix
-bushel's
-atomizes
-creeks
-bleedings
-casuals
-archives
-certainly
-animate
-cons
-affiliate
-answered
-coyote
-coughed
-alligator's
-antagonized
-arousal
-assisted
-aerated
-competently
-conquering
-acclaimed
-assign
-announcer
-controllers
-amalgamation
-comfort
-antihistorical
-availed
-balsa
-annoyed
-basted
-asymptomatically
-cropped
-combinational
-barging
-conversant
-causality
-botches
-bedspread
-considerately
-bookstores
-climate
-blessing
-accordion's
-cdr
-bonanza's
-construing
-bearings
-bluster
-backspaces
-babyish
-countermeasure
-crime
-battered
-audit
-associating
-corps
-application
-archangel's
-aided
-breasted
-compelled
-acrobats
-breakfasts
-chronologies
-beet's
-averts
-convergence
-attributable
-adverbial
-churns
-arrest
-breastwork
-beefs
-brownie
-create
-contradistinctions
-coordinators
-abandoning
-byline
-beatitude
-autosuggestibility
-bipartite
-annals
-assents
-conceives
-amalgams
-cleft's
-clicked
-appointers
-bible's
-boots
-caret
-attaches
-controversy's
-combinatorial
-bazaars
-cardinals
-bored
-catering
-christian's
-ashman
-consequence's
-austere
-clay
-birthday's
-amongst
-arbitrariness
-brainstorms
-chateaus
-coaxer
-applause
-cautiousness
-adorned
-compromises
-creatures
-compliance
-apartheid
-archiving
-amoeba's
-communal
-comedian's
-aggressive
-crop
-ante
-better
-chalice
-aristocrats
-circling
-belittle
-abortion's
-coldly
-certification
-befriends
-courthouse
-anesthesia
-accorder
-athletic
-blithe
-bedder
-abasements
-councils
-beware
-abductor
-assonant
-clench
-aspersion
-abortion
-abating
-birches
-breakpoints
-acyclic
-ablate
-canners
-cistern
-boxtop
-composite
-cloudless
-computation
-chastely
-abusing
-bunker's
-compounding
-alveolar
-chaplains
-bias
-audiological
-capability's
-bangle
-barren
-antidote's
-cranking
-baptizing
-bond
-borders
-automobile's
-allegoric
-chargers
-baltic
-autumn
-columns
-absolute
-connoisseur
-cranberry
-contiguous
-consoled
-confirmations
-argot
-blouse
-annotated
-callous
-astounded
-crashed
-autonavigators
-chivalry
-columnating
-beefed
-convincer
-allegorical
-bagger
-assume
-containable
-artistically
-calibration
-architectonic
-campaigns
-addressability
-crazier
-buy
-brightener
-bastion's
-blurb
-awaits
-commands
-chocolate
-bleaching
-antenna
-blowers
-chorused
-composers
-assigners
-aspires
-coils
-bid
-application's
-clamped
-bedding
-awkwardly
-coppers
-costumes
-borax
-caged
-candler
-badges
-clutches
-consign
-apprised
-buys
-adiabatically
-aggregately
-canned
-abstract
-acrimony
-coax
-analytically
-absurd
-alluring
-contradicted
-aspersion's
-bribe
-boos
-chattererz
-backache's
-complying
-continent
-cohabitate
-causation
-astronomer's
-cities
-bookie
-bleating
-cracking
-bicameral
-convoluted
-adjustable
-ambulance
-can
-boulders
-consideration
-announces
-briars
-antipode's
-bartered
-ancestor
-biplanes
-characterize
-crested
-bum
-bridling
-consolable
-bungles
-coffee
-buffets
-congratulation
-commitment's
-adequately
-clown
-capacitor's
-broomsticks
-agglutinate
-activations
-asians
-canon's
-authenticity
-complexities
-cripple
-bracket
-counselor's
-beatably
-bounced
-baton's
-crankiest
-barbell's
-caster
-casseroles
-ballad's
-bob
-batched
-attenuated
-beakers
-biologist
-bleary
-condescend
-blondes
-augustness
-boldface
-battlefronts
-acumen
-bolting
-articulatory
-butyrate
-bowel's
-backwater's
-colonel
-creating
-authorized
-bijection
-accruing
-admirably
-correctness
-citadels
-clasps
-bandlimit
-bib
-appalachia
-contrives
-bundle
-audiology
-circumventing
-blinker
-choked
-bilks
-clears
-affirmations
-arbitrating
-bites
-bootstraps
-capitals
-commuters
-billeted
-authentication
-choice
-attentively
-aggressor
-arterioles
-crowds
-chestnut
-backstitched
-attachments
-assimilating
-bewilderment
-atrophied
-chintz
-blackjack
-armadillos
-bonfire's
-ballast
-agonies
-busier
-coefficient's
-adventurous
-ballet's
-coil
-chewed
-come
-bonder
-catalogue
-coursed
-arise
-biennium
-ceremony's
-blanching
-appraisers
-acolyte
-argues
-beholden
-appanage
-astatine
-banana's
-coons
-civilians
-bodyguard
-archipelago
-bug's
-candles
-antique's
-accidently
-blighted
-belgium
-besieged
-burned
-abuse
-asian
-chute
-awkwardness
-abasing
-bottler
-ardently
-blab
-breakwater
-cavity
-cheated
-befall
-according
-chronicle
-airframes
-bats
-choring
-authorize
-consumed
-chatter
-annunciated
-capers
-anomalous
-clustered
-burner
-acquaintance's
-badger's
-basic
-affectations
-buzzy
-coast
-attendances
-activating
-beams
-cohesive
-attainable
-barbecueing
-beautiful
-acronyms
-communion
-client
-atypical
-antagonists
-conservations
-arguers
-agglomerate
-antigen
-battalion
-ambition
-countered
-assistant
-classed
-arming
-alveoli
-buff's
-backplanes
-busted
-bermuda
-converting
-brutish
-boot
-acidities
-confrontation
-chapel's
-berlin
-ascender
-behead
-buddy's
-commandment
-actuated
-brilliancy
-chance
-bedrock's
-bridgeheads
-arable
-avid
-arteries
-caresser
-ballyhoo
-attested
-african
-comradely
-consciences
-commencing
-antennas
-annulments
-bobolink's
-advisee
-acceptance
-crack
-ascendent
-appendage's
-accommodates
-accumulated
-clones
-apocryphal
-ages
-cluster
-capitols
-camper
-beading
-amble
-buffeting
-circumspect
-advances
-analyzes
-courier's
-aperiodic
-appealer
-atonally
-attentive
-conspire
-appropriating
-armed
-allergic
-agglomeration
-consternation
-blinks
-audibly
-aspirins
-bunions
-adverbs
-armload
-bet's
-caring
-carryover
-coordinator's
-afterthoughts
-allays
-abided
-brownish
-baiting
-capitalism
-coined
-conspirators
-automatic
-contradistinction
-conductor's
-backstitching
-conjure
-casings
-accountant
-clinched
-constrain
-alcohol
-bee
-anticompetitive
-britain
-bade
-camera's
-antimony
-activated
-burglarizes
-compatible
-cotyledon's
-artificiality
-bath
-citadel
-archivist
-chandelier
-addiction
-ampersand
-bitterer
-constructively
-afield
-bing
-attractor's
-cringe
-allergy's
-bigots
-assimilation
-ate
-capitalization
-abridge
-buzzword
-befit
-bandlimited
-commandant
-alabama
-acculturated
-brightening
-bulldozing
-cooky
-bunks
-centers
-bespectacled
-adherent's
-abducts
-another's
-condensation
-billeting
-bye
-chess
-craziest
-ballgown's
-archaism
-consorted
-chinned
-cowl
-beat
-bootlegger
-bravado
-classically
-bulging
-browbeat
-accommodate
-borne
-bronzed
-artifice
-arcade
-become
-backlog
-addressers
-amphitheaters
-befogging
-crochet
-aiding
-celebrated
-conversational
-backbends
-authentications
-advertisement's
-blockade
-bulldozes
-contraction's
-bricklayer's
-brain
-conveying
-anemia
-chronology's
-channeling
-caution
-commanding
-crosses
-artisan
-conditions
-admired
-authenticator
-airships
-blunter
-bridesmaid
-counseled
-cheeriness
-chiefs
-boils
-clerical
-atrocity's
-balls
-ambled
-canvases
-consoles
-abscessed
-abetting
-blitzkrieg
-bottlers
-beveled
-condemn
-alumna
-cords
-admittance
-annotates
-citing
-corrector
-appreciative
-branching
-betrays
-buttoned
-ailment
-boulevards
-bottlenecks
-chamberlains
-bedbug
-covenant's
-crispness
-considering
-broadcasts
-audubon
-arousing
-correction
-barrack
-closure
-contrastingly
-brittleness
-assassin's
-bursa
-bungalows
-balked
-conceptual
-carcasses
-arabia
-blueprint's
-affectingly
-consorting
-buses
-auger
-appointed
-brute's
-bosoms
-anyway
-arrowed
-anaphorically
-clarify
-approachability
-assistance
-buzzes
-commonplace
-bluebonnet's
-adroitness
-availers
-aquifers
-architecture's
-action's
-backgrounds
-abduct
-attired
-briber
-admissibility
-cease
-beck
-auctioneers
-birdbath's
-atomic
-crossing
-considerate
-biconvex
-bulge
-bedridden
-arising
-aggression's
-cherish
-bureaucratic
-abater
-amputating
-atop
-climber
-clutched
-afford
-bisections
-bonnets
-commendations
-bloke
-abundant
-clamp
-aloes
-aboard
-atheistic
-advantageously
-buffs
-chimney's
-cheerily
-benefactor
-ample
-bushwhacked
-captain
-buckskins
-contextually
-antiquarian's
-browns
-bubble
-ban's
-brine
-acculturates
-anhydrously
-beaver's
-advantaged
-bibliographic
-clasping
-clattering
-coerce
-colorado
-airmen
-bandlimiting
-balks
-boners
-attached
-chosen
-convened
-bordello
-composer
-botanist
-backtracks
-civilization
-commutativity
-bloodshed
-cohere
-bunkhouse
-archdiocese
-boycotted
-crosswords
-bedspread's
-anteaters
-cove
-apothecary
-chute's
-addressee
-climatically
-blower
-bane
-cask's
-beetling
-ambiguities
-before
-abstain
-arachnids
-bucket's
-amateurs
-blackouts
-adverb
-butchery
-conjunction's
-barricade
-audiologists
-aphorism
-complete
-butts
-bishops
-allotment's
-confusingly
-channeller's
-blanches
-bragging
-bathe
-comedians
-celestial
-citizens
-couple
-backpack
-aphasic
-brothels
-axles
-cancellations
-bonus's
-consolidates
-authoritative
-axle's
-acclimatization
-carolinas
-chime's
-antibiotic
-bisons
-biographically
-achieve
-bleachers
-bicentennial
-behavioral
-accomplish
-concealment
-biddies
-antitoxins
-arriving
-apprehend
-affluent
-cliffs
-bleached
-astronomers
-connection
-bride
-backs
-bog's
-casket's
-continual
-ampere
-cat
-alternator
-cotton
-athletes
-communicant's
-best
-befuddling
-benefactors
-appease
-annoyingly
-context
-astonished
-cracked
-amnesty
-autumn's
-binder
-babying
-contributory
-assumption
-cowls
-cocks
-airless
-consummated
-atypically
-beneficially
-chairing
-accusative
-commanded
-bufferrer's
-alerter
-arbiter
-civilly
-charms
-backscattering
-cheater
-bushes
-caverns
-chieftain
-calf
-comparing
-aurora
-butyl
-cower
-bemoans
-baptistry
-carpenter's
-capes
-bordered
-arrows
-blocker
-crest
-appeal
-arabic
-conventions
-axis
-brains
-bookkeeper's
-circle
-cooks
-circumlocutions
-adventists
-barringer
-affording
-anatomically
-basements
-barbarities
-configuration's
-contributes
-collaborating
-beach
-comet's
-bakes
-assigns
-ballerina
-cheapens
-clinging
-conquered
-bisecting
-closenesses
-bugle
-boatmen
-beatings
-complicator
-bight's
-banister's
-archaic
-anthropologists
-clams
-beginners
-committee's
-communicants
-alone
-bounteously
-bastes
-ascertain
-alphabetical
-bringing
-batters
-amazon's
-constituent
-benders
-being
-constitutionally
-audiometric
-blast
-copings
-bailiffs
-colts
-coolies
-airlift's
-boomerang
-bifocal
-clothes
-cashiers
-congenially
-billows
-boilerplate
-biochemistry
-betting
-brimmed
-complementers
-breading
-bragger
-adducting
-bisectors
-abrogates
-criticized
-comrade
-bucolic
-birthright
-blurs
-challenger
-complicated
-bluebonnet
-biscuit's
-classmates
-campus's
-boundary
-bedbug's
-adjustor's
-acre
-bicycling
-awe
-additions
-baiter
-authorizes
-beautify
-copier
-buffet
-belfries
-acquisitions
-brooch
-crickets
-caterpillars
-beefsteak
-complicating
-bedpost
-criminal
-celebrity's
-bookseller
-christened
-coerces
-clamors
-all
-boatyard's
-canoe's
-begin
-anaerobic
-bushing
-agreers
-concedes
-countermeasures
-beg
-agglutinin
-bunted
-ammonium
-aspiration's
-bathrobes
-changeable
-beached
-bestowal
-beaner
-catsup
-admires
-clockwise
-agile
-alarms
-ached
-chinks
-buffer's
-cartesian
-annunciate
-chanticleer
-avenue
-anchor
-alliterations
-blanking
-bargained
-breathtaking
-crime's
-assiduity
-argentina
-contiguously
-aqua
-bested
-borderlands
-appetite
-captive's
-bipolar
-conceal
-counters
-costumed
-arrestingly
-bunting
-blight
-champagne
-brusquely
-address
-bloodhounds
-associative
-creed
-arithmetical
-balustrade's
-belabors
-complementing
-checkout
-archivers
-badlands
-behaviors
-ampoules
-bridgehead's
-antiquarian
-clumsiness
-considerable
-apportions
-anglicans
-appealingly
-barfly's
-absorptions
-awards
-congregates
-cloister's
-armour
-avoid
-correctively
-chucks
-burps
-bums
-berry
-batches
-administration
-atones
-bishop's
-blonde's
-casualty's
-cores
-bodied
-alter
-assonance
-apprise
-antitoxin
-avariciously
-checkpoint's
-affirmative
-conjures
-angstrom
-aesthetically
-canyon
-binge
-crazed
-breastwork's
-aids
-boston
-conceits
-announcement's
-beechen
-accessory
-authorities
-constrained
-automation
-anaplasmosis
-commander
-commendation's
-belabor
-cornfields
-artemis
-asphalt
-contracted
-brochure
-crafted
-allegedly
-alien's
-auditory
-blowfish
-adducible
-confederations
-annuals
-britches
-acquaintance
-appallingly
-abounds
-burglarproof
-crossers
-bayous
-brisk
-authority's
-covetousness
-averse
-accomplished
-aromatic
-admiral
-bijective
-avenging
-bran
-boatyards
-beseeching
-challenging
-bares
-acts
-abductions
-compendium
-compulsion's
-calendar's
-clad
-blockage
-conventional
-craze
-cajoling
-acceptability
-bungalow
-buff
-cramps
-attackable
-calculator's
-asp
-braved
-colors
-balling
-contaminate
-crackling
-comes
-complimenters
-across
-astronomy
-aborigine
-bobwhite's
-autopilot's
-chattered
-appall
-autonavigator
-bashed
-acoustics
-beachhead's
-apartments
-convenience
-blackout's
-bands
-autonomously
-amounters
-centripetal
-achievable
-astringency
-attuned
-concatenating
-copyright
-coding
-assumption's
-anastomoses
-confiscate
-asking
-beneficial
-adhesions
-busboy
-bronzes
-audacity
-bruises
-crash
-beau's
-circuit's
-aborts
-baubles
-beliefs
-assuaged
-costed
-blinking
-characterized
-bowled
-block
-conquests
-confesses
-amusers
-ceiling
-berets
-berliner
-abstentions
-child
-authoritatively
-closeness
-bushel
-considered
-communicates
-cheerlessly
-autofluorescence
-aquarium
-affects
-appurtenances
-airbag
-approaches
-admonishments
-bets
-bounden
-courtly
-bodybuilder's
-campus
-brainstorm
-americans
-chairperson's
-botanical
-askew
-amazon
-bleed
-clime's
-cooperations
-commonness
-boatloads
-blinked
-courtyard
-adapted
-aforethought
-backwater
-burr
-cathode
-awaking
-buzzed
-bridgeable
-arrives
-adventuring
-beseech
-attrition
-copied
-colon
-client's
-bandstand's
-advice
-baptistries
-antithetical
-alcohol's
-contradicting
-ambidextrous
-belches
-category
-bluntness
-coupon's
-assimilations
-comfortable
-caller
-affliction's
-attends
-compactest
-baler
-beacon
-blind
-bleakness
-beseeches
-courts
-couch
-consequential
-adulterers
-craving
-biggest
-astray
-bigoted
-barfly
-charges
-ambiguity's
-commentary
-crankily
-cowerer
-carnival
-bachelor's
-bituminous
-continuance's
-calamities
-claws
-apiece
-century
-ascendancy
-charts
-animations
-aggression
-chickadee's
-carve
-confidence
-actor
-bubbled
-becalming
-convulsion
-chivalrous
-brightest
-centralized
-beautifies
-amateurishness
-birthrights
-alligator
-circumstantial
-constructors
-conceptions
-arranging
-cart
-cent
-ager
-congruence
-carrot
-chariots
-cloudier
-captivity
-conquerers
-compartmentalizes
-condensing
-celebrities
-chalks
-accordance
-chilled
-conversations
-apples
-conceiving
-average
-blessed
-creator
-ant
-cling
-annoyer
-aviation
-cohesively
-correspondences
-boor's
-apprehended
-bessel
-both
-characterizes
-bards
-cots
-acculturating
-cemeteries
-carting
-alcohols
-bitterest
-ascetic's
-conducts
-caking
-airspace
-autocrats
-ashes
-chimes
-broadcaster
-commuter
-basket
-borderland's
-broadened
-boyish
-allegretto's
-ban
-bidder
-christen
-blessings
-bury
-arranged
-choir's
-apathetic
-boring
-aryan
-appearing
-binds
-cooperates
-bounces
-airspeed
-complicators
-adapting
-babbled
-agglomerates
-bedraggled
-addictions
-bolt
-calmly
-blur's
-boatload's
-anesthetic
-bugs
-colt
-completing
-boxer
-billers
-affronting
-absurdity's
-chides
-comparatively
-braided
-clipper's
-cot's
-calves
-articulations
-branchings
-attraction
-concatenates
-alligators
-cake
-boom
-crashing
-afar
-abler
-beamed
-adverse
-adrenaline
-agriculture
-beehives
-crankier
-courthouses
-advises
-consigns
-bisect
-azimuth's
-carpets
-arthropod
-brewery's
-commonalities
-altruist
-astride
-appreciate
-carved
-briefs
-admitter
-celery
-congregate
-clocking
-assassinated
-adding
-canvasser
-civics
-contemptuously
-calculates
-advisees
-bumbling
-algorithmically
-cloudy
-algebras
-addiction's
-cop's
-assurers
-confidently
-affector
-analyzers
-chimneys
-burdening
-antitrust
-admix
-avoidance
-choking
-coexists
-accustoms
-cellar
-anchovy
-constructor's
-confinements
-consequently
-accelerations
-accoutrement
-churchman
-biller
-affected
-brigades
-cremating
-corridor's
-bagging
-ah
-berating
-collective
-acuteness
-arrestors
-cab's
-border
-agitation
-animism
-arches
-alveolus
-cessation's
-averrer
-abash
-counterrevolution
-attesting
-animateness
-bawdy
-americana
-bloodstained
-applicator
-annotating
-annunciator
-clamored
-acting
-aerosols
-axiomatization's
-brags
-coalesces
-avocation
-combining
-crazily
-bravery
-burying
-adored
-airfield's
-accounting
-broadeners
-anise
-chimney
-added
-avenges
-bellicosity
-cranberries
-arsenic
-communities
-comparable
-bunkered
-architect
-alphabetically
-beautified
-apogees
-communist
-anatomical
-complexity
-accost
-autographing
-browsing
-ameliorate
-bookers
-bandaging
-clinical
-appellants
-counteract
-clairvoyantly
-bootstrap's
-canner
-boastful
-attainer
-ash
-beaded
-brake
-barest
-befriend
-burglarproofing
-allegorically
-bunts
-believes
-accession's
-buck
-boathouse's
-byword's
-anthracite
-accuse
-conjunction
-burping
-commandant's
-creativity
-affirming
-bark
-amuses
-balcony's
-auditors
-counsel
-clamber
-borates
-cowboy's
-bickered
-boors
-combing
-biting
-breeze
-crowder
-corn
-bloke's
-bombast
-bookstore
-blared
-bedlam
-carbohydrate
-coops
-bundles
-blistering
-antarctic
-anterior
-bilinear
-chocolate's
-context's
-alternating
-annoyance
-constancy
-ambivalently
-buddy
-brutalize
-bobbin
-alleles
-commotion
-attributes
-airborne
-creed's
-bolstering
-coaxed
-airframe
-breaker
-accept
-abashes
-attentional
-contributor
-comparability
-auscultating
-cocked
-computationally
-buffered
-career's
-analyzable
-absently
-courtyard's
-buildups
-apportioned
-balkanized
-annulling
-cremation
-buffetings
-conditional
-confided
-airliner
-bulldozer
-approaching
-anagram
-apollonian
-canaries
-bloat
-bluebird
-collision
-cool
-connectedness
-abasement
-artisan's
-avoidably
-clerks
-afflict
-briton
-corroborates
-cameras
-counted
-boldest
-burglars
-brutes
-brows
-abhorrent
-configuring
-averaged
-ace's
-buying
-abandon
-bayou
-cottons
-auditioning
-amplifies
-clippers
-brainstorm's
-alto
-brutalities
-bunch
-agricultural
-bursts
-blunting
-archer
-activity
-carefulness
-bedroom's
-concomitant
-balm's
-artificer
-barking
-breathy
-babies
-acacia
-bodies
-cap's
-criticised
-conversed
-crewed
-ascendant
-budgeting
-coroutine's
-charmed
-bellboy's
-conservatism
-butler
-acculturation
-conclusion's
-adapt
-cellist
-contempt
-adumbrates
-borrowed
-confounds
-allegiance's
-blabbermouths
-accrues
-captor
-coop
-baseballs
-cottages
-apartment's
-assertiveness
-assent
-artfully
-bagger's
-abolishment
-acetylene
-accessory's
-blackbird
-baptist's
-consist
-cavern
-buttock
-corporal's
-autoregressive
-bailiff's
-birds
-corder
-bracketing
-antlered
-barbiturates
-county's
-addicted
-agglutinated
-abashed
-competitively
-captains
-bloating
-accepts
-choose
-ashamed
-backyard's
-apiary
-contradiction
-balalaika's
-arctic
-broom
-anvils
-coffee's
-alliance's
-agitator's
-change
-adjusters
-cremates
-complexes
-bodyguard's
-burl
-antithyroid
-ambient
-airfoil
-apricots
-athleticism
-abjectly
-bankrupts
-answerers
-alternatively
-confronter
-breaking
-baronial
-cannibalized
-appetites
-breaded
-blackboard's
-battlegrounds
-cosine
-barrenness
-abbreviation
-budging
-boolean
-acrobatics
-again
-ashtrays
-clashed
-contingent's
-compulsion
-bedazzled
-collapsing
-comparison's
-businesses
-compassionately
-achievement
-buffering
-candlesticks
-austerely
-awls
-associate
-absolved
-annexed
-airway
-clipping
-counselors
-conscience
-attempters
-constructing
-biases
-cautioners
-comma's
-cosines
-char
-auscultates
-afire
-comely
-amity
-beverage's
-anew
-ballplayer's
-adulterated
-authorship
-alterers
-burdened
-attributive
-afflictions
-blinded
-barrier's
-attachment
-brotherhood
-bridegroom
-atoms
-cobweb's
-copes
-controversies
-complexion
-crawling
-atomized
-adjust
-accuracies
-concern
-cinders
-authorization
-appraisingly
-bladder's
-cooked
-cowers
-batter
-commissioner
-close
-burglar's
-allocated
-anvil
-aftershock
-abrogating
-chemistries
-advisable
-conduct
-committee
-blaring
-appalling
-braveness
-alertly
-artificialities
-brevet
-collision's
-arizona
-bower
-creamers
-awnings
-arsenals
-crane
-city
-contemplative
-catheters
-administrators
-attorney
-churned
-attractions
-columnation
-bobbed
-centipedes
-bostonian's
-apprises
-buries
-allege
-botulism
-adobe
-ambassador's
-covenants
-boon
-asynchronously
-bigness
-axial
-chaffing
-battleships
-ant's
-anthropological
-accent
-brushing
-brassy
-consumptions
-battleship
-absorb
-beckons
-brook
-connectors
-clinches
-accesses
-beaters
-archaicness
-bursitis
-chided
-bomb
-assimilated
-addicts
-convening
-arianists
-counting
-altar's
-confusions
-attachment's
-clipping's
-amazing
-corset
-bossed
-attach
-commandingly
-animatedly
-allegations
-assuages
-annulment
-compress
-aptitude
-absurdities
-autobiographic
-aspect's
-concentrator
-burgesses
-anagrams
-bedeviled
-assemblers
-convinced
-commentary's
-agglomerated
-biological
-callousness
-axolotl's
-atmospheres
-authoritarian
-cancer's
-above
-charting
-aldermen
-battler
-cistern's
-bouncer
-amassed
-conquest
-altering
-arrogantly
-brokenly
-comparator
-counsellor's
-attenders
-cackle
-criticize
-authored
-ably
-believed
-compelling
-accepter
-cleansed
-afflicted
-backslash
-computed
-almighty
-attache
-braes
-carriage's
-benediction
-brigadier's
-contemporariness
-boomtown
-amplitudes
-breakwaters
-clod
-catch
-bar's
-activist
-caves
-assenting
-camp
-attainments
-brotherliness
-continuances
-appearance
-applicator's
-browbeats
-banjos
-addendum
-became
-adduces
-armadillo
-brothel
-almanac
-courageous
-assault
-chunk
-coaching
-atheist's
-blunted
-aperiodicity
-congresses
-boastfully
-burglarproofed
-broadest
-bashfulness
-affect
-acne
-bottleneck's
-criticisms
-corrupts
-colonized
-closeted
-canonicalizing
-auditorium
-antenna's
-awfully
-anti
-consumes
-agonize
-algebra's
-championing
-blush
-bugger
-antagonize
-beethoven
-blase
-boycotts
-compensatory
-bugged
-boroughs
-anatomic
-batons
-arguably
-affricates
-appreciations
-cavalry
-alumna's
-arcing
-backpacks
-braces
-contextual
-coupon
-chillingly
-allocates
-abuts
-contribution
-commodity
-admonishing
-coolly
-cabinet's
-collapsed
-confessions
-adjured
-capriciousness
-chastising
-babe
-aerodynamics
-accepting
-concept
-contour's
-consequentialities
-birthday
-bankrupted
-birthed
-benefit
-concentrations
-azalea
-channels
-chestnuts
-contenting
-antedate
-censors
-contagious
-abbot's
-channellers
-apt
-commend
-avocation's
-admonition's
-abolition
-confederation
-carried
-clumsy
-coincidences
-bumper
-burr's
-bugles
-bribers
-attainably
-consume
-comma
-creativeness
-accuser
-bombs
-abbey
-baffled
-aside
-clip's
-appeases
-compass
-bundling
-abstractionism
-confide
-creases
-apropos
-confronted
-corrective
-concurrencies
-autocratic
-alien
-attending
-antagonistic
-broadcast
-asymptote's
-belied
-breasts
-contrapositives
-coiner
-accordingly
-cohering
-computers
-cow
-bibs
-ancestral
-controller
-attacker
-alerts
-coconut
-agency
-alerted
-alcoholism
-ammoniac
-actinometers
-acquitter
-bud
-cessation
-alleging
-centralizes
-articulators
-council's
-carvings
-arduously
-blown
-anode's
-arrogate
-bisects
-centimeters
-burgeoning
-course
-appointee's
-ascribable
-communicate
-contrivance's
-adoptions
-attune
-acres
-abyss's
-corporal
-certifiers
-analyze
-augusta
-bestseller's
-checkpoint
-coexist
-attainers
-argon
-bearded
-crudeness
-averaging
-brick
-adducing
-annulment's
-chicks
-blocked
-cisterns
-afoul
-affiliates
-briskly
-adhesion
-ascertainable
-appeasement
-blueprints
-agreements
-blindfolds
-communicator
-characterization
-annoyances
-breeches
-brushed
-clinic
-competes
-chuckled
-cradled
-balmy
-antisubmarine
-alternate
-armpits
-barn's
-conjuncts
-adhere
-allows
-counteracted
-appetizer
-capturers
-cleanse
-avant
-abbe
-corpse's
-arduousness
-badge
-begets
-contemplated
-caveat
-copiously
-athena
-aggrieving
-alibi
-accumulation
-basket's
-aftershocks
-bass
-conjuncted
-chaps
-brunch
-colonials
-bibbed
-clusters
-antagonizing
-constituencies
-combings
-bearish
-continuously
-adequacy
-brow's
-catalog
-alderman
-comedic
-chemists
-concernedly
-conceded
-alarm
-arced
-buckle
-confidingly
-coherent
-closes
-buffoon
-brace
-adjustably
-crackers
-contamination
-burgess's
-aerobic
-constitutes
-baptismal
-broadness
-blimps
-concatenation
-claiming
-bard's
-aerosolize
-adjoins
-copies
-coats
-boggle
-corroborated
-concreteness
-bill
-cautions
-bantam
-bearably
-armchair's
-birthright's
-cravat's
-cone's
-courtiers
-asunder
-bulletin's
-biopsies
-alley
-contrive
-blasphemies
-amuser
-ballerinas
-blushed
-causticly
-brandy
-blinkers
-complimenting
-crimsoning
-angola
-apprehensiveness
-bolster
-columnate
-byproducts
-berths
-accusal
-chubby
-arrived
-camps
-blemish's
-anaconda
-cook
-airfoils
-atlantic
-boosted
-converge
-availer
-appalachians
-coffin's
-boarding
-alga
-crouch
-columnizing
-consul's
-chastises
-angling
-apple's
-billiard
-attentiveness
-adroit
-apprehensible
-cereal
-blouse's
-browning
-bodybuilder
-coaxing
-assertion's
-connective's
-commemorated
-accountability
-crooked
-blips
-chandeliers
-aristocracy
-bangs
-coke
-abutment
-community
-calculus
-congregated
-crepe
-compromised
-airlines
-contributing
-contingencies
-coordinated
-alginate
-batted
-contender
-alma
-antagonisms
-accompanied
-airport
-administrator's
-appraisal
-breadbox
-condemnation
-backlog's
-available
-consequents
-crooks
-commonwealths
-barring
-channeller
-crucially
-archaeological
-charming
-adventist
-credits
-appetizing
-breads
-clients
-climbing
-aloneness
-abstractness
-appearer
-astute
-clockers
-antagonizes
-agonized
-bastard's
-conjectured
-aqueducts
-aureole
-boatswains
-conjured
-chauffeur
-complementer
-behold
-bustards
-bivouac
-cluck
-anus
-bless
-catastrophic
-bounty's
-allowed
-answer
-concealers
-brainchild's
-coercion
-buzzword's
-bordellos
-appertain
-applier
-couriers
-aesthetic's
-craft
-capacitances
-capped
-coupler
-category's
-anvil's
-conquest's
-checksums
-clucking
-bronchus
-acrimonious
-changeably
-accenting
-argued
-conditioning
-brewing
-backwardness
-cascaded
-atomize
-contours
-arianist
-apart
-conflict
-carefully
-banshee's
-conveys
-arbitrates
-amphitheater's
-amen
-alimony
-bound
-buzz
-courtroom
-apparently
-coalescing
-circulating
-amounter
-bypasses
-breadth
-choral
-completion
-arisen
-anticipating
-bilges
-contractions
-bedspring
-commune
-blacklisted
-beagle
-alkaline
-atolls
-carelessly
-blimp
-corking
-brevity
-alterable
-canada
-bear
-bluntly
-cartridges
-connoted
-countries
-corroborate
-consecration
-corrupted
-appreciating
-combatant's
-alkalis
-affecting
-blues
-casserole
-ballad
-bewitches
-common
-as
-because
-bathroom's
-anchorages
-beguile
-connect
-convenience's
-counteracting
-assorted
-care
-contains
-centimeter
-ancestors
-briefings
-busses
-churchyards
-breakable
-amortizing
-courthouse's
-click
-courses
-ajar
-county
-covet
-confidences
-capitalizer
-agog
-backtracking
-copious
-bestsellers
-chilliness
-bringer
-browse
-centipede
-bawled
-bricklayer
-breath
-assailants
-abysses
-command's
-characterizer
-calculating
-america's
-aurally
-contain
-alias
-commentators
-confounded
-appending
-accidents
-chatters
-coordinates
-bleeder
-blueness
-badger
-bolsters
-astounding
-capitalist's
-conservation's
-commences
-aimed
-bun
-comparators
-competition
-bauble
-backbend's
-bled
-assassinate
-chop
-anemometer's
-cobbler
-coldness
-audiometry
-affinity's
-amalgamates
-cowardly
-consolidating
-beads
-brackish
-bookings
-accuses
-bog
-compartmentalizing
-clutching
-calming
-collars
-clambers
-banqueting
-beaked
-authoring
-correspondence
-apostrophes
-affirmation's
-bespeak
-costing
-brought
-complainer
-battalions
-asymmetry
-boathouse
-canyon's
-awarded
-amplitude
-anarchical
-anticipatory
-bolder
-cooperatives
-caterer
-adviser
-balkanizing
-augur
-cannibal's
-balustrades
-attaching
-collector's
-commercials
-capaciously
-coincidence's
-bumps
-ascot
-bale
-blackmail
-baby
-aftereffect
-bloomers
-buttresses
-avenues
-climaxes
-aqueduct
-cater
-brainchild
-avail
-bypassed
-bowl
-california
-cements
-boxes
-brained
-bedevils
-captors
-acuity
-ascends
-breakthrough's
-assigner
-caner
-bequests
-ceilings
-axers
-bookshelf
-autistic
-celebrations
-axons
-chiding
-asterisk
-allophonic
-blindingly
-cherubim
-boaster
-confining
-anxious
-clowning
-advisement
-approach
-anesthetic's
-crescent
-alertedly
-birdbath
-beardless
-bras
-auspices
-choosers
-approval's
-afflicts
-corrosion
-arpeggio's
-bodyweight
-cranky
-battlefront
-affirmation
-churchyard's
-aeroacoustic
-anders
-adjustment
-baneful
-citation's
-acetone
-blend
-binuclear
-boner
-annotation
-announce
-claimable
-contemporary
-clothing
-acquitting
-choosing
-attacher
-bananas
-binaural
-arrestor's
-aches
-conclude
-collaborators
-await
-blaspheme
-bequeaths
-crows
-balconies
-begging
-conducting
-abstracts
-assignee's
-causations
-approximation
-articulated
-considerably
-apricot's
-afferent
-assertively
-bonding
-calms
-cranberry's
-cost
-captaining
-agenda
-corridors
-complaint
-christens
-aggravate
-countess
-arbitrators
-ascribing
-breech's
-bellwether's
-burglarized
-confinement's
-animating
-adjectives
-cannister's
-bemoan
-cleanest
-acme
-cheapest
-activities
-allophone
-boy
-belaboring
-captions
-compactor's
-actuator's
-befouling
-arachnid's
-computerizes
-compile
-absorption
-bridled
-absorber
-convicts
-birch
-alkaloid's
-cannot
-bacilli
-charitableness
-abated
-ceaseless
-beavers
-bookshelves
-commensurate
-appreciates
-basil
-cartoons
-aides
-buxom
-cages
-cantor's
-acceptances
-antiquated
-amalgamate
-babyhood
-beers
-conforms
-bouquets
-canner's
-baste
-cashed
-argue
-butcher
-backbones
-absolve
-crib's
-cafes
-abstracted
-book
-committees
-authentically
-conference
-antisera
-bourgeoisie
-attribute
-biddy
-autobiographies
-chivalrousness
-coverlet
-ambiguously
-calorie
-anhydrous
-alignments
-around
-archfool
-advance
-bedpost's
-affective
-contained
-amain
-bromides
-clogs
-bricker
-arduous
-consistent
-amidst
-confess
-complain
-anniversaries
-coasting
-cobwebs
-aries
-benchmark
-aviaries
-bombard
-boxers
-ashtray's
-assyriology
-blaze
-ablative
-chaos
-burro
-arguer
-ashamedly
-crier
-allocator's
-aggressively
-carts
-advisory
-airship
-alkali's
-backup
-chaining
-continue
-cartoon
-circumference
-breadwinners
-autonomy
-banking
-armored
-cabin
-chunks
-antigens
-blistered
-airers
-breakaway
-belief's
-belays
-coveting
-auburn
-careful
-anybody
-bumbled
-cautious
-adopter
-ballplayers
-anteater
-citadel's
-avails
-agent's
-caliphs
-bridgehead
-already
-caterpillar's
-coachman
-centralizing
-alphabet
-concede
-barbell
-breadboard
-ballast's
-activators
-attendance
-blandly
-calculator
-codeword
-addressee's
-avenue's
-alcoves
-alternately
-admonishes
-concentrate
-crossbars
-adjoining
-basset
-carbons
-beast
-blonde
-castle
-clarification
-bitch's
-abrasion's
-books
-amputate
-bicycler
-aphonic
-arraigns
-acquiesce
-buster
-chaperon
-advisements
-buyer's
-attack
-birthdays
-blazed
-confuser
-crag
-ballet
-airports
-bison
-counterexamples
-arteriole
-colony's
-adamantly
-blunders
-chivalrously
-adult's
-authors
-amplifiers
-counterfeited
-complicity
-astrophysical
-axolotl
-bash
-battleground
-butterfly's
-axioms
-allegory
-blitzes
-blindfold
-bufferrers
-approximating
-byways
-computations
-alight
-avoiding
-assurance's
-barrages
-canonicalized
-callously
-auditing
-authenticating
-bag's
-asters
-artistic
-bonanzas
-applaud
-certainties
-auto's
-concession's
-cascade
-chubbiness
-churchyard
-afternoons
-antigen's
-baron's
-amphibian
-banister
-capitalize
-approval
-appropriated
-bureaucrat's
-covets
-cloisters
-circulate
-bivalve's
-beta
-collector
-among
-cane
-birdlike
-attenuating
-conjunctions
-appliance's
-coral
-crucify
-abnormal
-combined
-classroom
-buckskin
-commissions
-abolishments
-arching
-croak
-americium
-associates
-car's
-assuringly
-agreer
-anticoagulation
-closure's
-corkers
-attend
-alphabet's
-awakening
-composedly
-attracted
-construed
-cricket's
-applicability
-autonavigator's
-chloroplast's
-ashen
-beggars
-corporation
-another
-conflicts
-bootlegs
-archeologist
-alcove's
-agitates
-cargoes
-creditor
-cops
-advisably
-coronation
-bourgeois
-crochets
-cropper's
-cramp's
-adulterer's
-corroborations
-changing
-combinatorics
-calm
-comprehensible
-blooms
-coolness
-copying
-blacksmiths
-commodore
-compulsions
-clump
-afterward
-crucified
-brooder
-buckets
-accelerating
-accented
-boat
-adventitious
-baseline's
-courier
-calamity's
-atoll's
-brutalizes
-bundled
-chairperson
-cheeses
-continuation
-celebrating
-apologists
-behest
-bumpers
-consonants
-circulation
-betraying
-commuting
-breezily
-circumstance
-coughing
-benefiting
-conquerors
-chemically
-commencement
-adjustors
-angel
-congratulate
-conspired
-causally
-bud's
-conquers
-augmented
-bereaving
-advisor
-articulation
-angler
-admission
-bide
-competitors
-amusement's
-collecting
-adder
-arithmetized
-cheek's
-apostrophe
-blockages
-clockwork
-bubbly
-apricot
-adjudicated
-banter
-amused
-breacher
-bracketed
-aimer
-comprehending
-bunkers
-canton
-arcane
-absent
-capitol
-consequence
-cognitive
-abjuring
-clever
-coronet
-anathema
-artichoke
-controls
-credulous
-acid
-crawled
-coupled
-boomtowns
-aspen
-acted
-anyhow
-burdensome
-backdrop's
-apocalyptic
-cornerstone's
-cautiously
-blisters
-conveniences
-arbor's
-accessories
-alleges
-clubs
-accompaniment
-blazes
-annually
-clique's
-beamers
-ballgown
-autumnal
-acreage
-conjunct
-balances
-consoling
-canvas's
-competent
-aggrieves
-although
-afraid
-clearly
-cognizance
-acoustic
-colleague
-causing
-absences
-closers
-airs
-cinder
-adversaries
-altruistic
-brews
-ceremonially
-appraisal's
-commissioners
-army's
-assists
-acceptor
-comparison
-cooling
-conveniently
-couching
-changes
-clinic's
-confronting
-adjunct's
-blandness
-alternates
-bunter
-consequent
-clean
-autos
-accumulators
-carver
-aprons
-awful
-bobbins
-blasphemy
-assuming
-abscess
-assemble
-cabinet
-atomics
-blacklists
-audacious
-assay
-anthropology
-barnstorm
-awl
-bumping
-assembles
-capture
-compensates
-coverable
-amend
-array
-continually
-absented
-cigarette
-antiresonance
-backspace
-branched
-appellate
-courtroom's
-alienated
-austerity
-cement
-asked
-antelopes
-cottager
-bluebonnets
-booze
-amendment's
-backslashes
-begun
-bijections
-cafe's
-boatload
-collect
-appeals
-belittles
-befit's
-beauty
-arrogated
-academia
-contagion
-blemishes
-coverlet's
-comfortability
-antecedent
-controllably
-congressman
-complicate
-coincide
-arrears
-clumped
-credited
-buffoon's
-catholic
-accompanist
-beauty's
-aster's
-blatantly
-bothering
-bewilder
-canceling
-carbonizer
-accentuation
-backstairs
-anticipations
-bestowed
-civilian
-blooming
-blunts
-airlocks
-argo
-blueprint
-aristocrat
-cakes
-complements
-ale
-camping
-army
-adrift
-bengali
-barely
-blasphemes
-briefcase
-brooches
-ailments
-blazers
-crevice's
-bankrupt
-archiver
-articulator
-alphabets
-bonds
-colliding
-candidate
-cashier's
-bellwethers
-airstrip
-announcers
-calendars
-corrupter
-aqueduct's
-axiom
-bathing
-blusters
-ascribed
-admittedly
-angrily
-analytical
-contraption
-convertibility
-abysmal
-cathedral's
-aversion's
-algol
-articulately
-breveted
-bickers
-chatterer
-adoptive
-bijectively
-cloudiest
-coarseness
-carted
-cocktail's
-capacious
-anion
-buffoons
-bleeding
-bedrock
-adventurer
-compositions
-camouflages
-brittle
-chip's
-aloe
-chorus
-cargo
-critical
-biographer's
-abject
-blasphemousness
-charmer
-betray
-blacking
-awoke
-allele
-bags
-claimant
-clover
-biographies
-confound
-advertises
-crafter
-cripples
-bygone
-concentric
-couldn't
-contentions
-acrid
-costume
-aft
-aesthetic
-bandits
-adducts
-constellations
-coffer's
-created
-commercial
-art's
-cookie's
-ammonia
-adjunct
-articulateness
-congratulated
-crags
-brandishes
-annual
-byword
-affection's
-college's
-aboriginal
-bikini
-buttering
-allotter
-console
-advent
-activates
-beverage
-april
-acceptable
-barrel's
-boys
-attractor
-azimuth
-critics
-ballooner
-aren't
-adulterating
-criticise
-abeyance
-automatically
-collaborative
-capabilities
-crawls
-anomaly's
-climaxed
-animately
-aroma
-belie
-attires
-argumentation
-baseboard
-bluebirds
-cactus
-byproduct
-balancer
-beholder
-conservationist's
-betrayer
-agony
-accusingly
-convict
-coaxes
-breeds
-agitated
-championship
-brevets
-auscultate
-counselling
-cornerstones
-america
-canoes
-aspirator
-compensate
-antiseptic
-bereave
-absinthe
-compose
-collide
-alabamian
-candid
-civilized
-clamps
-authoritarianism
-colonist
-bugging
-bins
-abashing
-battlers
-canning
-berate
-assembler
-amateurish
-boasted
-angriest
-bluffs
-colonize
-balcony
-bleat
-bustard's
-attenuate
-contagiously
-bicep
-babel
-beatniks
-brush
-analogy's
-audiologist
-assessment's
-camera
-arbitrary
-alleyway's
-concession
-constructions
-accompanies
-accretion's
-aroused
-charcoaled
-belated
-bottom
-bloodshot
-bisques
-advocate
-arabs
-cathodes
-adamant
-challenge
-absurdly
-abolitionist
-cleavers
-bludgeons
-bassinet
-clause
-coiling
-cask
-boob
-azalea's
-afghanistan
-carriages
-blade's
-bobby
-asinine
-acclaiming
-absorbed
-blacken
-cheating
-bootleg
-anonymous
-addict
-astonishes
-awry
-adequate
-categorization
-casks
-blaster
-aspirants
-abscesses
-airing
-assumptions
-capitalists
-board
-asynchronism
-body
-aye
-contraction
-athens
-arsine
-cohabitations
-below
-bows
-aviator's
-ampoule
-connective
-adapter
-authenticate
-blackboard
-brilliant
-appoints
-attics
-conquer
-boning
-comestible
-camped
-blonds
-aisle
-coals
-billboards
-characterizers
-crow
-clout
-admirer
-actuarially
-abstruse
-accessing
-bonfires
-clenched
-characteristic
-catching
-chars
-canons
-barrier
-championed
-butterflies
-completely
-calendar
-artwork
-abjections
-burgher's
-correlates
-arrivals
-accepters
-circuses
-breadboards
-accomplishment
-analyzed
-appropriates
-cancel
-bordering
-aperture
-civilizing
-assortments
-blackest
-blitz's
-copy
-commenced
-admirers
-cheers
-croppers
-cliff's
-circumstance's
-bibles
-buttressed
-consecutively
-birefringence
-automaton
-cheerless
-chopping
-ballooned
-convent
-acknowledgers
-appointing
-belies
-comeliness
-bangle's
-communication
-bisector
-avocations
-clique
-brainstem
-campusses
-allocators
-bramble's
-assaults
-commemorate
-appendix
-agent
-apportioning
-bottled
-artifact's
-block's
-archery
-bagatelles
-candies
-catched
-cognitively
-creepers
-concentrated
-bout
-balustrade
-abodes
-carrying
-confirming
-cannibal
-chinners
-carbonate
-anguish
-butt
-colons
-ablated
-corporation's
-cock
-convincers
-beret's
-bluish
-compressive
-authenticates
-commemorative
-bureaucracies
-coinage
-coach
-assigning
-concentrators
-capitalizing
-appraisals
-belaying
-candy
-blossomed
-bricks
-atonal
-analogue
-caters
-barbaric
-applique
-clink
-audio
-actress
-assyrian
-apprehension
-conversation
-apsis
-bedevil
-comics
-affricate
-comings
-buttress
-angering
-buckboards
-bombed
-adversely
-adequacies
-commended
-causeways
-adherers
-codes
-aquaria
-ape
-bulks
-compactly
-brainwashes
-bleats
-commandants
-conditionally
-adjourns
-clobbering
-allowances
-buildings
-complemented
-blanker
-algeria
-brief
-creak
-adductor
-categorizer
-approacher
-argument's
-clocked
-bedazzle
-cause
-coordinator
-buildup
-countenance
-abhorrer
-backtracked
-bogus
-closer
-broilers
-chirps
-adjournment
-belles
-bitingly
-befogged
-contexts
-amorous
-breeding
-abortions
-blockage's
-alternatives
-bouncing
-beryl
-ballistics
-banters
-carpenters
-auction
-bowdlerizing
-brazen
-bonuses
-circulated
-adultery
-archival
-bears
-baptized
-burglaries
-borrowing
-barbarous
-casher
-adolescents
-atrophic
-busily
-aerating
-coatings
-athenians
-casing
-consuming
-alphanumeric
-beaches
-bisection's
-conjecturing
-aspirate
-biography's
-accompany
-bureaucrat
-broomstick's
-colony
-coalesce
-clock
-bequeath
-collaborates
-belonging
-configured
-burlesques
-anode
-consenter
-bug
-counterpoint
-counts
-bangladesh
-analogical
-accident
-bulky
-affinities
-abysmally
-boorish
-assiduously
-cannisters
-autocollimator
-bassinet's
-barrelling
-blurts
-carbonize
-candle
-act
-addressees
-constraints
-boast
-complaining
-coziness
-avocado
-coolest
-blank
-beadles
-anytime
-covetous
-appellant's
-angers
-academies
-ageless
-chased
-constitution
-consonant's
-boosting
-ascetics
-aerosol
-apse
-blushes
-clang
-confers
-confidentiality
-coolie
-colon's
-chickadees
-badminton
-argonaut
-constituting
-aloha
-contracts
-broomstick
-brackets
-attendant's
-connection's
-conciseness
-abstractor's
-composes
-chaste
-assures
-conjuring
-barbital
-bunion
-bases
-clowns
-barrelled
-audience
-auctioneer
-complexly
-aviator
-conjectures
-backscatters
-cheerfulness
-communicating
-agreement
-bricklayers
-bilabial
-abstruseness
-cobol
-cooperating
-admit
-blundering
-accelerates
-assaulted
-concealing
-anachronism
-bowels
-butane
-anniversary's
-converts
-convoyed
-climates
-barriers
-clubbing
-additives
-bask
-confessing
-caravan
-colonizes
-continuous
-cheerlessness
-boggled
-armpit's
-bridgework
-allegro
-cricket
-cannon
-adoption
-clanging
-auscultations
-billowed
-alphabetize
-airlift
-appointee
-boyfriend
-chaotic
-corrections
-bonus
-contrasted
-convulsion's
-confessors
-adumbrating
-autocrat's
-coronary
-authentic
-barley
-brawling
-aegis
-appends
-bolshevism
-charted
-applicant
-aileron
-considers
-chin's
-alkyl
-amendment
-boulevard's
-avian
-breather
-canyons
-cannon's
-apportion
-badgered
-augers
-advisers
-censuses
-beveling
-aught
-arthogram
-anonymity
-appliance
-atmospheric
-anesthetizing
-ambulances
-blustering
-burnt
-chestnut's
-collects
-aliment
-anxieties
-championship's
-channeled
-arrival
-amassing
-corpse
-bedtime
-blackbirds
-cats
-constants
-chemistry
-brewery
-brother's
-boasts
-accentual
-bellwether
-bely
-courted
-baroness
-configure
-collection
-aviary
-achieves
-belfry's
-beech
-baseman
-bacterial
-contestable
-blond
-contracting
-comparably
-consultation's
-booster
-conspiracies
-belief
-candidate's
-boardinghouses
-connectivity
-check
-crazy
-collided
-assistant's
-critic
-bilateral
-cheapening
-appalled
-autopsy
-balled
-abnormally
-acquires
-aloofness
-backwaters
-combative
-computerizing
-craters
-contributorily
-behaved
-comers
-axiomatizations
-analogously
-banjo's
-cleanser
-capitalizes
-chamberlain
-aggregates
-amenorrhea
-begins
-condone
-cleaved
-bustard
-adsorb
-airedale
-bridles
-audited
-could
-amour
-checkbooks
-admiring
-arrested
-commerce
-asbestos
-can's
-clamping
-bathers
-acknowledgments
-census
-acrobat
-bargains
-apogee
-creaking
-busboy's
-additional
-chants
-circumvents
-afloat
-anyplace
-alumnae
-anions
-classroom's
-ballerina's
-convents
-angered
-climbers
-citation
-cools
-clamor
-capaciousness
-beatific
-abrades
-advocating
-coverings
-claims
-brethren
-advertised
-atrophies
-coffer
-beagle's
-brazenly
-bitterly
-clergyman
-braiding
-compressible
-convicting
-agreeableness
-antithesis
-cogently
-botanist's
-bidirectional
-bewilders
-airlock
-costumer
-blamelessness
-agglutinins
-catalyst's
-allocation
-annunciates
-borderings
-accomplishes
-confronters
-clinically
-breadbox's
-canvassed
-communicative
-coercing
-backpointer's
-bramble
-congregations
-crave
-courtesy's
-cocoon's
-admitting
-chieftains
-acclimate
-consequences
-cones
-contradict
-axolotls
-contractual
-artist
-atrociously
-consecutive
-berated
-bluing
-attacks
-choruses
-blatant
-balance
-amplifier
-assist
-analyst's
-ambler
-conveyance
-compromising
-baffler
-corridor
-bed's
-condoned
-boulevard
-anomie
-averages
-basics
-apologia
-cabbages
-concretes
-alcoholic
-aliased
-chocks
-balsam
-collies
-censor
-arouses
-conundrum's
-academically
-bent
-codings
-coastal
-allots
-acclaim
-citations
-cantor
-circularly
-boarder
-caribou
-biologist's
-cowling
-connects
-chasing
-bootstrap
-backscatter
-abstractly
-corrupt
-alleviating
-biasing
-abrade
-arraignment
-beaten
-blanketing
-compactness
-adage
-coincided
-borate
-bra's
-concepts
-bootleger
-christian
-argos
-basal
-abate
-campuses
-abridging
-confusers
-cabin's
-audition's
-amphibians
-attractively
-adhesive's
-ascendency
-beforehand
-ache
-brokers
-bowler
-criminally
-american's
-chock's
-artillerist
-appropriation
-characterization's
-artifices
-annoys
-constituents
-bottle
-beaned
-consisting
-beholding
-ceremony
-carpeted
-absolutely
-anorexia
-accredited
-azaleas
-amaze
-commit
-afflicting
-contriving
-adventure
-blood
-blabbing
-absoluteness
-appreciable
-approachers
-bumptious
-behavioristic
-anticipates
-adults
-barnyard's
-banging
-banana
-bilge's
-aware
-coheres
-bronchi
-commissioned
-arrogation
-confines
-core
-attenuation
-afterwards
-clearing
-applies
-alphabetized
-cemetery's
-campaigning
-abolishes
-brig
-cheer
-combers
-backtracker
-clinker
-clouds
-clog
-berries
-advising
-childish
-clobbered
-bride's
-astrophysics
-canker
-concatenate
-bite
-chagrin
-bodybuilders
-calamity
-admiralty
-councillors
-competitive
-assessments
-copper's
-cabling
-casket
-conducted
-backplane
-boyfriends
-bingo
-broader
-confiscates
-communicated
-baton
-cocktails
-albanians
-boardinghouse's
-brats
-akimbo
-categorizers
-comparator's
-blackbird's
-accidentally
-companion's
-clippings
-accosted
-bell's
-burly
-aggregations
-boathouses
-airmails
-abreactions
-changers
-carbon
-cleaners
-bookkeeping
-correlations
-backer
-conclusions
-brainstem's
-anecdotes
-chateau
-cogitating
-amphibious
-compounded
-completeness
-comptroller's
-boatswain's
-bolstered
-acquiescing
-actors
-calorie's
-adaptability
-abstractor
-bimolecular
-belly's
-automobile
-automotive
-analyticities
-awesome
-colonizer
-approximated
-chemist
-coronet's
-classmate
-anteater's
-altars
-adulthood
-amid
-assails
-blizzards
-corroborative
-biographer
-compartment
-blooded
-bipartisan
-bluff
-aloof
-bronchiole
-clincher
-congratulations
-ablation
-caught
-collier
-chooses
-antidotes
-artery
-clearance
-civility
-basketball
-auscultated
-behaviorally
-crowning
-autobiographical
-cheaply
-brutally
-agonizing
-clerk
-comprising
-baller
-confuses
-acquiesced
-astonishingly
-birthplace
-covered
-chopper
-combinator
-benignly
-bedside
-blasts
-billboard
-appraise
-aboveground
-comforter
-credulousness
-battlefield
-barefoot
-cleverness
-apparatus
-bartering
-bromine
-aerodynamic
-crabs
-chains
-airflow
-allegrettos
-armchairs
-blacklist
-approvals
-bait
-collections
-antecedent's
-airbags
-casted
-content
-conferrer's
-crouching
-coughs
-canal
-amphetamine
-augustly
-bedraggle
-arithmetic
-cataloger
-alluding
-credulity
-coffees
-crueler
-beautifully
-caresses
-correlative
-consul
-criticizing
-couched
-baths
-alchemy
-bargain
-accomplishments
-conveyer
-benevolence
-broil
-chilling
-axed
-attire
-collisions
-categorizes
-cited
-aeration
-accommodating
-coordinations
-boxcar
-cattle
-bullion
-afternoon's
-captures
-afghans
-comets
-component's
-ark
-bounds
-adjusting
-bravely
-capability
-chap
-absolving
-aspirating
-arcs
-conspires
-collaborated
-admonishment
-astounds
-brasses
-compromise
-changed
-consumers
-connoting
-buttonholes
-cordial
-anionic
-chastisers
-archive
-alleviate
-burglarize
-acquainted
-copiers
-cashers
-antisocial
-creations
-bookie's
-censure
-beadle's
-banded
-circled
-bulged
-cheapness
-attorney's
-chewer
-bookshelf's
-councillor
-assertion
-broom's
-contemplations
-club's
-balkans
-cherubs
-alas
-chair
-apologizes
-compartments
-beyond
-aptly
-censured
-allegros
-boosts
-card
-arithmetizes
-attainment's
-arrester
-anding
-asker
-compatibilities
-confidentially
-commissioning
-cleaner
-aversion
-cooperative
-battalion's
-cemented
-charity's
-conceited
-capable
-anymore
-computing
-aping
-chiefly
-affair
-beaners
-allying
-caption's
-antipathy
-causal
-abyss
-botchers
-burglarizing
-confidant's
-activator
-continent's
-census's
-brat's
-antagonism
-bedspring's
-antiserum
-charge
-connector's
-alike
-believable
-belfry
-cast's
-bureaus
-beneficiary
-abolisher
-artichoke's
-broadly
-concurrent
-alteration
-bookies
-crafts
-bays
-ass
-bouquet's
-ave
-chords
-crazes
-anemic
-appoint
-beets
-billing
-contest
-assassination
-allot
-brindled
-acute
-absolves
-adsorbed
-auxiliaries
-belatedly
-businesslike
-assassinates
-bookkeepers
-bevel
-adders
-automate
-archangels
-breakfasted
-changeability
-contested
-cradles
-combatants
-besieging
-certainty
-attempts
-bankrupting
-compiler's
-complications
-banquets
-ancestor's
-ail
-abbreviating
-compacter
-approvers
-acknowledges
-comically
-almonds
-counsellors
-calmness
-assailed
-crane's
-baser
-big
-corruption
-circuitry
-briefness
-community's
-banquetings
-alms
-bass's
-bellowing
-adoption's
-blockading
-compellingly
-builders
-befallen
-bombproof
-cartons
-chore
-crimson
-anther
-clucks
-assemblies
-beatitudes
-aspiration
-compels
-angst
-balancing
-bowstrings
-bayonet's
-butte
-biomedical
-casualness
-accolade
-blackberry's
-bunched
-affright
-clung
-burlesque
-bare
-corrected
-arbitrate
-cropping
-coherently
-bloodhound
-circularity
-courtesies
-articulating
-concluded
-analogy
-brutalized
-airmail
-cooperator
-cousins
-centralization
-bibbing
-beside
-bravo
-abductors
-cars
-bovines
-bump
-absconding
-chins
-chasers
-boundary's
-antecedents
-awed
-counselled
-aback
-attenuator's
-blazer
-bettered
-awaken
-abreast
-beagles
-artisans
-buckled
-credence
-control's
-bewhiskered
-calloused
-breathe
-collaring
-blossoms
-bring
-actualities
-bivalves
-animals
-cowboys
-constituency
-affordable
-acrobatic
-attiring
-boatswain
-concurrence
-abrasions
-babel's
-cowerers
-chiffon
-bostonian
-criterion
-blinds
-cased
-affections
-conditioners
-clutter
-accrued
-attractors
-botcher
-compunction
-bludgeoned
-censored
-allah's
-chronic
-burrs
-commodity's
-appraiser
-asserters
-cheaters
-besting
-anchorite
-combine
-afforded
-cigarette's
-bathrooms
-apostles
-chloroplast
-bootlegging
-bibliographical
-beans
-bylaw
-benefited
-brochure's
-cordially
-brashly
-beastly
-bologna
-alderman's
-burning
-billow
-convert
-buffaloes
-comparatives
-assistances
-camouflaged
-announcement
-bobwhite
-brawl
-adducted
-cavern's
-affectation's
-bandying
-brunette
-architect's
-aphorisms
-cremate
-bray
-billed
-conception
-battlefield's
-bandaged
-broaches
-bazaar's
-beatification
-bigotry
-clergy
-abstains
-befits
-bantering
-conceivable
-attachers
-analogies
-bimonthly
-august
-additionally
-confirmation's
-ballooning
-cardboard
-belle's
-counterparts
-candor
-bishop
-comprehension
-affronted
-bravura
-courting
-antidote
-buggies
-arisings
-appendix's
-bright
-categorize
-cooking
-agnostic's
-billets
-amok
-bewitching
-audiograms
-column's
-bussed
-checkbook
-alteration's
-atherosclerosis
-broached
-based
-cacti
-boardinghouse
-bowdlerized
-anchoritism
-achievement's
-bald
-cover
-codifications
-capacitor
-brashness
-causes
-acyclically
-argument
-boarders
-audiometer
-compute
-contribute
-crisply
-bitters
-circumvent
-assailant
-bosun
-buyers
-alibis
-blurting
-coasts
-bivouacs
-arrogating
-albanian
-attempted
-acquisitiveness
-applauding
-alfalfa
-cantors
-canonicalizes
-alkaloid
-bruising
-associativity
-budgetary
-carbolic
-clashing
-buffalo
-acorn
-analyzing
-backyards
-comedian
-betwixt
-aces
-chartered
-additivity
-becalm
-combat
-characterizations
-clinics
-bulbs
-bloc
-amenable
-civilian's
-breech
-attainment
-bounding
-compiler
-cotyledons
-billboard's
-caper
-aphasia
-chester
-combats
-biddable
-articulates
-caps
-assignees
-bifocals
-beady
-chinese
-assertions
-allegation
-championships
-accrue
-containment's
-croaking
-classifying
-annum
-brightened
-bits
-appointer
-besieger
-citizen's
-cerebral
-canto
-bakers
-capitol's
-authorizer
-blockaded
-anodizes
-alarmed
-buttressing
-attenuates
-bumptiously
-chronological
-colleges
-coward
-contraption's
-abstractions
-controversial
-boric
-bids
-agents
-backpointer
-bumped
-bottoms
-bowlines
-captivated
-article
-cliche's
-chases
-choker
-bremsstrahlung
-consult
-adjudged
-auctioneer's
-covers
-accurateness
-clues
-bugler
-bareness
-cedar
-alleviation
-anesthetically
-backpointers
-arched
-administered
-arrowhead
-continues
-asks
-confessor's
-allure
-backlogs
-childishness
-appointive
-covering
-conscience's
-bellows
-blanked
-considerations
-appalachian
-aerate
-budged
-city's
-accordion
-cliche
-collectors
-comprehensive
-boomed
-chariot
-baffling
-bunkmate's
-bumbles
-contaminating
-corroborating
-applications
-bursting
-cabbage
-befalling
-acquittal
-compromisers
-components
-arpeggio
-brothel's
-credibility
-begrudge
-confirmation
-academy
-appertains
-calibrates
-bureaucrats
-bawl
-costuming
-biography
-adoration
-cloaks
-aggregating
-business
-aphorism's
-carters
-admixture
-coexistence
-anomalously
-adapts
-amide
-affiliation
-capillary
-biscuit
-brainy
-bellhops
-chartings
-cohered
-austria
-champions
-basin's
-cascading
-consultants
-bison's
-admixed
-arithmetically
-clothed
-betterments
-conspirator's
-addition
-adolescence
-bolsheviks
-abominable
-breathless
-cozy
-arouse
-bumble
-about
-apace
-astronaut
-asteroid
-cable
-crab's
-beachhead
-assets
-analyses
-bisection
-coconuts
-alleys
-armament's
-bloodstains
-arpeggios
-apologist
-blithely
-anabaptist's
-beadle
-channelled
-confuse
-annoy
-beautifiers
-cheats
-clenches
-amuse
-bewail
-constitutional
-birth
-appendixes
-amazed
-berry's
-bilingual
-blustery
-amplification
-clogged
-blackmailing
-breakables
-adduct
-bondsmen
-conferred
-codewords
-bequeathal
-abundantly
-banner's
-atrocity
-congested
-closely
-absolution
-concatenations
-anarchic
-crag's
-communicators
-cavities
-comptrollers
-backstage
-bewailing
-charcoal
-conveyances
-collar
-bores
-briefest
-comments
-awning's
-associator's
-antarctica
-correspondingly
-bidden
-ad
-clings
-bit's
-apollo
-bulldogs
-chateau's
-amounting
-cogitates
-bellhop
-bookish
-bout's
-cannister
-bicep's
-asses
-beef
-battlefields
-consort
-auspicious
-breezy
-buried
-beverages
-approximates
-conduction
-bleakly
-blanketers
-ascertained
-absentminded
-bolivia
-births
-behave
-bilk
-breaths
-charter
-abstaining
-appareled
-boulder's
-breadwinner's
-correct
-accessed
-befitted
-adulterer
-axe
-activation
-betrothed
-asymptote
-bullet's
-clusterings
-baud
-bustling
-ballplayer
-constraining
-cleared
-brown
-affirmed
-agencies
-churches
-backyard
-burntness
-bronchioles
-charmers
-backscattered
-abridgment
-claw
-blow
-adjourning
-constantly
-brightens
-autobiography
-cards
-bypassing
-alcibiades
-concurrency
-chuckles
-bests
-belligerents
-adjustments
-bolshevik
-cabins
-astronomically
-cartridge
-boxcars
-boned
-bottomed
-burgeoned
-adjourned
-apprenticeship
-chastiser
-breached
-boycott
-butchered
-coordinating
-cottage
-brainwashing
-confinement
-bandies
-absentee
-collapses
-cruel
-along
-alloy
-convoying
-assignment's
-crisp
-ambidextrously
-blindfolded
-chilly
-condenses
-avers
-broiler
-anesthetics
-beaker
-cholera
-brag
-coffins
-cranked
-allocator
-brutality
-acquire
-blushing
-briar
-abolish
-crossovers
-broiling
-consolers
-beatify
-almanac's
-cooled
-commencements
-clasp
-committing
-condemnations
-altar
-by
-bombastic
-confederates
-bong
-concerted
-compilers
-counterproductive
-brig's
-accurate
-avidity
-cleavage
-blame
-conceive
-assessor
-consolingly
-concise
-computes
-alliance
-clucked
-axon's
-annunciating
-baseball's
-allusion
-brays
-auras
-blond's
-bronchitis
-ciphers
-blowing
-broth
-canonically
-baseness
-byline's
-appetite's
-colonists
-condensed
-cawing
-beaning
-broadening
-colonist's
-apocrypha
-chauffeured
-cored
-branding
-carrier
-assessed
-collegiate
-chirped
-accounted
-clubbed
-antibodies
-behalf
-alphabetizing
-conqueror
-alpine
-budgeters
-casements
-appropriate
-compliments
-cast
-accountancy
-cathedral
-conserve
-accorders
-arbitrarily
-cowing
-bars
-bagel's
-climax
-attention's
-cautioning
-centipede's
-almost
-abstractionist
-carpenter
-containing
-arab's
-courtesy
-carton
-accelerated
-bowman
-boastings
-banal
-bucking
-accomplishment's
-classification
-baldly
-abruptness
-calibrations
-blocs
-biking
-assenter
-adversities
-compartmentalized
-chemical
-attic
-audiogram's
-applauds
-crests
-bad
-bounce
-accelerators
-contemptuous
-attentions
-cancellation
-battles
-aging
-advantages
-anthologies
-answers
-bruised
-castes
-any
-coped
-arcade's
-adaptively
-arsenal's
-confessed
-controllability
-acceptor's
-abrogated
-abutted
-amusingly
-apology
-broils
-court
-boundaries
-bode
-collie
-adiabatic
-ambitions
-charged
-awfulness
-consorts
-botanists
-blurring
-absents
-batten
-backwoods
-breaks
-certified
-chattering
-admitted
-bathrobe's
-analogous
-corporacy
-bijection's
-combatant
-checked
-condition
-amoral
-bayed
-bedroom
-chanting
-antics
-charity
-blip's
-biped
-brilliance
-catchers
-booted
-anabaptist
-clothe
-comforted
-complaints
-coacher
-admissible
-bang
-concisely
-cookery
-capita
-assurance
-codifying
-benchmarks
-aunts
-commentaries
-anon
-applicators
-constructor
-associated
-abuses
-choicest
-confiding
-antislavery
-apron
-ashore
-cheerfully
-betterment
-administration's
-campaign
-cremated
-ambulatory
-bleacher
-afterthought
-barkers
-choir
-crossly
-conducive
-cache's
-battery
-actinium
-countryman
-cajoled
-appeasing
-beamer
-cleaves
-anthem's
-clearing's
-cooperated
-barker
-crowing
-apprising
-accusation's
-beginning
-associator
-booking
-caved
-amicable
-codify
-clairvoyant
-bevels
-becalms
-brawn
-bunkhouse's
-arms
-antiredeposition
-belt
-antiphonal
-cried
-brae's
-bridal
-acronym
-clay's
-checkers
-auxiliary
-bind
-compares
-agilely
-askers
-blankly
-antagonist's
-bimodal
-captivation
-creditable
-concentration
-calling
-bartender's
-autopsied
-correspondent's
-carnivals
-abjure
-bystander's
-bungle
-chanticleers
-conceding
-burghers
-boards
-accessions
-compensations
-arabian
-churn
-crowed
-centering
-abnormalities
-courtier's
-congregation
-aberrant
-annexing
-blockhouse
-anthropomorphic
-bedder's
-abutting
-conundrums
-affiliated
-cancellation's
-bolts
-ballgowns
-augmenting
-bureaucracy's
-bootlegged
-audiometers
-blueberry
-affliction
-appreciation
-codifier
-amasses
-countering
-crackle
-canoe
-consuls
-breathes
-broiled
-amalgam's
-bodes
-ballooners
-coating
-corollaries
-amphibology
-agenda's
-chafing
-alcoholics
-accredit
-anisotropy
-anchovies
-carriers
-acceptors
-betrayed
-buttocks
-busy
-bunny
-cropper
-accreditations
-bumblebee's
-adhesives
-civilize
-accedes
-abroad
-arch
-crept
-cotyledon
-alphabetic
-braille
-amateur
-adjure
-ascertaining
-budge
-adulterate
-additive's
-cardiac
-born
-brewed
-borneo
-bun's
-blue
-cackled
-acclimates
-airline
-blinder
-brokerage
-communicant
-central
-aggrieved
-asynchronous
-bough's
-acidly
-archaeology
-complementary
-animator's
-bodyguards
-climbs
-apathy
-constellation's
-acculturate
-archaeologists
-contingents
-control
-anglophilia
-billings
-corporate
-athlete
-accusing
-appear
-announcing
-accordions
-computerize
-combinations
-bile
-abut
-charger
-columnize
-computer
-blacks
-converges
-blamer
-bulked
-convincingly
-checker
-correspondence's
-accelerate
-accessible
-conceivably
-abscissa's
-adsorbs
-anglophobia
-anomic
-casters
-churning
-crease
-brood
-appendage
-bulwark
-bombers
-arcaded
-breadboard's
-aphrodite
-color
-commodore's
-answerer
-bobolink
-cloth
-conversion
-clime
-artery's
-birthplaces
-compiled
-arrack
-beetles
-bobs
-compatibility
-cocoon
-counterpart
-audible
-colonies
-airport's
-beige
-cogent
-bromide
-begrudging
-acids
-crucifies
-beggary
-archipelagoes
-availably
-counterfeiter
-blanketed
-amending
-accelerometer's
-advisors
-byway
-alignment
-amber
-austin
-copyrights
-beaus
-brigantine
-comforts
-appointment's
-crawler
-bangles
-contemplation
-concur
-characterizing
-censoring
-charters
-catalogues
-appropriately
-builds
-aeronautic
-confused
-comber
-axially
-cackler
-coercive
-ambassador
-arcades
-brash
-amorality
-belittling
-battling
-bloodied
-acrylic
-bantered
-clasped
-carcass
-archangel
-annunciators
-aristotle
-boulder
-burglarproofs
-chooser
-abilities
-calmest
-bach
-always
-blaspheming
-crossover
-bakeries
-clocks
-ankle's
-accidental
-arbitration
-chirp
-aeronautical
-boy's
-acidic
-bowline
-anonymously
-cod
-couplers
-beautifications
-bluffing
-backarrows
-brow
-covenant
-acronym's
-banning
-albeit
-ascetic
-burn
-animator
-beatnik's
-coveted
-cipher's
-broke
-cap
-bellman
-bulldozed
-clarifies
-bathes
-blip
-availabilities
-booth
-clangs
-audiences
-cathedrals
-confounding
-bigot's
-beecher
-arts
-company
-attributed
-avenged
-bawling
-caustics
-alee
-bordello's
-banks
-affords
-complied
-commas
-collaborate
-aquatic
-ambitiously
-burro's
-beard
-bittersweet
-candlestick
-bylaws
-broadcastings
-believe
-barrels
-braying
-certifications
-contrasts
-crashes
-audition
-confine
-bucks
-abates
-bureaucracy
-ambles
-besiege
-broccoli
-antibiotics
-attenuators
-accelerometer
-caste
-bib's
-browbeaten
-appurtenance
-bauxite
-asceticism
-case
-chewing
-aerator
-achievements
-barricade's
-agglutinates
-bewildering
-cartridge's
-children
-bufferrer
-actuator
-converging
-bolted
-chat
-combs
-chemist's
-adduced
-algebraic
-circular
-bloated
-conclusion
-burgess
-certifies
-absconds
-comprise
-benzedrine
-bumbler
-banjo
-allow
-appealing
-cooperation
-abraded
-chaperoned
-biracial
-braced
-censurer
-acoustician
-appraised
-benefitting
-constructs
-convertible
-administrative
-asocial
-area
-creature
-besetting
-crater
-begrudgingly
-blanket
-ablest
-alba
-airplanes
-allowing
-briefly
-beneficences
-concurring
-adjective's
-cork
-aerospace
-anomalies
-asher
-auger's
-boilers
-abhorring
-broadenings
-bladder
-belay
-approver
-abdominal
-commends
-cringing
-billiards
-beater
-auspice
-contrasters
-bights
-absentees
-atoll
-cooler
-activator's
-basement
-burgeon
-allusiveness
-codeword's
-bandage
-contemplate
-adopted
-coping
-carving
-baptism
-colds
-altos
-background
-closet
-commuted
-acre's
-aliens
-council
-cans
-cheese
-ally
-aseptic
-belgian's
-crossbar
-addressed
-commons
-call
-careers
-breakfasting
-brazilian
-catholics
-bachelors
-consultant
-brighter
-crossword's
-burglar
-avoidable
-batting
-cigar
-amps
-axiological
-combed
-comforters
-albumin
-cookies
-booming
-archaize
-canton's
-bunkmate
-combination
-bondsman
-anxiously
-affixed
-associatively
-cigar's
-backstitch
-calls
-captivates
-commodities
-atmosphere's
-asserting
-beaver
-beatnik
-container
-activists
-consoler
-commoner
-buttonhole's
-abhorred
-aggregate
-cliff
-antidisestablishmentarianism
-broach
-ambling
-comer
-bited
-advocated
-behaves
-bosom
-continents
-conserves
-bashful
-ago
-backarrow
-circumventable
-avocados
-briar's
-annuls
-barnstorming
-aired
-carry
-crossbar's
-aspire
-beards
-abides
-cliques
-completes
-brassiere
-absorbs
-annul
-chairman
-baron
-battens
-africans
-abatement
-colonization
-carries
-borough
-allurement
-breakfasters
-alkali
-acoustically
-corners
-capturer
-casualties
-asphyxia
-animized
-administrator
-belying
-basketballs
-bylines
-bandit
-autopsies
-braining
-contradiction's
-antic
-butted
-bacillus
-blurt
-conditioned
-backers
-agreeable
-almanacs
-cider
-chicken
-chambers
-clutch
-assailant's
-conveyers
-amazers
-beribboned
-breeder
-caveat's
-buffers
-combination's
-ampersand's
-crafting
-clanged
-caving
-aspirant
-butlers
-adjective
-auckland
-announced
-creators
-caches
-baseline
-codifies
-baptism's
-coarsened
-cohesion
-airman
-avenge
-backaches
-budgeted
-armpit
-bicycled
-converged
-besmirched
-autonomic
-coming
-assemblage's
-chained
-admissions
-alcoholic's
-branches
-bunk
-anciently
-bloods
-adventurers
-amazes
-coloring
-abstractors
-adaptation's
-boar
-amulet
-agglutination
-conquerable
-booker
-confronts
-barometer's
-bedbugs
-barricades
-cheap
-bewitch
-circus
-backward
-archeology
-automobiles
-bending
-amino
-beckoning
-admits
-berliners
-borer
-clambering
-atomizing
-banner
-blissfully
-catchable
-breakdown
-abjured
-computerized
-chaplain's
-amphitheater
-ballot's
-craziness
-croaks
-counties
-adopting
-breast
-airstrip's
-basin
-contemplating
-commitments
-critique
-appears
-bellies
-baccalaureate
-abducted
-blackened
-animosity
-appraising
-antiquity
-assistants
-asthma
-bootstrapping
-bounties
-agleam
-advertisements
-benches
-artful
-broadens
-chuck's
-betrayal
-blasphemed
-brooms
-castled
-coroutine
-conscious
-beetle
-banshee
-advertising
-baring
-awakens
-balm
-billions
-compromisingly
-ballroom's
-burrower
-bayou's
-ambiance
-beheading
-bought
-adagios
-adornment's
-anointed
-abolishment's
-anesthetizes
-badly
-boyishness
-consultant's
-cheek
-cannibals
-breakdowns
-assured
-agates
-bicker
-appliances
-cafe
-bagpipes
-adrenal
-combinatorially
-belligerence
-bricked
-adjacency
-aimless
-crook
-cherry's
-assessing
-brushfire
-cormorant
-captained
-blundered
-conceptually
-congress's
-contraster
-ambushes
-bronze
-autotransformer
-corded
-brisker
-contently
-announcements
-bullet
-apportionments
-columnized
-canon
-conservation
-algaecide
-blackening
-compassion
-beaks
-constructibility
-chapter
-abscond
-costly
-bacon
-coldest
-aptness
-billionth
-altercation
-approbation
-alternator's
-criticizes
-befell
-canopy
-buoyant
-brazil
-anticipate
-absenteeism
-champion
-aesthetics
-cadence
-betroth
-confidants
-bean
-braid
-aphids
-cluttering
-cantankerously
-bloom
-barbarity
-clawing
-bogged
-agreed
-asia
-abrasion
-corporals
-baselines
-box
-chartering
-apotheosis
-ampersands
-conceit
-creamer
-adhered
-circuit
-carpet
-accompaniments
-boomerangs
-blindness
-chipmunks
-bewitched
-allocate
-bicycle
-compacted
-cab
-calcium
-cellists
-apex
-borrows
-completed
-brightly
-constables
-ascertains
-conspiracy's
-badgers
-bunion's
-anabaptists
-broadband
-clefts
-accepted
-benched
-catalogued
-cadenced
-alliteration
-acquiesces
-boxcar's
-athlete's
-bracing
-cremations
-analysis
-crossings
-assorts
-apologize
-brazier
-configurable
-basking
-craves
-belle
-conversation's
-belligerent
-anesthetize
-brewers
-cackles
-adventures
-airlock's
-booklet's
-apply
-anecdotal
-bewails
-computer's
-autographs
-acclimated
-coefficients
-avidly
-beckoned
-broadener
-bulk
-blacklisting
-belly
-acquit
-convoy
-achiever
-aversions
-advisor's
-captor's
-camel's
-asset's
-advantageous
-basement's
-confident
-crescents
-compiling
-butler's
-cartoon's
-adaptive
-chlorine
-abets
-cruelly
-amiable
-baleful
-ceiling's
-adumbrated
-cherry
-aspirant's
-cashing
-candidly
-chaff
-bitter
-brim
-alcove
-bulb's
-carbonizers
-citizen
-attic's
-breed
-consumer
-conferrers
-accommodations
-contrapositive
-beget
-brilliantly
-attentionality
-continuation's
-bosses
-brave
-configurations
-benediction's
-conferring
-accessor's
-bobolinks
-bulled
-cleanness
-algorithm
-advancements
-altogether
-accumulations
-albacore
-bowing
-belching
-apical
-consequentiality
-bagpipe's
-ambrosial
-bullying
-cleans
-attendance's
-complimenter
-blink
-cager
-assembling
-coat
-allowable
-astringent
-antiresonator
-cardinal
-clicks
-commentator's
-blossom
-categorizing
-amphibian's
-commonality
-consonant
-classics
-affable
-accorded
-aimlessly
-archetype
-administerings
-boldness
-anatomy
-apprehensively
-absence's
-actuality
-attempting
-categorical
-checkpoints
-allemande
-corer
-behoove
-bleaches
-bough
-blended
-blotting
-baptists
-courtship
-benevolent
-bumptiousness
-chum
-anguished
-auto
-career
-bookstore's
-carbonized
-autocratically
-cherishes
-attendees
-contends
-anastomotic
-attributing
-abbot
-came
-blunt
-battlement's
-affection
-coordination
-annotate
-besets
-bucked
-boasting
-benedictions
-adherent
-blimp's
-acknowledging
-cleverly
-applejack
-annexation
-bat's
-cantons
-beetled
-closed
-country
-creatively
-bakery
-blasphemously
-chalking
-bold
-attended
-crasher
-backtrackers
-artist's
-bracelet's
-allowably
-affiliating
-arrant
-brayed
-barbells
-consigned
-abolishers
-climatic
-atrophying
-amigo
-arsenal
-ascribes
-converses
-aura's
-allotted
-bliss
-classical
-bigger
-ahead
-chopped
-blade
-casualty
-acceded
-bottling
-axon
-casement's
-battlefront's
-convinces
-alerting
-advertisers
-blemish
-agglutinating
-commonplaces
-autocorrelation
-armistice
-crediting
-besmirch
-amplify
-auscultation
-befalls
-called
-alnico
-arbiter's
-abort
-argonauts
-cessations
-cribs
-blare
-aforementioned
-condemners
-contaminated
-complained
-bootstrapped
-criticism
-cooperatively
-binding
-bullies
-basins
-contrived
-assort
-adulterously
-booms
-abandons
-also
-appealed
-count
-contributed
-beet
-crashers
-carryovers
-clays
-blackness
-cosmetics
-awkward
-blurted
-bothers
-analyzer
-backups
-alarming
-bicyclers
-credit
-abrogate
-audience's
-architecturally
-alibi's
-complicator's
-chuckle
-corporately
-banishment
-communist's
-birdie
-asymptotic
-break
-braze
-benzene
-bridgework's
-beak
-agitators
-collateral
-arranges
-bayonet
-breathlessly
-counsellor
-creates
-convulsions
-backdrops
-applicants
-altercation's
-commission
-breathtakingly
-corresponds
-backdrop
-armaments
-build
-biannual
-buttoning
-computational
-chaired
-bather
-critically
-amanuensis
-bantus
-confidential
-annoyance's
-carder
-authorizing
-acquits
-bipeds
-cocktail
-cinnamon
-burros
-brocade
-abdomen's
-creative
-acquisition's
-abdomen
-baited
-aristocratically
-alive
-committed
-arrestor
-cleaving
-comedy's
-baggage
-bra
-adaptors
-afoot
-bulls
-contoured
-amalgam
-comprehensibility
-amortizes
-biographical
-confront
-covert
-cravat
-animates
-booksellers
-bypass
-bootleggers
-bedfast
-affair's
-buzzer
-bellowed
-aligning
-bystander
-acclimatized
-accomplishing
-against
-blankness
-adopt
-addressing
-croaked
-boaters
-behooves
-audits
-boatyard
-cruise
-agnostics
-ailing
-anchorage's
-adaptations
-conceptualize
-advised
-cries
-bank
-actuators
-brazing
-catalyst
-beachheads
-aplomb
-compressed
-amputated
-contractor's
-bedspreads
-bowed
-coon
-chaplain
-cannons
-coffers
-assembly
-bouffant
-converters
-ampoule's
-borderland
-archaeologist
-blankets
-conserving
-avalanche
-assortment's
-aspic
-axle
-bereaves
-allowance
-carbonization
-bartender
-clawed
-coincidental
-appeared
-chipmunk's
-countable
-authenticators
-bestow
-alps
-caw
-aniseikonic
-avows
-blackmails
-controlling
-correlating
-audiologist's
-bit
-approving
-collapse
-coon's
-cleave
-atheists
-brigade
-autopilots
-bounteous
-commercialness
-accede
-cavalierness
-accustoming
-burnishing
-clobber
-aspirates
-brochures
-cellar's
-communes
-berkelium
-chickadee
-cobweb
-circumstances
-chose
-comprehend
-baritone's
-aggravation
-adopts
-cruelty
-and
-axer
-cautioned
-carbonic
-babbles
-bet
-charitable
-computable
-cardinality
-amenities
-confiscating
-catcher
-audaciousness
-complaint's
-cooperator's
-buddies
-baking
-constant
-classmate's
-accentuate
-choices
-crop's
-authorization's
-comedy
-brushy
-brotherly
-canals
-ads
-causeway
-abrading
-cemetery
-autocrat
-briefing
-abdomens
-apparition's
-consummately
-alkaloids
-bulkheads
-cravats
-bales
-campaigners
-bagpipe
-accentuates
-arm
-barometric
-bas
-agitator
-behavior
-abutters
-blockades
-alertness
-civilizes
-chinner
-anthropologist
-artificialness
-balkanize
-automates
-cackling
-anarchists
-amounted
-cereal's
-anodized
-cobblers
-acknowledgment's
-blear
-copper
-alphabetics
-blackboards
-apish
-answering
-afternoon
-arbors
-accused
-chickens
-agency's
-contractors
-contraptions
-cosmology
-anomaly
-bandstand
-attempter
-account
-challengers
-admiration
-calculations
-autocracy
-analyticity
-accord
-buildup's
-commonly
-babbling
-adjudication's
-attain
-ameliorating
-candlestick's
-chronicles
-align
-consensus
-agate
-adulation
-aspirated
-conclusive
-biologists
-cracks
-conform
-chambered
-beryllium
-connote
-amusing
-aquifer
-ankle
-batteries
-conservationists
-accountants
-apiaries
-actinometer
-beckon
-clearances
-clouded
-antitoxin's
-consolation's
-collectives
-boxtops
-bombarded
-bombarding
-bluest
-allusion's
-construction
-ballpark's
-codified
-coincidence
-celebration
-chip
-beginner's
-algerian
-boo
-athletics
-condenser
-bytes
-beauties
-concerts
-conductors
-awl's
-agitations
-buttered
-codifier's
-armory
-ascii
-aspirin
-arthritis
-bylaw's
-conformity
-blasting
-coinciding
-aphid's
-ceremonial
-banisters
-bristle
-bid's
-buckboard's
-bandied
-biopsy
-ballrooms
-chloroplasts
-bidding
-boil
-algebra
-constellation
-chuck
-cringes
-cleanliness
-apron's
-cosmopolitan
-bashes
-abusive
-believer
-conductor
-butters
-breweries
-allotment
-artfulness
-bunkmates
-blares
-connections
-anticipated
-classifies
-commandments
-beginnings
-bend
-brambles
-blacked
-basketball's
-affectionate
-cocoa
-anacondas
-busing
-bone
-birchen
-creamed
-aged
-commemorates
-brother
-aberration
-crawl
-actuarial
-apology's
-alumnus
-adversary's
-anaphoric
-aspiring
-consciousness
-cokes
-assignee
-boxing
-blanched
-camels
-contemporaries
-carnivorous
-assigned
-apologetically
-corpus
-accusations
-beefing
-champaign
-claps
-adherence
-aloft
-complication
-citizenship
-becomes
-compound
-arabesque
-bronchiole's
-appraises
-breach
-collection's
-botched
-bitches
-biblically
-bronchial
-amalgamating
-commoner's
-barbarian's
-arrange
-cradle
-conformed
-complimentary
-anodes
-cowering
-anoint
-brocaded
-bedazzling
-avionics
-burnishes
-bulkhead
-chink
-consciously
-contract
-clinch
-applicant's
-awning
-aloud
-chandelier's
-cathode's
-babble
-arachnid
-biplane
-clamorous
-assuredly
-consented
-axing
-avenger
-commence
-braving
-brandishing
-careless
-burningly
-boatsman
-channelling
-clarifying
-beggar
-berates
-cite
-cowered
-buffer
-condescending
-admixes
-bettering
-bedazzlement
-cord
-burglary's
-characteristics
-aptitudes
-adieu
-agree
-bends
-ceremonies
-accustom
-accessibly
-commanders
-ask
-cavalier
-brayer
-affront
-courser
-becoming
-carves
-configures
-beasts
-biters
-conditionals
-bodybuilding
-accretions
-chapter's
-cleverer
-corning
-brat
-classes
-almsman
-consumptive
-antique
-comprised
-beholders
-anthropologically
-buns
-bridge
-accretion
-acceptance's
-confederacy
-armorer
-argumentative
-crossword
-cowslip's
-analog
-counselor
-chastised
-barters
-clerked
-americas
-cloud
-aide
-alternators
-admitters
-bagatelle
-bridges
-civilizations
-anion's
-briton's
-apartment
-acquaints
-consummation
-chord
-coated
-barer
-carnivorously
-cheering
-allergy
-capacity
-classrooms
-assistantships
-complimented
-amphibiously
-commandment's
-audiogram
-corked
-badness
-bewildered
-assemblage
-backplane's
-asterisk's
-blob
-coexisting
-approximations
-counteractive
-barns
-adherer
-aborigine's
-brooding
-conceived
-adjustor
-cabled
-belongings
-breadwinner
-blot's
-brightness
-consigning
-barflies
-bisector's
-basing
-complement
-conditioner
-brazes
-crank
-antinomian
-crowd
-accelerometers
-befitting
-backlash
-bastions
-acceleration
-briefcases
-correlated
-baffle
-chew
-accosts
-agreeably
-bassinets
-cogitate
-concerning
-contouring
-broadside
-compact
-brainstems
-atom's
-bondage
-biter
-archdioceses
-basis
-bellboy
-blobs
-barons
-clods
-campaigned
-assessors
-bubbles
-annal
-casual
-altercations
-clog's
-biased
-arianism
-ancillary
-collaborator
-butter
-bureau
-blending
-antiquities
-brands
-activism
-crews
-beats
-broad
-buds
-baggers
-cobbler's
-condemns
-cabinets
-bomber
-blinders
-center
-contacted
-bewilderingly
-circulates
-burnings
-achieved
-belch
-barbecue
-angles
-comparative
-befuddle
-cherished
-chapters
-chanter
-allegation's
-armstrong
-converter
-combinatoric
-angrier
-brooks
-clinked
-blubber
-appointments
-compactor
-cleaned
-car
-contention's
-artificial
-cramp
-consistency
-aborting
-collaboration
-awarders
-crippled
-anaphora
-creamy
-buoyed
-baptistery
-altered
-anchoring
-alterer
-adjuring
-beacon's
-commencement's
-ascension
-candidness
-clouding
-cigars
-boiled
-christmas
-contingency's
-alum
-apparel
-contributors
-anisotropic
-annotations
-bushwhacks
-brides
-continuities
-carton's
-blurred
-antibody
-aorta
-blankest
-combinator's
-banish
-breaches
-accumulates
-bowling
-braver
-antibacterial
-cooperators
-banked
-compensated
-chartable
-conjunctively
-antelope's
-bluefish
-annoying
-composed
-barges
-biconcave
-australia
-ballparks
-bearers
-acknowledged
-advocates
-crossed
-competitor
-blaming
-andorra
-baritone
-collaborator's
-accessibility
-complains
-commentator
-bibliography
-conference's
-atmosphere
-agrees
-bedstead's
-ardor
-character's
-conventionally
-arena's
-chokes
-channel
-bludgeon
-convoys
-condense
-beautifier
-ailerons
-compacts
-black
-bell
-completions
-ballroom
-besotting
-conservatives
-adventured
-bulldog's
-conversely
-arroyos
-compositional
-alternative
-association
-broods
-beefy
-consolidated
-balms
-acquaint
-animal
-certificate
-combustion
-aims
-cracker
-abetted
-cautionings
-bread
-attains
-agriculturally
-courtyards
-bawls
-country's
-creator's
-checkbook's
-cliches
-colonizing
-biennial
-aqueous
-craftsman
-contrivances
-algorithmic
-crate
-barefooted
-bodily
-anthropologist's
-but
-climate's
-campers
-crackled
-awakes
-conveyed
-borrowers
-approached
-avoids
-crib
-albania
-bathrobe
-admonitions
-architectures
-consenting
-anastomosis
-blob's
-actual
-arrowhead's
-accountable
-allegiances
-commendation
-appearers
-comply
-concurs
-controversy
-abstracting
-artifact
diff --git a/bdb/test/wrap.tcl b/bdb/test/wrap.tcl
deleted file mode 100644
index aaceb4f74e6..00000000000
--- a/bdb/test/wrap.tcl
+++ /dev/null
@@ -1,71 +0,0 @@
-# See the file LICENSE for redistribution information.
-#
-# Copyright (c) 2000-2002
-# Sleepycat Software. All rights reserved.
-#
-# $Id: wrap.tcl,v 11.6 2002/04/25 13:35:02 bostic Exp $
-#
-# Sentinel file wrapper for multi-process tests. This is designed to avoid a
-# set of nasty bugs, primarily on Windows, where pid reuse causes watch_procs
-# to sit around waiting for some random process that's not DB's and is not
-# exiting.
-
-source ./include.tcl
-source $test_path/testutils.tcl
-
-# Arguments:
-if { $argc < 3 } {
- puts "FAIL: wrap.tcl: Usage: wrap.tcl script log scriptargs"
- exit
-}
-
-set script [lindex $argv 0]
-set logfile [lindex $argv 1]
-set args [lrange $argv 2 end]
-
-# Create a sentinel file to mark our creation and signal that watch_procs
-# should look for us.
-set parentpid [pid]
-set parentsentinel $testdir/begin.$parentpid
-set f [open $parentsentinel w]
-close $f
-
-# Create a Tcl subprocess that will actually run the test.
-set t [open "|$tclsh_path >& $logfile" w]
-
-# Create a sentinel for the subprocess.
-set childpid [pid $t]
-puts "Script watcher process $parentpid launching $script process $childpid."
-set childsentinel $testdir/begin.$childpid
-set f [open $childsentinel w]
-close $f
-
-puts $t "source $test_path/test.tcl"
-puts $t "set script $script"
-
-# Set up argv for the subprocess, since the args aren't passed in as true
-# arguments thanks to the pipe structure.
-puts $t "set argc [llength $args]"
-puts $t "set argv [list $args]"
-
-puts $t {set ret [catch { source $test_path/$script } result]}
-puts $t {if { [string length $result] > 0 } { puts $result }}
-puts $t {error_check_good "$test_path/$script run: pid [pid]" $ret 0}
-
-# Close the pipe. This will flush the above commands and actually run the
-# test, and will also return an error a la exec if anything bad happens
-# to the subprocess. The magic here is that closing a pipe blocks
-# and waits for the exit of processes in the pipeline, at least according
-# to Ousterhout (p. 115).
-
-set ret [catch {close $t} res]
-
-# Write ending sentinel files--we're done.
-set f [open $testdir/end.$childpid w]
-close $f
-set f [open $testdir/end.$parentpid w]
-close $f
-
-error_check_good "Pipe close ($childpid: $script $argv: logfile $logfile)"\
- $ret 0
-exit $ret