- First version of instrument regression tests
- sinqcom is the first version of a communication testing program for instruments
This commit is contained in:
116
insttest/amortest
Executable file
116
insttest/amortest
Executable file
@ -0,0 +1,116 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the AMOR instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source amorinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument amor
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#--------- remember soz position
|
||||||
|
set sozpos [SICSValue soz]
|
||||||
|
|
||||||
|
set notList [list chopperspeed chopper1phase chopper2phase ch1ph ch2ph chsp]
|
||||||
|
lappend notList aby pby
|
||||||
|
|
||||||
|
lappend commandList "counter setthreshold 1 0"
|
||||||
|
lappend commandList "count timer 20"
|
||||||
|
lappend commandList "cscan soz 0 .1 2 2"
|
||||||
|
lappend commandList "sscan soz 0. .1 3 2"
|
||||||
|
lappend commandList "repeat 2"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
lappend commandList "amorpar"
|
||||||
|
lappend commandList "amorstatus collapse"
|
||||||
|
lappend commandList "amorstatus singletof"
|
||||||
|
lappend commandList "amorstatus projectytof"
|
||||||
|
|
||||||
|
|
||||||
|
lappend varList [list "amorset chopper offset" 137.5 10]
|
||||||
|
lappend varList [list "amorset chopper scaleoffset" 0 1]
|
||||||
|
# TODO: slit1 when configured
|
||||||
|
lappend varList [list "amorset mono offset" 200.5 10]
|
||||||
|
lappend varList [list "amorset mono scaleoffset" 0 1]
|
||||||
|
lappend varList [list "amorset ds offset" -40 5]
|
||||||
|
lappend varList [list "amorset ds scaleoffset" 0 1]
|
||||||
|
lappend varList [list "amorset slit2 offset" 267. 5]
|
||||||
|
lappend varList [list "amorset ds scaleoffset" 0 1]
|
||||||
|
lappend varList [list "amorset slit3 offset" -53 5]
|
||||||
|
lappend varList [list "amorset slit3 scaleoffset" 0 1]
|
||||||
|
lappend varList [list "amorset slit4 offset" 270 5]
|
||||||
|
lappend varList [list "amorset slit4 scaleoffset" 0 1]
|
||||||
|
lappend varList [list "amorset sample offset" 308 5]
|
||||||
|
lappend varList [list "amorset sample scaleoffset" 0 1]
|
||||||
|
lappend varList [list "amorset slit5 offset" -54. 5]
|
||||||
|
lappend varList [list "amorset slit5 scaleoffset" 0 1]
|
||||||
|
lappend varList [list "amorset detector offset" 297 5]
|
||||||
|
lappend varList [list "amorset detector scaleoffset" 0 1]
|
||||||
|
lappend varList [list "amorset ana offset" 200 5]
|
||||||
|
lappend varList [list "amorset ana scaleoffset" 0 1]
|
||||||
|
lappend varList [list "d1b sign" -1 .1]
|
||||||
|
lappend varList [list "dbs sign" -1 .1]
|
||||||
|
lappend varList [list "d2b sign" -1 .1]
|
||||||
|
lappend varList [list "d3b sign" -1 .1]
|
||||||
|
lappend varList [list "d4b sign" -1 .1]
|
||||||
|
lappend varList [list "aom sign" -1 .1]
|
||||||
|
lappend varList [list "atz sign" -1 .1]
|
||||||
|
lappend varList [list "d5b sign" -1 .1]
|
||||||
|
lappend varList [list "com sign" -1 .1]
|
||||||
|
lappend varList [list "cox sign" -1 .1]
|
||||||
|
|
||||||
|
exe upload
|
||||||
|
exe append counter setthreshold 1 0
|
||||||
|
exe append count timer 120
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "drive soz 90"
|
||||||
|
lappend interruptList "count timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- Test detection system
|
||||||
|
puts stdout "Testing detector"
|
||||||
|
set det 1
|
||||||
|
hm genbin 0 200000 2
|
||||||
|
hm init
|
||||||
|
count timer 600
|
||||||
|
set counts [SICSValue "hm sum 0 128 0 256"]
|
||||||
|
if {$counts <= 0} {
|
||||||
|
set det 0
|
||||||
|
}
|
||||||
|
if {$det == 1} {
|
||||||
|
puts stdout "Detector passed"
|
||||||
|
} else {
|
||||||
|
puts stdout "Check detector, found no noise after 10 minutes counting"
|
||||||
|
}
|
||||||
|
#--------- put detector back where it was
|
||||||
|
drive soz $sozpos
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
puts stdout "Chopper NOT tested!!"
|
||||||
|
|
73
insttest/analyzeinst
Executable file
73
insttest/analyzeinst
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
# This script analyzes a given instrument. It connects to a running
|
||||||
|
# SICS server and queries it. From the query, a list of objects and
|
||||||
|
# drivables is output into a file in a format suitable to be
|
||||||
|
# included into a instrument testing script. These lists are then used
|
||||||
|
# to check the inventory of the SICS server and to check each motor.
|
||||||
|
# This can be extended to get even more lists of things to be checked
|
||||||
|
# automatically.
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
if {$argc < 1} {
|
||||||
|
puts stdout "Usage:\n\tanalyzeinst instrument"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
proc writeInventory {out} {
|
||||||
|
set txt [sicscommand list]
|
||||||
|
set l [split $txt ,]
|
||||||
|
foreach obj $l {
|
||||||
|
if {[regexp {con[0-9]*} $obj] == 1} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if {[string equal tt $obj] == 1} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if {[string equal temperature $obj] == 1} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if {[string first ENDLIST $obj] >= 0} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if {[string equal sea $obj] == 1} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if {[string equal tecs $obj] == 1} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
puts $out "lappend inventory $obj"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
proc writeMotors {out} {
|
||||||
|
set txt [sicscommand list interface drivable]
|
||||||
|
set l [split $txt ,]
|
||||||
|
foreach obj $l {
|
||||||
|
if {[string equal tt $obj] == 1} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if {[string equal temperature $obj] == 1} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if {[string first ENDLIST $obj] >= 0} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
puts $out "lappend motors $obj"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#======================= "MAIN" ======================================
|
||||||
|
set instrument [lindex $argv 0]
|
||||||
|
initSicsDebug $instrument
|
||||||
|
|
||||||
|
set filnam [format "%sinventory.tcl" $instrument]
|
||||||
|
set out [open $filnam w]
|
||||||
|
|
||||||
|
writeInventory $out
|
||||||
|
writeMotors $out
|
||||||
|
|
||||||
|
close $out
|
||||||
|
puts stdout Done
|
||||||
|
exit 0
|
80
insttest/dmctest
Executable file
80
insttest/dmctest
Executable file
@ -0,0 +1,80 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the DMC instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source dmcinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument dmc
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#---------- configuration
|
||||||
|
set notList [list nvs]
|
||||||
|
|
||||||
|
lappend commandList "counter setthreshold 1 0"
|
||||||
|
lappend commandList "count timer 2"
|
||||||
|
lappend commandList "repeat 2"
|
||||||
|
lappend commandList "counter setthreshold 1 2"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
|
||||||
|
lappend varList [list "mono dd" 3.3537 .1]
|
||||||
|
lappend varList [list "mono ss" 1 .1]
|
||||||
|
lappend varList [list "mono vk1" -.00259 .1]
|
||||||
|
lappend varList [list "mono vk2" 5.35166 .1]
|
||||||
|
|
||||||
|
set om [SICSValue a3]
|
||||||
|
exe upload
|
||||||
|
exe append drive a3 180.
|
||||||
|
exe append drive a3 $om
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "drive a3 180"
|
||||||
|
lappend interruptList "count timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
#---------- configure parameter array
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
set par(varList) $varList
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- Test detection system
|
||||||
|
puts stdout "Testing detector"
|
||||||
|
set det 1
|
||||||
|
count timer 600
|
||||||
|
set counts [SICSValue "banana sum 0 400"]
|
||||||
|
if {$counts <= 0} {
|
||||||
|
set det 0
|
||||||
|
}
|
||||||
|
if {$det == 1} {
|
||||||
|
puts stdout "Detector passed"
|
||||||
|
} else {
|
||||||
|
puts stdout "Check detector, found no noise after 10 minutes counting"
|
||||||
|
}
|
||||||
|
drive a3 $om
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
|
||||||
|
|
62
insttest/focustest
Executable file
62
insttest/focustest
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the FOCUS instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source focusinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument focus
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#---------- configuration
|
||||||
|
set notList [list fermispeed diskspeed phase ratio intervall]
|
||||||
|
|
||||||
|
lappend commandList "count timer 2"
|
||||||
|
lappend commandList "repeat 2"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
lappend commandList "hm genbin 10 25 333"
|
||||||
|
lappend commandList "hm init"
|
||||||
|
|
||||||
|
lappend varList [list flightpathlength 3000 5]
|
||||||
|
lappend varList [list fermidist 3000 5]
|
||||||
|
lappend varList [list detectordist 2500 5]
|
||||||
|
lappend varList [list sampledist 499.7 1]
|
||||||
|
lappend varList [list "mono dd" 3.355 .1]
|
||||||
|
|
||||||
|
exe upload
|
||||||
|
exe append count timer 120
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "count timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
set par(varList) $varList
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
puts stdout "Chopper system NOT tested!!"
|
||||||
|
|
78
insttest/hrpttest
Executable file
78
insttest/hrpttest
Executable file
@ -0,0 +1,78 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the DMC instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source hrptinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument hrpt
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#---------- configuration
|
||||||
|
set notList [list nvs]
|
||||||
|
|
||||||
|
lappend commandList "counter setthreshold 1 0"
|
||||||
|
lappend commandList "count timer 2"
|
||||||
|
lappend commandList "repeat 2"
|
||||||
|
lappend commandList "counter setthreshold 1 3"
|
||||||
|
lappend commandList "radial start"
|
||||||
|
lappend commandList "radial stop"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
|
||||||
|
|
||||||
|
set om [SICSValue a3]
|
||||||
|
exe upload
|
||||||
|
exe append drive a3 180.
|
||||||
|
exe append drive a3 $om
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "drive a3 180"
|
||||||
|
lappend interruptList "count timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
#---------- configure parameter array
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- Test detection system
|
||||||
|
puts stdout "Testing detector"
|
||||||
|
set det 1
|
||||||
|
count timer 600
|
||||||
|
set counts [SICSValue "banana sum 0 1600"]
|
||||||
|
if {$counts <= 0} {
|
||||||
|
set det 0
|
||||||
|
}
|
||||||
|
if {$det == 1} {
|
||||||
|
puts stdout "Detector passed"
|
||||||
|
} else {
|
||||||
|
puts stdout "Check detector, found no noise after 10 minutes counting"
|
||||||
|
}
|
||||||
|
#---------- drive sample rotation back
|
||||||
|
drive a3 $om
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
|
||||||
|
|
264
insttest/insttestutil.tcl
Normal file
264
insttest/insttestutil.tcl
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# This is a set of utilities for testing SICServers on instruments
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
proc testInventory {inventory} {
|
||||||
|
set txt [sicscommand list]
|
||||||
|
set objList [split $txt ,]
|
||||||
|
set missing 0
|
||||||
|
foreach obj $inventory {
|
||||||
|
if {[lsearch $objList $obj] < 0} {
|
||||||
|
incr missing
|
||||||
|
puts stdout "MISSING: $obj"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $missing
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc SICSValue {command} {
|
||||||
|
set txt [eval $command]
|
||||||
|
set l [split $txt =]
|
||||||
|
return [string trim [lindex $l 1]]
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc max {one two} {
|
||||||
|
if {$one > $two} {
|
||||||
|
return $one
|
||||||
|
} else {
|
||||||
|
return $two
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
# Test Motors. All are read: if they are not in the notList we will
|
||||||
|
# try driving them by 1 %. Drivecommand can either be drive of dr,
|
||||||
|
# depending on instrument
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc testMotors {drivecommand motorList notList} {
|
||||||
|
set failed 0
|
||||||
|
foreach mot $motorList {
|
||||||
|
if {[lsearch $notList $mot] < 0 } {
|
||||||
|
set rawVal [eval $mot]
|
||||||
|
if {[string first ERROR $rawVal] >= 0} {
|
||||||
|
puts stdout "MOTOR: failed to read $mot, error $rawVal"
|
||||||
|
incr failed
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
set val [string trim [lindex [split $rawVal =] 1]]
|
||||||
|
#----------- test drive three times tolerance
|
||||||
|
set prec [SICSValue "$mot precision"]
|
||||||
|
set status [catch {set move [expr $prec * 3.]} msg]
|
||||||
|
#------- this fixes virtual motors which will not have a precision
|
||||||
|
if {$status != 0} {
|
||||||
|
set move 0.3
|
||||||
|
}
|
||||||
|
set newval [expr $val + $move]
|
||||||
|
set status [catch {eval $drivecommand $mot $newval} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
#------------ if we went into a limit, we try the other direction
|
||||||
|
if {[string first limit $msg] > 0} {
|
||||||
|
set newval [expr $val - $move]
|
||||||
|
set status [catch {eval $drivecommand $mot $newval} msg]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if {$status != 0} {
|
||||||
|
puts stdout "MOTOR: failed to drive $mot with $msg"
|
||||||
|
incr failed
|
||||||
|
}
|
||||||
|
#---------- drive back
|
||||||
|
set status [catch {eval $drivecommand $mot $val} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
puts stdout "MOTOR: failed to drive $mot with $msg"
|
||||||
|
incr failed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $failed
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testSaveAndRestore {dir} {
|
||||||
|
backup $dir/insttest.tcl
|
||||||
|
recover $dir/insttest.tcl
|
||||||
|
backup $dir/instdiff.tcl
|
||||||
|
set f1 [exe print $dir/insttest.tcl]
|
||||||
|
set f2 [exe print $dir/instdiff.tcl]
|
||||||
|
set out [open b1.tcl w]
|
||||||
|
puts $out $f1
|
||||||
|
close $out
|
||||||
|
set out [open b2.tcl w]
|
||||||
|
puts $out $f2
|
||||||
|
close $out
|
||||||
|
set status [catch {exec diff b1.tcl b2.tcl} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
puts stdout \
|
||||||
|
"BACKUP/RESTORE: Serious problem: differences in restored parameters"
|
||||||
|
puts stdout "BACKUP/RESTORE: look at diff between b1.tcl and b2.tcl"
|
||||||
|
} else {
|
||||||
|
file delete b1.tcl
|
||||||
|
file delete b2.tcl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testCommand args {
|
||||||
|
set command [join $args]
|
||||||
|
set status [catch {eval $command} txt]
|
||||||
|
if {$status != 0} {
|
||||||
|
puts stdout "COMMAND: Command $command returned with error $txt"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if {[string first ERROR $txt] >= 0} {
|
||||||
|
puts stdout "COMMAND: problem while executing command $command"
|
||||||
|
puts stdout "COMMAND: output is $txt"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if {[string first WARNING $txt] >= 0} {
|
||||||
|
puts stdout "COMMAND: warning while executing command $command"
|
||||||
|
puts stdout "COMMAND: output is: $txt"
|
||||||
|
}
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testCommandList {commandList} {
|
||||||
|
set count 0
|
||||||
|
foreach command $commandList {
|
||||||
|
if {![testCommand $command]} {
|
||||||
|
incr count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $count
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testCommandInterrupt {command instrument user password} {
|
||||||
|
catch {exec ./interrupt.tcl $instrument $user $password &} msg
|
||||||
|
set txt1 [sicscommand $command]
|
||||||
|
set t1 [string match -nocase "*stop*" $txt1]
|
||||||
|
set txt2 [status]
|
||||||
|
set t2 [string match -nocase "*eager*" $txt2]
|
||||||
|
if {$t1 != 1 || $t2 != 1} {
|
||||||
|
puts stdout "INTERRUPT: Interrupting $command failed!"
|
||||||
|
puts stdout "INTERRUPT: message is $txt1"
|
||||||
|
puts stdout "INTERRUPT: status = $txt2"
|
||||||
|
puts stdout "Tests after this may fail!"
|
||||||
|
error "No interrupt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testInterruptList {comList instrument user password} {
|
||||||
|
set int 0
|
||||||
|
foreach com $comList {
|
||||||
|
set status \
|
||||||
|
[catch {testCommandInterrupt $com $instrument $user $password} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
incr int
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $int
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc testVarValue {command value {precision NA}} {
|
||||||
|
set txt [eval $command]
|
||||||
|
if {[string first ERROR $txt] >= 0} {
|
||||||
|
error "Failed to read variable $command"
|
||||||
|
}
|
||||||
|
if {[string first = $txt] > 0} {
|
||||||
|
set l [split $txt =]
|
||||||
|
set val [string trim [lindex $l 1]]
|
||||||
|
} else {
|
||||||
|
set val $txt
|
||||||
|
}
|
||||||
|
if {[string first NA $precision] >= 0} {
|
||||||
|
if {[string first $value $val] < 0} {
|
||||||
|
error "Value $value not found in response $txt"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if {abs($value-$val) > $precision} {
|
||||||
|
error "Bad value $val, expected $value"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return OK
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testVarList {varList} {
|
||||||
|
puts stdout "Testing variable values"
|
||||||
|
set count 0
|
||||||
|
foreach var $varList {
|
||||||
|
if {[llength $var] > 2} {
|
||||||
|
set status [catch {testVarValue [lindex $var 0] \
|
||||||
|
[lindex $var 1] [lindex $var 2]} msg]
|
||||||
|
} else {
|
||||||
|
set status [catch {testVarValue [lindex $var 0] \
|
||||||
|
[lindex $var 1]} msg]
|
||||||
|
}
|
||||||
|
if {$status != 0} {
|
||||||
|
set cmd [lindex $var 0]
|
||||||
|
puts stdout "$msg @ $cmd"
|
||||||
|
incr count
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $count
|
||||||
|
}
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
proc runStandardTests {parArray} {
|
||||||
|
upvar $parArray parameters
|
||||||
|
if { [info exists parameters(inventory)] } {
|
||||||
|
puts stdout "Testing Inventory.."
|
||||||
|
lappend counters [testInventory $parameters(inventory)]
|
||||||
|
} else {
|
||||||
|
lappend counters 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if { [info exists parameters(driveCommand)] && \
|
||||||
|
[info exists parameters(motorList)] && \
|
||||||
|
[info exists parameters(notList)] } {
|
||||||
|
puts stdout "Testing motors... "
|
||||||
|
lappend counters [testMotors $parameters(driveCommand) \
|
||||||
|
$parameters(motorList) $parameters(notList)]
|
||||||
|
} else {
|
||||||
|
lappend counters 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if { [info exists parameters(commandList)] } {
|
||||||
|
puts stdout "Testing a list of commands"
|
||||||
|
lappend counters [testCommandList $parameters(commandList)]
|
||||||
|
} else {
|
||||||
|
lappend counters 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if { [info exists parameters(dir)] } {
|
||||||
|
puts stdout "Testing backup/recover.."
|
||||||
|
catch {testSaveAndRestore $parameters(dir)} msg
|
||||||
|
}
|
||||||
|
|
||||||
|
if { [info exists parameters(interruptList)] && \
|
||||||
|
[info exists parameters(instrument)] && \
|
||||||
|
[info exists parameters(user)] && \
|
||||||
|
[info exists parameters(password)] } {
|
||||||
|
puts stdout "Testing interrupting commands... "
|
||||||
|
lappend counters [testInterruptList $parameters(interruptList) \
|
||||||
|
$parameters(instrument) \
|
||||||
|
$parameters(user) $parameters(password)]
|
||||||
|
} else {
|
||||||
|
lappend counters 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if {[info exists parameters(varList)]} {
|
||||||
|
lappend counters [testVarList $parameters(varList)]
|
||||||
|
} else {
|
||||||
|
lappend counters 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
proc printStandardSummary {counters} {
|
||||||
|
puts stdout [format "%d objects missing" [lindex $counters 0]]
|
||||||
|
puts stdout [format "%d motors failed to drive" [lindex $counters 1]]
|
||||||
|
puts stdout [format "%d commands failed" [lindex $counters 2]]
|
||||||
|
puts stdout [format "%d commands interrupts failed" [lindex $counters 3]]
|
||||||
|
puts stdout [format "%d variable values bad" [lindex $counters 4]]
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc SICSValue {command} {
|
||||||
|
set txt [eval $command]
|
||||||
|
set l [split $txt =]
|
||||||
|
return [string trim [lindex $l 1]]
|
||||||
|
}
|
20
insttest/interrupt.tcl
Executable file
20
insttest/interrupt.tcl
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#------------------------------------------------------------
|
||||||
|
# This is a little script which issues an interrupt to SICS
|
||||||
|
# after five seconds
|
||||||
|
#
|
||||||
|
# Mark Koennecke, October 2006
|
||||||
|
#------------------------------------------------------------
|
||||||
|
if {$argc < 3} {
|
||||||
|
puts stdout "Usage:\n\tinterrupt instrument username password"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
initSicsDebug [lindex $argv 0]
|
||||||
|
config rights [lindex $argv 1] [lindex $argv 2]
|
||||||
|
exec sleep 5
|
||||||
|
puts $socke "INT1712 3"
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
|
|
20
insttest/interrupt.tcl~
Executable file
20
insttest/interrupt.tcl~
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#------------------------------------------------------------
|
||||||
|
# This is a little script which issues an interrupt to SICS
|
||||||
|
# after five seconds
|
||||||
|
#
|
||||||
|
# Mark Koennecke, October 2006
|
||||||
|
#------------------------------------------------------------
|
||||||
|
if {$argc < 4} {
|
||||||
|
puts stdout "Usage:\n\tinterrupt instrument localflag username password"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
initSicsDebug [lindex $argv 0] [lindex $argv 1]
|
||||||
|
config rights [lindex $argv 2] [lindex $argv 3]
|
||||||
|
exec sleep 1
|
||||||
|
puts $socke "INT1712 3"
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
|
|
82
insttest/marstest
Executable file
82
insttest/marstest
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the MARS instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source marsinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument mars
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
set th [SICSValue th01]
|
||||||
|
if {[string equal $instrument local]} {
|
||||||
|
colldr tf 12
|
||||||
|
}
|
||||||
|
|
||||||
|
#---------- configuration
|
||||||
|
lappend notList chopperspeed snailphase masterphase rabbitphase fourphase
|
||||||
|
lappend notList fivephase s1phase mphase s2phase s3phase s4phase mspeed
|
||||||
|
|
||||||
|
lappend commandList "count timer 2"
|
||||||
|
lappend commandList "repeat 2"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
lappend commandList "marsupdateinfo"
|
||||||
|
lappend commandList "colldr th 86."
|
||||||
|
|
||||||
|
|
||||||
|
exe upload
|
||||||
|
exe append count timer 120
|
||||||
|
exe append count timer 120
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "colldr th 77."
|
||||||
|
lappend interruptList "count timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- Test detection system
|
||||||
|
puts stdout "Testing detector"
|
||||||
|
set det 1
|
||||||
|
count timer 600
|
||||||
|
set tf [SICSValue "hm notimebin"]
|
||||||
|
set counts [SICSValue "hm sum 0 24 0 $tf"]
|
||||||
|
if {$counts <= 0} {
|
||||||
|
set det 0
|
||||||
|
}
|
||||||
|
if {$det == 1} {
|
||||||
|
puts stdout "Detector passed"
|
||||||
|
} else {
|
||||||
|
puts stdout "Check detector, found no noise after 10 minutes counting"
|
||||||
|
}
|
||||||
|
#--------- put detector back where it was
|
||||||
|
colldr th $th
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
puts stdout "Choppers NOT tested!!"
|
||||||
|
|
66
insttest/morpheustest
Executable file
66
insttest/morpheustest
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the MORPHEUS instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source morpheusinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument morpheus
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#--------- remember soz position
|
||||||
|
set sompos [SICSValue som]
|
||||||
|
|
||||||
|
set notList [list dil nv]
|
||||||
|
|
||||||
|
lappend commandList "counter setthreshold 1 0"
|
||||||
|
lappend commandList "cscan som 0 .1 2 2"
|
||||||
|
lappend commandList "sscan som 0. .1 3 2"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
|
||||||
|
lappend varList [list "mono dd" 3.354 .1]
|
||||||
|
lappend varList [list "mono ss" -1 .1]
|
||||||
|
|
||||||
|
|
||||||
|
exe upload
|
||||||
|
exe append counter setthreshold 1 0
|
||||||
|
exe append co timer 120
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "drive som 90"
|
||||||
|
lappend interruptList "co timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
set par(varList) $varList
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- put detector back where it was
|
||||||
|
drive som $sompos
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
|
||||||
|
|
61
insttest/narzisstest
Executable file
61
insttest/narzisstest
Executable file
@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the NARZISS instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source narzissinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument narziss
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#--------- remember soz position
|
||||||
|
set sompos [SICSValue som]
|
||||||
|
|
||||||
|
set notList [list dil nv]
|
||||||
|
|
||||||
|
lappend commandList "counter setthreshold 1 0"
|
||||||
|
lappend commandList "cscan som 0 .1 2 2"
|
||||||
|
lappend commandList "sscan som 0. .1 3 2"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
|
||||||
|
exe upload
|
||||||
|
exe append counter setthreshold 1 0
|
||||||
|
exe append co timer 120
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "drive som 90"
|
||||||
|
lappend interruptList "co timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- put om
|
||||||
|
drive som $sompos
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
|
||||||
|
|
66
insttest/polditest
Executable file
66
insttest/polditest
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the POLDI instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source poldiinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument poldi
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#---------- configuration
|
||||||
|
set notList [list chopperspeed]
|
||||||
|
|
||||||
|
lappend commandList "count timer 2"
|
||||||
|
lappend commandList "repeat 2"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
lappend commandList "hm genbin 10 25 333"
|
||||||
|
lappend commandList "hm init"
|
||||||
|
|
||||||
|
lappend varList [list flightpathlength 13870 5]
|
||||||
|
lappend varList [list chopper_dia1 8000 5]
|
||||||
|
lappend varList [list dia1_dia2 2200 5]
|
||||||
|
lappend varList [list chopper_sample 11870 1]
|
||||||
|
lappend varList [list dia2_sample 1670 .5]
|
||||||
|
lappend varList [list detectordist 2000 .5]
|
||||||
|
lappend varList [list x0_det -840 .5]
|
||||||
|
lappend varList [list y0_det -880 .5]
|
||||||
|
lappend varList [list det_size 1.25 .5]
|
||||||
|
|
||||||
|
exe upload
|
||||||
|
exe append count timer 120
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "count timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
set par(varList) $varList
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
puts stdout "Chopper system NOT tested!!"
|
||||||
|
|
112
insttest/rita2test
Executable file
112
insttest/rita2test
Executable file
@ -0,0 +1,112 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the RITA2 instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source rita2inventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument rita2
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
set ompos [SICSValue a3]
|
||||||
|
backup beforetest.tcl
|
||||||
|
#---------- configuration
|
||||||
|
exe upload
|
||||||
|
exe append sc a3 0 da3 .1 np 2 ti 2
|
||||||
|
exe append drive a3 90
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
set notList [list anticollision]
|
||||||
|
|
||||||
|
lappend commandList "sc a3 0 da3 .1 np 2 ti 2"
|
||||||
|
lappend commandList "statusinfo"
|
||||||
|
lappend commandList "hmframe 0"
|
||||||
|
lappend commandList "ritamode none"
|
||||||
|
lappend commandList "ritamode flat"
|
||||||
|
lappend commandList "ritamode focus"
|
||||||
|
lappend commandList "ritamode monoim"
|
||||||
|
lappend commandList "w5s"
|
||||||
|
lappend commandList "slits"
|
||||||
|
lappend commandList "blades"
|
||||||
|
lappend commandList "motors"
|
||||||
|
|
||||||
|
#--------- the TAS set...
|
||||||
|
lappend commandList "do insttestbatch.tcl"
|
||||||
|
lappend commandList "ou a4"
|
||||||
|
lappend commandList "fi a4"
|
||||||
|
lappend commandList "fix a4"
|
||||||
|
lappend commandList "cl a4"
|
||||||
|
lappend commandList "co ti 5"
|
||||||
|
lappend commandList "pr a3,a4"
|
||||||
|
lappend commandList "se title hugo"
|
||||||
|
lappend commandList "li"
|
||||||
|
|
||||||
|
#-------- the TASUB set
|
||||||
|
lappend commandList "ref clear"
|
||||||
|
lappend commandList "cell 3.844 3.844 20.086 90 90 90"
|
||||||
|
lappend commandList "ref 0 0 6 -158.52 -74.77 .11 -.13 5 5"
|
||||||
|
lappend commandList "ref 1 0 0 -63.06 -63.48 .11 -.13 5 5"
|
||||||
|
lappend commandList "makeub 1 2"
|
||||||
|
lappend commandList "dr qh 1 0 0 en .1"
|
||||||
|
lappend commandList "listub"
|
||||||
|
|
||||||
|
lappend interruptList "dr om 90"
|
||||||
|
lappend interruptList "co ti 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
lappend varList [list "tasub mono dd" 3.3546 .01]
|
||||||
|
lappend varList [list "tasub mono ss" 1 .01]
|
||||||
|
lappend varList [list "tasub ana dd" 3.3546 .01]
|
||||||
|
lappend varList [list "tasub ana ss" 1 .01]
|
||||||
|
lappend varList [list analyzerdistance 33.9 .1]
|
||||||
|
lappend varList [list sampledistance 120.699 .1]
|
||||||
|
lappend varList [list bladedistance 2.5 .1]
|
||||||
|
lappend varList [list detectordistance 2.5 .1]
|
||||||
|
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) dr
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
set par(varList) $varList
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- Test detection system
|
||||||
|
puts stdout "Testing detector"
|
||||||
|
set det 1
|
||||||
|
co ti 600
|
||||||
|
set counts [SICSValue "hm sum 0 128 0 128"]
|
||||||
|
if {$counts <= 0} {
|
||||||
|
set det 0
|
||||||
|
}
|
||||||
|
if {$det == 1} {
|
||||||
|
puts stdout "Detector passed"
|
||||||
|
} else {
|
||||||
|
puts stdout "Check detector, found no noise after 10 minutes counting"
|
||||||
|
}
|
||||||
|
#--------- put detector back where it was
|
||||||
|
recover beforetest.tcl
|
||||||
|
dr om $ompos
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
|
204
insttest/sansinventory.tcl
Normal file
204
insttest/sansinventory.tcl
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
lappend inventory makeobject
|
||||||
|
lappend inventory removeobject
|
||||||
|
lappend inventory graph
|
||||||
|
lappend inventory statistics
|
||||||
|
lappend inventory exe
|
||||||
|
lappend inventory sics_exitus
|
||||||
|
lappend inventory fileeval
|
||||||
|
lappend inventory interneval
|
||||||
|
lappend inventory clientput
|
||||||
|
lappend inventory broadcast
|
||||||
|
lappend inventory transact
|
||||||
|
lappend inventory fulltransact
|
||||||
|
lappend inventory sicsprompt
|
||||||
|
lappend inventory publish
|
||||||
|
lappend inventory getlog
|
||||||
|
lappend inventory wait
|
||||||
|
lappend inventory status
|
||||||
|
lappend inventory resetserver
|
||||||
|
lappend inventory dir
|
||||||
|
lappend inventory backup
|
||||||
|
lappend inventory restore
|
||||||
|
lappend inventory setint
|
||||||
|
lappend inventory getint
|
||||||
|
lappend inventory sicstype
|
||||||
|
lappend inventory sicsbounds
|
||||||
|
lappend inventory sicsstatus
|
||||||
|
lappend inventory sicstime
|
||||||
|
lappend inventory sicsdescriptor
|
||||||
|
lappend inventory setstatus
|
||||||
|
lappend inventory db
|
||||||
|
lappend inventory evfactory
|
||||||
|
lappend inventory emon
|
||||||
|
lappend inventory commandlog
|
||||||
|
lappend inventory udpquieck
|
||||||
|
lappend inventory alias
|
||||||
|
lappend inventory sicscron
|
||||||
|
lappend inventory sicsdatafactory
|
||||||
|
lappend inventory scriptcallback
|
||||||
|
lappend inventory help
|
||||||
|
lappend inventory list
|
||||||
|
lappend inventory installhdb
|
||||||
|
lappend inventory stopexe
|
||||||
|
lappend inventory listexe
|
||||||
|
lappend inventory sicsidle
|
||||||
|
lappend inventory success
|
||||||
|
lappend inventory pause
|
||||||
|
lappend inventory devexec
|
||||||
|
lappend inventory makemulti
|
||||||
|
lappend inventory definealias
|
||||||
|
lappend inventory makeoptimise
|
||||||
|
lappend inventory kill_command
|
||||||
|
lappend inventory anticollisioninstall
|
||||||
|
lappend inventory tclreplacedrivable
|
||||||
|
lappend inventory drivableinvoke
|
||||||
|
lappend inventory makeswhpmotor
|
||||||
|
lappend inventory remob
|
||||||
|
lappend inventory token
|
||||||
|
lappend inventory instrument
|
||||||
|
lappend inventory title
|
||||||
|
lappend inventory user
|
||||||
|
lappend inventory subtitle
|
||||||
|
lappend inventory environment
|
||||||
|
lappend inventory comment
|
||||||
|
lappend inventory samplename
|
||||||
|
lappend inventory email
|
||||||
|
lappend inventory fax
|
||||||
|
lappend inventory phone
|
||||||
|
lappend inventory adress
|
||||||
|
lappend inventory sample
|
||||||
|
lappend inventory batchroot
|
||||||
|
lappend inventory starttime
|
||||||
|
lappend inventory selectedbeamstop
|
||||||
|
lappend inventory sicsdatapath
|
||||||
|
lappend inventory sicsdataprefix
|
||||||
|
lappend inventory sicsdatapostfix
|
||||||
|
lappend inventory sicsdatanumber
|
||||||
|
lappend inventory killfile
|
||||||
|
lappend inventory storedata
|
||||||
|
lappend inventory som
|
||||||
|
lappend inventory sax
|
||||||
|
lappend inventory say
|
||||||
|
lappend inventory saz
|
||||||
|
lappend inventory spos
|
||||||
|
lappend inventory mz
|
||||||
|
lappend inventory mom
|
||||||
|
lappend inventory gphi
|
||||||
|
lappend inventory gtheta
|
||||||
|
lappend inventory detectorx
|
||||||
|
lappend inventory detectory
|
||||||
|
lappend inventory detectorrotation
|
||||||
|
lappend inventory beamstopy
|
||||||
|
lappend inventory beamstopx
|
||||||
|
lappend inventory beamstopy2
|
||||||
|
lappend inventory tilt
|
||||||
|
lappend inventory nvs
|
||||||
|
lappend inventory nvswatch
|
||||||
|
lappend inventory lambda
|
||||||
|
lappend inventory drive
|
||||||
|
lappend inventory run
|
||||||
|
lappend inventory <EFBFBD>tag:
|
||||||
|
lappend inventory cryomagnetsampleholder
|
||||||
|
lappend inventory sampletable
|
||||||
|
lappend inventory detector
|
||||||
|
lappend inventory beamstop
|
||||||
|
lappend inventory bs
|
||||||
|
lappend inventory dt
|
||||||
|
lappend inventory st
|
||||||
|
lappend inventory cryo
|
||||||
|
lappend inventory counter
|
||||||
|
lappend inventory banana
|
||||||
|
lappend inventory serialport
|
||||||
|
lappend inventory p1
|
||||||
|
lappend inventory p2
|
||||||
|
lappend inventory p3
|
||||||
|
lappend inventory p4
|
||||||
|
lappend inventory p5
|
||||||
|
lappend inventory p11
|
||||||
|
lappend inventory p12
|
||||||
|
lappend inventory p13
|
||||||
|
lappend inventory p14
|
||||||
|
lappend inventory p15
|
||||||
|
lappend inventory buf
|
||||||
|
lappend inventory stack
|
||||||
|
lappend inventory sps2
|
||||||
|
lappend inventory xydata0
|
||||||
|
lappend inventory xydata1
|
||||||
|
lappend inventory xydata2
|
||||||
|
lappend inventory xydata3
|
||||||
|
lappend inventory xydata4
|
||||||
|
lappend inventory xydata5
|
||||||
|
lappend inventory xydata6
|
||||||
|
lappend inventory xydata7
|
||||||
|
lappend inventory xydata8
|
||||||
|
lappend inventory xydata9
|
||||||
|
lappend inventory xydata
|
||||||
|
lappend inventory nxscript
|
||||||
|
lappend inventory psdframe
|
||||||
|
lappend inventory sps1
|
||||||
|
lappend inventory inihaakearray
|
||||||
|
lappend inventory logbook
|
||||||
|
lappend inventory count
|
||||||
|
lappend inventory quickcount
|
||||||
|
lappend inventory turbocount
|
||||||
|
lappend inventory repeat
|
||||||
|
lappend inventory qrange
|
||||||
|
lappend inventory instrok
|
||||||
|
lappend inventory beam
|
||||||
|
lappend inventory detemp
|
||||||
|
lappend inventory temp2
|
||||||
|
lappend inventory temp3
|
||||||
|
lappend inventory temp4
|
||||||
|
lappend inventory bschange
|
||||||
|
lappend inventory bscfree
|
||||||
|
lappend inventory bsout
|
||||||
|
lappend inventory bsin
|
||||||
|
lappend inventory bscslot
|
||||||
|
lappend inventory shutter
|
||||||
|
lappend inventory batchrun
|
||||||
|
lappend inventory countinfo
|
||||||
|
lappend inventory coll
|
||||||
|
lappend inventory att
|
||||||
|
lappend inventory get_ready1
|
||||||
|
lappend inventory get_ready2
|
||||||
|
lappend inventory set_ready1
|
||||||
|
lappend inventory set_ready2
|
||||||
|
lappend inventory reset_ready
|
||||||
|
lappend inventory sansstore
|
||||||
|
lappend inventory turbostore
|
||||||
|
lappend inventory statusinfo
|
||||||
|
lappend inventory hmframe
|
||||||
|
lappend inventory fileframe
|
||||||
|
lappend inventory tofel
|
||||||
|
lappend inventory antitofel
|
||||||
|
lappend inventory gc
|
||||||
|
lappend inventory strobo
|
||||||
|
lappend inventory static
|
||||||
|
lappend inventory cyclic
|
||||||
|
lappend inventory wwwsics
|
||||||
|
lappend inventory collok
|
||||||
|
lappend inventory man
|
||||||
|
lappend inventory update_remob
|
||||||
|
lappend inventory samenv
|
||||||
|
lappend inventory cfgenv
|
||||||
|
lappend inventory flip
|
||||||
|
lappend inventory performance
|
||||||
|
lappend motors som
|
||||||
|
lappend motors sax
|
||||||
|
lappend motors say
|
||||||
|
lappend motors saz
|
||||||
|
lappend motors spos
|
||||||
|
lappend motors mz
|
||||||
|
lappend motors mom
|
||||||
|
lappend motors gphi
|
||||||
|
lappend motors gtheta
|
||||||
|
lappend motors detectorx
|
||||||
|
lappend motors detectory
|
||||||
|
lappend motors detectorrotation
|
||||||
|
lappend motors beamstopy
|
||||||
|
lappend motors beamstopx
|
||||||
|
lappend motors beamstopy2
|
||||||
|
lappend motors tilt
|
||||||
|
lappend motors nvs
|
||||||
|
lappend motors nvswatch
|
||||||
|
lappend motors lambda
|
88
insttest/sanstest
Executable file
88
insttest/sanstest
Executable file
@ -0,0 +1,88 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the SANS instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source sansinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument sans
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#--------- remember detector position...
|
||||||
|
set detpos [SICSValue detectorx]
|
||||||
|
bsin
|
||||||
|
drive detectorx 3.
|
||||||
|
|
||||||
|
#---------- configuration
|
||||||
|
set notList [list nvs nvswatch lambda]
|
||||||
|
|
||||||
|
lappend commandList "count timer 2"
|
||||||
|
lappend commandList "repeat 2"
|
||||||
|
lappend commandList "coll 3"
|
||||||
|
lappend commandList "testVarValue coll 3"
|
||||||
|
lappend commandList "coll 18"
|
||||||
|
lappend commandList "testVarValue coll 18"
|
||||||
|
lappend commandList "bsout"
|
||||||
|
lappend commandList "bsin"
|
||||||
|
lappend commandList "att 1"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
lappend commandList "statusinfo"
|
||||||
|
lappend commandList "hmframe 0"
|
||||||
|
lappend commandList "fileframe 0 0"
|
||||||
|
|
||||||
|
|
||||||
|
exe upload
|
||||||
|
exe append drive detectorx 3.
|
||||||
|
exe append drive detectorx 18.
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "drive detectorx 18."
|
||||||
|
lappend interruptList "count timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- Test detection system
|
||||||
|
puts stdout "Testing detector"
|
||||||
|
set det 1
|
||||||
|
count timer 600
|
||||||
|
set counts [SICSValue "banana sum 0 128 0 128"]
|
||||||
|
if {$counts <= 0} {
|
||||||
|
set det 0
|
||||||
|
}
|
||||||
|
if {$det == 1} {
|
||||||
|
puts stdout "Detector passed"
|
||||||
|
} else {
|
||||||
|
puts stdout "Check detector, found no noise after 10 minutes counting"
|
||||||
|
}
|
||||||
|
#--------- put detector back where it was
|
||||||
|
drive detectorx $detpos
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
puts stdout "Velocity selector NOT tested!!"
|
||||||
|
|
73
insttest/sicstcldebug.tcl
Normal file
73
insttest/sicstcldebug.tcl
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
#------------------------------------------------------------------
|
||||||
|
# This is a helper file in order to debug SICS Tcl scripts. The idea
|
||||||
|
# is that a connection to a SICS interpreter at localhost:2911 is opened.
|
||||||
|
# Then unknown is reimplemented to send unknown commands (which must be
|
||||||
|
# SICS commands) to the SICS interpreter for evaluation. This is done
|
||||||
|
# with transact in order to figure out when SICS finished processing.
|
||||||
|
# Thus is should be possible to debug SICS Tcl scripts in a normal
|
||||||
|
# standalone interpreter without the overhead of restarting SICS
|
||||||
|
# all the time. It may even be possible to use one of the normal
|
||||||
|
# Tcl debuggers then....
|
||||||
|
#
|
||||||
|
# Mark Koennecke, February 2006
|
||||||
|
#
|
||||||
|
# Revamped for use in testing SICS instruments.
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------
|
||||||
|
set host(amor) amor.psi.ch
|
||||||
|
set host(dmc) dmc.psi.ch
|
||||||
|
set host(focus) focus.psi.ch
|
||||||
|
set host(hrpt) hrpt.psi.ch
|
||||||
|
set host(mars) mars.psi.ch
|
||||||
|
set host(morpheus) morpheus.psi.ch
|
||||||
|
set host(narziss) narziss.psi.ch
|
||||||
|
set host(poldi) poldi.psi.ch
|
||||||
|
set host(rita2) rita2.psi.ch
|
||||||
|
set host(sans) sans.psi.ch
|
||||||
|
set host(sansli) sans2.psi.ch
|
||||||
|
set host(tasp) tasp.psi.ch
|
||||||
|
set host(trics) trics.psi.ch
|
||||||
|
set host(local) localhost
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# initialize the socket before debugging. If local == 1, then a
|
||||||
|
# connection to localhost is built
|
||||||
|
#------------------------------------------------------------------
|
||||||
|
proc initSicsDebug {instrument} {
|
||||||
|
global socke host
|
||||||
|
catch {close $socke}
|
||||||
|
set status [catch {set compi $host($instrument)} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
error "Host for $instrument not found"
|
||||||
|
}
|
||||||
|
set socke [socket $compi 2911]
|
||||||
|
gets $socke
|
||||||
|
puts $socke "Spy 007"
|
||||||
|
flush $socke
|
||||||
|
gets $socke
|
||||||
|
}
|
||||||
|
#----------------------------------------------------------------
|
||||||
|
proc sicscommand args {
|
||||||
|
global socke
|
||||||
|
append com "transact " [join $args]
|
||||||
|
puts $socke $com
|
||||||
|
flush $socke
|
||||||
|
set reply ""
|
||||||
|
while {1} {
|
||||||
|
set line [gets $socke]
|
||||||
|
if {[string first TRANSACTIONFINISHED $line] >= 0} {
|
||||||
|
return $reply
|
||||||
|
} else {
|
||||||
|
append reply $line "\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------
|
||||||
|
proc unknown args {
|
||||||
|
return [sicscommand $args]
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------
|
||||||
|
proc clientput args {
|
||||||
|
puts stdout [join $args]
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------
|
314
insttest/sinqcom
Executable file
314
insttest/sinqcom
Executable file
@ -0,0 +1,314 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This program tests the communication to the various devices
|
||||||
|
# belonging to an instrument. For this to work, the SICServer
|
||||||
|
# and all accociated process have to be off: monit stop all.
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
set debug 1
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc pingTest {host} {
|
||||||
|
set status [catch {exec ping -c 5 $host} msg]
|
||||||
|
if {$status == 0} {
|
||||||
|
return OK
|
||||||
|
} else {
|
||||||
|
error "Ping failed for $host"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
proc readReply {chan} {
|
||||||
|
global replyData
|
||||||
|
gets $chan replyData
|
||||||
|
}
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
proc timeout {} {
|
||||||
|
global replyData
|
||||||
|
set replyData TIMEOUT
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc sendCommand {chan command} {
|
||||||
|
global replyData debug
|
||||||
|
puts $chan $command
|
||||||
|
flush $chan
|
||||||
|
if {$debug == 1} {
|
||||||
|
puts stdout "Sent $command"
|
||||||
|
}
|
||||||
|
after 20000 timeout
|
||||||
|
vwait replyData
|
||||||
|
if {$debug == 1} {
|
||||||
|
puts stdout "Received $replyData"
|
||||||
|
}
|
||||||
|
return $replyData
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc makeConnection {host port} {
|
||||||
|
set socke [socket $host $port]
|
||||||
|
fconfigure $socke -blocking 0
|
||||||
|
fileevent $socke readable [list readReply $socke]
|
||||||
|
return $socke
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testEL737 {host port} {
|
||||||
|
puts stdout "Testing for EL737 counter at $host $port"
|
||||||
|
if {[catch {pingTest $host} msg] != 0} {
|
||||||
|
error $msg
|
||||||
|
}
|
||||||
|
set socke [makeConnection $host $port]
|
||||||
|
sendCommand $socke "RMT 1\r\n"
|
||||||
|
sendCommand $socke "RMT 1\r\n"
|
||||||
|
sendCommand $socke "ECHO 0\r\n"
|
||||||
|
sendCommand $socke "ECHO 0\r\n"
|
||||||
|
for {set i 0} {$i < 3} {incr i} {
|
||||||
|
set replyData [sendCommand $socke "ID\r\n"]
|
||||||
|
if {[string first EL737 $replyData] >= 0} {
|
||||||
|
close $socke
|
||||||
|
return OK
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close $socke
|
||||||
|
error "Bad reply $replyData from EL737"
|
||||||
|
}
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
proc testEL734 {host port} {
|
||||||
|
puts stdout "Testing for EL734 motor controller at $host $port"
|
||||||
|
if {[catch {pingTest $host} msg] != 0} {
|
||||||
|
error $msg
|
||||||
|
}
|
||||||
|
set socke [makeConnection $host $port]
|
||||||
|
sendCommand $socke "RMT 1\n"
|
||||||
|
sendCommand $socke "ECHO 0\n"
|
||||||
|
sendCommand $socke "RMT 1\n"
|
||||||
|
sendCommand $socke "ECHO 0\n"
|
||||||
|
for {set i 0} {$i < 10} {incr i} {
|
||||||
|
set replyData [sendCommand $socke "ID\n"]
|
||||||
|
if {[string first EL734 $replyData] >= 0} {
|
||||||
|
close $socke
|
||||||
|
return OK
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close $socke
|
||||||
|
error "Bad reply $replyData from EL734"
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testSPS {host port} {
|
||||||
|
puts stdout "Testing SPS not yet implemented"
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testVelo {host port} {
|
||||||
|
puts stdout "Testing velocity selector not yet implemented"
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testChopper {host port} {
|
||||||
|
puts stdout "Testing Choppers not yet implemented"
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testJuelich {host port} {
|
||||||
|
puts stdout "Testing Juelich Choppers not yet implemented"
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testEmmenegger {host port} {
|
||||||
|
puts stdout "Testing Emmenegger electronic not yet implemented"
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testMDIF {host port} {
|
||||||
|
puts stdout "Testing MDIF electronic not yet implemented"
|
||||||
|
}
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
proc testHM {host} {
|
||||||
|
if {[catch {pingTest $host} msg] != 0} {
|
||||||
|
error $msg
|
||||||
|
}
|
||||||
|
set status [catch {exec sinqhm_ctrl -host $host status} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
error "HM $host failed with $msg"
|
||||||
|
}
|
||||||
|
set idx [string first Histogramming $msg]
|
||||||
|
set idx2 [string first acquisition $msg]
|
||||||
|
set idx3 [string first SinqHM $msg]
|
||||||
|
if {$idx < 0 || $idx2 < 0 || $idx3 < 0} {
|
||||||
|
puts stdout $msg
|
||||||
|
error "Message does not seem to come from SinqHM"
|
||||||
|
}
|
||||||
|
return OK
|
||||||
|
}
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
proc testHttpHM {host} {
|
||||||
|
if {[catch {pingTest $host} msg] != 0} {
|
||||||
|
error $msg
|
||||||
|
}
|
||||||
|
catch \
|
||||||
|
{exec wget --user=spy --password=007 \
|
||||||
|
http://$host/admin/status.egi >& wget.lis}
|
||||||
|
set in [open wget.lis r]
|
||||||
|
while {[gets $in line] >= 0} {
|
||||||
|
append msg $line "\n"
|
||||||
|
}
|
||||||
|
close $in
|
||||||
|
set idx [string first 200 $msg]
|
||||||
|
set idx2 [string first OK $msg]
|
||||||
|
set idx3 [string first status.egi $msg]
|
||||||
|
if {$idx < 0 || $idx2 < 0 || $idx3 < 0} {
|
||||||
|
puts stdout $msg
|
||||||
|
error "Message does not seem to come from Sinq Http HM"
|
||||||
|
}
|
||||||
|
return OK
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------
|
||||||
|
proc testList {testList} {
|
||||||
|
foreach com $testList {
|
||||||
|
catch {eval $com} msg
|
||||||
|
puts stdout $msg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#======================= Database Section ===============================
|
||||||
|
set ts psts224
|
||||||
|
lappend amor [list testPing amor.psi.ch]
|
||||||
|
lappend amor [list testEL734 $ts 3002]
|
||||||
|
lappend amor [list testEL734 $ts 3003]
|
||||||
|
lappend amor [list testEL734 $ts 3004]
|
||||||
|
lappend amor [list testEL737 $ts 3005]
|
||||||
|
lappend amor [list testSPS $ts 3006]
|
||||||
|
lappend amor [list testEmmenegger $ts 3007]
|
||||||
|
lappend amor [list testChopper $ts 3014]
|
||||||
|
lappend amor [list testMDIF $ts 3015]
|
||||||
|
lappend amor [list testHttpHM lnse10]
|
||||||
|
|
||||||
|
set ts psts225
|
||||||
|
lappend dmc [list testPing dmc.psi.ch]
|
||||||
|
lappend dmc [list testEL734 $ts 3002]
|
||||||
|
lappend dmc [list testEL737 $ts 3006]
|
||||||
|
lappend dmc [list testHM lnse01]
|
||||||
|
|
||||||
|
set ts psts227
|
||||||
|
lappend focus [list testPing focus.psi.ch]
|
||||||
|
lappend focus [list testEL734 $ts 3002]
|
||||||
|
lappend focus [list testEL734 $ts 3003]
|
||||||
|
lappend focus [list testSPS $ts 3004]
|
||||||
|
lappend focus [list testEL737 $ts 3005]
|
||||||
|
lappend focus [list testEmmenegger $ts 3006]
|
||||||
|
lappend focus [list testChopper $ts 3008]
|
||||||
|
lappend focus [list testHM lnse04]
|
||||||
|
lappend focus [list testHM lnse05.vme]
|
||||||
|
lappend focus [list testHM lnse06.vme]
|
||||||
|
# Missing 2D detector and MDIF
|
||||||
|
|
||||||
|
set ts psts229
|
||||||
|
lappend hrpt [list testPing hrpt.psi.ch]
|
||||||
|
lappend hrpt [list testEL734 $ts 3002]
|
||||||
|
lappend hrpt [list testEL734 $ts 3003]
|
||||||
|
lappend hrpt [list testEL734 $ts 3004]
|
||||||
|
lappend hrpt [list testEL734 $ts 3005]
|
||||||
|
lappend hrpt [list testEL737 $ts 3006]
|
||||||
|
lappend hrpt [list testSPS $ts 3008]
|
||||||
|
lappend hrpt [list testHM lnse03]
|
||||||
|
|
||||||
|
set ts psts235
|
||||||
|
lappend mars [list testPing mars.psi.ch]
|
||||||
|
lappend mars [list testEL734 $ts 3002]
|
||||||
|
lappend mars [list testEL734 $ts 3003]
|
||||||
|
lappend mars [list testEL734 $ts 3004]
|
||||||
|
lappend mars [list testEL734 $ts 3005]
|
||||||
|
lappend mars [list testEL734 $ts 3006]
|
||||||
|
lappend mars [list testEL734 $ts 3007]
|
||||||
|
lappend mars [list testEL737 $ts 3008]
|
||||||
|
lappend mars [list testJuelich $ts 3009]
|
||||||
|
lappend mars [list testMDIF $ts 3010]
|
||||||
|
lappend mars [list testHttpHM lnse13]
|
||||||
|
|
||||||
|
set ts lnsts06
|
||||||
|
lappend morpheus [list testPing morpheus.psi.ch]
|
||||||
|
lappend morpheus [list testEL734 $ts 3002]
|
||||||
|
lappend morpheus [list testEL734 $ts 3003]
|
||||||
|
lappend morpheus [list testEL734 $ts 3004]
|
||||||
|
lappend morpheus [list testEL737 $ts 3005]
|
||||||
|
lappend morpheus [list testSPS $ts 3006]
|
||||||
|
|
||||||
|
set ts psts230
|
||||||
|
#stimmt das noch? Ist da nicht dieser moxa drinne?
|
||||||
|
lappend narziss [list testPing narziss.psi.ch]
|
||||||
|
lappend narziss [list testEL734 $ts 3002]
|
||||||
|
lappend narziss [list testEL737 $ts 3003]
|
||||||
|
|
||||||
|
|
||||||
|
set ts psts240
|
||||||
|
lappend poldi [list testPing poldi.psi.ch]
|
||||||
|
lappend poldi [list testEL734 $ts 3002]
|
||||||
|
lappend poldi [list testEL734 $ts 3003]
|
||||||
|
lappend poldi [list testEL737 $ts 3004]
|
||||||
|
lappend poldi [list testChopper $ts 3005]
|
||||||
|
lappend poldi [list testHM lnse11]
|
||||||
|
#------ missing TIWI electronic
|
||||||
|
|
||||||
|
set ts lnsts02
|
||||||
|
lappend rita2 [list testPing rita2.psi.ch]
|
||||||
|
lappend rita2 [list testPing lnsgpib01.psi.ch]
|
||||||
|
lappend rita2 [list testEL734 $ts 3002]
|
||||||
|
lappend rita2 [list testEL737 $ts 3005]
|
||||||
|
#-------- can GPIB communication more sensibly be tested???
|
||||||
|
|
||||||
|
set ts psts223
|
||||||
|
lappend sans [list testPing sans.psi.ch]
|
||||||
|
lappend sans [list testEL734 $ts 3002]
|
||||||
|
lappend sans [list testEL734 $ts 3003]
|
||||||
|
lappend sans [list testEL734 $ts 3004]
|
||||||
|
lappend sans [list testEL737 $ts 3005]
|
||||||
|
lappend sans [list testVelo $ts 3006]
|
||||||
|
lappend sans [list testSPS $ts 3009]
|
||||||
|
lappend sans [list testSPS $ts 3010]
|
||||||
|
#---------- another count of TIWI
|
||||||
|
|
||||||
|
set ts psts234
|
||||||
|
lappend sansli [list testPing sans2.psi.ch]
|
||||||
|
lappend sansli [list testEL734 $ts 3002]
|
||||||
|
lappend sansli [list testEL734 $ts 3003]
|
||||||
|
lappend sansli [list testVelo $ts 3004]
|
||||||
|
lappend sansli [list testEL737 $ts 3009]
|
||||||
|
|
||||||
|
set ts psts231
|
||||||
|
lappend tasp [list testPing tasp.psi.ch]
|
||||||
|
lappend tasp [list testEL734 $ts 3002]
|
||||||
|
lappend tasp [list testEL734 $ts 3003]
|
||||||
|
lappend tasp [list testEL737 $ts 3004]
|
||||||
|
|
||||||
|
set ts lnsts05
|
||||||
|
lappend trics [list testPing trics.psi.ch]
|
||||||
|
lappend trics [list testEL734 $ts 3002]
|
||||||
|
lappend trics [list testEL734 $ts 3003]
|
||||||
|
lappend trics [list testEL734 $ts 3004]
|
||||||
|
lappend trics [list testEL734 $ts 3005]
|
||||||
|
lappend trics [list testEL734 $ts 3006]
|
||||||
|
lappend trics [list testEL737 $ts 3007]
|
||||||
|
lappend trics [list testHM lnse07]
|
||||||
|
lappend trics [list testHM lnse08]
|
||||||
|
lappend trics [list testHM lnse09]
|
||||||
|
|
||||||
|
#====================== "main" program ===================
|
||||||
|
if {$argc < 1} {
|
||||||
|
puts stdout "Usage:\n\tsinqcom instrument"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
puts stdout "=== This program will fail if SICS ist still running! ==="
|
||||||
|
puts stdout "=== This program will also fail if not run from a computer within the SINQ subnet ==="
|
||||||
|
|
||||||
|
switch [lindex $argv 0] {
|
||||||
|
amor {testList $amor}
|
||||||
|
dmc {testList $dmc}
|
||||||
|
focus {testList $focus}
|
||||||
|
hrpt {testList $hrpt}
|
||||||
|
mars {testList $mars}
|
||||||
|
morpheus {testList $morpheus}
|
||||||
|
narziss {testList $narziss}
|
||||||
|
poldi {testList $poldi}
|
||||||
|
rita2 {testList $rita2}
|
||||||
|
sans {testList $sans}
|
||||||
|
sans2 {testList $sansli}
|
||||||
|
sansli {testList $sansli}
|
||||||
|
tasp {testList $tasp}
|
||||||
|
trics {testList $trics}
|
||||||
|
default {"Instrument not known"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
puts stdout "Done"
|
||||||
|
exit 0
|
94
insttest/tasptest
Executable file
94
insttest/tasptest
Executable file
@ -0,0 +1,94 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the TASP instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source taspinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument tasp
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
set ompos [SICSValue a3]
|
||||||
|
backup beforetest.tcl
|
||||||
|
#---------- configuration
|
||||||
|
exe upload
|
||||||
|
exe append sc a3 0 da3 .1 np 2 ti 2
|
||||||
|
exe append drive a3 90
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
set notList [list forceqe dil mf nv]
|
||||||
|
|
||||||
|
lappend commandList "sc a3 0 da3 .1 np 2 ti 2"
|
||||||
|
#--------- the TAS set...
|
||||||
|
lappend commandList "do insttestbatch.tcl"
|
||||||
|
lappend commandList "ou a4"
|
||||||
|
lappend commandList "fi a4"
|
||||||
|
lappend commandList "fix a4"
|
||||||
|
lappend commandList "cl a4"
|
||||||
|
lappend commandList "co ti 5"
|
||||||
|
lappend commandList "pr a3,a4"
|
||||||
|
lappend commandList "se title hugo"
|
||||||
|
lappend commandList "li"
|
||||||
|
|
||||||
|
#---------- The MAD set ...
|
||||||
|
lappend commandList "se as 4.558 bs 4.558 cs 4.558 bb 90 cc 90 aa 90"
|
||||||
|
lappend commandList "se ax 1 ay 1 az 0"
|
||||||
|
lappend commandList "se bx 0 by 0 bz 1"
|
||||||
|
lappend commandList "se ss 1 sa -1"
|
||||||
|
lappend commandList "se fx 2"
|
||||||
|
lappend commandList "dr ei 7.8"
|
||||||
|
lappend commandList "dr ef 8. "
|
||||||
|
lappend commandList "dr qh 1 1 1"
|
||||||
|
lappend commandList "testVarValue ei 7.8 .1"
|
||||||
|
lappend commandList "testVarValue ef 8.0 .1"
|
||||||
|
lappend commandList "testVarValue en .2 .1"
|
||||||
|
lappend commandList "testVarValue a1 -28.86 .1"
|
||||||
|
lappend commandList "testVarValue a2 -57.73 .1"
|
||||||
|
lappend commandList "testVarValue a3 -88.04 .1"
|
||||||
|
lappend commandList "testVarValue a4 75.37 .1"
|
||||||
|
lappend commandList "testVarValue a5 -28.47 .1"
|
||||||
|
lappend commandList "testVarValue a6 -56.94 .1"
|
||||||
|
lappend commandList "testVarValue qm 2.38 .1"
|
||||||
|
|
||||||
|
lappend interruptList "dr om 90"
|
||||||
|
lappend interruptList "co ti 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
lappend varList [list "da" 3.3546 .01]
|
||||||
|
lappend varList [list "sm" -1 .01]
|
||||||
|
lappend varList [list "dm" 3.3546 .01]
|
||||||
|
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) dr
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
set par(varList) $varList
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- put detector back where it was
|
||||||
|
recover beforetest.tcl
|
||||||
|
dr a3 $ompos
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
|
94
insttest/tricstest
Executable file
94
insttest/tricstest
Executable file
@ -0,0 +1,94 @@
|
|||||||
|
#!/usr/bin/tclsh
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# This is the regression test for SICS on the TRICS instrument
|
||||||
|
#
|
||||||
|
# Mark Koennecke, November 2006
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
source sicstcldebug.tcl
|
||||||
|
source insttestutil.tcl
|
||||||
|
source tricsinventory.tcl
|
||||||
|
|
||||||
|
#------ If there is another argument, test at localhost: for debugging...
|
||||||
|
if {$argc > 0} {
|
||||||
|
set instrument local
|
||||||
|
} else {
|
||||||
|
set instrument trics
|
||||||
|
}
|
||||||
|
|
||||||
|
initSicsDebug $instrument
|
||||||
|
config rights lnsmanager lnsSICSlns
|
||||||
|
|
||||||
|
#--------- remember soz position
|
||||||
|
set sompos [SICSValue om]
|
||||||
|
backup beforetest.tcl
|
||||||
|
|
||||||
|
set notList [list dil nv cone]
|
||||||
|
|
||||||
|
lappend commandList "counter setthreshold 1 0"
|
||||||
|
lappend commandList "scan1d"
|
||||||
|
lappend commandList "cscan om 0 .1 2 2"
|
||||||
|
lappend commandList "sscan om 0. .1 3 2"
|
||||||
|
lappend commandList "scan2d"
|
||||||
|
lappend commandList "cscan om 0 .1 2 2"
|
||||||
|
lappend commandList "sscan om 0. .1 3 2"
|
||||||
|
lappend commandList "scan1d"
|
||||||
|
lappend commandList "wwwsics"
|
||||||
|
lappend commandList "wwwhm"
|
||||||
|
|
||||||
|
# TODO: add tests for the real four circle stuff. This is as of now
|
||||||
|
# deferred until the TRICS software has been reorganized.
|
||||||
|
# Most of the four circle tests should go into the regression
|
||||||
|
# test for the SICServer anyway.
|
||||||
|
|
||||||
|
lappend varList [list xscale1 0.74 .1]
|
||||||
|
lappend varList [list xscale2 0.74 .1]
|
||||||
|
lappend varList [list xscale3 -0.74 .1]
|
||||||
|
lappend varList [list zscale1 1.486 .1]
|
||||||
|
lappend varList [list zscale2 1.486 .1]
|
||||||
|
lappend varList [list zscale3 1.486 .1]
|
||||||
|
lappend varList [list xnull1 128 5]
|
||||||
|
lappend varList [list xnull2 128 5]
|
||||||
|
lappend varList [list xnull2 128 5]
|
||||||
|
lappend varList [list znull1 128 5]
|
||||||
|
lappend varList [list znull2 64 5]
|
||||||
|
lappend varList [list znull3 128 5]
|
||||||
|
lappend varList [list sttoffset1 0 .5]
|
||||||
|
lappend varList [list sttoffset2 8 .5]
|
||||||
|
lappend varList [list sttoffset3 1.4 .5]
|
||||||
|
lappend varList [list dist2 550 120]
|
||||||
|
lappend varList [list dist3 550 120]
|
||||||
|
|
||||||
|
|
||||||
|
exe upload
|
||||||
|
exe append counter setthreshold 1 0
|
||||||
|
exe append count timer 120
|
||||||
|
exe forcesave insttestbatch.tcl
|
||||||
|
|
||||||
|
lappend interruptList "drive om 90"
|
||||||
|
lappend interruptList "count timer 120"
|
||||||
|
lappend interruptList "exe insttestbatch.tcl"
|
||||||
|
|
||||||
|
set par(inventory) $inventory
|
||||||
|
set par(driveCommand) drive
|
||||||
|
set par(motorList) $motors
|
||||||
|
set par(notList) $notList
|
||||||
|
set par(commandList) $commandList
|
||||||
|
set par(interruptList) $interruptList
|
||||||
|
set par(instrument) $instrument
|
||||||
|
set par(user) lnsmanager
|
||||||
|
set par(password) lnsSICSlns
|
||||||
|
set par(varList) $varList
|
||||||
|
|
||||||
|
#================= actually test =====================================
|
||||||
|
set counters [runStandardTests par]
|
||||||
|
|
||||||
|
#--------- put om back where it was
|
||||||
|
drive om $sompos
|
||||||
|
recover beforetest.tcl
|
||||||
|
|
||||||
|
#------------ print a summary
|
||||||
|
set inst [string toupper $instrument]
|
||||||
|
puts stdout "Test Summary for $inst"
|
||||||
|
printStandardSummary $counters
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user