System.Data.SQLite
Check-in [752a5d8f13]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Further enhancements to the stress test.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 752a5d8f13cb2938cecf20a1b0c24494c17f41e6
User & Date: mistachkin 2018-01-04 18:21:36
Context
2018-01-04
18:35
Even more enhancements to the stress test. check-in: b4c8f6a38d user: mistachkin tags: trunk
18:21
Further enhancements to the stress test. check-in: 752a5d8f13 user: mistachkin tags: trunk
17:50
Update stress test settings file. check-in: fe2a4355f8 user: mistachkin tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to Tests/stress.eagle.

482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
...
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
...
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
....
1556
1557
1558
1559
1560
1561
1562








































1563
1564
1565
1566
1567
1568
1569
....
1593
1594
1595
1596
1597
1598
1599


1600


1601
1602
1603
1604
1605
1606
1607
  #
  #       The only reasonable way that this test can guarantee this condition
  #       is to disable the backup tests when shared-cache mode is being used
  #       for testing.
  #
  # TODO: Update these if the workload numbers change.
  #
  if {[hasRuntimeOption sharedCache]} then {
    lappend noWorkload 12; # NOTE: Backup to in-memory database.
    lappend noWorkload 13; # NOTE: Backup from in-memory database.
  }

  #
  # NOTE: Omit some workloads if we are only interested in data manipulation
  #       (DML) statements.
