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