xref: /aosp_15_r20/external/libsrtp2/test/rtpw_test.sh (revision 90e502c7aef8d77d0622bb67d75435c6190cfc1a)
1*90e502c7SAndroid Build Coastguard Worker#!/bin/sh
2*90e502c7SAndroid Build Coastguard Worker#
3*90e502c7SAndroid Build Coastguard Worker# usage: rtpw_test <rtpw_commands>
4*90e502c7SAndroid Build Coastguard Worker#
5*90e502c7SAndroid Build Coastguard Worker# tests the rtpw sender and receiver functions
6*90e502c7SAndroid Build Coastguard Worker#
7*90e502c7SAndroid Build Coastguard Worker# Copyright (c) 2001-2017, Cisco Systems, Inc.
8*90e502c7SAndroid Build Coastguard Worker# All rights reserved.
9*90e502c7SAndroid Build Coastguard Worker#
10*90e502c7SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without
11*90e502c7SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions
12*90e502c7SAndroid Build Coastguard Worker# are met:
13*90e502c7SAndroid Build Coastguard Worker#
14*90e502c7SAndroid Build Coastguard Worker#   Redistributions of source code must retain the above copyright
15*90e502c7SAndroid Build Coastguard Worker#   notice, this list of conditions and the following disclaimer.
16*90e502c7SAndroid Build Coastguard Worker#
17*90e502c7SAndroid Build Coastguard Worker#   Redistributions in binary form must reproduce the above
18*90e502c7SAndroid Build Coastguard Worker#   copyright notice, this list of conditions and the following
19*90e502c7SAndroid Build Coastguard Worker#   disclaimer in the documentation and/or other materials provided
20*90e502c7SAndroid Build Coastguard Worker#   with the distribution.
21*90e502c7SAndroid Build Coastguard Worker#
22*90e502c7SAndroid Build Coastguard Worker#   Neither the name of the Cisco Systems, Inc. nor the names of its
23*90e502c7SAndroid Build Coastguard Worker#   contributors may be used to endorse or promote products derived
24*90e502c7SAndroid Build Coastguard Worker#   from this software without specific prior written permission.
25*90e502c7SAndroid Build Coastguard Worker#
26*90e502c7SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27*90e502c7SAndroid Build Coastguard Worker# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28*90e502c7SAndroid Build Coastguard Worker# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29*90e502c7SAndroid Build Coastguard Worker# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
30*90e502c7SAndroid Build Coastguard Worker# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
31*90e502c7SAndroid Build Coastguard Worker# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32*90e502c7SAndroid Build Coastguard Worker# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33*90e502c7SAndroid Build Coastguard Worker# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34*90e502c7SAndroid Build Coastguard Worker# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
35*90e502c7SAndroid Build Coastguard Worker# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36*90e502c7SAndroid Build Coastguard Worker# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
37*90e502c7SAndroid Build Coastguard Worker# OF THE POSSIBILITY OF SUCH DAMAGE.
38*90e502c7SAndroid Build Coastguard Worker#
39*90e502c7SAndroid Build Coastguard Worker
40*90e502c7SAndroid Build Coastguard Workercase $(uname -s) in
41*90e502c7SAndroid Build Coastguard Worker    *CYGWIN*|*MINGW*)
42*90e502c7SAndroid Build Coastguard Worker        EXE=".exe"
43*90e502c7SAndroid Build Coastguard Worker        ;;
44*90e502c7SAndroid Build Coastguard Worker    *Linux*)
45*90e502c7SAndroid Build Coastguard Worker        EXE=""
46*90e502c7SAndroid Build Coastguard Worker        export LD_LIBRARY_PATH=$CRYPTO_LIBDIR
47*90e502c7SAndroid Build Coastguard Worker        ;;
48*90e502c7SAndroid Build Coastguard Worker    *Darwin*)
49*90e502c7SAndroid Build Coastguard Worker        EXE=""
50*90e502c7SAndroid Build Coastguard Worker        export DYLD_LIBRARY_PATH=$CRYPTO_LIBDIR
51*90e502c7SAndroid Build Coastguard Worker        ;;
52*90e502c7SAndroid Build Coastguard Workeresac
53*90e502c7SAndroid Build Coastguard Worker
54*90e502c7SAndroid Build Coastguard WorkerRTPW=./rtpw$EXE
55*90e502c7SAndroid Build Coastguard WorkerDEST_PORT=9999
56*90e502c7SAndroid Build Coastguard WorkerDURATION=3
57*90e502c7SAndroid Build Coastguard Worker
58*90e502c7SAndroid Build Coastguard Workerkey=Ky7cUDT2GnI0XKWYbXv9AYmqbcLsqzL9mvdN9t/G
59*90e502c7SAndroid Build Coastguard Worker
60*90e502c7SAndroid Build Coastguard WorkerARGS="-b $key -a -e 128"
61*90e502c7SAndroid Build Coastguard Worker
62*90e502c7SAndroid Build Coastguard Worker# First, we run "killall" to get rid of all existing rtpw processes.
63*90e502c7SAndroid Build Coastguard Worker# This step also enables this script to clean up after itself; if this
64*90e502c7SAndroid Build Coastguard Worker# script is interrupted after the rtpw processes are started but before
65*90e502c7SAndroid Build Coastguard Worker# they are killed, those processes will linger.  Re-running the script
66*90e502c7SAndroid Build Coastguard Worker# will get rid of them.
67*90e502c7SAndroid Build Coastguard Worker
68*90e502c7SAndroid Build Coastguard Workerkillall rtpw 2>/dev/null
69*90e502c7SAndroid Build Coastguard Worker
70*90e502c7SAndroid Build Coastguard Workerif test -x $RTPW; then
71*90e502c7SAndroid Build Coastguard Worker
72*90e502c7SAndroid Build Coastguard Workerecho  $0 ": starting rtpw receiver process... "
73*90e502c7SAndroid Build Coastguard Worker
74*90e502c7SAndroid Build Coastguard Worker$RTPW $* $ARGS -r 0.0.0.0 $DEST_PORT  &
75*90e502c7SAndroid Build Coastguard Worker
76*90e502c7SAndroid Build Coastguard Workerreceiver_pid=$!
77*90e502c7SAndroid Build Coastguard Worker
78*90e502c7SAndroid Build Coastguard Workerecho $0 ": receiver PID = $receiver_pid"
79*90e502c7SAndroid Build Coastguard Worker
80*90e502c7SAndroid Build Coastguard Workersleep 1
81*90e502c7SAndroid Build Coastguard Worker
82*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running
83*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $receiver_pid
84*90e502c7SAndroid Build Coastguard Workerretval=$?
85*90e502c7SAndroid Build Coastguard Workerecho $retval
86*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then
87*90e502c7SAndroid Build Coastguard Worker    echo $0 ": error"
88*90e502c7SAndroid Build Coastguard Worker    exit 254
89*90e502c7SAndroid Build Coastguard Workerfi
90*90e502c7SAndroid Build Coastguard Worker
91*90e502c7SAndroid Build Coastguard Workerecho  $0 ": starting rtpw sender process..."
92*90e502c7SAndroid Build Coastguard Worker
93*90e502c7SAndroid Build Coastguard Worker$RTPW $* $ARGS -s 127.0.0.1 $DEST_PORT  &
94*90e502c7SAndroid Build Coastguard Worker
95*90e502c7SAndroid Build Coastguard Workersender_pid=$!
96*90e502c7SAndroid Build Coastguard Worker
97*90e502c7SAndroid Build Coastguard Workerecho $0 ": sender PID = $sender_pid"
98*90e502c7SAndroid Build Coastguard Worker
99*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running
100*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $sender_pid
101*90e502c7SAndroid Build Coastguard Workerretval=$?
102*90e502c7SAndroid Build Coastguard Workerecho $retval
103*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then
104*90e502c7SAndroid Build Coastguard Worker    echo $0 ": error"
105*90e502c7SAndroid Build Coastguard Worker    exit 255
106*90e502c7SAndroid Build Coastguard Workerfi
107*90e502c7SAndroid Build Coastguard Worker
108*90e502c7SAndroid Build Coastguard Workersleep $DURATION
109*90e502c7SAndroid Build Coastguard Worker
110*90e502c7SAndroid Build Coastguard Workerkill $receiver_pid
111*90e502c7SAndroid Build Coastguard Workerkill $sender_pid
112*90e502c7SAndroid Build Coastguard Worker
113*90e502c7SAndroid Build Coastguard Workerwait $receiver_pid 2>/dev/null
114*90e502c7SAndroid Build Coastguard Workerwait $sender_pid 2>/dev/null
115*90e502c7SAndroid Build Coastguard Worker
116*90e502c7SAndroid Build Coastguard Worker
117*90e502c7SAndroid Build Coastguard Workerkey=033490ba9e82994fc21013395739038992b2edc5034f61a72345ca598d7bfd0189aa6dc2ecab32fd9af74df6dfc6
118*90e502c7SAndroid Build Coastguard Worker
119*90e502c7SAndroid Build Coastguard WorkerARGS="-k $key -a -e 256"
120*90e502c7SAndroid Build Coastguard Worker
121*90e502c7SAndroid Build Coastguard Workerecho  $0 ": starting rtpw receiver process... "
122*90e502c7SAndroid Build Coastguard Worker
123*90e502c7SAndroid Build Coastguard Worker$RTPW $* $ARGS -r 0.0.0.0 $DEST_PORT  &
124*90e502c7SAndroid Build Coastguard Worker
125*90e502c7SAndroid Build Coastguard Workerreceiver_pid=$!
126*90e502c7SAndroid Build Coastguard Worker
127*90e502c7SAndroid Build Coastguard Workerecho $0 ": receiver PID = $receiver_pid"
128*90e502c7SAndroid Build Coastguard Worker
129*90e502c7SAndroid Build Coastguard Workersleep 1
130*90e502c7SAndroid Build Coastguard Worker
131*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running
132*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $receiver_pid
133*90e502c7SAndroid Build Coastguard Workerretval=$?
134*90e502c7SAndroid Build Coastguard Workerecho $retval
135*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then
136*90e502c7SAndroid Build Coastguard Worker    echo $0 ": error"
137*90e502c7SAndroid Build Coastguard Worker    exit 254
138*90e502c7SAndroid Build Coastguard Workerfi
139*90e502c7SAndroid Build Coastguard Worker
140*90e502c7SAndroid Build Coastguard Workerecho  $0 ": starting rtpw sender process..."
141*90e502c7SAndroid Build Coastguard Worker
142*90e502c7SAndroid Build Coastguard Worker$RTPW $* $ARGS -s 127.0.0.1 $DEST_PORT  &
143*90e502c7SAndroid Build Coastguard Worker
144*90e502c7SAndroid Build Coastguard Workersender_pid=$!
145*90e502c7SAndroid Build Coastguard Worker
146*90e502c7SAndroid Build Coastguard Workerecho $0 ": sender PID = $sender_pid"
147*90e502c7SAndroid Build Coastguard Worker
148*90e502c7SAndroid Build Coastguard Worker# verify that the background job is running
149*90e502c7SAndroid Build Coastguard Workerps -e | grep -q $sender_pid
150*90e502c7SAndroid Build Coastguard Workerretval=$?
151*90e502c7SAndroid Build Coastguard Workerecho $retval
152*90e502c7SAndroid Build Coastguard Workerif [ $retval != 0 ]; then
153*90e502c7SAndroid Build Coastguard Worker    echo $0 ": error"
154*90e502c7SAndroid Build Coastguard Worker    exit 255
155*90e502c7SAndroid Build Coastguard Workerfi
156*90e502c7SAndroid Build Coastguard Worker
157*90e502c7SAndroid Build Coastguard Workersleep $DURATION
158*90e502c7SAndroid Build Coastguard Worker
159*90e502c7SAndroid Build Coastguard Workerkill $receiver_pid
160*90e502c7SAndroid Build Coastguard Workerkill $sender_pid
161*90e502c7SAndroid Build Coastguard Worker
162*90e502c7SAndroid Build Coastguard Workerwait $receiver_pid 2>/dev/null
163*90e502c7SAndroid Build Coastguard Workerwait $sender_pid 2>/dev/null
164*90e502c7SAndroid Build Coastguard Worker
165*90e502c7SAndroid Build Coastguard Workerecho $0 ": done (test passed)"
166*90e502c7SAndroid Build Coastguard Worker
167*90e502c7SAndroid Build Coastguard Workerelse
168*90e502c7SAndroid Build Coastguard Worker
169*90e502c7SAndroid Build Coastguard Workerecho "error: can't find executable" $RTPW
170*90e502c7SAndroid Build Coastguard Workerexit 1
171*90e502c7SAndroid Build Coastguard Worker
172*90e502c7SAndroid Build Coastguard Workerfi
173*90e502c7SAndroid Build Coastguard Worker
174*90e502c7SAndroid Build Coastguard Worker# EOF
175*90e502c7SAndroid Build Coastguard Worker
176*90e502c7SAndroid Build Coastguard Worker
177