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