- Implemented regresion tests for batch processing, scans,
histmem and peak optimization
This commit is contained in:
332
test/histtest.tcl
Normal file
332
test/histtest.tcl
Normal file
@@ -0,0 +1,332 @@
|
||||
#---------------------------------------------------------------------------
|
||||
# This is for testing the histogram memory code
|
||||
# The errortypes are the same as in the counter module
|
||||
#
|
||||
# Mark Koennecke, October 2006
|
||||
#---------------------------------------------------------------------------
|
||||
puts stdout "Testing Histogram Memory"
|
||||
config rights Mugger Mugegr
|
||||
hm config errotype 0
|
||||
hm init
|
||||
|
||||
test hm-1.0 {Test Mode Setting} -body {
|
||||
config rights Spy Spy
|
||||
set res [eval hm countmode monitor]
|
||||
if {[string first ERROR $res] < 0} {
|
||||
error "Managed to set parameter even if not allowed"
|
||||
}
|
||||
config rights User User
|
||||
set res [eval hm countmode monitor]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Setting parameter failed with $res"
|
||||
}
|
||||
set readback [SICSValue "hm countmode"]
|
||||
compareValue [string tolower $readback] monitor
|
||||
config rights Spy Spy
|
||||
set res [eval hm countmode timer]
|
||||
if {[string first ERROR $res] < 0} {
|
||||
error "Managed to set parameter even if not allowed"
|
||||
}
|
||||
config rights User User
|
||||
set res [eval hm countmode timer]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Setting parameter failed with $res"
|
||||
}
|
||||
set readback [SICSValue "hm countmode"]
|
||||
compareValue [string tolower $readback] timer
|
||||
return OK
|
||||
} -result OK
|
||||
#-------------------------------------------------------------------
|
||||
test hm-1.1 {Test Preset Setting} -body {
|
||||
config rights Spy Spy
|
||||
set val 12
|
||||
set res [eval hm preset $val]
|
||||
if {[string first ERROR $res] < 0} {
|
||||
error "Managed to set parameter even if not allowed"
|
||||
}
|
||||
config rights User User
|
||||
set res [eval hm preset $val]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Setting parameter failed with $res"
|
||||
}
|
||||
set readback [SICSValue "hm preset"]
|
||||
compareValue $readback $val
|
||||
return "OK"
|
||||
} -result OK
|
||||
#---------------------------------------------------------------------
|
||||
test hm-1.3 {Test Normal Counting} -body {
|
||||
config rights Spy Spy
|
||||
set status [catch {testNBCounting "hm count" 11} msg]
|
||||
if {$status == 0} {
|
||||
error "Counted in spite of lacking privilege"
|
||||
}
|
||||
config rights User User
|
||||
testOK "hm countmode timer"
|
||||
testOK "hm preset 5"
|
||||
testNBCounting "hm count" 11
|
||||
} -result OK
|
||||
#---------------------------------------------------------------------
|
||||
test hm-1.4 {Test Blocking Counting} -body {
|
||||
config rights Spy Spy
|
||||
set status [catch {testBlockCounting "hm countblock" 11} msg]
|
||||
if {$status == 0} {
|
||||
error "Counted in spite of lacking privilege"
|
||||
}
|
||||
config rights User User
|
||||
testBlockCounting "hm countblock" 11
|
||||
} -result OK
|
||||
#--------------------------------------------------------------------
|
||||
test hm-1.5 {Interrupted Counting} -body {
|
||||
hm preset 10
|
||||
testInterruptedCount "hm count"
|
||||
} -result OK
|
||||
#--------------------------------------------------------------------
|
||||
config rights User User
|
||||
|
||||
test hm-1.51 {Pause Counting Test} -body {
|
||||
global socke
|
||||
hm preset 300
|
||||
hm count
|
||||
exec sleep 1
|
||||
set ans [status]
|
||||
if {[string first Counting $ans] < 0} {
|
||||
error "Failed to start counting: $ans"
|
||||
}
|
||||
pause
|
||||
exec sleep 1
|
||||
set ans [status]
|
||||
if {[string first Paus $ans] < 0} {
|
||||
error "Failed to pause counting: $ans"
|
||||
}
|
||||
puts $socke continue
|
||||
flush $socke
|
||||
exec sleep 1
|
||||
set ans [status]
|
||||
if {[string first Count $ans] < 0} {
|
||||
error "Failed to continue counting: $ans"
|
||||
}
|
||||
puts $socke "INT1712 3"
|
||||
flush $socke
|
||||
set ans [status]
|
||||
return OK
|
||||
} -result OK
|
||||
#---------------------------------------------------------
|
||||
test hm-1.52 {Pause Interrupt Test} -body {
|
||||
global socke
|
||||
hm count 300
|
||||
exec sleep 2
|
||||
set ans [status]
|
||||
if {[string first Counting $ans] < 0} {
|
||||
error "Failed to start counting: $ans"
|
||||
}
|
||||
pause
|
||||
exec sleep 1
|
||||
set ans [status]
|
||||
if {[string first Paus $ans] < 0} {
|
||||
error "Failed to pause counting: $ans"
|
||||
}
|
||||
puts $socke "INT1712 3"
|
||||
flush $socke
|
||||
set ans [status]
|
||||
if {[string first Eager $ans] < 0} {
|
||||
error "Failed to interrupt paused counting: $ans"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#--------------------------------------------------------------------
|
||||
config rights Mugger Mugger
|
||||
hm configure errortype 1
|
||||
hm configure recover 0
|
||||
hm init
|
||||
hm preset 10
|
||||
|
||||
test hm-1.6 {Counting Start Failure} -body {
|
||||
set ans [hm count]
|
||||
if { [string first "cannot start" $ans] < 0} {
|
||||
error "Failed to trigger count start failure: $ans"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#-------------------------------------------------------------------------
|
||||
hm configure errortype 1
|
||||
hm configure recover 1
|
||||
hm init
|
||||
|
||||
test hm-1.7 {Counting Start Failure with Recovery} -body {
|
||||
set ans [hm count]
|
||||
if { [string first "WARNING" $ans] < 0} {
|
||||
error "Failed to trigger count start failure: $ans"
|
||||
}
|
||||
set ans [SICSValue status]
|
||||
if {[string first Counting $ans] < 0} {
|
||||
error "Did not recover from start failure"
|
||||
}
|
||||
exec sleep 15
|
||||
set ans [SICSValue status]
|
||||
if {[string first Eager $ans] < 0} {
|
||||
error "Did not stop counting after start failure"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#----------------------------------------------------------------------
|
||||
hm configure errortype 2
|
||||
hm configure recover 0
|
||||
hm init
|
||||
|
||||
test hm-1.8 {Counting Status Failure} -body {
|
||||
set ans [hm count]
|
||||
set ans [status]
|
||||
if { [string first "Full Stop called" $ans] < 0} {
|
||||
error "Failed to trigger count start failure: $ans"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#---------------------------------------------------------------
|
||||
hm configure errortype 2
|
||||
hm configure recover 1
|
||||
hm init
|
||||
|
||||
test hm-1.9 {Counting Status Failure with Recovery} -body {
|
||||
set ans [hm count 10]
|
||||
set ans [status]
|
||||
if { [string first "WARNING" $ans] < 0} {
|
||||
error "Failed to trigger count start failure: $ans"
|
||||
}
|
||||
if {[string first Counting $ans] < 0} {
|
||||
error "Did not recover from status failure"
|
||||
}
|
||||
exec sleep 12
|
||||
set ans [SICSValue status]
|
||||
if {[string first Eager $ans] < 0} {
|
||||
error "Did not stop counting after status failure"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#----------------------------------------------------------------------
|
||||
hm configure errortype 0
|
||||
hm configure recover 0
|
||||
hm configure testval 3
|
||||
hm init
|
||||
hm preset 2
|
||||
hm countblock
|
||||
|
||||
test hm-1.10 {Test data} -body {
|
||||
set expected [SICSValue "hm configure dim0"]
|
||||
set data [hm get 0]
|
||||
if {[string first ERROR $data] >= 0} {
|
||||
error "Failed to read HM"
|
||||
}
|
||||
if {[string first Histogram $data] < 0} {
|
||||
error "Bad response from HM"
|
||||
}
|
||||
set l [split $data =]
|
||||
set data [lindex $l 1]
|
||||
set l [split $data]
|
||||
set count 0
|
||||
foreach e $l {
|
||||
if {![string is space $e]} {
|
||||
incr count
|
||||
if {$e != 3} {
|
||||
error "Bad value in HM, got $e, expected 3"
|
||||
}
|
||||
}
|
||||
}
|
||||
if {$count != $expected} {
|
||||
error "HM Datasize does not match, expected $expected, got $count"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
|
||||
hm configure testval 7
|
||||
hm init
|
||||
hm countblock
|
||||
|
||||
test hm-1.11 {Test data second} -body {
|
||||
set expected [SICSValue "hm configure dim0"]
|
||||
set data [hm get 0]
|
||||
if {[string first ERROR $data] >= 0} {
|
||||
error "Failed to read HM"
|
||||
}
|
||||
if {[string first Histogram $data] < 0} {
|
||||
error "Bad response from HM"
|
||||
}
|
||||
set l [split $data =]
|
||||
set data [lindex $l 1]
|
||||
set l [split $data]
|
||||
set count 0
|
||||
foreach e $l {
|
||||
if {![string is space $e]} {
|
||||
incr count
|
||||
if {$e != 7} {
|
||||
error "Bad value in HM, got $e, expected 3"
|
||||
}
|
||||
}
|
||||
}
|
||||
if {$count != $expected} {
|
||||
error "HM Datasize does not match, expected $expected, got $count"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#-------------------------- ---------------------------------------------
|
||||
test hm-1.13 {Test hm sum} -body {
|
||||
set test [SICSValue "hm sum 2 4"]
|
||||
if {$test != 14} {
|
||||
error "Summing HM failed, expected 14 got $test"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#--------------------------------------------------------------------------
|
||||
test hm-1.14 {Test Setting Time Binning} -body {
|
||||
config rights Mugger Mugger
|
||||
testOK "tof genbin 50 20 70"
|
||||
testOK "tof configure testval 1"
|
||||
testOK "tof init"
|
||||
return OK
|
||||
} -result OK
|
||||
#-------------------------------------------------------------------------
|
||||
test hm-1.14 {Test Reading Time Binning} -body {
|
||||
set tst [SICSValue "tof notimebin"]
|
||||
if {$tst != 70} {
|
||||
error "NTOF bad, expected 70, got $tst"
|
||||
}
|
||||
set tdata [SICSValue "tof timebin"]
|
||||
set l [split $tdata]
|
||||
set count 0
|
||||
foreach v $l {
|
||||
if {![string is space $v]} {
|
||||
set tval [expr 50.0 + $count*20]
|
||||
if {abs($v - $tval) > 1} {
|
||||
error "Bad time value $v, expected $tval"
|
||||
}
|
||||
incr count
|
||||
}
|
||||
}
|
||||
if {$count < $tst} {
|
||||
error "Insufficient number of timebins: $count, expected $tst"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#----------------------------------------------------------------------
|
||||
tof countmode timer
|
||||
tof preset 2
|
||||
tof countblock
|
||||
test hm-1.14 {Test Reading TOF Data} -body {
|
||||
set ntof [SICSValue "tof notimebin"]
|
||||
set dim [SICSValue "tof configure dim0"]
|
||||
set alldata [expr $ntof*$dim]
|
||||
set tdata [SICSValue "tof get 0"]
|
||||
set l [split $tdata]
|
||||
set count 0
|
||||
foreach v $l {
|
||||
if {![string is space $v]} {
|
||||
if {abs($v - 1) > .1} {
|
||||
error "Bad data value $v, expected $tval"
|
||||
}
|
||||
incr count
|
||||
}
|
||||
}
|
||||
if {$count < $alldata} {
|
||||
error "Datapoints missing, got $count, expected $alldata"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
Reference in New Issue
Block a user