Merge "Optional autogen.sh flag --enable-kdbus-transport added allowing to compile...
[platform/upstream/dbus.git] / samsung_tools / test-foxp-latency
1 #!/usr/bin/expect
2
3 set TARGET_HOST "localhost"
4 set ROOT_DIR "/home/mike/JJ"
5 set NUM_PASSES 50
6 set RESULT_FILE [clock format [clock seconds] -format "latency-results-%Y.%m.%d.%H.%M.%S.csv"]
7
8 set INVOCATIONS [list \
9     { "TTV default" "DISPLAY=:0" } \
10     [list "Custom lib, kdbus transport" "LD_LIBRARY_PATH=$ROOT_DIR/libs DBUS_SESSION_BUS_ADDRESS='kdbus:path=/dev/kdbus/1000-testtest/bus'"] \
11 ]
12
13 #    [list "Custom lib, dbus transport" "DISPLAY=:0 LD_LIBRARY_PATH=$ROOT_DIR/libs"] \
14
15 #set PROBES { \
16 #    1000   { 1000 } \
17 #    2000   { 1000 2000 } \
18 #    5000   { 1000 2000 5000 } \
19 #    10000  { 1000 2000 5000 10000 } \
20 #    20000  { 1000 2000 5000 10000 20000 } \
21 #    50000  { 1000 2000 5000 10000 20000 50000 } \
22 #    75000  { 1000 2000 5000 10000 20000 50000 75000 } \
23 #    100000 { 1000 2000 5000 10000 20000 50000 75000 } \
24 #    200000 { 1000 2000 5000 10000 20000 50000 75000 } \
25 #    300000 { 1000 2000 5000 10000 20000 50000 75000 } \
26 #}
27
28
29 # ***************************************************************************************************************************************************
30
31
32 proc run_server { invocation } {
33     global TARGET_HOST ROOT_DIR
34     spawn ssh -t $TARGET_HOST "cd $ROOT_DIR/ipc-test; $invocation ./ping-server"
35     expect {
36         "Waiting for clients"    { return $spawn_id }
37         default                 {
38             puts ">>> ERROR <<<"
39             puts $expect_out(buffer)
40             puts ">>> ----- <<<"
41             return 0
42         }
43     }
44 }
45
46
47 proc terminate_server { server_id } {
48     set spawn_id $server_id
49     send "\x03"
50     expect {
51         "closed."   { return 1 }
52         default     { return 0 }
53     }
54 }
55
56
57 proc run_client { invocation } {
58     global TARGET_HOST ROOT_DIR
59     spawn ssh -t $TARGET_HOST "$invocation $ROOT_DIR/ipc-test/ping-client"
60     set round_trip_time 0
61     expect  {
62         -timeout 60
63         -re {avg RTT: (\d+) us} {
64             set round_trip_time $expect_out(1,string)
65         }
66         timeout { puts "ctrl-C"; send "\x03" }
67     }
68     return $round_trip_time
69 }
70
71
72 proc log_result { data { new_file 0 } } {
73     global RESULT_FILE
74     if { $new_file } {
75         puts "Storing results into file $RESULT_FILE"
76     }
77     set pl [open $RESULT_FILE [expr {$new_file ? "w" : "a"}]]
78     puts $pl [join $data ","]
79     close $pl
80 }
81
82 # ***************************************************************************************************************************************************
83
84
85 log_user 0
86
87 log_result { {"Test environment"} {"Round Trip Time [us]"} } 1
88
89 # iterate over different invocations
90 foreach invocation $INVOCATIONS {
91     set test_env [lindex $invocation 0]
92     puts "Test environment: $test_env"
93     puts ""
94     puts -nonewline "Bringing up server... "
95     set server [run_server [lindex $invocation 1]]
96     if { $server == 0 } {
97         puts "failed!"
98         continue
99     }
100     puts "OK!"        
101         
102     flush stdout
103     # average several passes to get more stable figures
104     set total 0
105     set passes 0
106     for { set run 1 } { $run <= $NUM_PASSES } { incr run } {
107         set result [run_client [lindex $invocation 1]]
108         if { $result > 0 } {
109             #puts -nonewline "."
110             puts "$result us"
111             incr total $result
112             incr passes
113         } else {
114             puts -nonewline "!"
115         }
116         flush stdout
117     }
118     if { $passes > 0 } {
119         set avg [expr $total / $passes]
120         puts " $avg us"
121         log_result [list "\"$test_env\"" $avg]
122     } else {
123         puts " no results!"
124     }
125     flush stdout
126         
127     
128     puts -nonewline "Terminating server... "
129     terminate_server $server
130     puts "OK!"
131     puts ""
132 }
133
134 log_user 1
135