blob: e123b3e785ac22bd0e5f687aa70730f656d59b81 [file] [log] [blame]
Nanang Izzuddinf810f952008-06-18 21:04:14 +00001# $Id$
Benny Prijonocc1ada52008-06-15 19:43:43 +00002import time
3import imp
4import sys
5import inc_const as const
Benny Prijono62a969c2008-06-26 13:29:29 +00006from inc_cfg import *
Benny Prijonocc1ada52008-06-15 19:43:43 +00007
8# Load configuration
9cfg_file = imp.load_source("cfg_file", sys.argv[2])
10
Benny Prijono62a969c2008-06-26 13:29:29 +000011# Check media flow between ua1 and ua2
12def check_media(ua1, ua2):
13 ua1.send("#")
14 ua1.send("1122")
15 ua2.expect(const.RX_DTMF + "1")
16 ua2.expect(const.RX_DTMF + "1")
17 ua2.expect(const.RX_DTMF + "2")
18 ua2.expect(const.RX_DTMF + "2")
19
Benny Prijonocc1ada52008-06-15 19:43:43 +000020
21# Test body function
Nanang Izzuddinf810f952008-06-18 21:04:14 +000022def test_func(t, user_data):
Benny Prijonocc1ada52008-06-15 19:43:43 +000023 callee = t.process[0]
24 caller = t.process[1]
25
Benny Prijono62a969c2008-06-26 13:29:29 +000026 # if have_reg then wait for couple of seconds for PUBLISH
27 # to complete (just in case pUBLISH is used)
28 if callee.inst_param.have_reg:
29 time.sleep(1)
30 if caller.inst_param.have_reg:
31 time.sleep(1)
32
Benny Prijonocc1ada52008-06-15 19:43:43 +000033 # Caller making call
34 caller.send("m")
35 caller.send(t.inst_params[0].uri)
36 caller.expect(const.STATE_CALLING)
37
Benny Prijono62a969c2008-06-26 13:29:29 +000038 # Callee waits for call and answers with 180/Ringing
Benny Prijonocc1ada52008-06-15 19:43:43 +000039 time.sleep(1)
40 callee.expect(const.EVENT_INCOMING_CALL)
41 callee.send("a")
Benny Prijono62a969c2008-06-26 13:29:29 +000042 callee.send("180")
43 callee.expect("SIP/2.0 180")
44 caller.expect("SIP/2.0 180")
45
46 # Synchronize stdout
47 caller.sync_stdout()
48 callee.sync_stdout()
49
50 # Callee answers with 200/OK
51 callee.send("a")
Benny Prijonocc1ada52008-06-15 19:43:43 +000052 callee.send("200")
53
54 # Wait until call is connected in both endpoints
55 time.sleep(1)
Benny Prijonocc1ada52008-06-15 19:43:43 +000056 caller.expect(const.STATE_CONFIRMED)
Benny Prijono62a969c2008-06-26 13:29:29 +000057 callee.expect(const.STATE_CONFIRMED)
Benny Prijonocc1ada52008-06-15 19:43:43 +000058
59 # Synchronize stdout
Benny Prijono62a969c2008-06-26 13:29:29 +000060 caller.sync_stdout()
61 callee.sync_stdout()
62 time.sleep(1)
63 caller.sync_stdout()
64 callee.sync_stdout()
Benny Prijonocc1ada52008-06-15 19:43:43 +000065
Benny Prijono62a969c2008-06-26 13:29:29 +000066 # Test that media is okay
Benny Prijonocc1ada52008-06-15 19:43:43 +000067 time.sleep(2)
Benny Prijono62a969c2008-06-26 13:29:29 +000068 check_media(caller, callee)
69 check_media(callee, caller)
Benny Prijonocc1ada52008-06-15 19:43:43 +000070
Benny Prijono62a969c2008-06-26 13:29:29 +000071 # Hold call by caller
Benny Prijonocc1ada52008-06-15 19:43:43 +000072 caller.send("H")
Benny Prijono5242a422008-06-26 16:27:17 +000073 #caller.sync_stdout()
Benny Prijonocc1ada52008-06-15 19:43:43 +000074 caller.expect(const.MEDIA_HOLD)
75 callee.expect(const.MEDIA_HOLD)
76
Benny Prijono62a969c2008-06-26 13:29:29 +000077 # Synchronize stdout
78 caller.sync_stdout()
79 callee.sync_stdout()
80
Benny Prijonocc1ada52008-06-15 19:43:43 +000081 # Release hold
82 time.sleep(2)
83 caller.send("v")
Benny Prijono5242a422008-06-26 16:27:17 +000084 #caller.sync_stdout()
85 callee.expect(const.MEDIA_ACTIVE, title="waiting for media active after call hold")
86 caller.expect(const.MEDIA_ACTIVE, title="waiting for media active after call hold")
Benny Prijono62a969c2008-06-26 13:29:29 +000087
88 # Synchronize stdout
89 caller.sync_stdout()
90 callee.sync_stdout()
91
92 # Test that media is okay
93 check_media(caller, callee)
94 check_media(callee, caller)
95
96 # Synchronize stdout
97 caller.sync_stdout()
98 callee.sync_stdout()
99
100 # Hold call by callee
101 callee.send("H")
Benny Prijono5242a422008-06-26 16:27:17 +0000102 #callee.sync_stdout()
Benny Prijono62a969c2008-06-26 13:29:29 +0000103 caller.expect(const.MEDIA_HOLD)
104 callee.expect(const.MEDIA_HOLD)
105
106 # Synchronize stdout
107 caller.sync_stdout()
108 callee.sync_stdout()
109
110 # Release hold
111 time.sleep(2)
112 callee.send("v")
Benny Prijono5242a422008-06-26 16:27:17 +0000113 #callee.sync_stdout()
114 caller.expect(const.MEDIA_ACTIVE, title="waiting for media active after call hold")
115 callee.expect(const.MEDIA_ACTIVE, title="waiting for media active after call hold")
Benny Prijonocc1ada52008-06-15 19:43:43 +0000116
117 # Synchronize stdout
Benny Prijono62a969c2008-06-26 13:29:29 +0000118 caller.sync_stdout()
119 callee.sync_stdout()
Benny Prijonocc1ada52008-06-15 19:43:43 +0000120
Benny Prijono62a969c2008-06-26 13:29:29 +0000121 # Test that media is okay
122 check_media(caller, callee)
123 check_media(callee, caller)
Benny Prijonocc1ada52008-06-15 19:43:43 +0000124
125 # Synchronize stdout
Benny Prijono62a969c2008-06-26 13:29:29 +0000126 caller.sync_stdout()
127 callee.sync_stdout()
Benny Prijonocc1ada52008-06-15 19:43:43 +0000128
129 # UPDATE (by caller)
130 caller.send("U")
Benny Prijono5242a422008-06-26 16:27:17 +0000131 #caller.sync_stdout()
132 callee.expect(const.MEDIA_ACTIVE, title="waiting for media active with UPDATE")
133 caller.expect(const.MEDIA_ACTIVE, title="waiting for media active with UPDATE")
Benny Prijonocc1ada52008-06-15 19:43:43 +0000134
135 # Synchronize stdout
Benny Prijono62a969c2008-06-26 13:29:29 +0000136 caller.sync_stdout()
137 callee.sync_stdout()
Benny Prijonocc1ada52008-06-15 19:43:43 +0000138
Benny Prijono62a969c2008-06-26 13:29:29 +0000139 # Test that media is okay
Benny Prijonocc1ada52008-06-15 19:43:43 +0000140 time.sleep(2)
Benny Prijono62a969c2008-06-26 13:29:29 +0000141 check_media(caller, callee)
142 check_media(callee, caller)
Benny Prijonocc1ada52008-06-15 19:43:43 +0000143
144 # UPDATE (by callee)
145 callee.send("U")
Benny Prijono5242a422008-06-26 16:27:17 +0000146 #callee.sync_stdout()
147 caller.expect(const.MEDIA_ACTIVE, title="waiting for media active with UPDATE")
148 callee.expect(const.MEDIA_ACTIVE, title="waiting for media active with UPDATE")
Benny Prijonocc1ada52008-06-15 19:43:43 +0000149
150 # Synchronize stdout
Benny Prijono62a969c2008-06-26 13:29:29 +0000151 caller.sync_stdout()
152 callee.sync_stdout()
Benny Prijonocc1ada52008-06-15 19:43:43 +0000153
Benny Prijono62a969c2008-06-26 13:29:29 +0000154 # Test that media is okay
Benny Prijonocc1ada52008-06-15 19:43:43 +0000155 time.sleep(2)
Benny Prijono62a969c2008-06-26 13:29:29 +0000156 check_media(caller, callee)
157 check_media(callee, caller)
Benny Prijonocc1ada52008-06-15 19:43:43 +0000158
Benny Prijono5242a422008-06-26 16:27:17 +0000159 # Synchronize stdout
160 caller.sync_stdout()
161 callee.sync_stdout()
162
163 # Set codecs in both caller and callee so that there is
164 # no common codec between them.
165 # In caller we only enable PCMU, in callee we only enable PCMA
166 caller.send("Cp")
167 caller.send("* 0")
168 caller.send("Cp")
169 caller.send("pcmu 120")
170
171 callee.send("Cp")
172 callee.send("* 0")
173 callee.send("Cp")
174 callee.send("pcma 120")
175
176 # Test when UPDATE fails (by callee)
177 callee.send("U")
178 caller.expect("SIP/2.0 488")
179 callee.expect("SIP/2.0 488")
180 callee.sync_stdout()
181 caller.sync_stdout()
182
183 # Test that media is still okay
184 time.sleep(2)
185 check_media(caller, callee)
186 check_media(callee, caller)
187
188 # Test when UPDATE fails (by caller)
189 caller.send("U")
190 callee.expect("SIP/2.0 488")
191 caller.expect("SIP/2.0 488")
192 caller.sync_stdout()
193 callee.sync_stdout()
194
195 # Test that media is still okay
196 time.sleep(2)
197 check_media(callee, caller)
198 check_media(caller, callee)
199
Benny Prijonocc1ada52008-06-15 19:43:43 +0000200 # Hangup call
201 time.sleep(1)
202 caller.send("h")
Benny Prijono62a969c2008-06-26 13:29:29 +0000203 caller.sync_stdout()
Benny Prijonocc1ada52008-06-15 19:43:43 +0000204
205 # Wait until calls are cleared in both endpoints
206 caller.expect(const.STATE_DISCONNECTED)
207 callee.expect(const.STATE_DISCONNECTED)
208
209
210# Here where it all comes together
211test = cfg_file.test_param
212test.test_func = test_func
213