📄 tests
字号:
# Automatically built by dist/s_test; may require local editing.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=bigfile001 Create a database greater than 4 GB in size. Close, verify. Grow the database somewhat. Close, reverify. Lather, rinse, repeat. Since it will not work on all systems, this test is not run by default.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=bigfile002 This one should be faster and not require so much disk space, although it doesn't test as extensively. Create an mpool file with 1K pages. Dirty page 6000000. Sync.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=dbm Historic DBM 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.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=dead001 Use two different configurations to test deadlock detection among a variable number of processes. One configuration has the processes deadlocked in a ring. The other has the processes all deadlocked on a single resource.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=dead002 Same test as dead001, but use "detect on every collision" instead of separate deadlock detector.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=dead003 Same test as dead002, but explicitly specify DB_LOCK_OLDEST and DB_LOCK_YOUNGEST. Verify the correct lock was aborted/granted.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=dead006 use timeouts rather than the normal dd algorithm.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=dead007 use timeouts rather than the normal dd algorithm.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env001 Test of env remove interface (formerly env_remove).=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env002 Test of DB_LOG_DIR and env name resolution. With an environment path specified using -home, and then again with it specified by the environment variable DB_HOME: 1) Make sure that the set_lg_dir option is respected a) as a relative pathname. b) as an absolute pathname. 2) Make sure that the DB_LOG_DIR db_config argument is respected, again as relative and absolute pathnames. 3) Make sure that if -both- db_config and a file are present, only the file is respected (see doc/env/naming.html).=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env003 Test DB_TMP_DIR and env name resolution With an environment path specified using -home, and then again with it specified by the environment variable DB_HOME: 1) Make sure that the DB_TMP_DIR config file option is respected a) as a relative pathname. b) as an absolute pathname. 2) Make sure that the -tmp_dir config option is respected, again as relative and absolute pathnames. 3) Make sure that if -both- -tmp_dir and a file are present, only the file is respected (see doc/env/naming.html).=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env004 Test multiple data directories. Do a bunch of different opens to make sure that the files are detected in different directories.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env005 Test that using subsystems without initializing them correctly returns an error. Cannot test mpool, because it is assumed in the Tcl code.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env006 Make sure that all the utilities exist and run.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env007 Test various DB_CONFIG config file options. 1) Make sure command line option is respected 2) Make sure that config file option is respected 3) Make sure that if -both- DB_CONFIG and the set_<whatever> method is used, only the file is respected. Then test all known config options.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env008 Test environments and subdirectories.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env009 Test calls to all the various stat functions. We have several sprinkled throughout the test suite, but this will ensure that we run all of them at least once.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env010 Run recovery in an empty directory, and then make sure we can still create a database in that directory.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=env011 Run with region overwrite flag.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=jointest Test duplicate assisted joins. Executes 1, 2, 3 and 4-way joins with differing index orders and selectivity. We'll test 2-way, 3-way, and 4-way joins and figure that if those work, everything else does as well. We'll create test databases called join1.db, join2.db, join3.db, and join4.db. The number on the database describes the duplication -- duplicates are of the form 0, N, 2N, 3N, ... where N is the number of the database. Primary.db is the primary database, and null.db is the database that has no matching duplicates. We should test this on all btrees, all hash, and a combination thereof=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=lock001 Make sure that the basic lock tests work. Do some simple gets and puts for a single locker.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=lock002 Exercise basic multi-process aspects of lock.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=lock003 Exercise multi-process aspects of lock. Generate a bunch of parallel testers that try to randomly obtain locks; make sure that the locks correctly protect corresponding objects.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=lock004 Test locker ids wraping around.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=lock005 Check that page locks are being released properly.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=log001 Read/write log records.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=log002 Tests multiple logs Log truncation LSN comparison and file functionality.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=log003 Verify that log_flush is flushing records correctly.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=log004 Make sure that if we do PREVs on a log, but the beginning of the log has been truncated, we do the right thing.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=log005 Check that log file sizes can change on the fly.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=memp001 Randomly updates pages.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=memp002 Tests multiple processes accessing and modifying the same files.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=memp003 Test reader-only/writer process combinations; we use the access methods for testing.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=mutex001 Test basic mutex functionality=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=mutex002 Test basic mutex synchronization=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=mutex003 Generate a bunch of parallel testers that try to randomly obtain locks.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd001 Per-operation recovery tests for non-duplicate, non-split messages. Makes sure that we exercise redo, undo, and do-nothing condition. Any test that appears with the message (change state) indicates that we've already run the particular test, but we are running it again so that we can change the state of the data base to prepare for the next test (this applies to all other recovery tests as well). These are the most basic recovery tests. We do individual recovery tests for each operation in the access method interface. First we create a file and capture the state of the database (i.e., we copy it. Then we run a transaction containing a single operation. In one test, we abort the transaction and compare the outcome to the original copy of the file. In the second test, we restore the original copy of the database and then run recovery and compare this against the actual database.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd002 Split recovery tests. For every known split log message, makes sure that we exercise redo, undo, and do-nothing condition.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd003 Duplicate recovery tests. For every known duplicate log message, makes sure that we exercise redo, undo, and do-nothing condition. Test all the duplicate log messages and recovery operations. We make sure that we exercise all possible recovery actions: redo, undo, undo but no fix necessary and redo but no fix necessary.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd004 Big key test where big key gets elevated to internal page.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd005 Verify reuse of file ids works on catastrophic recovery. Make sure that we can do catastrophic recovery even if we open files using the same log file id.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd006 Nested transactions.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd007 File create/delete tests. This is a recovery test for create/delete of databases. We have hooks in the database so that we can abort the process at various points and make sure that the transaction doesn't commit. We then need to recover and make sure the file is correctly existing or not, as the case may be.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd008 Test deeply nested transactions and many-child transactions.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd009 Verify record numbering across split/reverse splits and recovery.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd010 Test stability of btree duplicates across btree off-page dup splits and reverse splits and across recovery.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd011 Verify that recovery to a specific timestamp works.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd012 Test of log file ID management. [#2288] Test recovery handling of file opens and closes.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd013 Test of cursor adjustment on child transaction aborts. [#2373]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd014 This is a recovery test for create/delete of queue extents. We then need to recover and make sure the file is correctly existing or not, as the case may be.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd015 This is a recovery test for testing lots of prepared txns. This test is to force the use of txn_recover to call with the DB_FIRST flag and then DB_NEXT.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd016 This is a recovery test for testing running recovery while recovery is already running. While bad things may or may not happen, if recovery is then run properly, things should be correct.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd017 Test recovery and security. This is basically a watered down version of recd001 just to verify that encrypted environments can be recovered.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd018 Test recover of closely interspersed checkpoints and commits.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd019 Test txn id wrap-around and recovery.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=recd020 Test recovery after checksum error.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=rep001 Replication rename and forced-upgrade test. Run a modified version of test001 in a replicated master environment; verify that the database on the client is correct. Next, remove the database, close the master, upgrade the client, reopen the master, and make sure the new master can correctly run test001 and propagate it in the other direction.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=rep002 Basic replication election test. Run a modified version of test001 in a replicated master environment; hold an election among a group of clients to make sure they select a proper master from amongst themselves, in various scenarios.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=rep003 Repeated shutdown/restart replication test Run a quick put test in a replicated master environment; start up, shut down, and restart client processes, with and without recovery. To ensure that environment state is transient, use DB_PRIVATE.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=rep004 Test of DB_REP_LOGSONLY. Run a quick put test in a master environment that has one logs-only
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -