###############################################################################
#
# 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 working(rowCount) 0
set working(contentLength) 0
set working(time) [time {
set dataReader [sql execute -execute reader -format datareader \
-alias $db $sql]
while {[$dataReader Read]} {
incr working(rowCount)
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 -create -alias GetValue \
[$dataReader GetOrdinal content]]
incr working(contentLength) [$working(content) Length]
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 current
cleanupMemory connection
}
if {![info exists working(counter2Max)] || \
$working(counter2Cur) > $working(counter2Max)} then {
set working(counter2Max) $working(counter2Cur)
reportMemoryCounters $test_channel counter current
cleanupMemory connection
}
if {![info exists working(counter3Max)] || \
$working(counter3Cur) > $working(counter3Max)} then {
set working(counter3Max) $working(counter3Cur)
reportMemoryCounters $test_channel counter current
cleanupMemory connection
}
}
}]
reportMemoryCounters $test_channel counter final
tputs $test_channel [appendArgs \
"---- found " $working(rowCount) " rows with " \
$working(contentLength) " bytes of content in " \
$working(time) \n]
} -cleanup {
freeDbConnection
unset -nocomplain dataReader connection
cleanupDb $fileName db true false false
unset -nocomplain working sql counter db fileName
} -constraints {eagle fossil_repository_file variable_test_repository_file\
command.object windows monoBug28 command.sql compile.DATA SQLite\
System.Data.SQLite} -result {}}
###############################################################################
#
# NOTE: Report after test.
#
checkForSQLiteDirectories $test_channel
getSQLiteHandleCounts $test_channel
reportSQLiteResources $test_channel
###############################################################################
runSQLiteTestEpilogue
runTestEpilogue