#!/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 (waveform, "DZ:test1")
    {
        field (DTYP, "stream")
        field (FTVL, "DOUBLE")
        field (NELM, "1048576")
        field (INP,  "@test.proto test1 device")
    }
}

set protocol {
    replyTimeout =600000;
    Terminator = LF;
    Separator = ",";
    test1 {in "%f"; out "%(NORD)d";}
}

set startup {
}

set debug 0

set message "3.1415"
set size 1
set timeout 600000

startioc
    ioccmd {dbpf DZ:test1.PROC 1}
    send "$message\n"
    assure "$size\n"

ioccmd {var streamDebug 0}
for {set log 1} {$log <= 21} {incr log} {
    set output "$message\n"
    set starttime [clock clicks]
    send $output
    ioccmd {dbpf DZ:test1.PROC 1}
    assure "$size\n"
    set duration [expr [clock clicks] - $starttime]
    set performance($size) [expr $duration*1.0/$size]
    puts [format "size %7d     duration: %8d     time/element: %6.1f" $size $duration $performance($size)]
    if {$performance($size) > $performance(1)} {incr faults}
    set message "$message,$message"
    set size [expr $size*2]    
}

finish
