Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improvements to threading test. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
3e3ebf10da7194d856efb1218820761e |
User & Date: | mistachkin 2012-10-26 18:16:11.649 |
Context
2012-10-26
| ||
20:37 | Add the ability for the test suite to track counts of CriticalHandle derived object instances. Also, slightly simplify test for ticket [6c6ecccc5f]. check-in: 09c5128542 user: mistachkin tags: trunk | |
18:16 | Improvements to threading test. check-in: 3e3ebf10da user: mistachkin tags: trunk | |
00:57 | Update SQLite core library to the latest trunk. Fix for ticket [6c6ecccc5f]. check-in: e702fa192f user: mistachkin tags: trunk | |
Changes
Changes to Tests/thread.eagle.
︙ | ︙ | |||
23 24 25 26 27 28 29 | checkForSQLiteDirectories $test_channel true set memory_used [reportSQLiteResources $test_channel true] ############################################################################### # # NOTE: How many test threads should be created and used for these tests? This | | | | > | > > > > > | > > > > | > > > > > > > > > > > > > > > > > > | > > > > > > > > | | | | | | | | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | checkForSQLiteDirectories $test_channel true set memory_used [reportSQLiteResources $test_channel true] ############################################################################### # # NOTE: How many test threads should be created and used for these tests? This # value must be at least two. The first test thread (at index 0) is # always the "master thread" and just repeatedly calls the Thread.Abort() # method on other random test threads that appear to be alive until all # test threads appear to have died. All other test threads will attempt # to open a connection, execute one or more queries against it, and then # close it. # if {![info exists count(1)]} then { set count(1) 10 } # # NOTE: How many milliseconds should the master thread initially wait until it # starts to abort the other test threads? # if {![info exists count(2)]} then { set count(2) 1000 } # # NOTE: How many milliseconds (maximum) should the master thread wait between # aborting other random test threads? # if {![info exists count(3)]} then { set count(3) 1000 } # # NOTE: How many bytes should be used for the five random data blobs contained # in the test database? # if {![info exists count(4)]} then { set count(4) 1000 } ############################################################################### runTest {test thread-1.1 {Thread.Abort() impact on native resources} -setup { setupDb [set fileName thread-1.1.db] tputs $test_channel [appendArgs \ "---- using " $count(1) " test threads (with one master thread)\n"] tputs $test_channel [appendArgs \ "---- initial wait will be " $count(2) " milliseconds\n"] tputs $test_channel [appendArgs \ "---- subsequent maximum wait will be " $count(3) " milliseconds\n"] tputs $test_channel [appendArgs \ "---- random data blob size will be " $count(4) " bytes\n"] } -body { sql execute $db [subst { CREATE TABLE t1(x INTEGER PRIMARY KEY, y BLOB); INSERT INTO t1 (y) VALUES(RANDOMBLOB(${count(4)})); INSERT INTO t1 (y) VALUES(RANDOMBLOB(${count(4)})); INSERT INTO t1 (y) VALUES(RANDOMBLOB(${count(4)})); INSERT INTO t1 (y) VALUES(RANDOMBLOB(${count(4)})); INSERT INTO t1 (y) VALUES(RANDOMBLOB(${count(4)})); }] # # NOTE: The temporary directory must be reset here because it allocates # some SQLite memory and this test requires an extremely accurate # reading. # sql execute $db { |
︙ | ︙ | |||
90 91 92 93 94 95 96 | using System.Threading; using Eagle._Containers.Public; namespace _Dynamic${id} { public static class Test${id} { | | | | | | | 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | using System.Threading; using Eagle._Containers.Public; namespace _Dynamic${id} { public static class Test${id} { public static LongList RunTestThreads() { // // NOTE: This is the total number of data bytes seen in the second // column of the query result rows seen by all test threads. // This value will vary greatly based upon how many loop // iterations are performed prior to each test thread being // aborted. // long sum = 0; // // NOTE: This is the total number of query result rows seen by all // the test threads. // long rows = 0; // // NOTE: This is the total number of exceptions caught by all the // test threads. // long errors = 0; // // NOTE: This is the total number of test threads to create. // int count = ${count(1)}; // // NOTE: Create the array of thread objects. // Thread\[\] thread = new Thread\[count\]; // |
︙ | ︙ | |||
277 278 279 280 281 282 283 | goEvent.WaitOne(); // // NOTE: Give the other test threads a slight head start to // make sure that they are fully alive prior to trying // to abort any of them. // | | | | 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 | goEvent.WaitOne(); // // NOTE: Give the other test threads a slight head start to // make sure that they are fully alive prior to trying // to abort any of them. // Thread.Sleep(${count(2)}); // // NOTE: Loop forever until all test threads appear to be dead. // while (true) { // // NOTE: Wait a random number of milliseconds, up to a full // second. // Thread.Sleep(random.Next(0, ${count(3)})); // // NOTE: Select a random thread to abort. // int index = random.Next(1, count); // |
︙ | ︙ | |||
384 385 386 387 388 389 390 | } // // NOTE: Return a list of integers with total number of data bytes // seen, total number of query result rows seen, and the total // number of exceptions caught by all the test threads. // | | | 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 | } // // NOTE: Return a list of integers with total number of data bytes // seen, total number of query result rows seen, and the total // number of exceptions caught by all the test threads. // LongList counts = new LongList(); counts.Add(sum); counts.Add(rows); counts.Add(errors); return counts; } |
︙ | ︙ | |||
416 417 418 419 420 421 422 | [reportSQLiteResources $test_channel true] } -cleanup { cleanupDb $fileName unset -nocomplain result results errors code sql dataSource id db fileName } -time true -constraints {eagle monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite} -match regexp -result [appendArgs "^Ok\ | | | 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 | [reportSQLiteResources $test_channel true] } -cleanup { cleanupDb $fileName unset -nocomplain result results errors code sql dataSource id db fileName } -time true -constraints {eagle monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite} -match regexp -result [appendArgs "^Ok\ System#CodeDom#Compiler#CompilerResults#\\d+ \\{\\} 0 \\{\\d+ \\d+ " $count(1) \ "\\} \\{\\} " $memory_used \$]} ############################################################################### unset -nocomplain count ############################################################################### |
︙ | ︙ |