1# Automatically built by dist/s_test; may require local editing.
2
3
4=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
5backup
6	Test of hotbackup functionality.
7
8	Do all the of the following tests with and without
9	the -c (checkpoint) option; and with and without the
10	transactional bulk loading optimization; and with
11	and without BLOB, with and without -deepcopy.
12	Make sure that -c and -d (data_dir)
13	are not allowed together; and backing up with BLOB
14	but without -log_blob is not allowed.  If slices are
15	enabled, run some of the tests with the -sliced
16	database flag.
17
18	(1) Test that plain and simple hotbackup works.
19	(2) Test with -data_dir (-d).
20	(3) Test updating an existing hot backup (-u).
21	(4) Test with absolute path.
22	(5) Test with DB_CONFIG, setting log_dir (-l)
23	and data_dir (-d).
24	(6) DB_CONFIG and update.
25	(7) Repeat hot backup (non-update) with DB_CONFIG,
26	DB_CONFIG (-D) and existing directories.
27	(8) Incremental hot backup when txn is active and the number
28	of log files is successively increased.
29
30=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
31bigfile001
32	Create a database greater than 4 GB in size.  Close, verify.
33	Grow the database somewhat.  Close, reverify.  Lather, rinse,
34	repeat.  Since it will not work on all systems, this test is
35	not run by default.
36
37=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
38bigfile002
39	This one should be faster and not require so much disk space,
40	although it doesn't test as extensively.  Create an mpool file
41	with 1K pages.  Dirty page 6000000.  Sync.
42
43=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
44bigfile003
45	1. Create two databases.  One will hold a very large (5 GB)
46	blob and the other a relatively small one (5 MB) to test some
47	functionality that is punishingly slow on the 5 GB blob.
48	2. Add empty blobs.
49	3. Append data into the blobs by database stream.
50	4. Verify the blob size and data. For txn env, verify it with
51	txn commit/abort.
52	5. Verify getting the blob by database/cursor get method returns
53	the error DB_BUFFER_SMALL.
54	6. Run verify_dir and a regular db_dump on both databases.
55	7. Run db_dump -r and -R on the small blob only.
56
57	This test requires a platform that supports 5 GB files and
58	64-bit integers.
59
60=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
61db_reptest
62	Wrapper to configure and run the db_reptest program.
63
64=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
65dbm
66	Historic DBM interface test.  Use the first 1000 entries from the
67	dictionary.  Insert each with self as key and data; retrieve each.
68	After all are entered, retrieve all; compare output to original.
69	Then reopen the file, re-retrieve everything.  Finally, delete
70	everything.
71
72=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
73dead001
74	Use two different configurations to test deadlock detection among a
75	variable number of processes.  One configuration has the processes
76	deadlocked in a ring.  The other has the processes all deadlocked on
77	a single resource.
78
79=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
80dead002
81	Same test as dead001, but use "detect on every collision" instead
82	of separate deadlock detector.
83
84=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
85dead003
86
87	Same test as dead002, but explicitly specify DB_LOCK_OLDEST and
88	DB_LOCK_YOUNGEST.  Verify the correct lock was aborted/granted.
89
90=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
91dead006
92	use timeouts rather than the normal dd algorithm.
93
94=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
95dead007
96	Tests for locker and txn id wraparound.
97
98=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
99dead008
100	Run dead001 deadlock test using priorities
101
102=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
103dead009
104	Run dead002 deadlock test using priorities
105
106=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
107dead010
108
109	Same test as dead003, except the actual youngest and oldest will have
110	higher priorities.  Verify that the oldest/youngest of the lower
111	priority lockers gets killed.  Doesn't apply to 2 procs.
112
113=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
114dead011
115	Test out the minlocks, maxlocks, and minwrites options
116	to the deadlock detector when priorities are used.
117
118=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
119env001
120	Test of env remove interface (formerly env_remove).
121
122=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
123env002
124	Test of DB_LOG_DIR and env name resolution.
125	With an environment path specified using -home, and then again
126	with it specified by the environment variable DB_HOME:
127	1) Make sure that the set_lg_dir option is respected
128	a) as a relative pathname.
129	b) as an absolute pathname.
130	2) Make sure that the DB_LOG_DIR db_config argument is respected,
131	again as relative and absolute pathnames.
132	3) Make sure that if -both- db_config and a file are present,
133	only the file is respected (see doc/env/naming.html).
134
135=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
136env003
137	Test DB_TMP_DIR and env name resolution
138	With an environment path specified using -home, and then again
139	with it specified by the environment variable DB_HOME:
140	1) Make sure that the DB_TMP_DIR config file option is respected
141	a) as a relative pathname.
142	b) as an absolute pathname.
143	2) Make sure that the -tmp_dir config option is respected,
144	again as relative and absolute pathnames.
145	3) Make sure that if -both- -tmp_dir and a file are present,
146	only the file is respected (see doc/env/naming.html).
147
148=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
149env004
150	Test multiple data directories.  Do a bunch of different opens
151	to make sure that the files are detected in different directories.
152
153=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
154env005
155	Test that using subsystems without initializing them correctly
156	returns an error.  Cannot test mpool, because it is assumed in
157	the Tcl code.
158
159=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
160env006
161	Make sure that all the utilities exist and run.
162	Test that db_load -r options don't blow up.
163
164=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
165env007
166	Test DB_CONFIG config file options for berkdb env.
167	1) Make sure command line option is respected
168	2) Make sure that config file option is respected
169	3) Make sure that if -both- DB_CONFIG and the set_<whatever>
170	method is used, only the file is respected.
171	Then test all known config options.
172	Also test config options on berkdb open.  This isn't
173	really env testing, but there's no better place to put it.
174
175=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
176env008
177	Test environments and subdirectories.
178
179=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
180env009
181	Test calls to all the various stat functions.  We have several
182	sprinkled throughout the test suite, but this will ensure that
183	we run all of them at least once.
184
185=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
186env010
187	Run recovery in an empty directory, and then make sure we can still
188	create a database in that directory.
189
190=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
191env011
192	Run with region overwrite flag.
193
194=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
195env012
196	Test DB_REGISTER.
197
198	DB_REGISTER will fail on systems without fcntl.  If it
199	fails, make sure we got the expected DB_OPNOTSUP return.
200
201	Then, the real tests:
202	For each test, we start a process that opens an env with -register.
203
204	1. Verify that a 2nd process can enter the existing env with -register.
205
206	2. Kill the 1st process, and verify that the 2nd process can enter
207	with "-register -recover".
208
209	3. Kill the 1st process, and verify that the 2nd process cannot
210	enter with just "-register".
211
212	4. While the 1st process is still running, a 2nd process enters
213	with "-register".  Kill the 1st process.  Verify that a 3rd process
214	can enter with "-register -recover".  Verify that the 3rd process,
215	entering, causes process 2 to fail with the message DB_RUNRECOVERY.
216
217	5. We had a bug where recovery was always run with -register
218	if there were empty slots in the process registry file.  Verify
219	that recovery doesn't automatically run if there is an empty slot.
220
221	6. Verify process cannot connect when specifying -failchk and an
222	isalive function has not been declared.
223
224	7. Verify that a 2nd process can enter the existing env with -register
225	and -failchk and having specified an isalive function
226
227	8. Kill the 1st process, and verify that the 2nd process can enter
228	with "-register -failchk -recover"
229
230	9. 2nd process enters with "-register -failchk".  Kill the 1st process.
231	2nd process may get blocked on a mutex held by process one.  Verify
232	3rd process can enter with "-register -recover -failchk".   3rd process
233	should run failchk, clear out open txn/log from process 1.   It will
234	enter env without need for any additional recovery.   We look for
235	"Freeing log information .." sentence in the log for 3rd process as
236	an indication that failchk ran.   If DB_RUNRECOVERY were returned
237	instead it would mean failchk could not recover.
238
239=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
240env013
241	Test of basic functionality of fileid_reset.
242
243	Create a database in an env.  Copy it to a new file within
244	the same env.  Reset the file id and make sure it has changed.
245
246=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
247env014
248
249	Make sure that attempts to open an environment with
250	incompatible flags (e.g. replication without transactions)
251	fail with the appropriate messages.
252
253	A new thread of control joining an env automatically
254	initializes the same subsystems as the original env.
255	Make sure that the attempt to change subsystems when
256	joining an env fails with the appropriate messages.
257
258	Make sure that full blob logging is enabled when replication
259	is enabled, and that it cannot be disabled.
260
261=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
262env015
263	Rename the underlying directory of an env, make sure everything
264	still works.  Test runs with regular named databases and with
265	in-memory named databases.
266
267=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
268env016
269	Replication settings and DB_CONFIG
270
271	Create a DB_CONFIG for various replication settings.  Use
272	rep_stat or getter functions to verify they're set correctly.
273
274=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
275env017
276	Check documented "stat" fields against the fields
277	returned by the "stat" functions.  Make sure they
278	match, and that none are missing.
279	These are the stat functions we test:
280	env log_stat
281	env lock_stat
282	env txn_stat
283	env mutex_stat
284	env rep_stat
285	env repmgr_stat
286	env mpool_stat
287	db stat
288	seq stat
289	db compact_stat
290
291=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
292env018
293	Test getters when joining an env.  When a second handle is
294	opened on an existing env, get_open_flags needs to return
295	the correct flags to the second handle so it knows what sort
296	of environment it's just joined.
297
298	For several different flags to env_open, open an env.  Open
299	a second handle on the same env, get_open_flags and verify
300	the flag is returned.
301
302	Also check that the environment configurations lock and txn
303	timeout, mpool max write openfd and mmap size, and log auto
304	remove, when set before opening an environment, are applied
305	when creating the environment, but not when joining.
306
307=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
308env019
309	Test that stats are correctly set and reported when
310	an env is accessed from a second process.
311
312=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
313env020
314	Check if the output information for stat_print is expected.
315	These are the stat_print functions we test:
316	env stat_print
317	env lock_stat_print
318	env log_stat_print
319	env mpool_stat_print
320	env mutex_stat_print
321	env rep_stat_print
322	env repmgr_stat_print
323	env txn_stat_print
324	db stat_print
325	seq stat_print
326
327=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
328env021
329	Test the operations on a transaction in a CDS environment.
330	These are the operations we test:
331	$txn abort
332	$txn commit
333	$txn id
334	$txn prepare
335	$txn setname name
336	$txn getname
337	$txn discard
338	$txn set_timeout
339	In these operations, we only support the following:
340	$txn id
341	$txn commit
342
343=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
344env022
345	Test db_archive and db_checkpoint with all allowed options.
346
347=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
348env023
349	Test db_deadlock options. For each option, generate a deadlock
350	then call db_deadlock.
351
352=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
353env024
354	Test db_hotbackup with all allowed option combinations.
355
356=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
357env025
358	Test db_recover with all allowed option combinations.
359
360=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
361env026
362	Test reopening an environment after a panic.
363
364	Repeatedly panic the environment, close & reopen it in order to
365	verify that a process is able to reopen the env and there are no
366	major shmem/mmap "leaks"; malloc leaks will occur, and that's ok.
367
368	Since this test leaks memory, it is meant to be run standalone
369	and should not be added to the automated Tcl test suite.
370
371=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
372env027
373	Test recovery of the truncate of a hash db.
374
375	This is a one-off test of the fix for #23772 --
376	the conditions for reproducing it are so specific
377	that the test does not generalize well to other
378	access methods.
379
380=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
381env028
382	Test of SET_REGION_DIR.
383	With an environment path specified using -home, and then again
384	with it specified by the environment variable DB_HOME:
385	1) Make sure that the set_region_dir option is respected
386	a) as a relative pathname.
387	b) as an absolute pathname.
388	2) Make sure that the SET_REGION_DIR db_config argument is respected,
389	again as relative and absolute pathnames.
390	3) Make sure that if -both- db_config and a file are present,
391	only the file is respected (see doc/env/naming.html).
392	4) Check that setting the region dir is incompatible with
393	DB_PRIVATE and DB_SYSTEM_MEM
394	5) Check that MVCC freezer files go into the region dir.
395
396=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
397env029
398	Test the behavior of the slice specific functions and flags.
399	There are two versions of this test, one that tests the
400	functions when BDB was built with slices enabled, and one
401	that tests them when they are not enabled.
402
403=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
404env030
405	Test failchk.
406
407	Tests that failchk is able to recover the environment after a crash,
408	or returns RUNRECOVERY when appropriate.
409
410	1. Open environment with is_alive function and failchk.
411	2. Open database and insert a record.
412	3. Test that failchk works when another process: exits cleanly,
413	crashes outside the API, crashes inside the API but holds no
414	latches, and crashes inside the API while holding latches.
415	4. Test that failchk returns RUNRECOVER when another process:
416	crashes while holding an exclusive latch, crashes while holding
417	a mutex, and crashes while performing failchk.
418
419=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
420env031
421	Test utility db_tuner.
422
423	Tests db_tuner with different situations about with/without off-page
424	duplicate page and with/without overflow page.
425
426=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
427fail001
428	Test database compaction errors.
429
430	Populate a database.
431	1) Compact the heap / queue database and it should fail.
432	2) Reopen the database with -rdonly, compact the database and it
433	should fail.
434
435=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
436fop001.tcl
437	Test two file system operations combined in one transaction.
438
439=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
440fop002.tcl
441	Test file system operations in the presence of bad permissions.
442
443=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
444fop003
445
446	Test behavior of create and truncate for compatibility
447	with sendmail.
448	1.  DB_TRUNCATE is not allowed with locking or transactions.
449	2.  Can -create into zero-length existing file.
450	3.  Can -create into non-zero-length existing file if and
451	only if DB_TRUNCATE is specified.
452
453=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
454fop004
455	Test of DB->rename(). (formerly test075)
456	Test that files can be renamed from one directory to another.
457	Test that files can be renamed using absolute or relative
458	pathnames.
459	Test that renaming a database does not change the location or
460	name of its blob files.
461
462=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
463fop005
464	Test of DB->remove()
465	Formerly test080.
466	Test use of dbremove with and without envs, with absolute
467	and relative paths, and with subdirectories.
468
469=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
470fop006
471	Test file system operations in multiple simultaneous
472	transactions.  Start one transaction, do a file operation.
473	Start a second transaction, do a file operation.  Abort
474	or commit txn1, then abort or commit txn2, and check for
475	appropriate outcome.
476
477=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
478fop007
479	Test file system operations on named in-memory databases.
480	Combine two ops in one transaction.
481
482=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
483fop008
484	Test file system operations on named in-memory databases.
485	Combine two ops in one transaction.
486
487=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
488fop009
489	Test file system operations in child transactions.
490	Combine two ops in one child transaction.
491
492=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
493fop010
494	Test file system operations in child transactions.
495	Two ops, each in its own child txn.
496
497=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
498fop011
499	Test file system operations in child transactions.
500	Combine two ops in one child transaction, with in-emory
501	databases.
502
503=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
504fop012
505	Test file system operations in child transactions.
506	Two ops, each in its own child txn, with in-memory dbs.
507
508=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
509jointest
510	Test duplicate assisted joins.  Executes 1, 2, 3 and 4-way joins
511	with differing index orders and selectivity.
512
513	We'll test 2-way, 3-way, and 4-way joins and figure that if those
514	work, everything else does as well.  We'll create test databases
515	called join1.db, join2.db, join3.db, and join4.db.  The number on
516	the database describes the duplication -- duplicates are of the
517	form 0, N, 2N, 3N, ...  where N is the number of the database.
518	Primary.db is the primary database, and null.db is the database
519	that has no matching duplicates.
520
521	We should test this on all btrees, all hash, and a combination thereof
522
523=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
524lock001
525	Make sure that the basic lock tests work.  Do some simple gets
526	and puts for a single locker.
527
528=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
529lock002
530	Exercise basic multi-process aspects of lock.
531
532=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
533lock003
534	Exercise multi-process aspects of lock.  Generate a bunch of parallel
535	testers that try to randomly obtain locks;  make sure that the locks
536	correctly protect corresponding objects.
537
538=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
539lock004
540	Test locker ids wraping around.
541
542=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
543lock005
544	Check that page locks are being released properly.
545
546=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
547lock006
548	Test lock_vec interface.  We do all the same things that
549	lock001 does, using lock_vec instead of lock_get and lock_put,
550	plus a few more things like lock-coupling.
551	1.  Get and release one at a time.
552	2.  Release with put_obj (all locks for a given locker/obj).
553	3.  Release with put_all (all locks for a given locker).
554	Regularly check lock_stat to verify all locks have been
555	released.
556
557=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
558log001
559	Read/write log records.
560	Test with and without fixed-length, in-memory logging,
561	and encryption.
562
563=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
564log002
565	Tests multiple logs
566	Log truncation
567	LSN comparison and file functionality.
568
569=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
570log003
571	Verify that log_flush is flushing records correctly.
572
573=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
574log004
575	Make sure that if we do PREVs on a log, but the beginning of the
576	log has been truncated, we do the right thing.
577
578=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
579log005
580	Check that log file sizes can change on the fly.
581
582=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
583log006
584	Test log file auto-remove.
585	Test normal operation.
586	Test a long-lived txn.
587	Test log_archive flags.
588	Test db_archive flags.
589	Test turning on later.
590	Test setting via DB_CONFIG.
591
592=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
593log007
594	Test of in-memory logging bugs. [#11505]
595
596	Test db_printlog with in-memory logs.
597
598=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
599log008
600	Test what happens if a txn_ckp record falls into a
601	different log file than the DBREG_CKP records generated
602	by the same checkpoint.
603
604=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
605log009
606	Test of logging and getting log file version information.
607	Each time we cross a log file boundary verify we can
608	get the version via the log cursorlag.
609	Do this both forward and backward.
610
611=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
612log010
613	Test of DB_LOG_NOSYNC
614
615	Configure a database with txn_nosync and log_nosync.
616	Set a very small log size so we'll easily create more
617	than one.  Verify that we have a small number of writes,
618	and no log syncs at all.
619
620=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
621memp001
622	Randomly updates pages.
623
624=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
625memp002
626	Tests multiple processes accessing and modifying the same files.
627
628=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
629memp003
630	Test reader-only/writer process combinations; we use the access methods
631	for testing.
632
633=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
634memp004
635	Test that small read-only databases are mapped into memory.
636
637=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
638memp005
639	Make sure that db pagesize does not interfere with mpool pagesize.
640
641=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
642memp006
643	Tests multiple processes accessing and modifying the same files.
644	Attempt to hit the case where we see the mpool file not a
645	multiple of pagesize so that we can make sure we tolerate it.
646	Some file systems don't protect against racing writes and stat
647	so seeing a database not a multiple of pagesize is possible.
648	Use a large pagesize to try to catch the file at a point where
649	it is getting extended and that races with the open.
650
651=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
652memp007
653	Tests the mpool methods in the mpool file handle.
654	(1) -clear_len, -lsn_offset and -pgcookie.
655	(2) set_maxsize, get_maxsize and get_last_pgno.
656
657=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
658memp008
659	Test for MPOOL multi-process operation.
660
661	This test stress tests MPOOL by creating frozen buckets and
662	then resizing.
663
664=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
665memp009
666	Dead files and their buffers are removed when the mutex usage is high.
667
668=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
669mut001
670	Exercise the mutex API.
671
672	Allocate, lock, unlock, and free a bunch of mutexes.
673	Set basic configuration options and check mutex_stat and
674	the mutex getters for the correct values.
675
676=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
677mut002
678	Two-process mutex test.
679
680	Allocate and lock a self-blocking mutex.  Start another process.
681	Try to lock the mutex again -- it will block.
682	Unlock the mutex from the other process, and the blocked
683	lock should be obtained.  Clean up.
684	Do another test with a "-process-only" mutex.  The second
685	process should not be able to unlock the mutex.
686
687=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
688mut003
689	Try doing mutex operations out of order.  Make sure
690	we get appropriate errors.
691
692=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
693mut004
694	Try setting various mutex number configurations. Make sure the
695	mutex region has a reasonable size.
696
697=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
698plat001
699
700	Test of portability of sequences.
701
702	Create and dump a database containing sequences.  Save the dump.
703	This test is used in conjunction with the upgrade tests, which
704	will compare the saved dump to a locally created dump.
705
706=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
707recd001
708	Per-operation recovery tests for non-duplicate, non-split
709	messages. Test it with blob/log_blob enabled and disabled.
710	Makes sure that we exercise redo, undo, and do-nothing
711	condition.  Any test that appears with the message (change state)
712	indicates that we've already run the particular test, but we are
713	running it again so that we can change the state of the data base
714	to prepare for the next test (this applies to all other recovery
715	tests as well).
716
717	These are the most basic recovery tests.  We do individual recovery
718	tests for each operation in the access method interface.  First we
719	create a file and capture the state of the database (i.e., we copy
720	it.  Then we run a transaction containing a single operation.  In
721	one test, we abort the transaction and compare the outcome to the
722	original copy of the file.  In the second test, we restore the
723	original copy of the database and then run recovery and compare
724	this against the actual database.
725
726=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
727recd002
728	Split recovery tests with blob/log_blob enabled and disabled.
729	For every known split log message, makes sure
730	that we exercise redo, undo, and do-nothing condition.
731
732=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
733recd003
734	Duplicate recovery tests.  For every known duplicate log message,
735	makes sure that we exercise redo, undo, and do-nothing condition.
736
737	Test all the duplicate log messages and recovery operations.  We make
738	sure that we exercise all possible recovery actions: redo, undo, undo
739	but no fix necessary and redo but no fix necessary.
740
741=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
742recd004
743	Big key test where big key gets elevated to internal page.
744
745=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
746recd005
747	Verify reuse of file ids works on catastrophic recovery.
748	Test it with blob/log_blob enabled and disabled.
749
750	Make sure that we can do catastrophic recovery even if we open
751	files using the same log file id.
752
753=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
754recd006
755	Nested transactions.
756
757=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
758recd007
759	File create/delete tests.
760
761	This is a recovery test for create/delete of databases.  We have
762	hooks in the database so that we can abort the process at various
763	points and make sure that the transaction doesn't commit.  We
764	then need to recover and make sure the file is correctly existing
765	or not, as the case may be.
766
767=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
768recd008
769	Test deeply nested transactions and many-child transactions.
770
771=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
772recd009
773	Verify record numbering across split/reverse splits and recovery.
774
775=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
776recd010
777	Test stability of btree duplicates across btree off-page dup splits
778	and reverse splits and across recovery.
779
780=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
781recd011
782	Verify that recovery to a specific timestamp works.
783
784=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
785recd012
786	Test of log file ID management. [#2288]
787	Test recovery handling of file opens and closes.
788
789=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
790recd013
791	Test of cursor adjustment on child transaction aborts. [#2373]
792
793=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
794recd014
795	This is a recovery test for create/delete of queue extents.  We
796	then need to recover and make sure the file is correctly existing
797	or not, as the case may be.
798
799=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
800recd015
801	This is a recovery test for testing lots of prepared txns.
802	This test is to force the use of txn_recover to call with the
803	DB_FIRST flag and then DB_NEXT.
804
805=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
806recd016
807	Test recovery after checksum error.
808
809=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
810recd017
811	Test recovery and security.  This is basically a watered
812	down version of recd001 just to verify that encrypted environments
813	can be recovered.
814
815=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
816recd018
817	Test recover of closely interspersed checkpoints and commits.
818	Test with blob/log_blob enabled and disabled.
819
820=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
821recd019
822	Test txn id wrap-around and recovery.
823
824=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
825recd020
826	Test creation of intermediate directories -- an
827	undocumented, UNIX-only feature.
828
829=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
830recd021
831	Test of failed opens in recovery.
832
833	If a file was deleted through the file system (and not
834	within Berkeley DB), an error message should appear.
835	Test for regular files and subdbs.
836
837=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
838recd022
839	Test that pages allocated by an aborted subtransaction
840	within an aborted prepared parent transaction are returned
841	to the free list after recovery.  This exercises
842	__db_pg_prepare in systems without FTRUNCATE.  [#7403]
843
844=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
845recd023
846	Test recover of reverse split with blob/log_blob enabled and disabled.
847
848=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
849recd024
850	Test recovery of streaming partial insert operations. These are
851	operations that do multiple partial puts that append to an existing
852	data item (as long as the data item is on an overflow page).
853	The interesting cases are:
854	* Simple streaming operations
855	* Operations that cause the overflow item to flow onto another page.
856
857
858=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
859recd025
860	Basic tests for transaction bulk loading and recovery with
861	blob/log_blob enabled and disabled.
862	In particular, verify that the tricky hot backup protocol works.
863
864=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
865rep001
866	Replication rename and forced-upgrade test.
867
868	Run rep_test in a replicated master environment.
869	Verify that the database on the client is correct.
870	Next, remove the database, close the master, upgrade the
871	client, reopen the master, and make sure the new master can
872	correctly run rep_test and propagate it in the other direction.
873
874=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
875rep002
876	Basic replication election test.
877
878	Run a modified version of test001 in a replicated master
879	environment; hold an election among a group of clients to
880	make sure they select a proper master from amongst themselves,
881	in various scenarios.
882
883=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
884rep003
885	Repeated shutdown/restart replication test
886
887	Run a quick put test in a replicated master environment;
888	start up, shut down, and restart client processes, with
889	and without recovery.  To ensure that environment state
890	is transient, use DB_PRIVATE.
891
892=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
893rep005
894	Replication election test with error handling.
895
896	Run rep_test in a replicated master environment;
897	hold an election among a group of clients to make sure they select
898	a proper master from amongst themselves, forcing errors at various
899	locations in the election path.
900
901=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
902rep006
903	Replication and non-rep env handles.
904
905	Run a modified version of test001 in a replicated master
906	environment; verify that the database on the client is correct.
907	Next, create a non-rep env handle to the master env.
908	Attempt to open the database r/w to force error.
909
910=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
911rep007
912	Replication and bad LSNs
913
914	Run rep_test in a replicated master env.
915	Close the client.  Make additional changes to master.
916	Close the master.  Open the client as the new master.
917	Make several different changes.  Open the old master as
918	the client.  Verify periodically that contents are correct.
919	This test is not appropriate for named in-memory db testing
920	because the databases are lost when both envs are closed.
921
922=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
923rep008
924	Replication, back up and synchronizing
925
926	Run a modified version of test001 in a replicated master
927	environment.
928	Close master and client.
929	Copy the master log to the client.
930	Clean the master.
931	Reopen the master and client.
932
933=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
934rep009
935	Replication and DUPMASTERs
936	Run test001 in a replicated environment.
937
938	Declare one of the clients to also be a master.
939	Close a client, clean it and then declare it a 2nd master.
940
941=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
942rep010
943	Replication and ISPERM
944
945	With consecutive message processing, make sure every
946	DB_REP_PERMANENT is responded to with an ISPERM when
947	processed.  With gaps in the processing, make sure
948	every DB_REP_PERMANENT is responded to with an ISPERM
949	or a NOTPERM.  Verify in both cases that the LSN returned
950	with ISPERM is found in the log.
951
952=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
953rep011
954	Replication: test open handle across an upgrade.
955
956	Open and close test database in master environment.
957	Update the client.  Check client, and leave the handle
958	to the client open as we close the masterenv and upgrade
959	the client to master.  Reopen the old master as client
960	and catch up.  Test that we can still do a put to the
961	handle we created on the master while it was still a
962	client, and then make sure that the change can be
963	propagated back to the new client.
964
965=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
966rep012
967	Replication and dead DB handles.
968
969	Run a modified version of test001 in a replicated master env.
970	Run in replicated environment with secondary indices too.
971	Make additional changes to master, but not to the client.
972	Downgrade the master and upgrade the client with open db handles.
973	Verify that the roll back on clients gives dead db handles.
974
975=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
976rep013
977	Replication and swapping master/clients with open dbs.
978
979	Run a modified version of test001 in a replicated master env.
980	Make additional changes to master, but not to the client.
981	Swap master and client.
982	Verify that the roll back on clients gives dead db handles.
983	Rerun the test, turning on client-to-client synchronization.
984	Swap and verify several times.
985
986=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
987rep014
988	Replication and multiple replication handles.
989	Test multiple client handles, opening and closing to
990	make sure we get the right openfiles.
991
992=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
993rep015
994	Locking across multiple pages with replication.
995
996	Open master and client with small pagesize and
997	generate more than one page and generate off-page
998	dups on the first page (second key) and last page
999	(next-to-last key).
1000	Within a single transaction, for each database, open
1001	2 cursors and delete the first and last entries (this
1002	exercises locks on regular pages).  Intermittently
1003	update client during the process.
1004	Within a single transaction, for each database, open
1005	2 cursors.  Walk to the off-page dups and delete one
1006	from each end (this exercises locks on off-page dups).
1007	Intermittently update client.
1008
1009=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1010rep016
1011	Replication election test with varying required nvotes.
1012
1013	Run a modified version of test001 in a replicated master environment;
1014	hold an election among a group of clients to make sure they select
1015	the master with varying required participants.
1016
1017=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1018rep017
1019	Concurrency with checkpoints.
1020
1021	Verify that we achieve concurrency in the presence of checkpoints.
1022	Here are the checks that we wish to make:
1023	While dbenv1 is handling the checkpoint record:
1024	Subsequent in-order log records are accepted.
1025	Accepted PERM log records get NOTPERM
1026	A subsequent checkpoint gets NOTPERM
1027	After checkpoint completes, next txn returns PERM
1028
1029=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1030rep018
1031	Replication with dbremove.
1032
1033	Verify that the attempt to remove a database file
1034	on the master hangs while another process holds a
1035	handle on the client.
1036
1037
1038=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1039rep019
1040	Replication and multiple clients at same LSN.
1041	Have several clients at the same LSN.  Run recovery at
1042	different times.  Declare a client master and after sync-up
1043	verify all client logs are identical.
1044
1045=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1046rep020
1047	Replication elections - test election generation numbers.
1048
1049
1050=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1051rep021
1052	Replication and multiple environments.
1053	Run similar tests in separate environments, making sure
1054	that some data overlaps.  Then, "move" one client env
1055	from one replication group to another and make sure that
1056	we do not get divergent logs.  We either match the first
1057	record and end up with identical logs or we get an error.
1058	Verify all client logs are identical if successful.
1059
1060=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1061rep022
1062	Replication elections - test election generation numbers
1063	during simulated network partition.
1064
1065
1066=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1067rep023
1068	Replication using two master handles.
1069
1070	Open two handles on one master env.  Create two
1071	databases, one through each master handle.  Process
1072	all messages through the first master handle.  Make
1073	sure changes made through both handles are picked
1074	up properly.
1075
1076=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1077rep024
1078	Replication page allocation / verify test
1079
1080	Start a master (site 1) and a client (site 2).  Master
1081	closes (simulating a crash).  Site 2 becomes the master
1082	and site 1 comes back up as a client.  Verify database.
1083
1084=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1085rep025
1086	Test of DB_REP_JOIN_FAILURE.
1087
1088	One master, one client.
1089	Generate several log files.
1090	Remove old master log files.
1091	Delete client files and restart client.
1092	Put one more record to the master.  At the next
1093	processing of messages, the client should get JOIN_FAILURE.
1094	Recover with a hot failover.
1095
1096	Test error handling when a client without encryption tries to
1097	join an encrypted repgroup, or vice versa.  Make sure the client
1098	gets the expected JOIN_FAILURE error and that the master
1099	continues to operate after the error.
1100
1101=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1102rep026
1103	Replication elections - simulate a crash after sending
1104	a vote.
1105
1106=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1107rep027
1108	Replication and secondary indexes.
1109
1110	Set up a secondary index on the master and make sure
1111	it can be accessed from the client.
1112
1113=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1114rep028
1115	Replication and non-rep env handles. (Also see rep006.)
1116
1117	Open second non-rep env on client, and create a db
1118	through this handle.  Open the db on master and put
1119	some data.  Check whether the non-rep handle keeps
1120	working.  Also check if opening the client database
1121	in the non-rep env writes log records.
1122
1123=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1124rep029
1125	Test of internal initialization.
1126
1127	One master, one client.
1128	Generate several log files.
1129	Remove old master log files.
1130	Delete client files and restart client.
1131	Put one more record to the master.
1132
1133=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1134rep030
1135	Test of internal initialization multiple files and pagesizes.
1136	Hold some databases open on master.
1137
1138	One master, one client using a data_dir for internal init.
1139	Generate several log files.
1140	Remove old master log files.
1141	Delete client files and restart client.
1142	Put one more record to the master.
1143
1144=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1145rep031
1146	Test of internal initialization and blocked operations.
1147
1148	One master, one client.
1149	Put one more record to the master.
1150	Test that internal initialization blocks:
1151	log_archive, rename, remove, fileid_reset, lsn_reset.
1152	Sleep 30+ seconds.
1153	Test that blocked operations are now unblocked.
1154
1155=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1156rep032
1157	Test of log gap processing.
1158
1159	One master, one client.
1160	Run rep_test.
1161	Run rep_test without sending messages to client.
1162	Make sure client missing the messages catches up properly.
1163
1164=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1165rep033
1166	Test of internal initialization with rename and remove of dbs.
1167
1168	One master, one client.
1169	Generate several databases.  Replicate to client.
1170	Do some renames and removes, both before and after
1171	closing the client.
1172
1173=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1174rep034
1175	Test of STARTUPDONE notification.
1176
1177	STARTUPDONE can now be recognized without the need for new "live" log
1178	records from the master (under favorable conditions).  The response to
1179	the ALL_REQ at the end of synchronization includes an end-of-log marker
1180	that now triggers it.  However, the message containing that end marker
1181	could get lost, so live log records still serve as a back-up mechanism.
1182	The end marker may also be set under c2c sync, but only if the serving
1183	client has itself achieved STARTUPDONE.
1184
1185=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1186rep035
1187	Test sync-up recovery in replication.
1188
1189	We need to fork off 3 child tclsh processes to operate
1190	on Site 3's (client always) home directory:
1191	Process 1 continually calls lock_detect.
1192	Process 2 continually calls txn_checkpoint.
1193	Process 3 continually calls memp_trickle.
1194	Process 4 continually calls log_archive.
1195	Sites 1 and 2 will continually swap being master
1196	(forcing site 3 to continually run sync-up recovery)
1197	New master performs 1 operation, replicates and downgrades.
1198
1199=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1200rep036
1201	Multiple master processes writing to the database.
1202	One process handles all message processing.
1203
1204=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1205rep037
1206	Test of internal initialization and page throttling.
1207
1208	One master, one client, force page throttling.
1209	Generate several log files.
1210	Remove old master log files.
1211	Delete client files and restart client.
1212	Put one more record to the master.
1213	Verify page throttling occurred.
1214
1215=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1216rep038
1217	Test of internal initialization and ongoing master updates.
1218
1219	One master, one client.
1220	Generate several log files.
1221	Remove old master log files.
1222	Delete client files and restart client.
1223	Put more records on master while initialization is in progress.
1224
1225=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1226rep039
1227	Test of interrupted internal initialization.  The
1228	interruption is due to a changed master, or the client crashing,
1229	or both.
1230
1231	One master, two clients.
1232	Generate several log files. Remove old master log files.
1233	Restart client, optionally having "cleaned" client env dir.  Either
1234	way, this has the effect of forcing an internal init.
1235	Interrupt the internal init.
1236	Vary the number of times we process messages to make sure
1237	the interruption occurs at varying stages of the first internal
1238	initialization.
1239
1240	Run for btree and queue only because of the number of permutations.
1241
1242
1243=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1244rep040
1245	Test of racing rep_start and transactions.
1246
1247	One master, one client.
1248	Have master in the middle of a transaction.
1249	Call rep_start to make master a client.
1250	Commit the transaction.
1251	Call rep_start to make master the master again.
1252
1253=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1254rep041
1255	Turn replication on and off at run-time.
1256
1257	Start a master with replication OFF (noop transport function).
1258	Run rep_test to advance log files and archive.
1259	Start up client; change master to working transport function.
1260	Now replication is ON.
1261	Do more ops, make sure client is up to date.
1262	Close client, turn replication OFF on master, do more ops.
1263	Repeat from point A.
1264
1265=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1266rep042
1267	Concurrency with updates.
1268
1269	Verify racing role changes and updates don't result in
1270	pages with LSN 0,1.  Set up an environment that is master.
1271	Spawn child process that does a delete, but using the
1272	$env check so that it sleeps in the middle of the call.
1273	Master downgrades and then sleeps as a client so that
1274	child will run.  Verify child does not succeed (should
1275	get read-only error) due to role change in the middle of
1276	its call.
1277
1278=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1279rep043
1280
1281	Constant writes during upgrade/downgrade.
1282
1283	Three envs take turns being master.  Each env
1284	has a child process which does writes all the
1285	time.  They will succeed when that env is master
1286	and fail when it is not.
1287
1288=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1289rep044
1290
1291	Test rollbacks with open file ids.
1292
1293	We have one master with two handles and one client.
1294	Each time through the main loop, we open a db, write
1295	to the db, and close the db.  Each one of these actions
1296	is propagated to the client, or a roll back is forced
1297	by swapping masters.
1298
1299=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1300rep045
1301
1302	Replication with versions.
1303
1304	Mimic an application where a database is set up in the
1305	background and then put into a replication group for use.
1306	The "version database" identifies the current live
1307	version, the database against which queries are made.
1308	For example, the version database might say the current
1309	version is 3, and queries would then be sent to db.3.
1310	Version 4 is prepared for use while version 3 is in use.
1311	When version 4 is complete, the version database is updated
1312	to point to version 4 so queries can be directed there.
1313
1314	This test has a master and two clients.  One client swaps
1315	roles with the master, and the other client runs constantly
1316	in another process.
1317
1318=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1319rep046
1320	Replication and basic bulk transfer.
1321	Set bulk transfer replication option.
1322	Run long txns on master and then commit.  Process on client
1323	and verify contents.  Run a very long txn so that logging
1324	must send the log.  Process and verify on client.
1325
1326=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1327rep047
1328	Replication and log gap bulk transfers.
1329	Set bulk transfer replication option.
1330	Run test.  Start a new client (to test ALL_REQ and bulk).
1331	Run small test again.  Clear messages for 1 client.
1332	Run small test again to test LOG_REQ gap processing and bulk.
1333	Process and verify on clients.
1334
1335=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1336rep048
1337	Replication and log gap bulk transfers.
1338	Have two master env handles.  Turn bulk on in
1339	one (turns it on for both).  Turn it off in the other.
1340	While toggling, send log records from both handles.
1341	Process message and verify master and client match.
1342
1343=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1344rep049
1345	Replication and delay syncing clients - basic test.
1346
1347	Open and start up a master and two clients.  Turn on delay sync
1348	in the delayed client.  Change master, add data and process messages.
1349	Verify delayed client does not match.  Make additional changes and
1350	update the delayted client.  Verify all match.
1351	Add in a fresh delayed client to test delay of ALL_REQ.
1352	Process startup messages and verify freshc client has no database.
1353	Sync and verify fresh client matches.
1354
1355=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1356rep050
1357	Replication and delay syncing clients - change master test.
1358
1359	Open and start up master and 4 clients.  Turn on delay for 3 clients.
1360	Switch masters, add data and verify delayed clients are out of date.
1361	Make additional changes to master.  And change masters again.
1362	Sync/update delayed client and verify.  The 4th client is a brand
1363	new delayed client added in to test the non-verify path.
1364
1365	Then test two different things:
1366	1. Swap master again while clients are still delayed.
1367	2. Swap master again while sync is proceeding for one client.
1368
1369=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1370rep051
1371	Test of compaction with replication.
1372
1373	Run rep_test in a replicated master environment.
1374	Delete a large number of entries and compact with -freespace.
1375	Propagate the changes to the client and make sure client and
1376	master match.
1377
1378=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1379rep052
1380	Test of replication with NOWAIT.
1381
1382	One master, one client.  After initializing
1383	everything normally, close client and let the
1384	master get ahead -- far enough that the master
1385	no longer has the client's last log file.
1386	Reopen the client and turn on NOWAIT.
1387	Process a few messages to get the client into
1388	recovery mode, and verify that a lockout error occurs
1389	on a txn API call (txn_begin) and a list of env API calls
1390	as well as utilities.
1391	Process all the messages and verify that lockout is over.
1392
1393=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1394rep053
1395	Replication and basic client-to-client synchronization.
1396
1397	Open and start up master and 1 client.
1398	Start up a second client later and verify it sync'ed from
1399	the original client, not the master.
1400
1401=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1402rep054
1403	Test of internal initialization where a far-behind
1404	client takes over as master.
1405
1406	One master, two clients.
1407	Run rep_test and process.
1408	Close client 1.
1409	Run rep_test, opening new databases, and processing
1410	messages.  Archive as we go so that log files get removed.
1411	Close master and reopen client 1 as master.  Process messages.
1412	Verify that new master and client are in sync.
1413	Run rep_test again, adding data to one of the new
1414	named databases.
1415
1416=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1417rep055
1418	Test of internal initialization and log archiving.
1419
1420	One master, one client.
1421	Generate several log files.
1422	Remove old master log files and generate several more.
1423	Get list of archivable files from db_archive and restart client.
1424	As client is in the middle of internal init, remove
1425	the log files returned earlier by db_archive.
1426
1427=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1428rep058
1429
1430	Replication with early databases
1431
1432	Mimic an application where they create a database before
1433	calling rep_start, thus writing log records on a client
1434	before it is a client.  Verify we cannot join repl group.
1435
1436=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1437rep060
1438	Test of normally running clients and internal initialization.
1439	Have a client running normally, but slow/far behind the master.
1440	Then the master checkpoints and archives, causing the client
1441	to suddenly be thrown into internal init.  This test tests
1442	that we clean up the old files/pages in mpool and dbreg.
1443	Also test same thing but the app holding an open dbp as well.
1444
1445=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1446rep061
1447	Test of internal initialization multiple files and pagesizes
1448	with page gaps.
1449
1450	One master, one client.
1451	Generate several log files.
1452	Remove old master log files.
1453	Delete client files and restart client.
1454	Put one more record to the master.
1455	Force some page messages to get dropped.
1456
1457=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1458rep062
1459	Test of internal initialization where client has a different
1460	kind of database than the master.
1461
1462	Create a master of one type, and let the client catch up.
1463	Close the client.
1464	Remove the database on the master, and create a new
1465	database of the same name but a different type.
1466	Run the master ahead far enough that internal initialization
1467	will be required on the reopen of the client.
1468	Reopen the client and verify.
1469
1470=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1471rep063
1472	Replication election test with simulated different versions
1473	for each site.  This tests that old sites with real priority
1474	trump ELECTABLE sites with zero priority even with greater LSNs.
1475	There is a special case in the code for testing that if the
1476	priority is <= 10, we simulate mixed versions for elections.
1477
1478	Run a rep_test in a replicated master environment and close;
1479	hold an election among a group of clients to make sure they select
1480	the master with varying LSNs and priorities.
1481
1482=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1483rep064
1484	Replication rename and forced-upgrade test.
1485
1486	The test verifies that the client correctly
1487	(internally) closes files when upgrading to master.
1488	It does this by having the master have a database
1489	open, then crashing.  The client upgrades to master,
1490	and attempts to remove the open database.
1491
1492=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1493rep065
1494	Tests replication running with different versions.
1495	This capability is introduced with 4.5.
1496
1497	Start a replication group of 1 master and N sites, all
1498	running some historical version greater than or equal to 4.7.
1499	Take down a client and bring it up again running current.
1500	Run some upgrades, make sure everything works.
1501
1502	Each site runs the tcllib of its own version, but uses
1503	the current tcl code (e.g. test.tcl).
1504
1505=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1506rep066
1507	Replication and dead log handles.
1508
1509	Run rep_test on master and a client.
1510	Simulate client crashes (master continues) until log 2.
1511	Open 2nd master env handle and put something in log and flush.
1512	Downgrade master, restart client as master.
1513	Run rep_test on newmaster until log 2.
1514	New master writes log records, newclient processes records
1515	and 2nd newclient env handle calls log_flush.
1516	New master commits, newclient processes and should succeed.
1517	Make sure 2nd handle detects the old log handle and doesn't
1518	write to a stale handle (if it does, the processing of the
1519	commit will fail).
1520
1521=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1522rep067
1523	Full election timeout test.
1524
1525	Verify that elections use a separate "full election timeout" (if such
1526	configuration is in use) instead of the normal timeout, when the
1527	replication group is "cold-booted" (all sites starting with recovery).
1528
1529
1530=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1531rep068
1532	Verify replication of dbreg operations does not hang clients.
1533	In a simple replication group, create a database with very
1534	little data.  With DB_TXN_NOSYNC the database can be created
1535	at the client even though the log is not flushed.  If we crash
1536	and restart, the application of the log starts over again, even
1537	though the database is still there.  The application can open
1538	the database before replication tries to re-apply the create.
1539	This causes a hang as replication waits to be able to get a
1540	handle lock.
1541
1542	Run for btree only because access method shouldn't matter.
1543
1544
1545=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1546rep069
1547	Test of internal initialization and elections.
1548
1549	If a client is in a recovery mode of any kind, it
1550	participates in elections at priority 0 so it can
1551	never be elected master.
1552
1553=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1554rep070
1555	Test of startup_done condition with idle master.
1556
1557	Join a client to an existing master, and verify that
1558	the client detects startup_done even if the master
1559	does not execute any new transactions.
1560
1561=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1562rep071
1563	Test of multiple simultaneous client env handles and
1564	upgrading/downgrading.  Tests use of temp db handle
1565	internally.
1566
1567	Open a master and 2 handles to the same client env.
1568	Run rep_test.
1569	Close master and upgrade client to master using one env handle.
1570	Run rep_test again, and then downgrade back to client.
1571
1572=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1573rep072
1574	Verify that internal init does not leak resources from
1575	the locking subsystem.
1576
1577=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1578rep073
1579
1580	Test of allowing clients to create and update their own scratch
1581	databases within the environment.  Doing so requires the use
1582	use of the DB_TXN_NOT_DURABLE flag for those databases.
1583
1584=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1585rep074
1586	Verify replication withstands send errors processing requests.
1587
1588	Run for btree only because access method shouldn't matter.
1589
1590
1591=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1592rep075
1593	Replication and prepared transactions.
1594	Test having outstanding prepared transactions and simulating
1595	crashing or upgrading or downgrading sites.
1596
1597
1598=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1599rep076
1600	Replication elections - what happens if elected client
1601	does not become master?
1602
1603	Set up a master and 3 clients.  Take down master, run election.
1604	The elected client will ignore the fact that it's been elected,
1605	so we still have 2 clients.
1606
1607	Run another election, a regular election that allows the winner
1608	to become master, and make sure it goes okay.  We do this both
1609	for the client that ignored its election and for the other client.
1610
1611	This simulates what would happen if, say, we had a temporary
1612	network partition and lost the winner.
1613
1614=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1615rep077
1616
1617	Replication, recovery and applying log records immediately.
1618	Master and 1 client.  Start up both sites.
1619	Close client and run rep_test on the master so that the
1620	log record is the same LSN the client would be expecting.
1621	Reopen client with recovery and verify the client does not
1622	try to apply that "expected" record before it synchronizes
1623	with the master.
1624
1625=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1626rep078
1627
1628	Replication and basic lease test.
1629	Set leases on master and 2 clients.
1630	Do a lease operation and process to all clients.
1631	Read with lease on master.  Do another lease operation
1632	and don't process on any client.  Try to read with
1633	on the master and verify it fails.  Process the messages
1634	to the clients and retry the read.
1635
1636=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1637rep079
1638	Replication leases and invalid usage.
1639
1640	Open a client without leases.  Attempt to set leases after rep_start.
1641	Attempt to declare as master without election.
1642	Run an election with an nsites parameter value.
1643	Elect a master with leases.  Put some data and send to clients.
1644	Cleanly shutdown master env.  Restart without
1645	recovery and verify leases are expired and refreshed.
1646	Add a new client without leases to a group using leases.
1647	Test errors if we cannot get leases before/after txn_commit.
1648
1649=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1650rep080
1651	AUTOINIT off with empty client logs.
1652
1653	Verify that a fresh client trying to join the group for
1654	the first time observes the setting of DELAY_SYNC and !AUTOINIT
1655	properly.
1656
1657
1658=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1659rep081
1660	Test of internal initialization and missing database files.
1661
1662	One master, one client, two databases.
1663	Generate several log files.
1664	Remove old master log files.
1665	Start up client.
1666	Remove or replace one master database file while client initialization
1667	is in progress, make sure other master database can keep processing.
1668
1669=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1670rep082
1671	Sending replication requests to correct master site.
1672
1673	Regression test for a bug [#16592] where a client could send an
1674	UPDATE_REQ to another client instead of the master.
1675
1676=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1677rep083
1678	Replication clients must never send VERIFY_FAIL to a c2c request.
1679
1680	Regression test for a bug [#16592] where a client could send a
1681	VERIFY_FAIL to another client, which is illegal.
1682
1683=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1684rep084
1685	Abbreviated internal init for named in-memory databases (NIMDBs).
1686
1687
1688=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1689rep085
1690	Skipping unnecessary abbreviated internal init.
1691
1692	Make sure that once we've materialized NIMDBs, we don't bother
1693	trying to do it again on subsequent sync without recovery.  Make
1694	sure we do probe for the need to materialize NIMDBs, but don't do
1695	any internal init at all if there are no NIMDBs.  Note that in order to
1696	do this test we don't even need any NIMDBs.
1697
1698=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1699rep086
1700	Interrupted abbreviated internal init.
1701
1702	Make sure we cleanly remove partially loaded named in-memory
1703	databases (NIMDBs).
1704
1705=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1706rep087
1707	Abbreviated internal init with open file handles.
1708
1709	Client has open handle to an on-disk DB when abbreviated
1710	internal init starts.  Make sure we lock out access, and make sure
1711	it ends up as HANDLE_DEAD.  Also, make sure that if there are
1712	no NIMDBs, that we *don't* get HANDLE_DEAD.
1713
1714=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1715rep088
1716	Replication roll-back preserves checkpoint.
1717
1718	Create a situation where a client has to roll back its
1719	log, discarding some existing transactions, in order to sync
1720	with a new master.
1721
1722	1. When the client still has its entire log file history, all
1723	the way back to log file #1, it's OK if the roll-back discards
1724	any/all checkpoints.
1725	2. When old log files have been archived, if the roll-back would
1726	remove all existing checkpoints it must be forbidden.  The log
1727	must always have a checkpoint (or all files back through #1).
1728	The client must do internal init or return JOIN_FAILURE.
1729	3. (the normal case) Old log files archived, and a checkpoint
1730	still exists in the portion of the log which will remain after
1731	the roll-back: no internal-init/JOIN_FAILURE necessary.
1732
1733=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1734rep089
1735	Test of proper clean-up of mpool during interrupted internal init.
1736
1737	Have a client in the middle of internal init when a new master
1738	generation comes along, forcing the client to interrupt the internal
1739	init, including doing the clean-up.  The client is in the middle of
1740	retrieving database pages, so that we are forced to clean up mpool.
1741	(Regression test for bug 17121)
1742
1743=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1744rep090
1745	Test of AUTO_REMOVE on both master and client sites.
1746
1747	One master, one client.  Set AUTO_REMOVE on the client env.
1748	Generate several log files.
1749	Verify the client has properly removed the log files.
1750	Turn on AUTO_REMOVE on the master and generate more log files.
1751	Confirm both envs have the same log files.
1752
1753=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1754rep091
1755	Read-your-writes consistency.
1756	Write transactions at the master, and then call the txn_applied()
1757	method to see whether the client has received and applied them yet.
1758
1759=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1760rep092
1761	Read-your-writes consistency.
1762	Test events in one thread (process) waking up another sleeping thread,
1763	before a timeout expires.
1764
1765=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1766rep093
1767	Egen changes during election.
1768
1769=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1770rep094
1771	Full election with less than majority initially connected.
1772
1773	Cold-boot a 4-site group.  The first two sites start quickly and
1774	initiate an election.  The other two sites don't join the election until
1775	the middle of the long full election timeout period.  It's important that
1776	the number of sites that start immediately be a sub-majority, because
1777	that's the case that used to have a bug in it [#18456].
1778
1779=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1780rep095
1781	Test of internal initialization use of shared region memory.
1782
1783	One master, one client.  Create a gap that requires internal
1784	initialization.  Start the internal initialization in this
1785	parent process and complete it in a separate child process.
1786
1787=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1788rep096
1789	Replication and db_replicate utility.
1790
1791	Create a master and client environment.  Open them.
1792	Start a db_replicate process on each.  Create a database on
1793	the master and write some data.  Then verify contents.
1794
1795=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1796rep097
1797
1798	Replication and lease data durability test.
1799	Set leases on master and 2 clients.
1800	Have the original master go down and a client take over.
1801	Have the old master rejoin as client, but go down again.
1802	The other two sites do one txn, while the original master's
1803	LSN extends beyond due to running recovery.
1804	Original Master rejoins while new master fails.  Make sure remaining
1805	original site is elected, with the smaller LSN, but with txn data.
1806
1807=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1808rep098
1809	Test of internal initialization and page deallocation.
1810
1811	Use one master, one client.
1812	Generate several log files.
1813	Remove old master log files.
1814	Start a client.
1815	After client gets UPDATE file information, delete entries to
1816	remove pages in the database.
1817
1818=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1819rep099
1820	Test of multiple data dirs and databases, both active replication
1821	and internal init.
1822
1823	One master, two clients using several data_dirs.
1824	Create databases in different data_dirs.  Replicate to client.
1825	Add 2nd client later to require it to catch up via internal init.
1826
1827=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1828rep100
1829	Checkpoints and unresolved txns
1830
1831
1832=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1833rep101
1834	Test of exclusive access to databases and HA.
1835	Confirm basic functionality with master and client.
1836	Confirm excl access after checkpoint and archive.
1837	Confirm internal init with open excl databases.
1838
1839
1840=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1841rep102
1842	Test of exclusive access to databases and HA.
1843	Master creates a database, writes some txns, and closes the db.
1844	Client opens the database (in child process).
1845	Master opens database exclusively.
1846	Client tries to read database and gets HANDLE_DEAD.  Closes db.
1847	Client tries to reopen database and is blocked.
1848
1849
1850=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1851rep103
1852	Test of multiple data dirs and databases, with different
1853	directory structure on master and client.
1854
1855	One master, two clients using several data_dirs.
1856	Create databases in different data_dirs.  Replicate to client
1857	that doesn't have the same data_dirs.
1858	Add 2nd client later to require it to catch up via internal init.
1859
1860=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1861rep104
1862	Test of interrupted internal initialization changes.  The
1863	interruption is due to a changed master.
1864
1865	One master, two clients.
1866	Generate several log files. Remove old master log files.
1867	Restart client forcing an internal init.
1868	Interrupt the internal init.
1869	We create lots of databases and a small cache to reproduce an
1870	issue where interrupted init removed the files and then the later
1871	init tried to write dirty pages to the no-longer-existing file.
1872
1873	Run for btree and queue only because of the number of permutations.
1874
1875
1876=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1877rep105
1878	Replication and rollback on sync over multiple log files.
1879
1880	Run rep_test in a replicated master env.
1881	Hold open various txns in various log files and make sure
1882	that when synchronization happens, we rollback the correct set
1883	of log files.
1884
1885=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1886rep106
1887
1888	Replication and basic lease test with site shutdowns.
1889	Set leases on master and 3 clients, 2 electable and 1 zero-priority.
1890	Do a lease operation and process to all clients.
1891	Shutdown 1 electable and perform another update.  Leases should work.
1892	Shutdown 1 electable and perform another update.  Should fail.
1893
1894=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1895rep107
1896
1897	Replication and basic view error test.
1898	Have a master, a client and a view.
1899	Test for various error conditions and restrictions, including
1900	having a view call rep_elect; trying to demote a client to a
1901	view after opening the env; inconsistent view opening; trying
1902	to make it a master, etc.
1903
1904=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1905rep108
1906
1907	Replication and partial rep database creation.
1908	Have a master, a client and a view.
1909	Start up master and client.  Create files and make sure
1910	the correct files appear on the view.  Force creation
1911	via internal init, recovery or by applying live log records.
1912
1913=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1914rep110
1915	Test of internal initialization, nowait and child processes.
1916	This tests a particular code path for handle_cnt management.
1917
1918	One master, one client, with DB_REP_CONF_NOWAIT.
1919	Generate several log files.
1920	Remove old master log files.
1921	While in internal init, start a child process to open the env.
1922
1923=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1924rep111
1925
1926	Replication and partial view and client-to-client synchronization.
1927	Start up master and view.  Create files and make sure
1928	the correct files appear on the view.  Start client site and
1929	confirm the view serves client-to-client.
1930
1931=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1932rep112
1933
1934	Replication and partial view remove and rename.
1935	Start up master and view.  Create files and make sure
1936	the correct files appear on the view.
1937
1938=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1939rep113
1940
1941	Replication and partial view special case testing.
1942	Start up master and view.  Create files and make sure
1943	the correct files appear on the view.  Run special cases
1944	such as partitioned databases, secondaries and many data_dirs.
1945
1946=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1947rep115
1948	Test correct behavior of TXN_WRNOSYNC, TXN_NOSYNC and synchronous
1949	transactions on client sites.
1950
1951
1952=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1953rep116
1954	Test of instant internal initialization, where internal init is started
1955	instantly if a file delete is found while walking back through the
1956	logs during the verify step.
1957
1958	One master, one client.
1959	Generate several log files.
1960	Remove old master and client log files.
1961	Create a network partition between the master and client,
1962	and restart the client as a master.
1963	Delete a database or blob file on the client, then close the client and
1964	have it rejoin the master.  Assert that the deleted file is present on
1965	the client.
1966
1967=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1968repmgr001
1969	Basic repmgr test.
1970
1971	Run all mix-and-match combinations of the basic_repmgr_test.
1972
1973
1974=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1975repmgr002
1976	Basic repmgr test.
1977
1978	Run all combinations of the basic_repmgr_election_test.
1979
1980
1981=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1982repmgr003
1983	Basic repmgr init test.
1984
1985	Run all combinations of the basic_repmgr_init_test.
1986
1987
1988=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1989repmgr004
1990	Test the repmgr incoming queue limit.
1991
1992	Test that setting the repmgr incoming queue limit works.
1993	We create a master and a client, and set a small client
1994	incoming queue limit.  We verify this limit works on the
1995	client side for full and abbreviated internal init and
1996	for regular processing.  In addition to the default case,
1997	we will also test cases using bulk transfer and blob
1998	databases.
1999
2000	Run for btree only because access method shouldn't matter.
2001
2002
2003=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2004repmgr005
2005	Test use of set_memory_init() with replication.
2006
2007	Tests the set_memory_init() object types that are used to
2008	calculate the additional environment region memory needed
2009	for replication:  DB_MEM_DATABASE, DB_MEM_DATABASE_LENGTH,
2010	DB_MEM_EXTFILE_DATABASE, DB_MEM_REP_SITE.
2011
2012	Run for btree only because access method shouldn't matter.
2013
2014
2015=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2016repmgr007
2017	Basic repmgr client shutdown/restart test.
2018
2019	Start an appointed master site and two clients. Shut down and
2020	restart each client, processing transactions after each restart.
2021	Verify all expected transactions are replicated.
2022
2023	Test flag -R of utility db_printlog.
2024
2025	Run for btree only because access method shouldn't matter.
2026
2027
2028=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2029repmgr009
2030	repmgr API error test.
2031
2032	Try a variety of repmgr calls that result in errors. Also
2033	try combinations of repmgr and base replication API calls
2034	that result in errors.
2035
2036	Run for btree only because access method shouldn't matter.
2037
2038
2039=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2040repmgr010
2041	Acknowledgement policy and timeout test.
2042
2043	Verify that "quorum" acknowledgement policy succeeds with fewer than
2044	nsites running. Verify that "all" acknowledgement policy results in
2045	ack failures with fewer than nsites running.  Make sure the presence
2046	of more views than participants doesn't cause incorrect ack behavior.
2047	Make sure unelectable master requires more acks for "quorum" policy.
2048	Test that an unelectable client joining the group doesn't cause
2049	PERM_FAILs.
2050
2051	Run for btree only because access method shouldn't matter.
2052
2053
2054=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2055repmgr011
2056	repmgr two site strict majority test.
2057
2058	Test each 2site_strict option's behavior for master loss and for
2059	client site removal.  With 2site_strict=on, make sure remaining
2060	site does not take over as master and that the client site can be
2061	removed and rejoin the group.  With 2site_strict=off, make sure
2062	remaining site does take over as master and make sure the deferred
2063	election logic prevents the rejoining site from immediately taking
2064	over as master before fully rejoining the repgroup.
2065
2066	Run for btree only because access method shouldn't matter.
2067
2068
2069=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2070repmgr012
2071	repmgr heartbeat test.
2072
2073	Start an appointed master and one client site. Set heartbeat
2074	send and monitor values and process some transactions. Stop
2075	sending heartbeats from master and verify that client sees
2076	a dropped connection.
2077
2078	Run for btree only because access method shouldn't matter.
2079
2080
2081=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2082repmgr013
2083	Site list test.
2084
2085	Configure a master and two clients where one client is a peer of
2086	the other and verify resulting site lists.
2087
2088	Run for btree only because access method shouldn't matter.
2089
2090
2091=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2092repmgr017
2093	repmgr in-memory cache overflow test.
2094
2095	Start an appointed master site and one client, putting databases,
2096	environment regions, logs and replication files in-memory. Set
2097	very small cachesize and run enough transactions to overflow cache.
2098	Shut down and restart master and client, giving master a larger cache.
2099	Run and verify a small number of transactions.
2100
2101	Run for btree only because access method shouldn't matter.
2102
2103
2104=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2105repmgr018
2106	Check repmgr stats.
2107
2108	Start an appointed master and one client. Shut down the client,
2109	run some transactions at the master and verify that there are
2110	acknowledgement failures and one dropped connection. Shut down
2111	and restart client again and verify that there are two dropped
2112	connections.
2113
2114	Run for btree only because access method shouldn't matter.
2115
2116
2117=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2118repmgr023
2119	Test of JOIN_FAILURE event for repmgr applications.
2120
2121	Run for btree only because access method shouldn't matter.
2122
2123=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2124repmgr024
2125	Test of group-wide log archiving awareness.
2126	Verify that log archiving will use the ack from the clients in
2127	its decisions about what log files are allowed to be archived.
2128
2129=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2130repmgr025
2131	repmgr heartbeat rerequest test.
2132
2133	Start an appointed master site and one client.  Use a test hook
2134	to inhibit PAGE_REQ processing at the master (i.e., "lose" some
2135	messages).
2136	Start a second client that gets stuck in internal init.  Wait
2137	long enough to rely on the heartbeat rerequest to request the
2138	missing pages, rescind the test hook and verify that all
2139	data appears on both clients.
2140
2141	Run for btree only because access method shouldn't matter.
2142
2143
2144=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2145repmgr026
2146	Test of "full election" timeouts.
2147	1. Cold boot with all sites present.
2148	2. Cold boot with some sites missing.
2149	3. Partial-participation election with one client having seen a master,
2150	but another just starting up fresh.
2151	4. Partial participation, with all participants already having seen a
2152	master.
2153
2154
2155=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2156repmgr027
2157	Test of "full election" timeouts, where a client starts up and joins the
2158	group during the middle of an election.
2159
2160
2161=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2162repmgr028
2163	Repmgr allows applications to choose master explicitly, instead of
2164	relying on elections.
2165
2166=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2167repmgr029
2168	Test repmgr group membership: create, join, re-join and remove from
2169	repmgr group and observe changes in group membership database.
2170
2171
2172=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2173repmgr030
2174	repmgr multiple client-to-client peer test.
2175
2176	Start an appointed master, three clients and a view.  The third client
2177	configures the two other clients and view as peers and delays client
2178	sync.  Add some data and confirm that the third client uses first client
2179	as a peer.  Close the master so that the first client now becomes the
2180	the master.  Add some more data and confirm that the third client now
2181	uses the second client as a peer.  Close the current master so that the
2182	second client becomes master and the third client uses the view as a
2183	peer.
2184
2185	Run for btree only because access method shouldn't matter.
2186
2187
2188=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2189repmgr032
2190	The (undocumented) AUTOROLLBACK config feature.
2191
2192=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2193repmgr033
2194	Under quorum policy, if the number of peers in the group is less than a
2195	majority, that's still OK.
2196
2197=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2198repmgr034
2199	Repmgr site removal and restart.
2200
2201	Start two repmgr sites, master and client1.  The client1 removes
2202	itself and restarts, sometimes more than once.  Start a third
2203	repmgr site client2 and make sure it can remove client1 from
2204	the group.
2205
2206	This test must use heartbeats to ensure that a client that has
2207	been removed and restarted without recovery can sync up.
2208
2209
2210=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2211repmgr035
2212	Tests replication manager running with different versions.
2213	This capability is introduced with 4.5, but this test can only
2214	go back to 5.0 because it requires the ability to turn off
2215	elections.
2216
2217	Start a replication group of 1 master and N sites, all
2218	running some historical version greater than or equal to 5.0.
2219	Take down a client and bring it up again running current.
2220	Run some upgrades, make sure everything works.
2221
2222	Each site runs the tcllib of its own version, but uses
2223	the current tcl code (e.g. test.tcl).
2224
2225=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2226repmgr036
2227	Basic repmgr view test.
2228
2229	Start an appointed master site and one view.  Ensure replication
2230	is occurring to the view.  Shut down master, ensure view does not
2231	take over as master.  Restart master, add an empty view to the
2232	replication group, and make sure further master changes are
2233	replicated to the view and the empty view is empty.  Test
2234	view-related stats and flag indicator in repmgr_site_list output.
2235
2236	Run for btree only because access method shouldn't matter.
2237
2238
2239=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2240repmgr037
2241	Election test for repmgr views.
2242
2243	Run a set of elections in a replication group containing views,
2244	making sure views never become master.  Run test for replication
2245	groups containing different numbers of clients, unelectable clients
2246	and views.
2247
2248	Run for btree only because access method shouldn't matter.
2249
2250
2251=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2252repmgr038
2253	repmgr view demotion test.
2254
2255	Create a replication group of a master and two clients.  Demote
2256	the second client to a view, then check site statistics, transaction
2257	apply and election behavior for demoted view.
2258
2259	Run for btree only because access method shouldn't matter.
2260
2261
2262=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2263repmgr039
2264	repmgr duplicate master test.
2265
2266	This test verifies repmgr's automatic dupmaster resolution.  It
2267	uses the repmgr test hook to prevent sending heartbeats and
2268	2SITE_STRICT=off to enable the client to become a master in
2269	parallel with the already-established master.  After rescinding
2270	the test hook, it makes sure repmgr performs its dupmaster resolution
2271	process resulting in the expected winner.
2272
2273	This test runs in the following configurations:
2274	Default elections where master generation helps determine winner
2275	The undocumented DB_REP_CONF_ELECT_LOGLENGTH election option
2276	A Preferred Master replication group
2277
2278	Run for btree only because access method shouldn't matter.
2279
2280
2281=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2282repmgr040
2283	repmgr preferred master basic configuration test.
2284
2285	This test verifies repmgr's preferred master mode, including
2286	basic operation and configuration errors.
2287
2288	Run for btree only because access method shouldn't matter.
2289
2290
2291=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2292repmgr041
2293	repmgr preferred master basic resync and take over test.
2294
2295	Creates a preferred master replication group and shuts down the master
2296	site so that the client site takes over as temporary master.  Then
2297	it restarts the preferred master site, which synchronizes with the
2298	temporary master and takes over as preferred master again.  Verifies
2299	that temporary master transactions are retained.
2300
2301	Run for btree only because access method shouldn't matter.
2302
2303
2304=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2305repmgr042
2306	repmgr preferred master client startup test.
2307
2308	Test various preferred master client start up and shut down cases.
2309	Verify replication group continued operation without a client.
2310	Verify client site's startup as the temporary master and the
2311	ability of the preferred master site to resync and take over
2312	afterwards.
2313
2314	Run for btree only because access method shouldn't matter.
2315
2316
2317=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2318repmgr043
2319	repmgr preferred master transaction retention test.
2320
2321	Test various cases that create continuous or conflicting sets of
2322	transactions across the two sites.  Verify that unique preferred
2323	master transactions are never rolled back and that unique temporary
2324	master transactions are kept when possible.
2325
2326	Run for btree only because access method shouldn't matter.
2327
2328
2329=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2330repmgr044
2331	repmgr preferred master replication group size test.
2332
2333	Test preferred master behavior when sites are removed from or added
2334	to the replication group.  Also test permanent transfer of preferred
2335	mastership to the client site.
2336
2337	Run for btree only because access method shouldn't matter.
2338
2339
2340=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2341repmgr045
2342	IPv6/IPv4 interoperability test.
2343
2344	This test ensures that a single IPv4 site can function as an
2345	appointed master, an elected master or a client in a replication
2346	group where the other sites use IPv6.
2347
2348	Run for btree only because access method shouldn't matter.
2349
2350
2351=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2352repmgr046
2353	repmgr singleton write forwarding test.
2354
2355	The initial basic test has several purposes: test general use
2356	of repmgr write forwarding API options (config, timeout, stats),
2357	test basic forwarded put and del operations, test that expected
2358	errors are returned from most simple error scenarios.
2359
2360	The 3-site test makes sure that write forwarding continues to
2361	operate as expected during replication group changes such as
2362	a change of master and a former master rejoining as a client.
2363
2364	The other tests include cases for blobs, subdatabases,
2365	various duplicate options, and additional error cases.
2366	Run for btree only because access method shouldn't matter.
2367
2368
2369=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2370repmgr047
2371	Environment-level MVCC on a replication client.
2372
2373	Ensure that DB_MULTIVERSION creates the extra page copies
2374	for MVCC and that DB_TXN_SNAPSHOT operates as expected on
2375	a replication client.
2376
2377	The basic test ensures the expected operation visibility
2378	with snapshot transactions.  There are also test cases
2379	for cursor position, freezing/thawing, and to make sure
2380	a client operates correctly when it gets the environment-
2381	level DB_MULTIVERSION setting from the DB_CONFIG file.
2382
2383	Run for btree only because access method shouldn't matter.
2384
2385
2386=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2387repmgr048
2388	Repmgr Poll/Epoll/Select Test.
2389
2390	Test if
2391	a) EPOLL, POLL and SELECT work as expected.
2392
2393	Poll, epoll and select all do the same thing.(with difference
2394	in implementation and performance). So to test if they are
2395	working we create a group with three sites, with each site
2396	employing a different method. Then we verify that we get to the
2397	same expected end-state (which would have been reached had only
2398	select() been employed on all sites).
2399
2400	b) Flags for ENABLE_EPOLL and DISABLE_EPOLL work as expected.
2401
2402
2403=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2404repmgr100
2405	Basic test of repmgr's multi-process master support.
2406
2407	Set up a simple 2-site group, create data and replicate it.
2408	Add a second process at the master and have it write some
2409	updates.  It does not explicitly start repmgr (nor do any
2410	replication configuration, for that matter).  Its first
2411	update triggers initiation of connections, and so it doesn't
2412	get to the client without a log request.  But later updates
2413	should go directly.
2414
2415=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2416repmgr101
2417	Repmgr support for multi-process master.
2418
2419	Start two processes at the master.
2420	Add a client site (not previously known to the master
2421	processes), and make sure
2422	both master processes connect to it.
2423
2424=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2425repmgr102
2426	Ensuring exactly one listener process.
2427
2428	Start a repmgr process with a listener.
2429	Start a second process, and see that it does not become the listener.
2430	Shut down the first process (gracefully).  Now a second process should
2431	become listener.
2432	Kill the listener process abruptly.  Run recovery and start a clean
2433	listener.
2434
2435=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2436repmgr105
2437	Repmgr recognition of peer setting, across processes.
2438
2439	Set up a master and two clients, synchronized with some data.
2440	Add a new client, configured to use c2c sync with one of the original
2441	clients.  Check stats to make sure the correct c2c peer was used.
2442
2443=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2444repmgr106
2445	Simple smoke test for repmgr elections with multi-process envs.
2446
2447=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2448repmgr107
2449	Repmgr combined with replication-unaware process at master.
2450
2451=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2452repmgr108
2453	Subordinate connections and processes should not trigger elections.
2454
2455=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2456repmgr109
2457	Test repmgr's internal juggling of peer EID's.
2458
2459	Set up master and 2 clients, A and B.
2460	Add a third client (C), with two processes.
2461	The first process will be configured to know about A.
2462	The second process will know about B, and set that as peer,
2463	but when it joins the env site B will have to be shuffled
2464	into a later position in the list, because A is already first.
2465
2466=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2467repmgr110
2468	Multi-process repmgr start-up policies.
2469
2470=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2471repmgr111
2472	Multi-process repmgr with env open before set local site.
2473
2474=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2475repmgr112
2476	Multi-process repmgr ack policies.
2477
2478	Subordinate processes sending live log records must observe the
2479	ack policy set by the main process.  Also, a policy change made by a
2480	subordinate process should be observed by all processes.
2481
2482=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2483repmgr113
2484	Multi-process repmgr automatic listener takeover.
2485
2486	One of the subordinate processes automatically becomes listener if the
2487	original listener leaves.  An election is delayed long enough for a
2488	takeover to occur if the takeover happens on the master.
2489
2490=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2491repmgr150
2492	Test repmgr with DB_REGISTER, DB_RECOVER, and FAILCHK
2493
2494	1. RepMgr can be started with -register and -recovery flags.
2495
2496	2. A rep unaware process can join the master environment
2497	with -register and -recovery without running recovery.
2498
2499	3. RepMgr can be started with -register and -recovery flags,
2500	even if the environment is corrupted.
2501
2502	4. RepMgr can be started with -failchk and -isalive.
2503
2504	5. A rep unaware process can join the master environment
2505	with -failchk and -isalive.
2506
2507=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2508rsrc001
2509	Recno backing file test.  Try different patterns of adding
2510	records and making sure that the corresponding file matches.
2511
2512=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2513rsrc002
2514	Recno backing file test #2: test of set_re_delim.  Specify a backing
2515	file with colon-delimited records, and make sure they are correctly
2516	interpreted.
2517
2518=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2519rsrc003
2520	Recno backing file test.  Try different patterns of adding
2521	records and making sure that the corresponding file matches.
2522
2523=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2524rsrc004
2525	Recno backing file test for EOF-terminated records.
2526
2527=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2528scr###
2529	The scr### directories are shell scripts that test a variety of
2530	things, including things about the distribution itself.  These
2531	tests won't run on most systems, so don't even try to run them.
2532
2533=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2534sdb001	Tests mixing db and subdb operations
2535	Tests mixing db and subdb operations
2536	Create a db, add data, try to create a subdb.
2537	Test naming db and subdb with a leading - for correct parsing
2538	Existence check -- test use of -excl with subdbs
2539
2540	Test non-subdb and subdb operations
2541	Test naming (filenames begin with -)
2542	Test existence (cannot create subdb of same name with -excl)
2543
2544=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2545sdb002
2546	Tests basic subdb functionality
2547	Small keys, small data
2548	Put/get per key
2549	Dump file
2550	Close, reopen
2551	Dump file
2552
2553	Use the first 10,000 entries from the dictionary.
2554	Insert each with self as key and data; retrieve each.
2555	After all are entered, retrieve all; compare output to original.
2556	Close file, reopen, do retrieve and re-verify.
2557	Then repeat using an environment.
2558
2559=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2560sdb003
2561	Tests many subdbs
2562	Creates many subdbs and puts a small amount of
2563	data in each (many defaults to 1000)
2564
2565	Use the first 1000 entries from the dictionary as subdbnames.
2566	Insert each with entry as name of subdatabase and a partial list
2567	as key/data.  After all are entered, retrieve all; compare output
2568	to original.  Close file, reopen, do retrieve and re-verify.
2569	Run the test with blob enabled and disabled.
2570
2571=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2572sdb004
2573	Tests large subdb names
2574	subdb name = filecontents,
2575	key = filename, data = filecontents
2576	Put/get per key
2577	Dump file
2578	Dump subdbs, verify data and subdb name match
2579
2580	Create 1 db with many large subdbs.  Use the contents as subdb names.
2581	Take the source files and dbtest executable and enter their names as
2582	the key with their contents as data.  After all are entered, retrieve
2583	all; compare output to original. Close file, reopen, do retrieve and
2584	re-verify.
2585
2586=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2587sdb005
2588	Tests cursor operations in subdbs
2589	Put/get per key
2590	Verify cursor operations work within subdb
2591	Verify cursor operations do not work across subdbs
2592
2593
2594=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2595sdb006
2596	Tests intra-subdb join
2597
2598	We'll test 2-way, 3-way, and 4-way joins and figure that if those work,
2599	everything else does as well.  We'll create test databases called
2600	sub1.db, sub2.db, sub3.db, and sub4.db.  The number on the database
2601	describes the duplication -- duplicates are of the form 0, N, 2N, 3N,
2602	...  where N is the number of the database.  Primary.db is the primary
2603	database, and sub0.db is the database that has no matching duplicates.
2604	All of these are within a single database.
2605
2606=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2607sdb007
2608	Tests page size difference errors between subdbs.
2609	If the physical file already exists, we ignore pagesize specifications
2610	on any subsequent -creates.
2611
2612	1.  Create/open a subdb with system default page size.
2613	Create/open a second subdb specifying a different page size.
2614	The create should succeed, but the pagesize of the new db
2615	will be the system default page size.
2616	2.  Create/open a subdb with a specified, non-default page size.
2617	Create/open a second subdb specifying a different page size.
2618	The create should succeed, but the pagesize of the new db
2619	will be the specified page size from the first create.
2620
2621=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2622sdb008
2623	Tests explicit setting of lorders for subdatabases -- the
2624	lorder should be ignored.
2625
2626=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2627sdb009
2628	Test DB->rename() method for subdbs
2629
2630=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2631sdb010
2632	Test DB->remove() method and DB->truncate() for subdbs
2633
2634=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2635sdb011
2636	Test deleting Subdbs with overflow pages
2637	Create 1 db with many large subdbs.
2638	Test subdatabases with overflow pages.
2639
2640=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2641sdb012
2642	Test subdbs with locking and transactions
2643	Tests creating and removing subdbs while handles
2644	are open works correctly, and in the face of txns.
2645
2646=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2647sdb013
2648	Tests in-memory subdatabases.
2649	Create an in-memory subdb.  Test for persistence after
2650	overflowing the cache.  Test for conflicts when we have
2651	two in-memory files.
2652
2653=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2654sdb014
2655	Tests mixing in-memory named and in-memory unnamed dbs.
2656	Create a regular in-memory db, add data.
2657	Create a named in-memory db.
2658	Try to create the same named in-memory db again (should fail).
2659	Try to create a different named in-memory db (should succeed).
2660
2661
2662=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2663sdb015
2664	Tests basic in-memory named database functionality
2665	Small keys, small data
2666	Put/get per key
2667
2668	Use the first 10,000 entries from the dictionary.
2669	Insert each with self as key and data; retrieve each.
2670	After all are entered, retrieve all; compare output to original.
2671	Close file, reopen, do retrieve and re-verify.
2672	Then repeat using an environment.
2673
2674=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2675sdb016
2676	Creates many in-memory named dbs and puts a small amount of
2677	data in each (many defaults to 100)
2678
2679	Use the first 100 entries from the dictionary as names.
2680	Insert each with entry as name of subdatabase and a partial list
2681	as key/data.  After all are entered, retrieve all; compare output
2682	to original.
2683
2684=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2685sdb017
2686	Test DB->rename() for in-memory named databases.
2687
2688=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2689sdb018
2690	Tests join of in-memory named databases.
2691
2692	We'll test 2-way, 3-way, and 4-way joins and figure that if those work,
2693	everything else does as well.  We'll create test databases called
2694	sub1.db, sub2.db, sub3.db, and sub4.db.  The number on the database
2695	describes the duplication -- duplicates are of the form 0, N, 2N, 3N,
2696	...  where N is the number of the database.  Primary.db is the primary
2697	database, and sub0.db is the database that has no matching duplicates.
2698	All of these are within a single database.
2699
2700=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2701sdb019
2702	Tests in-memory subdatabases.
2703	Create an in-memory subdb.  Test for persistence after
2704	overflowing the cache.  Test for conflicts when we have
2705	two in-memory files.
2706
2707=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2708sdb020
2709	Tests in-memory subdatabases.
2710	Create an in-memory subdb with one page size.  Close, and
2711	open with a different page size: should succeed, but the underlying
2712	page size is not changed.
2713
2714=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2715sdbtest001
2716	Tests multiple access methods in one subdb
2717	Open several subdbs, each with a different access method
2718	Small keys, small data
2719	Put/get per key per subdb
2720	Dump file, verify per subdb
2721	Close, reopen per subdb
2722	Dump file, verify per subdb
2723
2724	Make several subdb's of different access methods all in one DB.
2725	Rotate methods and repeat [#762].
2726	Use the first 10,000 entries from the dictionary.
2727	Insert each with self as key and data; retrieve each.
2728	After all are entered, retrieve all; compare output to original.
2729	Close file, reopen, do retrieve and re-verify.
2730
2731=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2732sdbtest002
2733	Tests multiple access methods in one subdb access by multiple
2734	processes.
2735	Open several subdbs, each with a different access method
2736	Small keys, small data
2737	Put/get per key per subdb
2738	Fork off several child procs to each delete selected
2739	data from their subdb and then exit
2740	Dump file, verify contents of each subdb is correct
2741	Close, reopen per subdb
2742	Dump file, verify per subdb
2743
2744	Make several subdb's of different access methods all in one DB.
2745	Fork of some child procs to each manipulate one subdb and when
2746	they are finished, verify the contents of the databases.
2747	Use the first 10,000 entries from the dictionary.
2748	Insert each with self as key and data; retrieve each.
2749	After all are entered, retrieve all; compare output to original.
2750	Close file, reopen, do retrieve and re-verify.
2751
2752=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2753sec001
2754	Test of security interface
2755
2756=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2757sec002
2758	Test of security interface and catching errors in the
2759	face of attackers overwriting parts of existing files.
2760
2761=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2762si001
2763	Secondary index put/delete with lorder test
2764
2765	Put data in primary db and check that pget on secondary
2766	index finds the right entries.  Alter the primary in the
2767	following ways, checking for correct data each time:
2768	Overwrite data in primary database.
2769	Delete half of entries through primary.
2770	Delete half of remaining entries through secondary.
2771	Append data (for record-based primaries only).
2772
2773=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2774si002
2775	Basic cursor-based secondary index put/delete test
2776
2777	Cursor put data in primary db and check that pget
2778	on secondary index finds the right entries.
2779	Open and use a second cursor to exercise the cursor
2780	comparison API on secondaries.
2781	Overwrite while walking primary, check pget again.
2782	Overwrite while walking secondary (use c_pget), check
2783	pget again.
2784	Cursor delete half of entries through primary, check.
2785	Cursor delete half of remainder through secondary, check.
2786
2787=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2788si003
2789	si001 with secondaries created and closed mid-test
2790	Basic secondary index put/delete test with secondaries
2791	created mid-test.
2792
2793=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2794si004
2795	si002 with secondaries created and closed mid-test
2796	Basic cursor-based secondary index put/delete test, with
2797	secondaries created mid-test.
2798
2799=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2800si005
2801	Basic secondary index put/delete test with transactions
2802
2803=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2804si006
2805
2806	Test -immutable_key interface.
2807
2808	DB_IMMUTABLE_KEY is an optimization to be used when a
2809	secondary key will not be changed.  It does not prevent
2810	a deliberate change to the secondary key, it just does not
2811	propagate that change when it is made to the primary.
2812	This test verifies that a change to the primary is propagated
2813	to the secondary or not as specified by -immutable_key.
2814
2815=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2816si007
2817	Secondary index put/delete with lorder test
2818
2819	This test is the same as si001 with the exception
2820	that we create and populate the primary and THEN
2821	create the secondaries and associate them with -create.
2822
2823=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2824si008
2825	Secondary index put/delete with lorder test
2826
2827	This test is the same as si001 except that we
2828	create the secondaries with different byte orders:
2829	one native, one swapped.
2830
2831=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2832si009
2833	Secondary index put/delete with lorder test
2834
2835	This test is the same as si001 except we use
2836	partial put to update entries.
2837
2838=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2839sijointest: Secondary index and join test.
2840	This used to be si005.tcl.
2841
2842=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2843slice001
2844	Test of the various environment set_*_dir settings in DB_CONFIG
2845	for sliced environments.  The following configs are tested for both
2846	relative and absolute paths.
2847	1. home
2848	2. set_create_dir
2849	3. add_data_dir
2850	4. set_metadata_dir
2851	5. set_blob_dir
2852	6. set_tmp_dir
2853	7. set_region_dir
2854	8. set_lg_dir
2855
2856=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2857slice002
2858	Test transactional operations on sliced databases.
2859	Test that transactions behave as expected when:
2860	1. Auto commit is used.
2861	2. Transactions cover only a single operation each.
2862	3. Transactions cover multiple operations on the same key.
2863	4. Transactions cover multiple operations on different keys.
2864	5. Transactions cover multiple operations on different slices.
2865	Do this when both committing and aborting the transaction.
2866
2867=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2868slice003
2869	Test associate and secondary index handling in a sliced environment.
2870
2871=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2872test001
2873	Small keys/data
2874	Put/get per key
2875	Dump file
2876	Close, reopen
2877	Dump file
2878
2879	Use the first 10,000 entries from the dictionary.
2880	Insert each with self as key and data; retrieve each.
2881	After all are entered, retrieve all; compare output to original.
2882	Close file, reopen, do retrieve and re-verify.
2883
2884=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2885test002
2886	Small keys/medium data
2887	Put/get per key
2888	Dump file
2889	Close, reopen
2890	Dump file
2891
2892	Use the first 10,000 entries from the dictionary.
2893	Insert each with self as key and a fixed, medium length data string;
2894	retrieve each. After all are entered, retrieve all; compare output
2895	to original. Close file, reopen, do retrieve and re-verify.
2896
2897=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2898test003
2899	Small keys/large data
2900	Put/get per key
2901	Dump file
2902	Close, reopen
2903	Dump file
2904
2905	Take the source files and dbtest executable and enter their names
2906	as the key with their contents as data.  After all are entered,
2907	retrieve all; compare output to original. Close file, reopen, do
2908	retrieve and re-verify.
2909
2910=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2911test004
2912	Small keys/medium data
2913	Put/get per key
2914	Sequential (cursor) get/delete
2915
2916	Check that cursor operations work.  Create a database.
2917	Read through the database sequentially using cursors and
2918	delete each element.
2919
2920=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2921test005
2922	Small keys/medium data
2923	Put/get per key
2924	Close, reopen
2925	Sequential (cursor) get/delete
2926
2927	Check that cursor operations work.  Create a database; close
2928	it and reopen it.  Then read through the database sequentially
2929	using cursors and delete each element.
2930
2931=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2932test006
2933	Small keys/medium data
2934	Put/get per key
2935	Keyed delete and verify
2936
2937	Keyed delete test.
2938	Create database.
2939	Go through database, deleting all entries by key.
2940	Then do the same for unsorted and sorted dups.
2941
2942=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2943test007
2944	Small keys/medium data
2945	Put/get per key
2946	Close, reopen
2947	Keyed delete
2948
2949	Check that delete operations work.  Create a database; close
2950	database and reopen it.  Then issues delete by key for each
2951	entry.  (Test006 plus reopen)
2952
2953=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2954test008
2955	Small keys/large data with overflows or BLOB.
2956	Put/get per key
2957	Loop through keys by steps (which change)
2958	... delete each key at step
2959	... add each key back
2960	... change step
2961	Confirm that overflow pages are getting reused or blobs
2962	are created.
2963
2964	Take the source files and dbtest executable and enter their names as
2965	the key with their contents as data.  After all are entered, begin
2966	looping through the entries; deleting some pairs and then readding them.
2967
2968=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2969test009
2970	Small keys/large data
2971	Same as test008; close and reopen database
2972
2973	Check that we reuse overflow pages.  Create database with lots of
2974	big key/data pairs.  Go through and delete and add keys back
2975	randomly.  Then close the DB and make sure that we have everything
2976	we think we should.
2977
2978=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2979test010
2980	Duplicate test
2981	Small key/data pairs.
2982
2983	Use the first 10,000 entries from the dictionary.
2984	Insert each with self as key and data; add duplicate records for each.
2985	After all are entered, retrieve all; verify output.
2986	Close file, reopen, do retrieve and re-verify.
2987	This does not work for recno
2988
2989=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2990test011
2991	Duplicate test
2992	Small key/data pairs.
2993	Test DB_KEYFIRST, DB_KEYLAST, DB_BEFORE and DB_AFTER.
2994	To test off-page duplicates, run with small pagesize.
2995
2996	Use the first 10,000 entries from the dictionary.
2997	Insert each with self as key and data; add duplicate records for each.
2998	Then do some key_first/key_last add_before, add_after operations.
2999	This does not work for recno
3000
3001	To test if dups work when they fall off the main page, run this with
3002	a very tiny page size.
3003
3004=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3005test012
3006	Large keys/small data
3007	Same as test003 except use big keys (source files and
3008	executables) and small data (the file/executable names).
3009
3010	Take the source files and dbtest executable and enter their contents
3011	as the key with their names as data.  After all are entered, retrieve
3012	all; compare output to original. Close file, reopen, do retrieve and
3013	re-verify.
3014
3015=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3016test013
3017	Partial put test
3018	Overwrite entire records using partial puts.
3019	Make sure that NOOVERWRITE flag works.
3020
3021	1. Insert 10000 keys and retrieve them (equal key/data pairs).
3022	2. Attempt to overwrite keys with NO_OVERWRITE set (expect error).
3023	3. Actually overwrite each one with its datum reversed.
3024
3025	No partial testing here.
3026
3027=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3028test014
3029	Exercise partial puts on short data
3030	Run 5 combinations of numbers of characters to replace,
3031	and number of times to increase the size by.
3032
3033	Partial put test, small data, replacing with same size.  The data set
3034	consists of the first nentries of the dictionary.  We will insert them
3035	(and retrieve them) as we do in test 1 (equal key/data pairs).  Then
3036	we'll try to perform partial puts of some characters at the beginning,
3037	some at the end, and some at the middle.
3038
3039	Run the test with blob enabled and disabled.
3040
3041=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3042test015
3043	Partial put test
3044	Partial put test where the key does not initially exist.
3045
3046=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3047test016
3048	Partial put test
3049	Partial put where the datum gets shorter as a result of the put.
3050
3051	Partial put test where partial puts make the record smaller.
3052	Use the first 10,000 entries from the dictionary.
3053	Insert each with self as key and a fixed, medium length data string;
3054	retrieve each. After all are entered, go back and do partial puts,
3055	replacing a random-length string with the key value.
3056	Then verify.
3057	Run the test with blob enabled and disabled.
3058
3059=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3060test017
3061	Basic offpage duplicate test.
3062
3063	Run duplicates with small page size so that we test off page duplicates.
3064	Then after we have an off-page database, test with overflow pages too.
3065
3066=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3067test018
3068	Offpage duplicate test
3069	Key_{first,last,before,after} offpage duplicates.
3070	Run duplicates with small page size so that we test off page
3071	duplicates.
3072
3073=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3074test019
3075	Partial get test.
3076
3077=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3078test020
3079	In-Memory database tests.
3080
3081=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3082test021
3083	Btree range tests.
3084
3085	Use the first 10,000 entries from the dictionary.
3086	Insert each with self, reversed as key and self as data.
3087	After all are entered, retrieve each using a cursor SET_RANGE, and
3088	getting about 20 keys sequentially after it (in some cases we'll
3089	run out towards the end of the file).
3090
3091=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3092test022
3093	Test of DB->getbyteswapped().
3094
3095=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3096test023
3097	Duplicate test
3098	Exercise deletes and cursor operations within a duplicate set.
3099	Add a key with duplicates (first time on-page, second time off-page)
3100	Number the dups.
3101	Delete dups and make sure that CURRENT/NEXT/PREV work correctly.
3102
3103=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3104test024
3105	Record number retrieval test.
3106	Test the Btree and Record number get-by-number functionality.
3107
3108=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3109test025
3110	DB_APPEND flag test.
3111
3112=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3113test026
3114	Small keys/medium data w/duplicates
3115	Put/get per key.
3116	Loop through keys -- delete each key
3117	... test that cursors delete duplicates correctly
3118
3119	Keyed delete test through cursor.  If ndups is small; this will
3120	test on-page dups; if it's large, it will test off-page dups.
3121
3122=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3123test027
3124	Off-page duplicate test
3125	Test026 with parameters to force off-page duplicates.
3126
3127	Check that delete operations work.  Create a database; close
3128	database and reopen it.  Then issues delete by key for each
3129	entry.
3130
3131=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3132test028
3133	Cursor delete test
3134	Test put operations after deleting through a cursor.
3135
3136=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3137test029
3138	Test the Btree and Record number renumbering.
3139
3140=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3141test030
3142	Test DB_NEXT_DUP Functionality.
3143
3144=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3145test031
3146	Duplicate sorting functionality
3147	Make sure DB_NODUPDATA works.
3148
3149	Use the first 10,000 entries from the dictionary.
3150	Insert each with self as key and "ndups" duplicates
3151	For the data field, prepend random five-char strings (see test032)
3152	that we force the duplicate sorting code to do something.
3153	Along the way, test that we cannot insert duplicate duplicates
3154	using DB_NODUPDATA.
3155
3156	By setting ndups large, we can make this an off-page test
3157	After all are entered, retrieve all; verify output.
3158	Close file, reopen, do retrieve and re-verify.
3159	This does not work for recno
3160
3161=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3162test032
3163	DB_GET_BOTH, DB_GET_BOTH_RANGE
3164
3165	Use the first 10,000 entries from the dictionary.  Insert each with
3166	self as key and "ndups" duplicates.   For the data field, prepend the
3167	letters of the alphabet in a random order so we force the duplicate
3168	sorting code to do something.  By setting ndups large, we can make
3169	this an off-page test. By setting overflow to be 1, we can make
3170	this an overflow test.
3171
3172	Test the DB_GET_BOTH functionality by retrieving each dup in the file
3173	explicitly.  Test the DB_GET_BOTH_RANGE functionality by retrieving
3174	the unique key prefix (cursor only).  Finally test the failure case.
3175
3176=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3177test033
3178	DB_GET_BOTH without comparison function
3179
3180	Use the first 10,000 entries from the dictionary.  Insert each with
3181	self as key and data; add duplicate records for each.  After all are
3182	entered, retrieve all and verify output using DB_GET_BOTH (on DB and
3183	DBC handles) and DB_GET_BOTH_RANGE (on a DBC handle) on existent and
3184	nonexistent keys.
3185
3186	XXX
3187	This does not work for rbtree.
3188
3189=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3190test034
3191	test032 with off-page or overflow case with non-duplicates
3192	and duplicates.
3193
3194	DB_GET_BOTH, DB_GET_BOTH_RANGE functionality with off-page
3195	or overflow case within non-duplicates and duplicates.
3196
3197=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3198test035
3199	Test033 with off-page non-duplicates and duplicates
3200	DB_GET_BOTH functionality with off-page non-duplicates
3201	and duplicates.
3202
3203=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3204test036
3205	Test KEYFIRST and KEYLAST when the key doesn't exist
3206	Put nentries key/data pairs (from the dictionary) using a cursor
3207	and KEYFIRST and KEYLAST (this tests the case where use use cursor
3208	put for non-existent keys).
3209
3210=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3211test037
3212	Test DB_RMW
3213
3214=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3215test038
3216	DB_GET_BOTH, DB_GET_BOTH_RANGE on deleted items
3217
3218	Use the first 10,000 entries from the dictionary.  Insert each with
3219	self as key and "ndups" duplicates.  For the data field, prepend the
3220	letters of the alphabet in a random order so we force the duplicate
3221	sorting code to do something.  By setting ndups large, we can make
3222	this an off-page test
3223
3224	Test the DB_GET_BOTH and DB_GET_BOTH_RANGE functionality by retrieving
3225	each dup in the file explicitly.  Then remove each duplicate and try
3226	the retrieval again.
3227
3228=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3229test039
3230	DB_GET_BOTH/DB_GET_BOTH_RANGE on deleted items without comparison
3231	function.
3232
3233	Use the first 10,000 entries from the dictionary.  Insert each with
3234	self as key and "ndups" duplicates.  For the data field, prepend the
3235	letters of the alphabet in a random order so we force the duplicate
3236	sorting code to do something.  By setting ndups large, we can make
3237	this an off-page test.
3238
3239	Test the DB_GET_BOTH and DB_GET_BOTH_RANGE functionality by retrieving
3240	each dup in the file explicitly.  Then remove each duplicate and try
3241	the retrieval again.
3242
3243=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3244test040
3245	Test038 with off-page duplicates
3246	DB_GET_BOTH functionality with off-page duplicates.
3247
3248=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3249test041
3250	Test039 with off-page duplicates
3251	DB_GET_BOTH functionality with off-page duplicates.
3252
3253=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3254test042
3255	Concurrent Data Store test (CDB)
3256
3257	Multiprocess DB test; verify that locking is working for the
3258	concurrent access method product.
3259
3260	Use the first "nentries" words from the dictionary.  Insert each with
3261	self as key and a fixed, medium length data string.  Then fire off
3262	multiple processes that bang on the database.  Each one should try to
3263	read and write random keys.  When they rewrite, they'll append their
3264	pid to the data string (sometimes doing a rewrite sometimes doing a
3265	partial put).  Some will use cursors to traverse through a few keys
3266	before finding one to write.
3267
3268	Run the test with blob enabled and disabled.
3269
3270=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3271test043
3272	Recno renumbering and implicit creation test
3273	Test the Record number implicit creation and renumbering options.
3274
3275=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3276test044
3277	Small system integration tests
3278	Test proper functioning of the checkpoint daemon,
3279	recovery, transactions, etc.
3280
3281	System integration DB test: verify that locking, recovery, checkpoint,
3282	and all the other utilities basically work.
3283
3284	The test consists of $nprocs processes operating on $nfiles files.  A
3285	transaction consists of adding the same key/data pair to some random
3286	number of these files.  We generate a bimodal distribution in key size
3287	with 70% of the keys being small (1-10 characters) and the remaining
3288	30% of the keys being large (uniform distribution about mean $key_avg).
3289	If we generate a key, we first check to make sure that the key is not
3290	already in the dataset.  If it is, we do a lookup.
3291
3292=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3293test045
3294	Small random tester
3295	Runs a number of random add/delete/retrieve operations.
3296	Tests both successful conditions and error conditions.
3297
3298	Run the random db tester on the specified access method.
3299
3300=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3301test046
3302	Overwrite test of small/big key/data with cursor checks.
3303
3304=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3305test047
3306	DBcursor->c_get get test with SET_RANGE option.
3307
3308=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3309test048
3310	Cursor stability across Btree splits.
3311
3312=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3313test049
3314	Cursor operations on uninitialized cursors.
3315
3316=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3317test050
3318	Overwrite test of small/big key/data with cursor checks for Recno.
3319
3320=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3321test051
3322	Fixed-length record Recno test.
3323	0. Test various flags (legal and illegal) to open
3324	1. Test partial puts where dlen != size (should fail)
3325	2. Partial puts for existent record -- replaces at beg, mid, and
3326	end of record, as well as full replace
3327
3328=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3329test052
3330	Renumbering record Recno test.
3331
3332=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3333test053
3334	Test of the DB_REVSPLITOFF flag in the Btree and Btree-w-recnum
3335	methods.
3336
3337=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3338test054
3339	Cursor maintenance during key/data deletion.
3340
3341	This test checks for cursor maintenance in the presence of deletes.
3342	There are N different scenarios to tests:
3343	1. No duplicates.  Cursor A deletes a key, do a  GET for the key.
3344	2. No duplicates.  Cursor is positioned right before key K, Delete K,
3345	do a next on the cursor.
3346	3. No duplicates.  Cursor is positioned on key K, do a regular delete
3347	of K, do a current get on K.
3348	4. Repeat 3 but do a next instead of current.
3349	5. Duplicates. Cursor A is on the first item of a duplicate set, A
3350	does a delete.  Then we do a non-cursor get.
3351	6. Duplicates.  Cursor A is in a duplicate set and deletes the item.
3352	do a delete of the entire Key. Test cursor current.
3353	7. Continue last test and try cursor next.
3354	8. Duplicates.  Cursor A is in a duplicate set and deletes the item.
3355	Cursor B is in the same duplicate set and deletes a different item.
3356	Verify that the cursor is in the right place.
3357	9. Cursors A and B are in the place in the same duplicate set.  A
3358	deletes its item.  Do current on B.
3359	10. Continue 8 and do a next on B.
3360
3361=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3362test055
3363	Basic cursor operations.
3364	This test checks basic cursor operations.
3365	There are N different scenarios to tests:
3366	1. (no dups) Set cursor, retrieve current.
3367	2. (no dups) Set cursor, retrieve next.
3368	3. (no dups) Set cursor, retrieve prev.
3369
3370=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3371test056
3372	Cursor maintenance during deletes.
3373	Check if deleting a key when a cursor is on a duplicate of that
3374	key works.
3375
3376=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3377test057
3378	Cursor maintenance during key deletes.
3379	1.  Delete a key with a cursor.  Add the key back with a regular
3380	put.  Make sure the cursor can't get the new item.
3381	2.  Put two cursors on one item.  Delete through one cursor,
3382	check that the other sees the change.
3383	3.  Same as 2, with the two cursors on a duplicate.
3384
3385=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3386test058
3387	Verify that deleting and reading duplicates results in correct ordering.
3388
3389=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3390test059
3391	Cursor ops work with a partial length of 0.
3392	Make sure that we handle retrieves of zero-length data items correctly.
3393	The following ops, should allow a partial data retrieve of 0-length.
3394	db_get
3395	db_cget FIRST, NEXT, LAST, PREV, CURRENT, SET, SET_RANGE
3396	Run the test with blob enabled and disabled.
3397
3398=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3399test060
3400	Test of the DB_EXCL flag to DB->open().
3401	1) Attempt to open and create a nonexistent database; verify success.
3402	2) Attempt to reopen it;  verify failure.
3403
3404=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3405test061
3406	Test of txn abort and commit for in-memory databases.
3407	a) Put + abort: verify absence of data
3408	b) Put + commit: verify presence of data
3409	c) Overwrite + abort: verify that data is unchanged
3410	d) Overwrite + commit: verify that data has changed
3411	e) Delete + abort: verify that data is still present
3412	f) Delete + commit: verify that data has been deleted
3413
3414=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3415test062
3416	Test of partial puts (using DB_CURRENT) onto duplicate pages.
3417	Insert the first 200 words into the dictionary 200 times each with
3418	self as key and <random letter>:self as data.  Use partial puts to
3419	append self again to data;  verify correctness.
3420
3421=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3422test063
3423	Test of the DB_RDONLY flag to DB->open
3424	Attempt to both DB->put and DBC->c_put into a database
3425	that has been opened DB_RDONLY, and check for failure.
3426
3427=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3428test064
3429	Test of DB->get_type
3430	Create a database of type specified by method.
3431	Make sure DB->get_type returns the right thing with both a normal
3432	and DB_UNKNOWN open.
3433
3434=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3435test065
3436	Test of DB->stat, both -DB_FAST_STAT and row
3437	counts with DB->stat -txn.
3438
3439=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3440test066
3441	Test of cursor overwrites of DB_CURRENT w/ duplicates.
3442
3443	Make sure a cursor put to DB_CURRENT acts as an overwrite in a
3444	database with duplicates.
3445
3446=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3447test067
3448	Test of DB_CURRENT partial puts onto almost empty duplicate
3449	pages, with and without DB_DUP_SORT.
3450
3451	Test of DB_CURRENT partial puts on almost-empty duplicate pages.
3452	This test was written to address the following issue, #2 in the
3453	list of issues relating to bug #0820:
3454
3455	2. DBcursor->put, DB_CURRENT flag, off-page duplicates, hash and btree:
3456	In Btree, the DB_CURRENT overwrite of off-page duplicate records
3457	first deletes the record and then puts the new one -- this could
3458	be a problem if the removal of the record causes a reverse split.
3459	Suggested solution is to acquire a cursor to lock down the current
3460	record, put a new record after that record, and then delete using
3461	the held cursor.
3462
3463	It also tests the following, #5 in the same list of issues:
3464	5. DBcursor->put, DB_AFTER/DB_BEFORE/DB_CURRENT flags, DB_DBT_PARTIAL
3465	set, duplicate comparison routine specified.
3466	The partial change does not change how data items sort, but the
3467	record to be put isn't built yet, and that record supplied is the
3468	one that's checked for ordering compatibility.
3469
3470=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3471test068
3472	Test of DB_BEFORE and DB_AFTER with partial puts.
3473	Make sure DB_BEFORE and DB_AFTER work properly with partial puts, and
3474	check that they return EINVAL if DB_DUPSORT is set or if DB_DUP is not.
3475
3476=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3477test069
3478	Test of DB_CURRENT partial puts without duplicates-- test067 w/
3479	small ndups to ensure that partial puts to DB_CURRENT work
3480	correctly in the absence of duplicate pages.
3481
3482=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3483test070
3484	Test of DB_CONSUME (Four consumers, 1000 items.)
3485
3486	Fork off six processes, four consumers and two producers.
3487	The producers will each put 20000 records into a queue;
3488	the consumers will each get 10000.
3489	Then, verify that no record was lost or retrieved twice.
3490
3491=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3492test071
3493	Test of DB_CONSUME (One consumer, 10000 items.)
3494	This is DB Test 70, with one consumer, one producers, and 10000 items.
3495
3496=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3497test072
3498	Test of cursor stability when duplicates are moved off-page.
3499
3500=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3501test073
3502	Test of cursor stability on duplicate pages.
3503
3504	Does the following:
3505	a. Initialize things by DB->putting ndups dups and
3506	setting a reference cursor to point to each.
3507	b. c_put ndups dups (and correspondingly expanding
3508	the set of reference cursors) after the last one, making sure
3509	after each step that all the reference cursors still point to
3510	the right item.
3511	c. Ditto, but before the first one.
3512	d. Ditto, but after each one in sequence first to last.
3513	e. Ditto, but after each one in sequence from last to first.
3514	occur relative to the new datum)
3515	f. Ditto for the two sequence tests, only doing a
3516	DBC->c_put(DB_CURRENT) of a larger datum instead of adding a
3517	new one.
3518
3519=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3520test074
3521	Test of DB_NEXT_NODUP.
3522
3523=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3524test076
3525	Test creation of many small databases in a single environment. [#1528].
3526
3527=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3528test077
3529	Test of DB_GET_RECNO [#1206].
3530
3531=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3532test078
3533	Test of DBC->c_count(). [#303]
3534
3535=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3536test079
3537	Test of deletes in large trees.  (test006 w/ sm. pagesize).
3538
3539	Check that delete operations work in large btrees.  10000 entries
3540	and a pagesize of 512 push this out to a four-level btree, with a
3541	small fraction of the entries going on overflow pages.
3542
3543=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3544test081
3545	Test off-page duplicates and overflow pages together with
3546	very large keys (key/data as file contents).
3547
3548=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3549test082
3550	Test of DB_PREV_NODUP (uses test074).
3551
3552=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3553test083
3554	Test of DB->key_range.
3555
3556=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3557test084
3558	Basic sanity test (test001) with large (64K) pages.
3559
3560=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3561test085
3562	Test of cursor behavior when a cursor is pointing to a deleted
3563	btree key which then has duplicates added. [#2473]
3564
3565=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3566test086
3567	Test of cursor stability across btree splits/rsplits with
3568	subtransaction aborts (a variant of test048).  [#2373]
3569
3570=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3571test087
3572	Test of cursor stability when converting to and modifying
3573	off-page duplicate pages with subtransaction aborts. [#2373]
3574
3575	Does the following:
3576	a. Initialize things by DB->putting ndups dups and
3577	setting a reference cursor to point to each.  Do each put twice,
3578	first aborting, then committing, so we're sure to abort the move
3579	to off-page dups at some point.
3580	b. c_put ndups dups (and correspondingly expanding
3581	the set of reference cursors) after the last one, making sure
3582	after each step that all the reference cursors still point to
3583	the right item.
3584	c. Ditto, but before the first one.
3585	d. Ditto, but after each one in sequence first to last.
3586	e. Ditto, but after each one in sequence from last to first.
3587	occur relative to the new datum)
3588	f. Ditto for the two sequence tests, only doing a
3589	DBC->c_put(DB_CURRENT) of a larger datum instead of adding a
3590	new one.
3591
3592=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3593test088
3594	Test of cursor stability across btree splits with very
3595	deep trees (a variant of test048). [#2514]
3596
3597=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3598test089
3599	Concurrent Data Store test (CDB)
3600
3601	Enhanced CDB testing to test off-page dups, cursor dups and
3602	cursor operations like c_del then c_get.
3603
3604=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3605test090
3606	Test for functionality near the end of the queue using test001.
3607
3608=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3609test091
3610	Test of DB_CONSUME_WAIT.
3611
3612=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3613test092
3614	Test of DB_DIRTY_READ [#3395]
3615
3616	We set up a database with nentries in it.  We then open the
3617	database read-only twice.  One with dirty reads and one without.
3618	We open the database for writing and update some entries in it.
3619	Then read those new entries via db->get (clean and dirty), and
3620	via cursors (clean and dirty).
3621
3622=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3623test093
3624	Test set_bt_compare (btree key comparison function) and
3625	set_h_compare (hash key comparison function).
3626
3627	Open a database with a comparison function specified,
3628	populate, and close, saving a list with that key order as
3629	we do so.  Reopen and read in the keys, saving in another
3630	list; the keys should be in the order specified by the
3631	comparison function.  Sort the original saved list of keys
3632	using the comparison function, and verify that it matches
3633	the keys as read out of the database.
3634
3635=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3636test094
3637	Test using set_dup_compare.
3638
3639	Use the first 10,000 entries from the dictionary.
3640	Insert each with self as key and data; retrieve each.
3641	After all are entered, retrieve all; compare output to original.
3642	Close file, reopen, do retrieve and re-verify.
3643
3644=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3645test095
3646	Bulk get test for methods supporting dups. [#2934]
3647
3648=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3649test096
3650	Db->truncate test.
3651	For all methods:
3652	Test that truncate empties an existing database.
3653	Test that truncate-write in an aborted txn doesn't
3654	change the original contents.
3655	Test that truncate-write in a committed txn does
3656	overwrite the original contents.
3657	For btree and hash, do the same in a database with offpage dups.
3658
3659=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3660test097
3661	Open up a large set of database files simultaneously.
3662	Adjust for local file descriptor resource limits.
3663	Then use the first 1000 entries from the dictionary.
3664	Insert each with self as key and a fixed, medium length data string;
3665	retrieve each. After all are entered, retrieve all; compare output
3666	to original.
3667
3668=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3669test098
3670	Test of DB_GET_RECNO and secondary indices.  Open a primary and
3671	a secondary, and do a normal cursor get followed by a get_recno.
3672	(This is a smoke test for "Bug #1" in [#5811].)
3673
3674=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3675test099
3676
3677	Test of DB->get and DBC->c_get with set_recno and get_recno.
3678
3679	Populate a small btree -recnum database.
3680	After all are entered, retrieve each using -recno with DB->get.
3681	Open a cursor and do the same for DBC->c_get with set_recno.
3682	Verify that set_recno sets the record number position properly.
3683	Verify that get_recno returns the correct record numbers.
3684
3685	Using the same database, open 3 cursors and position one at
3686	the beginning, one in the middle, and one at the end.  Delete
3687	by cursor and check that record renumbering is done properly.
3688
3689=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3690test100
3691	Test for functionality near the end of the queue
3692	using test025 (DB_APPEND).
3693
3694=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3695test101
3696	Test for functionality near the end of the queue
3697	using test070 (DB_CONSUME).
3698
3699=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3700test102
3701	Bulk get test for record-based methods. [#2934]
3702
3703=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3704test103
3705	Test bulk get when record numbers wrap around.
3706
3707	Load database with items starting before and ending after
3708	the record number wrap around point.  Run bulk gets (-multi_key)
3709	with various buffer sizes and verify the contents returned match
3710	the results from a regular cursor get.
3711
3712	Then delete items to create a sparse database and make sure it
3713	still works.  Test both -multi and -multi_key since they behave
3714	differently.
3715
3716=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3717test106
3718
3719
3720
3721
3722=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3723test107
3724	Test of read-committed (degree 2 isolation). [#8689]
3725
3726	We set up a database.  Open a read-committed transactional cursor and
3727	a regular transactional cursor on it. Position each cursor on one page,
3728	and do a put to a different page.
3729
3730	Make sure that:
3731	- the put succeeds if we are using degree 2 isolation.
3732	- the put deadlocks within a regular transaction with
3733	a regular cursor.
3734
3735
3736=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3737test109
3738
3739	Test of full arguments combinations for sequences API.
3740
3741=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3742test110
3743	Partial get test with duplicates.
3744
3745	For hash and btree, create and populate a database
3746	with dups. Randomly selecting offset and length,
3747	retrieve data from each record and make sure we
3748	get what we expect.
3749
3750=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3751test111
3752	Test database compaction.
3753
3754	Populate a database.  Remove a high proportion of entries.
3755	Dump and save contents.  Compact the database, dump again,
3756	and make sure we still have the same contents.
3757	Add back some entries, delete more entries (this time by
3758	cursor), dump, compact, and do the before/after check again.
3759
3760=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3761test112
3762	Test database compaction with a deep tree.
3763
3764	This is a lot like test111, but with a large number of
3765	entries and a small page size to make the tree deep.
3766	To make it simple we use numerical keys all the time.
3767
3768	Dump and save contents.  Compact the database, dump again,
3769	and make sure we still have the same contents.
3770	Add back some entries, delete more entries (this time by
3771	cursor), dump, compact, and do the before/after check again.
3772
3773=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3774test113
3775	Test database compaction with duplicates.
3776
3777	This is essentially test111 with duplicates.
3778	To make it simple we use numerical keys all the time.
3779
3780	Dump and save contents.  Compact the database, dump again,
3781	and make sure we still have the same contents.
3782	Add back some entries, delete more entries (this time by
3783	cursor), dump, compact, and do the before/after check again.
3784
3785=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3786test114
3787	Test database compaction with overflow or duplicate pages.
3788
3789	Populate a database.  Remove a high proportion of entries.
3790	Dump and save contents.  Compact the database, dump again,
3791	and make sure we still have the same contents.
3792	Add back some entries, delete more entries (this time by
3793	cursor), dump, compact, and do the before/after check again.
3794
3795	The input keys are made into overflow keys in the "overflow"
3796	loop for raising coverage purpose.
3797
3798=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3799test115
3800	Test database compaction with user-specified btree sort.
3801
3802	This is essentially test111 with the user-specified sort.
3803	Populate a database.  Remove a high proportion of entries.
3804	Dump and save contents.  Compact the database, dump again,
3805	and make sure we still have the same contents.
3806	Add back some entries, delete more entries (this time by
3807	cursor), dump, compact, and do the before/after check again.
3808
3809=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3810test116
3811	Test of basic functionality of lsn_reset.
3812
3813	Create a database in an env.  Copy it to a new file within
3814	the same env.  Reset the page LSNs.
3815
3816=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3817test117
3818	Test database compaction with requested fill percent or specified
3819	number of pages to free.
3820
3821	Populate a database.  Remove a high proportion of entries.
3822	Dump and save contents. Compact the database with the following
3823	configurations.
3824	1) Compact with requested fill percentages, starting at 10% and
3825	working our way up to 100.
3826	2) Compact the database 4 times with -pages option and each time
3827	try to compact 1/4 of the original database pages.
3828
3829	On each compaction, make sure we still have the same contents.
3830
3831	This is much like test112, with a large number of entries and a
3832	small page size to make the tree deep. It uses -freespace as well.
3833
3834=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3835test119
3836	Test behavior when Berkeley DB returns DB_BUFFER_SMALL on a cursor.
3837
3838	If the user-supplied buffer is not large enough to contain
3839	the returned value, DB returns BUFFER_SMALL.  If it does,
3840	check that the cursor does not move -- if it moves, it will
3841	skip items. [#13815]
3842
3843=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3844test120
3845	Test of multi-version concurrency control.
3846
3847	Test basic functionality: a snapshot transaction started
3848	before a regular transaction's put can't see the modification.
3849	A snapshot transaction started after the put can see it.
3850
3851=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3852test121
3853	Tests of multi-version concurrency control.
3854
3855	MVCC and cursor adjustment.
3856	Set up a -snapshot cursor and position it in the middle
3857	of a database.
3858	Write to the database, both before and after the cursor,
3859	and verify that it stays on the same position.
3860
3861=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3862test122
3863	Tests of multi-version concurrency control.
3864
3865	MVCC and databases that turn multi-version on and off.
3866
3867=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3868test123
3869	Concurrent Data Store cdsgroup smoke test.
3870
3871	Open a CDS env with -cdb_alldb.
3872	Start a "txn" with -cdsgroup.
3873	Create two databases in the env, do a cursor put
3874	in both within the same txn.  This should succeed.
3875
3876=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3877test124
3878
3879	Test db->verify with noorderchk and orderchkonly flags.
3880
3881	Create a db with a non-standard sort order.  Check that
3882	it fails a regular verify and succeeds with -noorderchk.
3883	Do a similar test with a db containing subdbs, one with
3884	the standard order and another with non-standard.
3885
3886=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3887test125
3888	Test cursor comparison API.
3889
3890	The cursor comparison API reports whether two cursors within
3891	the same database are at the same position.  It does not report
3892	any information about relative position.
3893
3894	1. Test two uninitialized cursors (error).
3895	2. Test one uninitialized cursor, one initialized (error).
3896	3. Test two cursors in different databases (error).
3897	4. Put two cursors in the same place, test for match.  Walk
3898	them back and forth a bit, more matching.
3899	5. Two cursors in the same spot.  Delete through one.
3900
3901=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3902test126
3903	Test database bulk update for non-duplicate databases.
3904
3905	Put with -multiple, then with -multiple_key,
3906	and make sure the items in database are what we put.
3907	Later, delete some items with -multiple, then with -multiple_key,
3908	and make sure if the correct items are deleted.
3909
3910=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3911test127
3912	Test database bulk update.
3913
3914	This is essentially test126 with duplicates.
3915	To make it simple we use numerical keys all the time.
3916
3917	Put with -multiple, then with -multiple_key,
3918	and make sure the items in database are what we want.
3919	Later, delete some items with -multiple, then with -multiple_key,
3920	and make sure if the correct items are deleted.
3921
3922=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3923test128
3924	Test database bulk update for non-duplicate databases, with different
3925	configurations.
3926
3927	This is essentially test126 with the following configurations:
3928	* sub database.
3929	* secondary database.
3930	* bulk buffer pre-sort.
3931
3932=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3933test129
3934	Test database bulk update for duplicate database, with different
3935	configurations.
3936
3937	This is essentially test127 with the following configurations:
3938	* sub database.
3939	* bulk buffer pre-sort.
3940
3941=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3942test130
3943	Test moving of subdatabase metadata pages.
3944
3945	Populate num_db sub-database. Open multiple handles on each.
3946	Remove a high proportion of entries.
3947	Dump and save contents.  Compact the database, dump again,
3948	and make sure we still have the same contents.
3949	Make sure handles and cursors still work after compaction.
3950
3951=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3952test131
3953	Test foreign database operations.
3954	Create a foreign db, and put some records into it.
3955	Then associate the foreign db with a secondary db, and
3956	put records into the primary db.
3957	Do operations in the foreign db and check results.
3958	Finally, verify the foreign relation between the foreign db
3959	and secondary db.
3960	Here, we test three different foreign delete constraints:
3961	- DB_FOREIGN_ABORT
3962	- DB_FOREIGN_CASCADE
3963	- DB_FOREIGN_NULLIFY
3964
3965=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3966test132
3967	Test foreign database operations on sub databases and
3968	in-memory databases.
3969
3970=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3971test133
3972	Test Cursor Cleanup.
3973	Open a primary database and a secondary database,
3974	then open 3 cursors on the secondary database, and
3975	point them at the first item.
3976	Do the following operations in loops:
3977	* The 1st cursor will delete the current item.
3978	* The 2nd cursor will also try to delete the current item.
3979	* Move all the 3 cursors to get the next item and check the returns.
3980	Finally, move the 3rd cursor once.
3981
3982=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3983test134
3984	Test cursor cleanup for sub databases.
3985
3986=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3987test135
3988	Test operations on similar overflow records. [#20329]
3989	Open 3 kinds of databases: one is not dup, and one is dup-unsorted
3990	while another one is dup-sorted.
3991	Then we put some similar but not identical overflow records into
3992	these databases.
3993	Also, we try to remove some records from these databases.
3994	We'll verify the records after put and after deletion.
3995	Here is how we define the 'similar overflow' in this test:
3996	* Both the key.size and data.size are not small than DB's pagesize:
3997	The key.size is around 2*pagesize and data.size equals to pagesize.
3998	* The keys are of same length, and they only differ in a small piece.
3999	The location of difference could be in the start/middle/end.
4000	* For dup databases, the dup datas have same rule as the key rule
4001	mentioned above.
4002
4003=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4004test136
4005	Test operations on similar overflow records. [#20329]
4006	Here, we use subdatabases.
4007
4008=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4009test137
4010	Test Automatic Resource Management. [#16188][#20281]
4011	Open an environment, and open a database in it.
4012	Do some operations in the database, including:
4013	insert, dump, delete
4014	Close the environment without closing the database.
4015	Re-open the database and verify the records are the ones we expected.
4016
4017=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4018test138
4019	Test Automatic Resource Management. [#16188][#20281]
4020	Here, we test the following cases:
4021	Non-encrypt for cds
4022	Non-encrypt for tds
4023	Encrypt for ds
4024	Encrypt for cds
4025	Encrypt for tds
4026
4027=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4028test139
4029
4030	Verify an open database.
4031	Create and populate a database, leave open, and run
4032	db->verify.
4033	Delete half the data, verify, compact, verify again.
4034
4035=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4036test140
4037	Test expansion and contraction of hash chains with
4038	deletion, compaction, and recovery.
4039
4040	On each cycle, populate a database to create reasonably
4041	long hash chains, say 8 - 10 entries.  Delete some
4042	entries, check for consistency, compact, and check
4043	for consistency again.  We both commit and abort the
4044	compact, and in the case of the abort, compare
4045	the recovered database to the pre-compact database.
4046
4047=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4048test141
4049	Test moving a large part of a hash table to a continguous
4050	block of free pages.
4051
4052	Create a database with a btree and a hash subdb.  Remove
4053	all the data from the first (btree) db and then compact
4054	to cause the hash db to get moved.
4055
4056=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4057test142
4058	Tests exclusive database handles.
4059	1. Test that exclusive database handles return an error in incompatible
4060	environments.
4061	2. Test that an exclusive subdatabase handle does not block opening a
4062	handle on another database in the same file.
4063	3. Run script tests on a subdatabase with both wait and no wait
4064	configuration.
4065	4. Run script tests on a database with both wait and no wait
4066	configuration.
4067
4068=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4069test143
4070
4071	Test of mpool cache resizing.
4072
4073	Open an env with specified cache size and cache max.
4074	Write some data, check cache size.
4075	Resize cache.
4076	Configure cache-related mutex settings.
4077
4078=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4079test144
4080	Tests setting the heap size.
4081	1. Open the db with heap size smaller than 3 times the database page
4082	size and it fails and it should fail.
4083	2. Open the db with heap size A and close it. Reopen the db with heap
4084	size B (A != B) and it should fail.
4085	3. Open the db with heap size A, put some records to make the db file
4086	size bigger than A and it returns DB_HEAP_FULL.
4087	4. Open another heap database after getitng DB_HEAP_FULL and it
4088	should succeed.
4089
4090=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4091test145
4092	Tests setting the database creation directory
4093	in the environment and database handles.
4094	1. Test setting the directory in the environment handle
4095	(1) sets the db creation directory in the env handle with -data_dir;
4096	(2) opens the env handle with the env home directory;
4097	(3) opens the db handle with the db file name and db name.
4098	2. Test setting the directory in the database handle.
4099	(1) adds the db creation directory to the data directory list in the
4100	env handle with -add_dir;
4101	(2) opens the env handle with the env home directory;
4102	(3) sets the db creation directory in the db handle with -create_dir;
4103	(4) opens the db handle with the db file name and db name.
4104
4105=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4106test146
4107	Test the BLOB APIs.
4108	1) Test that the db blob threshold value defaults to
4109	the env threshold value.
4110	2) Test that the db blob threshold value is retained when re-opening
4111	the db.
4112	3) Test that the db blob threshold value is retained when re-opening
4113	the db with a different threshold value.
4114
4115=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4116test147
4117	Test db_stat and db_printlog with all allowed options.
4118
4119=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4120test148
4121	Test database compaction with -freeonly, -start/-stop.
4122
4123	Populate a database. Remove a high proportion of entries.
4124	Dump and save contents.  Compact the database with -freeonly,
4125	-start, -stop, or -start/-stop, dump again, and make sure
4126	we still have the same contents.
4127
4128=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4129test149
4130	Database stream test.
4131	1. Append data to empty / non-empty blobs.
4132	2. Update the existing data in the blobs.
4133	3. Check that the blob meta database has the same page size
4134	as the database that owns it.
4135	4. Re-create blob of the same key by deleting the record and
4136	and writing new data to blob by database stream.
4137	5. Verify the error is returned when opening a database stream
4138	on a record that is not a blob.
4139	6. Verify database stream can not write in blobs when it is
4140	configured to read-only.
4141	7. Verify database stream can not write in read-only databases.
4142
4143	In each test case, verify database stream read/size/write/close
4144	operations work as expected with transaction commit/abort.
4145
4146=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4147test150
4148	Test db_verify and db_log_verify with all allowed options.
4149
4150=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4151test151
4152	Test db_dump and db_load with all allowed options.
4153
4154=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4155test152
4156	Test database compaction with blobs.
4157	This is basically test111 with blobs.
4158
4159	Populate a database with a mixture of blob and non-blob
4160	items. Remove a high proportion of entries.
4161	Dump and save contents.  Compact the database, dump again,
4162	and make sure we still have the same contents.
4163	Add back some entries, delete more entries (this time by
4164	cursor), dump, compact, and do the before/after check again.
4165
4166=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4167test153
4168	Test queue consuming on a database having holes.
4169
4170	Create a database and then do some put operations. We will commit
4171	most of the operations and abort some to create holes(A queue
4172	database that is missing some consecutive elements). Then we will
4173	consume all records in the database to verify it still works, and
4174	we will also verify there are no zombie(see below) extents left.
4175
4176=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4177test154
4178	Test of multi-version concurrency control.
4179
4180	Test basic snapshot functionality, adding volume and
4181	multiple iterations to generate freeze/thaw behavior.
4182
4183=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4184test155
4185	Make sure DB_AFTER works properly after DBcursor->next(DB_MULTIPLE_KEY)
4186	has returned the last item.
4187
4188=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4189test156
4190	Test byte order conversions.
4191
4192=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4193test157
4194	Test the utility db_upgrade with all combinations of flags
4195	except the flag -s.
4196
4197=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4198txn001
4199	Begin, commit, abort testing.
4200
4201=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4202txn002
4203	Verify that  read-only transactions do not write log records.
4204
4205=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4206txn003
4207	Test abort/commit/prepare of txns with outstanding child txns.
4208
4209=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4210txn004
4211	Test of wraparound txnids (txn001)
4212
4213=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4214txn005
4215	Test transaction ID wraparound and recovery.
4216
4217=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4218txn008
4219	Test of wraparound txnids (txn002)
4220
4221=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4222txn009
4223	Test of wraparound txnids (txn003)
4224
4225=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4226txn010
4227	Test DB_ENV->txn_checkpoint arguments/flags
4228
4229=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4230txn011
4231	Test durable and non-durable txns.
4232	Test a mixed env (with both durable and non-durable
4233	dbs), then a purely non-durable env.  Make sure commit
4234	and abort work, and that only the log records we
4235	expect are written.
4236	Test that we can't get a durable handle on an open ND
4237	database, or vice versa.  Test that all subdb's
4238	must be of the same type (D or ND).
4239
4240=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4241txn012
4242	Test txn->getname and txn->setname.
4243
4244=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4245txn013
4246	Test of txns used in the wrong environment.
4247	Set up two envs.  Start a txn in one env, and attempt to use it
4248	in the other env.  Verify we get the appropriate error message.
4249
4250=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4251txn014
4252	Test of parent and child txns working on the same database.
4253	A txn that will become a parent create a database.
4254	A txn that will not become a parent creates another database.
4255	Start a child txn of the 1st txn.
4256	Verify that the parent txn is disabled while child is open.
4257	1. Child reads contents with child handle (should succeed).
4258	2. Child reads contents with parent handle (should succeed).
4259	Verify that the non-parent txn can read from its database,
4260	and that the child txn cannot.
4261	Return to the child txn.
4262	3. Child writes with child handle (should succeed).
4263	4. Child writes with parent handle (should succeed).
4264
4265	Commit the child, verify that the parent can write again.
4266	Check contents of database with a second child.
4267
4268=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4269txn015
4270	Test the thread-switching problem with Go interface.[#26945]
4271	Start a multi-thread test to perform cursor operations,
4272	transaction begin, transaction commit and transaction
4273	abort.
4274