The fine-grained durability changes (WT-524, WT-605) need to be tested. Here is Sue's outline of what is required:
Basic operations (lots of embedded loops for lots of combinations): for operation {put, remove, truncate} for am {row-store, column-store} for txn {explicit, autotxn} for isolation {committed, uncommitted, snapshot} for shutdown {clean, crash} if explicit txn for txnend {commit, rollback} if truncate for truncop {fileonly, startonly, stoponly, startstop} for sync {dsync, fsync, none} start txn if needed perform op end txn as needed shutdown restart with recovery verify expected result Basic multi-step operations: for operation {set of multi-step operations we define} for am {row-store, column-store} for txn {explicit} # all multi-step must use explicit txns for isolation {committed, uncommitted, snapshot} for shutdown {clean, crash} for txnend {commit, rollback} for sync {dsync, fsync, none} start txn if needed perform op end txn as needed shutdown restart with recovery verify expected result Multi-step operations: (would like some automatic way to generate these cases...) insert X, remove X insert X, remove X, insert X' insert X, insert Y, insert Z, remove (X, Y or Z) insert X, insert Y, insert Z, truncate (with start, stop or both to truncate out Y) (there can be so many others...) Checkpoint: for archive {enabled, disabled} for checkpoint {database, single-target} run lots of txns, small log file size perform checkpoint verify logs are archived or not as expected run more txns to advance log file clean shutdown restart with recovery verify Hot Backup: (distinguish between backing up a single-target among several and a single-target where it is the only user URI that exists in the database) for backup {database, single-target, only-target} run lots of txns perform hot backup via wt utility restart in backup directory with recovery verify Are there any major areas I missed? It isn't clear to me whether we want unit-test python tests for all of these or if a stand-alone test program might be easier.