puts "OCC114"
puts "==========="
-#--------------------------------------------------------------------
-####### Setting value of memory leakage in percents of memory allocated by shape
-set percent_max 10
-puts "Max memory leakage is $percent_max%"
-####### Setting amount of iterations for computing leackage
+# Max number of iterations for computing memory leackage
set i_max 20
puts "Amount of iterations is $i_max"
-#--------------------------------------------------------------------
-
-if ![string compare $tcl_platform(platform) "windows"] {
- proc VMem { memory } {
- upvar $memory mem
- regsub "^.*PeakVirtualSize: *\(\[0-9\]*\) KB.*$" \
- [exec tlist [pid]] "\\1" mem
- }
-} else {
- proc VMem { memory } {
- upvar $memory mem
- set mem [lindex [exec ps -o vsz -p [pid]] 1]
- }
-}
NewDocument D MDTV-Standard
UndoLimit D 10
-VMem Mem0
restore [locate_data_file OCC114.brep] s
-VMem Mem1
-#puts "... The peak memory consumed: [expr $Mem1 - $Mem0] KB"
-
-set MemoryLeakage 0
+set listmem {}
for {set i 1} {${i} <= ${i_max}} {incr i} {
- OpenCommand D
- SetShape D 0:1 s
- AbortCommand D
-
- VMem Mem2
- set Delta [expr $Mem2 - $Mem1]
- set MemoryLeakage [expr $MemoryLeakage + $Delta]
-# puts " $i delta memory consumed: $Delta KB"
-}
+ OpenCommand D
+ SetShape D 0:1 s
+ AbortCommand D
-
-if { $MemoryLeakage != 0 } then {
- set percent [expr ${MemoryLeakage} / (double(${i_max}) * (${Mem1} - ${Mem0})) * 100.]
-} else {
- set percent 0
-}
-puts "Current memory leakage in percents = ${percent}"
-
-if {${percent} > ${percent_max}} {
- puts "OCC114: Error"
-} else {
- puts "OCC114: OK"
+ # check memory usage (with tolerance equal to half page size)
+ lappend listmem [expr [meminfo w] / 1024]
+ if { [checktrend $listmem 0 1 "Memory leak detected"] } {
+ puts "No memory leak, $i iterations"
+ break
+ }
}
-
-