Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Initial work on memory usage stress test. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | memoryUsage |
Files: | files | file ages | folders |
SHA1: |
7dd94a2532b31db176700bfa5c9b71fe |
User & Date: | mistachkin 2015-10-19 04:50:38.107 |
Context
2015-10-19
| ||
05:16 | Fixes and tweaks to the previous check-in. check-in: 9a14ecd4bc user: mistachkin tags: memoryUsage | |
04:50 | Initial work on memory usage stress test. check-in: 7dd94a2532 user: mistachkin tags: memoryUsage | |
02:15 | Update Eagle script library in externals to the latest trunk code. check-in: 8130180a1d user: mistachkin tags: trunk | |
Changes
Added Tests/memory.eagle.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | ############################################################################### # # memory.eagle -- # # Written by Joe Mistachkin. # Released to the public domain, use at your own risk! # ############################################################################### package require Eagle package require Eagle.Library package require Eagle.Test runTestPrologue ############################################################################### package require System.Data.SQLite.Test runSQLiteTestPrologue ############################################################################### # # NOTE: Report before test, before shutdown. # checkForSQLiteDirectories $test_channel getSQLiteHandleCounts $test_channel reportSQLiteResources $test_channel ############################################################################### # # NOTE: Make sure that SQLite core library is completely shutdown prior to # starting any of the tests in this file. # shutdownSQLite $test_channel ############################################################################### # # NOTE: Report before test, after shutdown. # checkForSQLiteDirectories $test_channel getSQLiteHandleCounts $test_channel reportSQLiteResources $test_channel ############################################################################### runTest {test memory-1.1 {SQLiteDataReader memory testing} -setup { setupMemoryCounters counter reportMemoryCounters $test_channel counter initial setupDb [set fileName $test_repository_file] \ "" "" "" "" "Read Only=True" false false } -body { set connection [getDbConnection] set sql "SELECT rid, rcvid, size, uuid, content FROM blob ORDER BY rid;" set dataReader [sql execute -execute reader -format datareader \ -alias $db $sql] set result [list] while {0 && [$dataReader Read]} { set working(rid) [$dataReader GetValue \ [$dataReader GetOrdinal rid]] set working(rcvid) [$dataReader GetValue \ [$dataReader GetOrdinal rcvid]] set working(size) [$dataReader GetValue \ [$dataReader GetOrdinal size]] set working(uuid) [$dataReader GetValue \ [$dataReader GetOrdinal uuid]] # set working(content) [$dataReader GetValue \ # [$dataReader GetOrdinal content]] set working(counter1Cur) [$counter(1) RawValue] set working(counter2Cur) [$counter(2) RawValue] set working(counter3Cur) [$counter(3) RawValue] if {![info exists working(counter1Max)] || \ $working(counter1Cur) > $working(counter1Max)} then { set working(counter1Max) $working(counter1Cur) reportMemoryCounters $test_channel counter "new maximum" cleanupMemory $test_channel connection } if {![info exists working(counter2Max)] || \ $working(counter2Cur) > $working(counter2Max)} then { set working(counter2Max) $working(counter2Cur) reportMemoryCounters $test_channel counter "new maximum" cleanupMemory $test_channel connection } if {![info exists working(counter3Max)] || \ $working(counter3Cur) > $working(counter3Max)} then { set working(counter3Max) $working(counter3Cur) reportMemoryCounters $test_channel counter "new maximum" cleanupMemory $test_channel connection } } reportMemoryCounters $test_channel counter final set result } -cleanup { freeDbConnection unset -nocomplain dataReader connection cleanupDb $fileName db true false false unset -nocomplain result working sql counter db fileName } -constraints {eagle monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite fossil_repository_file variable_test_repository_file} \ -result {}} ############################################################################### # # NOTE: Report after test. # checkForSQLiteDirectories $test_channel getSQLiteHandleCounts $test_channel reportSQLiteResources $test_channel ############################################################################### runSQLiteTestEpilogue runTestEpilogue |
Changes to lib/System.Data.SQLite/common.eagle.
︙ | ︙ | |||
2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 | # NOTE: The file does not exist, success! # set code 0 } return $code } proc collectGarbage { channel {milliseconds 1000} {quiet true} } { if {[haveSQLiteObjectCommand]} then { if {[catch { object invoke GC GetTotalMemory false } result] == 0} then { if {!$quiet} then { | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 | # NOTE: The file does not exist, success! # set code 0 } return $code } proc cleanupMemory { channel varName {quiet false} } { if {[haveSQLiteObjectCommand] && \ [string length $varName] > 0} then { # # NOTE: Refer to the specified variable (e.g. "connection") in the # context of our caller. The opaque object handle for an # ADO.NET connection previously returned by [getDbConnection] # should be stored there. # upvar 1 $varName connection if {[catch { object invoke $connection ReleaseMemory } result]} then { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to release database memory, error: " \ \n\t $result \n] } } } if {[llength [info commands debug]] > 0} then { if {[catch { uplevel 1 [list debug purge] } result]} then { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to purge call frame, error: " \ \n\t $result \n] } } if {[catch { uplevel 1 [list debug cleanup] } result]} then { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to cleanup interpreter, error: " \ \n\t $result \n] } } if {[catch { uplevel 1 [list debug collect] } result]} then { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to collect garbage, error: " \ \n\t $result \n] } } } } proc setupMemoryCounters { varName } { if {[haveSQLiteObjectCommand]} then { upvar 1 $varName counter set counter(1) [object create -alias \ System.Diagnostics.PerformanceCounter Process \ "Working Set" [file rootname [file tail $::bin_file]]] set counter(2) [object create -alias \ System.Diagnostics.PerformanceCounter Process \ "Working Set Peak" [file rootname [file tail $::bin_file]]] set counter(3) [object create -alias \ System.Diagnostics.PerformanceCounter Process \ "Private Bytes" [file rootname [file tail $::bin_file]]] } } proc reportMemoryCounters { channel varName prefix } { if {[haveSQLiteObjectCommand]} then { upvar 1 $varName counter tputs $channel [appendArgs \ "---- " $prefix " counter \"" \ [object invoke $counter(1) CounterName] "\" value is " \ [object invoke $counter(1) RawValue] \n] tputs $channel [appendArgs \ "---- " $prefix " counter \"" \ [object invoke $counter(2) CounterName] "\" value is " \ [object invoke $counter(2) RawValue] \n] tputs $channel [appendArgs \ "---- " $prefix " counter \"" \ [object invoke $counter(3) CounterName] "\" value is " \ [object invoke $counter(3) RawValue] \n] } } proc collectGarbage { channel {milliseconds 1000} {quiet true} } { if {[haveSQLiteObjectCommand]} then { if {[catch { object invoke GC GetTotalMemory false } result] == 0} then { if {!$quiet} then { |
︙ | ︙ |