[Foxp][Test] simple echo test with custom payload size
[platform/upstream/dbus.git] / samsung_tools / test_foxp_latency / test-foxp-latency
1 #!/usr/bin/expect
2
3 set TARGET_HOST "foxp2"
4 set ROOT_DIR "/root"
5 set NUM_PASSES 3
6 #set DATA_SIZE_BYTES 1024
7 set RESULT_FILE [clock format [clock seconds] -format "latency-results-%Y.%m.%d.%H.%M.%S.csv"]
8
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'"] \
12 ]
13
14 #    [list "Custom lib, dbus transport" "DISPLAY=:0 LD_LIBRARY_PATH=$ROOT_DIR/libs"] \
15
16 set DATA_SIZES_BYTES { 10 100 1024 10240 102400 1048576 10485760 }
17
18 #set PROBES { \
19 #    1000   { 1000 } \
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 } \
29 #}
30
31
32 # ***************************************************************************************************************************************************
33
34
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"
38     expect {
39         "Waiting for clients"    { return $spawn_id }
40         default                 {
41             puts ">>> ERROR <<<"
42             #puts $expect_out(buffer)
43             puts ">>> ----- <<<"
44             return 0
45         }
46     }
47 }
48
49
50 proc terminate_server { server_id } {
51     set spawn_id $server_id
52     send "\x03"
53     expect {
54         "closed."   { return 1 }
55         default     { return 0 }
56     }
57 }
58
59
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"
63     set round_trip_time 0
64     expect  {
65         -timeout 60
66         -re {avg RTT: (\d+) us} {
67             set round_trip_time $expect_out(1,string)
68         }
69         timeout { puts "ctrl-C"; send "\x03" }
70     }
71     return $round_trip_time
72 }
73
74
75 proc log_result { data { new_file 0 } } {
76     global RESULT_FILE
77     if { $new_file } {
78         puts "Storing results into file $RESULT_FILE"
79     }
80     set pl [open $RESULT_FILE [expr {$new_file ? "w" : "a"}]]
81     puts $pl [join $data ","]
82     close $pl
83 }
84
85 # ***************************************************************************************************************************************************
86
87
88 log_user 0
89
90 log_result { {"Test environment"} {Data size [Bytes]} {"Round Trip Time [ms]"} } 1
91
92 # iterate over different invocations
93 foreach invocation $INVOCATIONS {
94     set test_env [lindex $invocation 0]
95     puts "Test environment: $test_env"
96     puts ""
97     puts -nonewline "Bringing up server... "
98     set server [run_server [lindex $invocation 1]]
99     if { $server == 0 } {
100         puts "failed!"
101         continue
102     }
103     puts "OK!"        
104     puts "Test start, passes: $NUM_PASSES"    
105     flush stdout
106     
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
110       set total 0
111       set passes 0
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 } {
115               puts -nonewline "."
116               #puts "iteration $passes, data_size: $data_size_bytes : $result us"
117               incr total $result
118               incr passes
119           } else {
120               puts -nonewline "!"
121           }
122           flush stdout
123       }
124       if { $passes > 0 } {
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]
128       } else {
129           puts " no results!"
130       }
131       #puts " data_size: $data_size_bytes"
132     }
133     
134     flush stdout
135         
136     
137     puts -nonewline "Terminating server... "
138     terminate_server $server
139     puts "OK!"
140     puts ""
141 }
142
143 log_user 1
144