Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-710

Fine-grained durability testing

    • Type: Icon: Task Task
    • Resolution: Done
    • WT2.2
    • Affects Version/s: None
    • Component/s: None

      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.
      

            Assignee:
            sue.loverso@mongodb.com Susan LoVerso
            Reporter:
            michael.cahill@mongodb.com Michael Cahill (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: