- Added regression tests for a counter and the new MultiCounter
- Enhanced regression tests for motors
This commit is contained in:
271
test/countertest.tcl
Normal file
271
test/countertest.tcl
Normal file
@ -0,0 +1,271 @@
|
||||
#-------------------------------------------------------------
|
||||
# Testing of the counter module
|
||||
#
|
||||
# The regression counter has various errortypes which can be simulated:
|
||||
# 0 = none
|
||||
# 1 = failed start
|
||||
# 2 = status failure
|
||||
# 3 = pause fail
|
||||
# 4 = continue fail
|
||||
# 5 = failed read
|
||||
#
|
||||
# Another parameter is recover which causes the problem to go away
|
||||
# when 1
|
||||
#
|
||||
# TODO: What shall happen when pausing fails? Currently it continues
|
||||
# counting. This may be exactly what we need, but????
|
||||
#
|
||||
# This code needs the counter name two times: onxe as countername and
|
||||
# as errorname. The purpose is that this module may be used for testing
|
||||
# both the real and the multi counter.
|
||||
#
|
||||
# Mark Koennecke, September 2006
|
||||
#-------------------------------------------------------------
|
||||
#set countername aba
|
||||
#set errorname aba
|
||||
|
||||
puts stdout "Testing counter: $countername"
|
||||
|
||||
#---------------------------------------------------------------
|
||||
config rights Mugger Mugger
|
||||
$errorname setpar errortype 1 0
|
||||
|
||||
test counter-1.0 {Test Mode Setting} -body {
|
||||
config rights Spy Spy
|
||||
set res [eval $countername setmode monitor]
|
||||
if {[string first ERROR $res] < 0} {
|
||||
error "Managed to set parameter even if not allowed"
|
||||
}
|
||||
config rights User User
|
||||
set res [eval $countername setmode monitor]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Setting parameter failed with $res"
|
||||
}
|
||||
set readback [SICSValue "$countername getmode"]
|
||||
compareValue [string tolower $readback] monitor
|
||||
config rights Spy Spy
|
||||
set res [eval $countername setmode timer]
|
||||
if {[string first ERROR $res] < 0} {
|
||||
error "Managed to set parameter even if not allowed"
|
||||
}
|
||||
config rights User User
|
||||
set res [eval $countername setmode timer]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Setting parameter failed with $res"
|
||||
}
|
||||
set readback [SICSValue "$countername getmode"]
|
||||
compareValue [string tolower $readback] timer
|
||||
return "OK"
|
||||
} -result OK
|
||||
#-------------------------------------------------------------------
|
||||
test counter-1.1 {Test Preset Setting} -body {
|
||||
config rights Spy Spy
|
||||
set val 12
|
||||
set res [eval $countername setpreset $val]
|
||||
if {[string first ERROR $res] < 0} {
|
||||
error "Managed to set parameter even if not allowed"
|
||||
}
|
||||
config rights User User
|
||||
set res [eval $countername setpreset $val]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Setting parameter failed with $res"
|
||||
}
|
||||
set readback [SICSValue "$countername getpreset"]
|
||||
compareValue $readback $val
|
||||
return "OK"
|
||||
} -result OK
|
||||
#---------------------------------------------------------------------
|
||||
test counter-1.3 {Test Normal Counting} -body {
|
||||
config rights Spy Spy
|
||||
set status [catch {testNBCounting "$countername countnb 10" 11} msg]
|
||||
if {$status == 0} {
|
||||
error "Counted in spite of lacking privilege"
|
||||
}
|
||||
config rights User User
|
||||
testNBCounting "$countername countnb 10" 11
|
||||
} -result OK
|
||||
#---------------------------------------------------------------------
|
||||
test counter-1.4 {Test Blocking Counting} -body {
|
||||
config rights Spy Spy
|
||||
set status [catch {testBlockCounting "$countername countnb 10" 11} msg]
|
||||
if {$status == 0} {
|
||||
error "Counted in spite of lacking privilege"
|
||||
}
|
||||
config rights User User
|
||||
testBlockCounting "$countername countnb 10" 11
|
||||
} -result OK
|
||||
#--------------------------------------------------------------------
|
||||
test counter-1.5 {Interrupted Counting} -body {
|
||||
testInterruptedCount "$countername countnb 100"
|
||||
} -result OK
|
||||
#--------------------------------------------------------------------
|
||||
config rights User User
|
||||
|
||||
test counter-1.51 {Pause Counting Test} -body {
|
||||
global socke
|
||||
$countername countnb 300
|
||||
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 counter-1.52 {Pause Interrupt Test} -body {
|
||||
global socke
|
||||
$countername countnb 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
|
||||
#-------------------------------------------------------------------
|
||||
test counter-1.53 {Counter Value Read Test} -body {
|
||||
config rights User User
|
||||
$countername count 10
|
||||
set ans [SICSValue "$countername gettime"]
|
||||
compareValue $ans 10
|
||||
set ans [SICSValue "$countername getcounts"]
|
||||
compareValue $ans 5
|
||||
set ans [SICSValue "$countername getmonitor 1"]
|
||||
compareValue $ans 10
|
||||
set ans [SICSValue "$countername getmonitor 2"]
|
||||
compareValue $ans 25
|
||||
set ans [SICSValue "$countername getmonitor 3"]
|
||||
compareValue $ans 35
|
||||
set ans [SICSValue "$countername getmonitor 4"]
|
||||
compareValue $ans 45
|
||||
set ans [SICSValue "$countername getmonitor 5"]
|
||||
compareValue $ans 55
|
||||
set ans [SICSValue "$countername getmonitor 6"]
|
||||
compareValue $ans 65
|
||||
return OK
|
||||
} -result OK
|
||||
#--------------------------------------------------------------------
|
||||
config rights Mugger Mugger
|
||||
$errorname setpar errortype 1 1
|
||||
$errorname setpar recover 1 0
|
||||
|
||||
test counter-1.6 {Counting Start Failure} -body {
|
||||
set ans [$countername countnb 100]
|
||||
if { [string first "Counting aborted" $ans] < 0} {
|
||||
error "Failed to trigger count start failure: $ans"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#---------------------------------------------------------------
|
||||
$errorname setpar errortype 1 1
|
||||
$errorname setpar recover 1 1
|
||||
|
||||
test counter-1.7 {Counting Start Failure with Recovery} -body {
|
||||
set ans [$countername countnb 10]
|
||||
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 12
|
||||
set ans [SICSValue status]
|
||||
if {[string first Eager $ans] < 0} {
|
||||
error "Did not stop counting after start failure"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#----------------------------------------------------------------------
|
||||
$errorname setpar errortype 1 2
|
||||
$errorname setpar recover 1 0
|
||||
|
||||
test counter-1.8 {Counting Status Failure} -body {
|
||||
set ans [$countername countnb 100]
|
||||
set ans [status]
|
||||
if { [string first "Full Stop called" $ans] < 0} {
|
||||
error "Failed to trigger count start failure: $ans"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
#---------------------------------------------------------------
|
||||
$errorname setpar errortype 1 2
|
||||
$errorname setpar recover 1 1
|
||||
|
||||
test counter-1.9 {Counting Status Failure with Recovery} -body {
|
||||
set ans [$countername countnb 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
|
||||
#-------------------------------------------------------------------
|
||||
$errorname setpar errortype 1 5
|
||||
$errorname setpar recover 1 0
|
||||
|
||||
test counter-1.10 {Counter Read Failure} -body {
|
||||
set ans [$countername count 2]
|
||||
if { [string first "Full Stop" $ans] < 0} {
|
||||
error "Failed to trigger count read failure: $ans"
|
||||
}
|
||||
set ans [SICSValue status]
|
||||
if {[string first Eager $ans] < 0} {
|
||||
error "Did not stop counting after read failure"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
|
||||
#----------------------------------------------------------------
|
||||
$errorname setpar errortype 1 5
|
||||
$errorname setpar recover 1 1
|
||||
|
||||
test counter-1.10 {Counter Read Recover} -body {
|
||||
set ans [$countername count 2]
|
||||
if { [string first "WARN" $ans] < 0} {
|
||||
error "Failed to trigger count read failure: $ans"
|
||||
}
|
||||
set ans [SICSValue status]
|
||||
if {[string first Eager $ans] < 0} {
|
||||
error "Did not stop counting after read failure"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
|
||||
|
@ -18,6 +18,7 @@
|
||||
# copyright: see file COPYRIGHT
|
||||
#
|
||||
# Mark Koennecke, July 2006
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
puts stdout "Testing motor code"
|
||||
|
||||
@ -169,7 +170,7 @@ test motor-1.8 {Test Hardware Failure Recover} -body {
|
||||
|
||||
brumm errortype 4
|
||||
|
||||
test motor-1.9 {Test Consistent mispositioning} -body {
|
||||
test motor-1.9 {Test Consistent Mispositioning} -body {
|
||||
set ans [drive brumm -20.3]
|
||||
if { [string first "off position" $ans] < 0} {
|
||||
error "Failed to trigger motor off position"
|
||||
@ -257,4 +258,46 @@ test motor-1.12 {Motor Alarm} -body {
|
||||
return OK
|
||||
} -result OK
|
||||
|
||||
|
||||
brumm errortype 0
|
||||
config rights Mugger Mugger
|
||||
|
||||
test motor-1.13 {Motor Sign} -body {
|
||||
brumm sign 1
|
||||
drive brumm 27.
|
||||
set old [SICSValue brumm]
|
||||
brumm sign -1
|
||||
set newVal [SICSValue brumm]
|
||||
set br [brumm sign]
|
||||
brumm sign 1
|
||||
return [compareValue [expr $old * -1] $newVal]
|
||||
} -result OK
|
||||
|
||||
brumm sign 1.
|
||||
|
||||
test motor-1.14 {Motor Recover} -body {
|
||||
brumm sign -1.
|
||||
brumm softzero 5
|
||||
set data [brumm list]
|
||||
backup hugo.bck
|
||||
recover hugo.bck
|
||||
set newData [brumm list]
|
||||
if {[string compare $data $newData] != 0} {
|
||||
backup hugo2.bck
|
||||
error "Recovery failed: look at diff between hugo.bck and hugo2.bck"
|
||||
}
|
||||
brumm sign 1
|
||||
brumm softzero 0
|
||||
set data [brumm list]
|
||||
backup hugo.bck
|
||||
recover hugo.bck
|
||||
set newData [brumm list]
|
||||
if {[string compare $data $newData] != 0} {
|
||||
backup hugo2.bck
|
||||
error "Recovery failed: look at diff between hugo.bck and hugo2.bck"
|
||||
}
|
||||
return OK
|
||||
} -result OK
|
||||
|
||||
config rights Spy Spy
|
||||
test motorpar-1.15 {Test sign setting} -body {
|
||||
testPar "brumm sign" -1 Mugger } -result OK
|
||||
|
@ -11,3 +11,15 @@ brumm precision 0.100000
|
||||
brumm ignorefault 0.000000
|
||||
brumm AccessCode 2.000000
|
||||
brumm movecount 10.000000
|
||||
# Counter aba
|
||||
aba SetPreset 10.000000
|
||||
aba SetMode Timer
|
||||
# Counter hugo
|
||||
hugo SetPreset 10.000000
|
||||
hugo SetMode Timer
|
||||
# Counter lieselotte
|
||||
lieselotte SetPreset 10.000000
|
||||
lieselotte SetMode Timer
|
||||
# Counter multi
|
||||
multi SetPreset 10.000000
|
||||
multi SetMode Timer
|
||||
|
@ -41,5 +41,28 @@ SicsUser User User 2
|
||||
SicsUser Spy Spy 3
|
||||
#SicsUser Spy 007 1
|
||||
|
||||
#----------------- Motors ---------------------------------------------------
|
||||
Motor brumm regress
|
||||
MakeDrive
|
||||
|
||||
#----------------- Counters -------------------------------------------------
|
||||
MakeCounter aba regress
|
||||
MakeCounter hugo SIM -1.
|
||||
MakeCounter lieselotte SIM -1.
|
||||
#------------------------------
|
||||
proc SICSValue {command} {
|
||||
set txt [eval $command]
|
||||
set l [split $txt =]
|
||||
return [string trim [lindex $l 1]]
|
||||
}
|
||||
#-----------------------------
|
||||
proc multitransfer {} {
|
||||
append res [SICSValue "aba gettime"] " "
|
||||
for {set i 0} {$i < 7} {incr i} {
|
||||
append res [SICSValue "aba getmonitor $i"] " "
|
||||
}
|
||||
return $res
|
||||
}
|
||||
#-----------------------------------
|
||||
MakeMultiCounter multi aba hugo lieselotte
|
||||
multi transferscript multitransfer
|
||||
|
@ -18,7 +18,16 @@ source testutil.tcl
|
||||
source sicstcldebug.tcl
|
||||
|
||||
#-------------- Test for motors
|
||||
source mottest.tcl
|
||||
#source mottest.tcl
|
||||
|
||||
#-------------- Test Counter
|
||||
set countername aba
|
||||
set errorname aba
|
||||
#source countertest.tcl
|
||||
|
||||
#-------------- Test Multi Counter
|
||||
set countername multi
|
||||
source countertest.tcl
|
||||
|
||||
#------------ print test summary
|
||||
cleanupTests
|
||||
|
@ -17,7 +17,7 @@ proc compareValue {is should} {
|
||||
error "Bad compare is: $is, should $should"
|
||||
}
|
||||
} else {
|
||||
if {[string compare $is $rhould] != 0} {
|
||||
if {[string compare $is $should] != 0} {
|
||||
error "Bad compare is: $is, should $should"
|
||||
}
|
||||
}
|
||||
@ -87,3 +87,55 @@ proc testDriveInterrupt {name value} {
|
||||
}
|
||||
return OK
|
||||
}
|
||||
#---------------------------------------------------------------------
|
||||
proc testNBCounting {startCommand waitTime} {
|
||||
set res [$startCommand]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Starting count failed with $res"
|
||||
}
|
||||
exec sleep 1
|
||||
set res [SICSValue status]
|
||||
if {[string first "Count" $res] < 0} {
|
||||
error "Status does not say counting"
|
||||
}
|
||||
exec sleep $waitTime
|
||||
set res [SICSValue status]
|
||||
if {[string first "Eager" $res] < 0} {
|
||||
error "Counting did not stop"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
#----------------------------------------------------------------
|
||||
proc testBlockCounting {startCommand waitTime} {
|
||||
set res [$startCommand]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Starting count failed with $res"
|
||||
}
|
||||
exec sleep $waitTime
|
||||
set res [SICSValue status]
|
||||
if {[string first "Eager" $res] < 0} {
|
||||
error "Counting did not stop"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
#---------------------------------------------------------------
|
||||
proc testInterruptedCount {startCommand} {
|
||||
global socke
|
||||
set res [$startCommand]
|
||||
if {[string first ERROR $res] >= 0} {
|
||||
error "Starting count failed with $res"
|
||||
}
|
||||
puts $socke "INT1712 3"
|
||||
flush $socke
|
||||
exec sleep 10
|
||||
set ans [eval status]
|
||||
config rights Spy Spy
|
||||
if {[string first Interrupt $ans] < 0} {
|
||||
puts stdout $ans
|
||||
error "Failed to abort counting"
|
||||
}
|
||||
if { [string first Eager $ans] < 0} {
|
||||
error "Failed to finish counting"
|
||||
}
|
||||
return OK
|
||||
}
|
Reference in New Issue
Block a user