153 lines
3.3 KiB
Tcl
Executable File
153 lines
3.3 KiB
Tcl
Executable File
#!/usr/bin/env tclsh
|
|
source streamtestlib.tcl
|
|
|
|
# Define records, protocol and startup (text goes to files)
|
|
# The asynPort "device" is connected to a network TCP socket
|
|
# Talk to the socket with send/receive/assure
|
|
# Send commands to the ioc shell with ioccmd
|
|
|
|
set records {
|
|
record (ao, "DZ:test1")
|
|
{
|
|
field (DTYP, "stream")
|
|
field (OUT, "@test.proto test1 device")
|
|
}
|
|
record (ai, "DZ:test2")
|
|
{
|
|
field (DTYP, "stream")
|
|
field (INP, "@test.proto test2 device")
|
|
}
|
|
record (ai, "DZ:test3")
|
|
{
|
|
field (DTYP, "stream")
|
|
field (INP, "@test.proto test3 device")
|
|
}
|
|
record (ai, "DZ:test4")
|
|
{
|
|
field (DTYP, "stream")
|
|
field (INP, "@test.proto test4 device")
|
|
}
|
|
record (ai, "DZ:test5")
|
|
{
|
|
field (DTYP, "stream")
|
|
field (INP, "@test.proto test5 device")
|
|
}
|
|
record (ai, "DZ:test6")
|
|
{
|
|
field (DTYP, "stream")
|
|
field (INP, "@test.proto test6 device")
|
|
}
|
|
record (ai, "DZ:test7")
|
|
{
|
|
field (DTYP, "stream")
|
|
field (INP, "@test.proto test7 device")
|
|
}
|
|
}
|
|
|
|
set protocol {
|
|
Terminator = LF;
|
|
test1 {out "%T(%d.%m.%Y %H:%M:%.2S %z)"; }
|
|
test2 {in "%T"; out "%.0f %T"; }
|
|
test3 {in "%(TIME)T(%Ed. %B %Y %H:%M:%.S) %f"; out "%(TIME)T(%d.%m.%Y %H:%M:%.2S %z)"; }
|
|
test4 {in "%(TIME)T(%c) %f"; out "%(TIME)T(%a %d.%m.%Y %H:%M:%.2S %z)"; }
|
|
test5 {in "%T(%H %p)"; out "%T(%H)"; }
|
|
test6 {in "%T(%p %H)"; out "%T(%H)"; }
|
|
test7 {in "%T(%d.%m.%Y %T %z)"; out "%T(%d.%m.%Y %T %z) %.6f"; }
|
|
}
|
|
|
|
set startup {
|
|
}
|
|
|
|
set debug 0
|
|
|
|
package require Epics
|
|
proc checkTS {pv timestamp} {
|
|
global faults
|
|
pvget $pv
|
|
array set PV [pvinfo $pv]
|
|
if {$PV(TIME) != $timestamp} {
|
|
puts "expected timestamp: $timestamp"
|
|
puts "received timestamp: $PV(TIME)"
|
|
incr faults
|
|
}
|
|
}
|
|
|
|
startioc
|
|
|
|
put DZ:test1 1044068706.789
|
|
assure "01.02.2003 04:05:06.79 +0100\n"
|
|
|
|
put DZ:test1 1057025106.789
|
|
assure "01.07.2003 04:05:06.79 +0200\n"
|
|
|
|
process DZ:test2
|
|
send "2003-02-01 04:05:06\n"
|
|
assure "1044068706 2003-02-01 04:05:06\n";
|
|
|
|
process DZ:test3
|
|
send "1. February 2003 04:05:06.789 3.1415\n"
|
|
assure "01.02.2003 04:05:06.79 +0100\n";
|
|
checkTS DZ:test3 "02/01/03 04:05:06.789000000"
|
|
|
|
process DZ:test3
|
|
send "1. July 2003 04:05:06.789123 3.1415\n"
|
|
assure "01.07.2003 04:05:06.79 +0200\n";
|
|
checkTS DZ:test3 "07/01/03 04:05:06.789123000"
|
|
|
|
process DZ:test4
|
|
send "mon jan 2 04:05:06 2003 3.1415\n"
|
|
assure "Thu 02.01.2003 04:05:06.00 +0100\n";
|
|
checkTS DZ:test4 "01/02/03 04:05:06.000000000"
|
|
|
|
process DZ:test5
|
|
send "12 a\n"
|
|
assure "00\n";
|
|
process DZ:test5
|
|
send "01 a\n"
|
|
assure "01\n";
|
|
process DZ:test5
|
|
send "2 a\n"
|
|
assure "02\n";
|
|
process DZ:test5
|
|
send "11 a\n"
|
|
assure "11\n";
|
|
process DZ:test5
|
|
send "12 p\n"
|
|
assure "12\n";
|
|
process DZ:test5
|
|
send "01 p\n"
|
|
assure "13\n";
|
|
process DZ:test5
|
|
send "11 p\n"
|
|
assure "23\n";
|
|
|
|
process DZ:test6
|
|
send "am 12\n"
|
|
assure "00\n";
|
|
process DZ:test6
|
|
send "Am 01\n"
|
|
assure "01\n";
|
|
process DZ:test6
|
|
send "aM 2\n"
|
|
assure "02\n";
|
|
process DZ:test6
|
|
send "AM 11\n"
|
|
assure "11\n";
|
|
process DZ:test6
|
|
send "p 12\n"
|
|
assure "12\n";
|
|
process DZ:test6
|
|
send "P 01\n"
|
|
assure "13\n";
|
|
process DZ:test6
|
|
send "PM 11\n"
|
|
assure "23\n";
|
|
|
|
process DZ:test7
|
|
send "1.2.2010 12:56:32 +0000\n"
|
|
assure "01.02.2010 13:56:32 +0100 1265028992.000000\n";
|
|
process DZ:test7
|
|
send "1.7.2010 12:56:32 +0000\n"
|
|
assure "01.07.2010 14:56:32 +0200 1277988992.000000\n";
|
|
finish
|