3 set TARGET_HOST "foxp2"
6 #set DATA_SIZE_BYTES 1024
7 set RESULT_FILE [clock format [clock seconds] -format "latency-results-%Y.%m.%d.%H.%M.%S.csv"]
9 set INVOCATIONS [list \
10 { "TTV default" "DISPLAY=:0 " } \
11 [list "Custom lib, kdbus transport" "LD_LIBRARY_PATH=$ROOT_DIR/libs DBUS_SESSION_BUS_ADDRESS='kdbus:path=/dev/kdbus/0-kdbus/bus'"] \
14 # [list "Custom lib, dbus transport" "DISPLAY=:0 LD_LIBRARY_PATH=$ROOT_DIR/libs"] \
16 set DATA_SIZES_BYTES { 10 100 1024 10240 102400 1048576 10485760 }
20 # 2000 { 1000 2000 } \
21 # 5000 { 1000 2000 5000 } \
22 # 10000 { 1000 2000 5000 10000 } \
23 # 20000 { 1000 2000 5000 10000 20000 } \
24 # 50000 { 1000 2000 5000 10000 20000 50000 } \
25 # 75000 { 1000 2000 5000 10000 20000 50000 75000 } \
26 # 100000 { 1000 2000 5000 10000 20000 50000 75000 } \
27 # 200000 { 1000 2000 5000 10000 20000 50000 75000 } \
28 # 300000 { 1000 2000 5000 10000 20000 50000 75000 } \
32 # ***************************************************************************************************************************************************
35 proc run_server { invocation } {
36 global TARGET_HOST ROOT_DIR
37 spawn ssh -t $TARGET_HOST "cd $ROOT_DIR/ipc-test; $invocation ./ping-server"
39 "Waiting for clients" { return $spawn_id }
42 #puts $expect_out(buffer)
50 proc terminate_server { server_id } {
51 set spawn_id $server_id
54 "closed." { return 1 }
60 proc run_client { invocation data_size_bytes} {
61 global TARGET_HOST ROOT_DIR
62 spawn ssh -t $TARGET_HOST "$invocation $ROOT_DIR/ipc-test/ping-client $data_size_bytes"
66 -re {avg RTT: (\d+) us} {
67 set round_trip_time $expect_out(1,string)
69 timeout { puts "ctrl-C"; send "\x03" }
71 return $round_trip_time
75 proc log_result { data { new_file 0 } } {
78 puts "Storing results into file $RESULT_FILE"
80 set pl [open $RESULT_FILE [expr {$new_file ? "w" : "a"}]]
81 puts $pl [join $data ","]
85 # ***************************************************************************************************************************************************
90 log_result { {"Test environment"} {Data size [Bytes]} {"Round Trip Time [ms]"} } 1
92 # iterate over different invocations
93 foreach invocation $INVOCATIONS {
94 set test_env [lindex $invocation 0]
95 puts "Test environment: $test_env"
97 puts -nonewline "Bringing up server... "
98 set server [run_server [lindex $invocation 1]]
104 puts "Test start, passes: $NUM_PASSES"
107 for { set p 0 } { $p < [llength $DATA_SIZES_BYTES] } { incr p } {
108 set data_size_bytes [lindex $DATA_SIZES_BYTES $p]
109 # average several passes to get more stable figures
112 for { set run 1 } { $run <= $NUM_PASSES } { incr run } {
113 set result [run_client [lindex $invocation 1] $data_size_bytes]
114 if { $result >= 0 } {
116 #puts "iteration $passes, data_size: $data_size_bytes : $result us"
125 set avg [expr $total / $passes]
126 puts " data_size $data_size_bytes B $avg us"
127 log_result [list "\"$test_env\"" $data_size_bytes $avg]
131 #puts " data_size: $data_size_bytes"
137 puts -nonewline "Terminating server... "
138 terminate_server $server