................................................................................
    #
    # NOTE: Workload #1, CREATE TABLE statements.
    #
    waitTest A
    lappend ::times(1) [lindex [time {
      initTest A
      setupWorkloadFileDb $dstFileName db
      for {set index 2} {$index <= $count1} {incr index} {
        if {[catch {
          sql execute $db [appendArgs \
              "CREATE TABLE IF NOT EXISTS t" \
              $index "(x PRIMARY KEY, y, z);"]
          showTest A
        } error]} then {
          if {[isExpectedError $error]} then {
................................................................................
    #
    # NOTE: Workload #2, DROP TABLE statements.
    #
    waitTest B
    lappend ::times(2) [lindex [time {
      initTest B
      setupWorkloadFileDb $dstFileName db
      for {set index 2} {$index <= $count1} {incr index} {
        if {[catch {
          sql execute $db [appendArgs \
              "DROP TABLE IF EXISTS t" $index \;]
          showTest B
        } error]} then {
          if {[isExpectedError $error]} then {
            showTest b
................................................................................
          }
        }
      }
      cleanupDb $dstFileName db false true false
      doneTest V
    }] 0]
  }]








































} -body {
  set workloadNames(all) [array names workload]

  tputs $test_channel [appendArgs \
      "---- there are " [llength $workloadNames(all)] \
      " total workloads, their names are: " $workloadNames(all) \n]

................................................................................

    tputs $test_channel [appendArgs \
        "---- starting workload run #" $index(0) ...\n]

    unset -nocomplain thread status; doneTest

    sql execute $srcDb "CREATE TABLE IF NOT EXISTS t1(x PRIMARY KEY, y, z);"


    sql execute $db "CREATE TABLE IF NOT EXISTS t1(x PRIMARY KEY, y, z);"



    sql execute $srcDb "CREATE INDEX IF NOT EXISTS i1 ON t1(y);"
    sql execute $db "CREATE INDEX IF NOT EXISTS i1 ON t1(y);"

    foreach index(1) [lsort -integer $workloadNames(enabled)] {
      set workloadCallbacks($index(1)) [list \
          apply $workload($index(1)) $fileName(1) $fileName(2) t1 $count(1) \







|







 







|







 







|







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>

>
>







482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
...
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
...
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
....
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
....
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
  #
  #       The only reasonable way that this test can guarantee this condition
  #       is to disable the backup tests when shared-cache mode is being used
  #       for testing.
  #
  # TODO: Update these if the workload numbers change.
  #
  if {[hasRuntimeOption sharedCache] || [hasRuntimeOption dmlOnly]} then {
    lappend noWorkload 12; # NOTE: Backup to in-memory database.
    lappend noWorkload 13; # NOTE: Backup from in-memory database.
  }

  #
  # NOTE: Omit some workloads if we are only interested in data manipulation
  #       (DML) statements.
................................................................................
    #
    # NOTE: Workload #1, CREATE TABLE statements.
    #
    waitTest A
    lappend ::times(1) [lindex [time {
      initTest A
      setupWorkloadFileDb $dstFileName db
      for {set index 4} {$index <= $count1} {incr index} {
        if {[catch {
          sql execute $db [appendArgs \
              "CREATE TABLE IF NOT EXISTS t" \
              $index "(x PRIMARY KEY, y, z);"]
          showTest A
        } error]} then {
          if {[isExpectedError $error]} then {
................................................................................
    #
    # NOTE: Workload #2, DROP TABLE statements.
    #
    waitTest B
    lappend ::times(2) [lindex [time {
      initTest B
      setupWorkloadFileDb $dstFileName db
      for {set index 4} {$index <= $count1} {incr index} {
        if {[catch {
          sql execute $db [appendArgs \
              "DROP TABLE IF EXISTS t" $index \;]
          showTest B
        } error]} then {
          if {[isExpectedError $error]} then {
            showTest b
................................................................................
          }
        }
      }
      cleanupDb $dstFileName db false true false
      doneTest V
    }] 0]
  }]

  #############################################################################
  #                              WORKLOAD #23 (W)                             #
  #############################################################################

  set workload(23) [list \
      [list srcFileName dstFileName table count1 count2 count3 \
            count4 count5 count6 count7] {
    #
    # NOTE: Workload #23, "big" INSERT and DELETE statements.
    #
    waitTest W
    lappend ::times(23) [lindex [time {
      initTest W
      setupWorkloadFileDb $dstFileName db
      for {set index 1} {$index <= $count1} {incr index} {
        if {[catch {
          beginTransaction $db
          sql execute $db [appendArgs \
              "WITH s(i) AS " \
              "(SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<" \
              $count5 ") INSERT INTO t2 SELECT RANDOMBLOB(" $count3 \
              ") FROM s; WITH s(i) AS " \
              "(SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<" \
              $count5 ") INSERT INTO t3 SELECT RANDOMBLOB(" $count3 \
              ") FROM s; DELETE FROM t3;"]
          endTransaction $db
          showTest W
        } error]} then {
          if {[isExpectedError $error]} then {
            showTest w
          } else {
            failTest w $error
          }
        }
      }
      cleanupDb $dstFileName db false true false
      doneTest W
    }] 0]
  }]
} -body {
  set workloadNames(all) [array names workload]

  tputs $test_channel [appendArgs \
      "---- there are " [llength $workloadNames(all)] \
      " total workloads, their names are: " $workloadNames(all) \n]

................................................................................

    tputs $test_channel [appendArgs \
        "---- starting workload run #" $index(0) ...\n]

    unset -nocomplain thread status; doneTest

    sql execute $srcDb "CREATE TABLE IF NOT EXISTS t1(x PRIMARY KEY, y, z);"
    sql execute $srcDb "CREATE TABLE IF NOT EXISTS t2(x);"
    sql execute $srcDb "CREATE TABLE IF NOT EXISTS t3(x);"
    sql execute $db "CREATE TABLE IF NOT EXISTS t1(x PRIMARY KEY, y, z);"
    sql execute $db "CREATE TABLE IF NOT EXISTS t2(x);"
    sql execute $db "CREATE TABLE IF NOT EXISTS t3(x);"

    sql execute $srcDb "CREATE INDEX IF NOT EXISTS i1 ON t1(y);"
    sql execute $db "CREATE INDEX IF NOT EXISTS i1 ON t1(y);"

    foreach index(1) [lsort -integer $workloadNames(enabled)] {
      set workloadCallbacks($index(1)) [list \
          apply $workload($index(1)) $fileName(1) $fileName(2) t1 $count(1) \

Changes to lib/System.Data.SQLite/settings.stress.mistachkin.eagle.

14
15
16
17
18
19
20



# set journalMode WAL;    # Initial journal mode for database files.
# set pageSize 4096;      # Initial page size for database files.
# set noWorkload [list];  # Workloads to be omitted from the run, by index.
# set exitOnFail true;    # Halt testing and exit process on test failure?
# set noTrace true;       # Disable SQLite trace logging to a file?
# set beginTransaction "BEGIN"; # SQL to execute before modifying the database.
# set endTransaction "COMMIT";  # SQL to execute after modifying the database.










>
>
>
14
15
16
17
18
19
20
21
22
23
# set journalMode WAL;    # Initial journal mode for database files.
# set pageSize 4096;      # Initial page size for database files.
# set noWorkload [list];  # Workloads to be omitted from the run, by index.
# set exitOnFail true;    # Halt testing and exit process on test failure?
# set noTrace true;       # Disable SQLite trace logging to a file?
# set beginTransaction "BEGIN"; # SQL to execute before modifying the database.
# set endTransaction "COMMIT";  # SQL to execute after modifying the database.

# addRuntimeOption sharedCache
# addRuntimeOption dmlOnly