|
1 /* |
|
2 * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 // CLASS HEADER |
|
22 #include "UT_CMccRtpDataSource.h" |
|
23 |
|
24 // EXTERNAL INCLUDES |
|
25 #include <digia/eunit/eunitmacros.h> |
|
26 |
|
27 |
|
28 // INTERNAL INCLUDES |
|
29 #include "MccRtpDataSource.h" |
|
30 #include "MmccEvents.h" |
|
31 #include "AmrPayloadFormatRead.h" |
|
32 #include "mccrtpkeepalivecontainer.h" |
|
33 #include "mcctesteventhandler.h" |
|
34 #include <srtpcryptocontext.h> |
|
35 #include <srtpmastersalt.h> |
|
36 #include <srtpstreamin.h> |
|
37 #include "UT_CMccRtpInterface.h" |
|
38 #include "mccunittestmacros.h" |
|
39 |
|
40 // CONSTANTS |
|
41 _LIT8(KRFC3711_TestMasterKey128bits, "E1F97A0D3E018BE0D64FA32C06DE4139"); |
|
42 _LIT8(KRFC3711_TestMasterSalt112bits, "0EC675AD498AFEEBB6960B3AABE6"); |
|
43 _LIT8(KTestMKI128Bits, "ABCDEF1234567890ABCDEF1234567890"); |
|
44 |
|
45 // CONSTRUCTION |
|
46 UT_CMccRtpDataSource* UT_CMccRtpDataSource::NewL() |
|
47 { |
|
48 UT_CMccRtpDataSource* self = UT_CMccRtpDataSource::NewLC(); |
|
49 CleanupStack::Pop(); |
|
50 |
|
51 return self; |
|
52 } |
|
53 |
|
54 UT_CMccRtpDataSource* UT_CMccRtpDataSource::NewLC() |
|
55 { |
|
56 UT_CMccRtpDataSource* self = new( ELeave ) UT_CMccRtpDataSource(); |
|
57 CleanupStack::PushL( self ); |
|
58 |
|
59 self->ConstructL(); |
|
60 |
|
61 return self; |
|
62 } |
|
63 |
|
64 // Destructor (virtual by CBase) |
|
65 UT_CMccRtpDataSource::~UT_CMccRtpDataSource() |
|
66 { |
|
67 } |
|
68 |
|
69 // Default constructor |
|
70 UT_CMccRtpDataSource::UT_CMccRtpDataSource() |
|
71 : MDataSink( KUidMediaTypeAudio ) |
|
72 { |
|
73 } |
|
74 |
|
75 // Second phase construct |
|
76 void UT_CMccRtpDataSource::ConstructL() |
|
77 { |
|
78 // The ConstructL from the base class CEUnitTestSuiteClass must be called. |
|
79 // It generates the test case table. |
|
80 CEUnitTestSuiteClass::ConstructL(); |
|
81 } |
|
82 |
|
83 // METHODS |
|
84 |
|
85 |
|
86 void UT_CMccRtpDataSource::SetupL() |
|
87 { |
|
88 iEventHandler = CMccTestEventHandler::NewL(); |
|
89 iRtpApi = CRtpAPI::NewL( *iEventHandler ); |
|
90 TUid dummyUid( TUid::Uid( 42 ) ); |
|
91 TBuf8<5> dummyBuf( _L8( "foo" ) ); |
|
92 iSource = static_cast<CMccRtpDataSource*>( |
|
93 CMccRtpDataSource::NewSourceL( dummyUid, dummyBuf ) ); |
|
94 |
|
95 TMccRtpSourceSetting setting; |
|
96 setting.iStandByTimerValue = 3000; |
|
97 TMccRtpSourceSettingBuf settingBuf( setting ); |
|
98 iSource->ConstructSourceL( settingBuf ); |
|
99 |
|
100 MAsyncEventHandler* eventHandler = NULL; |
|
101 TRtpId rtpSessionId(0); |
|
102 iRtpKeepaliveMechanism = |
|
103 CMccRtpKeepaliveContainer::NewL( *eventHandler, |
|
104 *iRtpApi, |
|
105 rtpSessionId ); |
|
106 |
|
107 } |
|
108 |
|
109 void UT_CMccRtpDataSource::Teardown() |
|
110 { |
|
111 delete iRtpKeepaliveMechanism; |
|
112 |
|
113 if ( iSource ) |
|
114 { |
|
115 delete iSource; |
|
116 iSource = NULL; |
|
117 } |
|
118 if ( iSecSession) |
|
119 { |
|
120 delete iSecSession; |
|
121 iSecSession = NULL; |
|
122 } |
|
123 |
|
124 if ( iRtpApi ) |
|
125 { |
|
126 delete iRtpApi; |
|
127 iRtpApi = NULL; |
|
128 } |
|
129 |
|
130 delete iEventHandler; |
|
131 } |
|
132 |
|
133 |
|
134 // HELPER FUNCTIONS |
|
135 |
|
136 void UT_CMccRtpDataSource::InitializeL( TBool aCreateStream, TBool aEnableRtcp ) |
|
137 { |
|
138 iSource->SourceThreadLogon( *iEventHandler ); |
|
139 |
|
140 RArray<TUint> payloads; |
|
141 CleanupClosePushL( payloads ); |
|
142 payloads.AppendL( KDefaultAmrNbPT ); |
|
143 payloads.AppendL( KPcmuPayloadType ); |
|
144 iSource->RegisterPayloadTypesL( payloads ); |
|
145 CleanupStack::PopAndDestroy( &payloads ); |
|
146 |
|
147 TMccRtpSessionParams params; |
|
148 params.iRtpAPI = iRtpApi; |
|
149 params.iSessionId = iSession; |
|
150 params.iEnableRTCP = aEnableRtcp; |
|
151 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
152 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
153 |
|
154 if ( aCreateStream ) |
|
155 { |
|
156 CreateStreamL(); |
|
157 } |
|
158 } |
|
159 |
|
160 void UT_CMccRtpDataSource::CreateStreamL() |
|
161 { |
|
162 TMccCodecInfo cInfo; |
|
163 cInfo.iType = KUidMediaTypeAudio; |
|
164 cInfo.iFourCC = TFourCC( ' ','A','M','R' ); |
|
165 cInfo.iBitrate = 8000; |
|
166 cInfo.iPayloadType = KDefaultAmrNbPT; |
|
167 TMccCodecInfoBuffer cInfoBuf( cInfo ); |
|
168 EUNIT_ASSERT_NO_LEAVE( iSource->ConfigureL( cInfoBuf ) ); |
|
169 } |
|
170 |
|
171 // TEST FUNCTIONS |
|
172 |
|
173 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_RtpPacketReceivedL() |
|
174 { |
|
175 TRtpId stream( 0 ); |
|
176 TRtpId wrongStream( 99 ); |
|
177 TRtpRecvHeader header; |
|
178 TBuf8<5> data; |
|
179 data.Format( _L8( "foo42" ) ); |
|
180 iSource->SourceThreadLogon( *iEventHandler ); |
|
181 |
|
182 CMMFBuffer* buffer = CMMFDescriptorBuffer::NewL(10); |
|
183 CleanupStack::PushL( buffer ); |
|
184 CAmrPayloadFormatRead* amrPfRead = CAmrPayloadFormatRead::NewL( NULL ); |
|
185 CleanupStack::PushL( amrPfRead ); |
|
186 |
|
187 header.iPayloadType = KPcmuPayloadType; |
|
188 RArray<TUint> payloads; |
|
189 CleanupClosePushL( payloads ); |
|
190 payloads.AppendL( KDefaultAmrNbPT ); |
|
191 payloads.AppendL( KPcmuPayloadType ); |
|
192 iSource->RegisterPayloadTypesL( payloads ); |
|
193 CleanupStack::PopAndDestroy( &payloads ); |
|
194 |
|
195 // Wrong stream |
|
196 iSource->FillBufferL( buffer, amrPfRead, TMediaId() ); |
|
197 iSource->RtpPacketReceived( wrongStream, header, data ); |
|
198 |
|
199 TMccRtpSessionParams params; |
|
200 params.iRtpAPI = iRtpApi; |
|
201 params.iSessionId = iSession; |
|
202 params.iEnableRTCP = EFalse; |
|
203 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
204 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
205 |
|
206 TMccCodecInfo cInfo; |
|
207 cInfo.iFourCC = TFourCC( ' ','A','M','R' ); |
|
208 cInfo.iBitrate = 8000; |
|
209 cInfo.iPayloadType = KDefaultAmrNbPT; |
|
210 TMccCodecInfoBuffer cInfoBuf( cInfo ); |
|
211 |
|
212 EUNIT_ASSERT_NO_LEAVE( iSource->ConfigureL( cInfoBuf ) ); |
|
213 //iSource->NegotiateSourceL( *iEventHandler ); |
|
214 EUNIT_ASSERT_NO_LEAVE( iSource->NegotiateSourceL( *amrPfRead ) ); |
|
215 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePrimeL() ); |
|
216 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePlayL() ); |
|
217 |
|
218 stream = 2; // This is what the RtpAPI stub gives |
|
219 header.iPayloadType = KDefaultAmrNbPT; |
|
220 |
|
221 EUNIT_ASSERT_EQUALS( iSource->iTimeoutTime, 0 ); |
|
222 iSource->FillBufferL( buffer, amrPfRead, TMediaId() ); |
|
223 iSource->RtpPacketReceived( stream, header, data ); |
|
224 EUNIT_ASSERT_EQUALS( iSource->iTimeoutTime, 0 ); |
|
225 EUNIT_ASSERT_EQUALS( iSource->iInactivityTimerId, KMaxTUint32 ); |
|
226 |
|
227 // Inactivity timer is activated when receiving packet |
|
228 MCC_EUNIT_ASSERT_NO_LEAVE( iSource->StartInactivityTimerL( 500000 ) ); |
|
229 iSource->RtpPacketReceived( stream, header, data ); |
|
230 EUNIT_ASSERT_EQUALS( iSource->iTimeoutTime, 500000 ); |
|
231 EUNIT_ASSERT( iSource->iInactivityTimerId != KMaxTUint32 ); |
|
232 |
|
233 // Jitter observing is active |
|
234 iSource->iJitCalc->iMediaQualityObservingStarted = ETrue; |
|
235 iSource->RtpPacketReceived( stream, header, data ); |
|
236 |
|
237 // Sink not ready, error ignored silently |
|
238 iEventHandler->iLastEvent.iEventType = KMccEventNone; |
|
239 iSource->iFillBufferRequester = NULL; |
|
240 iSource->RtpPacketReceived( stream, header, data ); |
|
241 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccEventNone ); |
|
242 |
|
243 // secure key expired, error ignored silently |
|
244 iSource->iSecureKeyExpired = ETrue; |
|
245 iSource->RtpPacketReceived( stream, header, data ); |
|
246 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccEventNone ); |
|
247 |
|
248 CleanupStack::PopAndDestroy( amrPfRead ); |
|
249 CleanupStack::PopAndDestroy( buffer ); |
|
250 iSource->SourceThreadLogoff(); |
|
251 } |
|
252 |
|
253 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_StartInactivityTimerLL() |
|
254 { |
|
255 TUint32 time( 0 ); |
|
256 |
|
257 // Invalid time |
|
258 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->StartInactivityTimerL( time ), KErrArgument ); |
|
259 |
|
260 time = 5000; |
|
261 |
|
262 // Ok |
|
263 MCC_EUNIT_ASSERT_NO_LEAVE( iSource->StartInactivityTimerL( time ) ); |
|
264 } |
|
265 |
|
266 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_StopInactivityTimerLL() |
|
267 { |
|
268 // No timer exists |
|
269 EUNIT_ASSERT_NO_LEAVE( iSource->StopInactivityTimerL() ); |
|
270 |
|
271 TUint32 time( 5000 ); |
|
272 iSource->StartInactivityTimerL( time ); |
|
273 |
|
274 // OK |
|
275 EUNIT_ASSERT_NO_LEAVE( iSource->StopInactivityTimerL() ); |
|
276 } |
|
277 |
|
278 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SendMediaSignallingLL() |
|
279 { |
|
280 iSource->iEnableRtcp = ETrue; |
|
281 TMccEvent foo; |
|
282 UT_CMccRtpInterface::CreateRtcpEvent( foo ); |
|
283 |
|
284 EUNIT_ASSERT_LEAVE( iSource->SendMediaSignallingL( foo ) ); |
|
285 |
|
286 // No RtpApi |
|
287 foo.iEventCategory = KMccEventCategoryRtcp; |
|
288 foo.iEventType = KMccRtcpControl; |
|
289 TMccRtcpEventData eventData; |
|
290 eventData.iRtcpPacketType = KRtcpRrPacket; |
|
291 TMccRtcpEventDataPackage eventDataPkg( eventData ); |
|
292 foo.iEventData.Copy( eventDataPkg ); |
|
293 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->SendMediaSignallingL( foo ), KErrNotReady ); |
|
294 |
|
295 // Rr, stream does not exist |
|
296 InitializeL( EFalse, ETrue ); |
|
297 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->SendMediaSignallingL( foo ), KErrNotReady ); |
|
298 |
|
299 // Stream exists |
|
300 CreateStreamL(); |
|
301 EUNIT_ASSERT_NO_LEAVE( iSource->SendMediaSignallingL( foo ) ); |
|
302 |
|
303 // Sr |
|
304 eventData.iRtcpPacketType = KRtcpSrPacket; |
|
305 eventDataPkg = eventData; |
|
306 foo.iEventData.Copy( eventDataPkg ); |
|
307 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->SendMediaSignallingL( foo ), KErrArgument ); |
|
308 } |
|
309 |
|
310 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SourceDataTypeCodeL() |
|
311 { |
|
312 TMediaId mediaId( KUidMediaTypeVideo ); |
|
313 EUNIT_ASSERT_EQUALS( iSource->SourceDataTypeCode( mediaId ), TFourCC() ); |
|
314 |
|
315 iSource->SourceThreadLogoff(); |
|
316 TFourCC codec( ' ','A','M','R' ); |
|
317 TMediaId media2( KUidMediaTypeAudio ); |
|
318 iSource->SetSourceDataTypeCode( codec, media2 ); |
|
319 |
|
320 // The codecs SHOULD be equal |
|
321 EUNIT_ASSERT_EQUALS( iSource->SourceDataTypeCode( media2 ), codec ); |
|
322 } |
|
323 |
|
324 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SetSourceDataTypeCodeL() |
|
325 { |
|
326 TFourCC codec; |
|
327 TMediaId media( KUidMediaTypeVideo ); // wrong media type |
|
328 |
|
329 EUNIT_ASSERT_EQUALS( iSource->SetSourceDataTypeCode( codec, media ), KErrNone ); |
|
330 |
|
331 // Set the correct media type |
|
332 TMediaId media2( KUidMediaTypeAudio ); |
|
333 EUNIT_ASSERT_EQUALS( iSource->SetSourceDataTypeCode( codec, media2 ), KErrNone ); |
|
334 } |
|
335 |
|
336 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_BufferEmptiedLL() |
|
337 { |
|
338 EUNIT_ASSERT_LEAVE( iSource->BufferEmptiedL( NULL ) ); |
|
339 } |
|
340 |
|
341 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_CanCreateSourceBufferL() |
|
342 { |
|
343 EUNIT_ASSERT_EQUALS( iSource->CanCreateSourceBuffer(), EFalse ); |
|
344 } |
|
345 |
|
346 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_CreateSourceBufferLL() |
|
347 { |
|
348 TMediaId dummyId; |
|
349 TBool dummyBool; |
|
350 EUNIT_ASSERT_LEAVE( iSource->CreateSourceBufferL( dummyId, dummyBool ) ); |
|
351 } |
|
352 |
|
353 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SourceThreadLogonL() |
|
354 { |
|
355 iSource->SourceThreadLogon( *iEventHandler ); |
|
356 iSource->SourceThreadLogon( *iEventHandler ); |
|
357 iSource->SourceThreadLogoff(); |
|
358 } |
|
359 |
|
360 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SourceThreadLogoffL() |
|
361 { |
|
362 iSource->SourceThreadLogoff(); |
|
363 |
|
364 // Reach more branches |
|
365 TMccRtpSessionParams params; |
|
366 params.iRtpAPI = iRtpApi; |
|
367 params.iSessionId = iSession; |
|
368 params.iEnableRTCP = EFalse; |
|
369 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
370 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
371 |
|
372 TMccCodecInfo cInfo; |
|
373 cInfo.iFourCC = TFourCC( ' ','A','M','R' ); |
|
374 cInfo.iBitrate = 8000; |
|
375 cInfo.iPayloadType = KDefaultAmrNbPT; |
|
376 TMccCodecInfoBuffer cInfoBuf( cInfo ); |
|
377 |
|
378 EUNIT_ASSERT_NO_LEAVE( iSource->ConfigureL( cInfoBuf ) ); |
|
379 |
|
380 MCC_EUNIT_ASSERT_EQUALS( iSource->SourceThreadLogon( *iEventHandler ), KErrNone ); |
|
381 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePrimeL() ); |
|
382 |
|
383 iSource->SourceThreadLogoff(); |
|
384 |
|
385 } |
|
386 |
|
387 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SourcePrimeLL() |
|
388 { |
|
389 // Ok |
|
390 TMccRtpSessionParams params; |
|
391 params.iRtpAPI = iRtpApi; |
|
392 params.iSessionId = iSession; |
|
393 params.iEnableRTCP = EFalse; |
|
394 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
395 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
396 |
|
397 TMccCodecInfo cInfo; |
|
398 cInfo.iFourCC = TFourCC( ' ','A','M','R' ); |
|
399 cInfo.iBitrate = 8000; |
|
400 cInfo.iPayloadType = KDefaultAmrNbPT; |
|
401 TMccCodecInfoBuffer cInfoBuf( cInfo ); |
|
402 |
|
403 EUNIT_ASSERT_NO_LEAVE( iSource->ConfigureL( cInfoBuf ) ); |
|
404 |
|
405 MCC_EUNIT_ASSERT_EQUALS( iSource->SourceThreadLogon( *iEventHandler ), KErrNone ); |
|
406 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePrimeL() ); |
|
407 |
|
408 iSource->SourceThreadLogoff(); |
|
409 } |
|
410 |
|
411 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SourcePlayLL() |
|
412 { |
|
413 // Not logged on |
|
414 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->SourcePlayL(), KErrNotFound ); |
|
415 |
|
416 // Not allowed if not yet prepared |
|
417 InitializeL(); |
|
418 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->SourcePlayL(), KErrNotReady ); |
|
419 |
|
420 // Ok when already prepared |
|
421 iSource->iState = MMccRtpInterface::ERtpStatePrimed; |
|
422 |
|
423 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePlayL() ); |
|
424 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccStreamStarted ); |
|
425 |
|
426 // Resuming |
|
427 iSource->iState = MMccRtpInterface::ERtpStatePaused; |
|
428 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePlayL() ); |
|
429 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccStreamResumed ); |
|
430 EUNIT_ASSERT( iRtpKeepaliveMechanism->iStopped == EFalse ) |
|
431 |
|
432 // State downgrade is ignored |
|
433 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePrimeL() ); |
|
434 EUNIT_ASSERT( MMccRtpInterface::ERtpStatePlaying == iSource->State() ); |
|
435 |
|
436 // "Secure session" |
|
437 iRtpKeepaliveMechanism->iStopped = ETrue; |
|
438 TInt fakeSecSession( 3 ); |
|
439 iSource->iSecSession = reinterpret_cast<CSRTPSession*>( &fakeSecSession ); |
|
440 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePlayL() ); |
|
441 EUNIT_ASSERT( iRtpKeepaliveMechanism->iStopped == ETrue ) |
|
442 iSource->iSecSession = NULL; |
|
443 } |
|
444 |
|
445 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SourcePauseLL() |
|
446 { |
|
447 EUNIT_ASSERT_LEAVE( iSource->SourcePauseL() ); |
|
448 } |
|
449 |
|
450 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SourceStopLL() |
|
451 { |
|
452 EUNIT_ASSERT_NO_LEAVE( iSource->SourceStopL() ); |
|
453 } |
|
454 |
|
455 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_FillBufferLL() |
|
456 { |
|
457 EUNIT_ASSERT_NO_LEAVE( iSource->FillBufferL( NULL, NULL, TMediaId() ) ); |
|
458 CMMFDataBuffer* buffer = CMMFDataBuffer::NewL( 100 ); |
|
459 CleanupStack::PushL( buffer ); |
|
460 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->FillBufferL( buffer, NULL, TMediaId() ), KErrArgument ); |
|
461 CleanupStack::PopAndDestroy( buffer ); |
|
462 } |
|
463 |
|
464 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SendRTCPReceiverReportL() |
|
465 { |
|
466 // No RTP API set |
|
467 EUNIT_ASSERT_EQUALS( iSource->SendRTCPReceiverReport(), KErrNotReady ); |
|
468 |
|
469 TMccRtpSessionParams params; |
|
470 params.iRtpAPI = iRtpApi; |
|
471 params.iSessionId = iSession; |
|
472 params.iEnableRTCP = EFalse; |
|
473 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
474 iSource->SetSessionParamsL( params ); |
|
475 |
|
476 |
|
477 // Ok |
|
478 iSource->iRtpStreamId = 1; // the iStreamID must not be empty |
|
479 EUNIT_ASSERT_EQUALS( iSource->SendRTCPReceiverReport(), KErrNone ); |
|
480 } |
|
481 |
|
482 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SendRTCPSenderReportL() |
|
483 { |
|
484 // No RTP API set |
|
485 EUNIT_ASSERT_EQUALS( iSource->SendRTCPSenderReport(), KErrNotReady ); |
|
486 |
|
487 TMccRtpSessionParams params; |
|
488 params.iRtpAPI = iRtpApi; |
|
489 params.iSessionId = iSession; |
|
490 params.iEnableRTCP = EFalse; |
|
491 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
492 iSource->SetSessionParamsL( params ); |
|
493 |
|
494 // Ok |
|
495 iSource->iRtpStreamId = 1; // the iStreamID must not be empty |
|
496 EUNIT_ASSERT_EQUALS( iSource->SendRTCPSenderReport(), KErrNone ); |
|
497 } |
|
498 |
|
499 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SendRTCPDataLL() |
|
500 { |
|
501 TBuf8<5> dummy; |
|
502 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->SendRTCPDataL( dummy ), KErrNotSupported ); |
|
503 } |
|
504 |
|
505 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_NegotiateSourceLL() |
|
506 { |
|
507 // wrong codec |
|
508 EUNIT_ASSERT_NO_LEAVE( iSource->NegotiateSourceL( *this ) ); |
|
509 |
|
510 // Reach more branches |
|
511 TMccRtpSessionParams params; |
|
512 params.iRtpAPI = iRtpApi; |
|
513 params.iSessionId = iSession; |
|
514 params.iEnableRTCP = EFalse; |
|
515 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
516 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
517 |
|
518 TMccCodecInfo cInfo; |
|
519 cInfo.iFourCC = TFourCC( ' ','A','M','R' ); |
|
520 cInfo.iBitrate = 8000; |
|
521 cInfo.iPayloadType = KDefaultAmrNbPT; |
|
522 TMccCodecInfoBuffer cInfoBuf( cInfo ); |
|
523 |
|
524 EUNIT_ASSERT_NO_LEAVE( iSource->ConfigureL( cInfoBuf ) ); |
|
525 MCC_EUNIT_ASSERT_EQUALS( iSource->SourceThreadLogon( *iEventHandler ), KErrNone ); |
|
526 EUNIT_ASSERT_NO_LEAVE( iSource->SourcePrimeL() ); |
|
527 |
|
528 EUNIT_ASSERT_NO_LEAVE( iSource->NegotiateSourceL( *this ) ); |
|
529 iSource->SourceThreadLogoff(); |
|
530 } |
|
531 |
|
532 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_ConstructSourceLL() |
|
533 { |
|
534 TUid dummyUid( TUid::Uid( 42 ) ); |
|
535 TBuf8<5> dummyBuf( _L8( "foo" ) ); |
|
536 CMccRtpDataSource* source = static_cast<CMccRtpDataSource*>( |
|
537 CMccRtpDataSource::NewSourceL( dummyUid, dummyBuf ) ); |
|
538 CleanupStack::PushL( source ); |
|
539 MCC_EUNIT_ASSERT_NO_LEAVE( source->ConstructSourceL( KNullDesC8 ) ); |
|
540 CleanupStack::PopAndDestroy( source ); |
|
541 } |
|
542 |
|
543 |
|
544 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_ValidatePacketL() |
|
545 { |
|
546 TRtpId streamId( KNullId ); |
|
547 TRtpRecvHeader header; |
|
548 |
|
549 TBuf8<5> data5; |
|
550 TBuf8<15> data15; |
|
551 data5.Format( _L8( "foo42" ) ); |
|
552 data15.Format( _L8( "foo42foo42foo42" ) ); |
|
553 |
|
554 // Data too big, stream ok, wrong payload type |
|
555 EUNIT_ASSERT_LEAVE( iSource->ValidatePacketL( streamId, header, data15 ) ); |
|
556 |
|
557 // Data ok, stream ok, wrong payload type |
|
558 EUNIT_ASSERT_LEAVE( iSource->ValidatePacketL( streamId, header, data5 ) ); |
|
559 |
|
560 header.iPayloadType = KMccPayloadTypeMax; |
|
561 |
|
562 // header not OK |
|
563 CMMFDataBuffer* buffer = CMMFDataBuffer::NewL(10); |
|
564 CleanupStack::PushL( buffer ); |
|
565 iSource->iBufferToFill = buffer; |
|
566 EUNIT_ASSERT_LEAVE( iSource->ValidatePacketL( streamId, header, data5 ) ); |
|
567 |
|
568 // Get a new source |
|
569 //Teardown(); |
|
570 if( iRtpKeepaliveMechanism ) |
|
571 { |
|
572 delete iRtpKeepaliveMechanism; |
|
573 iRtpKeepaliveMechanism = NULL; |
|
574 } |
|
575 |
|
576 if ( iSource ) |
|
577 { |
|
578 delete iSource; |
|
579 iSource = NULL; |
|
580 } |
|
581 //SetupL(); |
|
582 TUid dummyUid( TUid::Uid( 42 ) ); |
|
583 TBuf8<5> dummyBuf( _L8( "foo" ) ); |
|
584 iSource = static_cast<CMccRtpDataSource*>( |
|
585 CMccRtpDataSource::NewSourceL( dummyUid, dummyBuf ) ); |
|
586 |
|
587 TMccRtpSourceSetting setting; |
|
588 setting.iStandByTimerValue = 3000; |
|
589 TMccRtpSourceSettingBuf settingBuf( setting ); |
|
590 iSource->ConstructSourceL( settingBuf ); |
|
591 |
|
592 MAsyncEventHandler* eventHandler = NULL; |
|
593 TRtpId rtpSessionId(0); |
|
594 iRtpKeepaliveMechanism = |
|
595 CMccRtpKeepaliveContainer::NewL( *eventHandler, |
|
596 *iRtpApi, |
|
597 rtpSessionId ); |
|
598 |
|
599 TMccRtpSessionParams params; |
|
600 params.iRtpAPI = iRtpApi; |
|
601 params.iSessionId = iSession; |
|
602 params.iEnableRTCP = EFalse; |
|
603 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
604 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
605 |
|
606 TMccCodecInfo cInfo; |
|
607 cInfo.iFourCC = TFourCC( KMccFourCCIdG711 ); |
|
608 cInfo.iEnableDTX = ETrue; |
|
609 TMccCodecInfoBuffer cInfoBuf( cInfo ); |
|
610 EUNIT_ASSERT_NO_LEAVE( iSource->ConfigureL( cInfoBuf ) ); |
|
611 |
|
612 header.iPayloadType = KPcmuPayloadType; |
|
613 |
|
614 // Data ok, stream ok, payload type ok |
|
615 CAmrPayloadFormatRead* amrPfRead = CAmrPayloadFormatRead::NewL( NULL ); |
|
616 CleanupStack::PushL( amrPfRead ); |
|
617 |
|
618 RArray<TUint> payloads; |
|
619 CleanupClosePushL( payloads ); |
|
620 payloads.AppendL( KPcmuPayloadType ); |
|
621 iSource->RegisterPayloadTypesL( payloads ); |
|
622 iSource->FillBufferL( buffer, amrPfRead, TMediaId() ); |
|
623 EUNIT_ASSERT_NO_LEAVE( iSource->ValidatePacketL( streamId, header, data5 ) ); |
|
624 CleanupStack::PopAndDestroy( &payloads ); |
|
625 CleanupStack::PopAndDestroy( amrPfRead ); |
|
626 CleanupStack::PopAndDestroy( buffer ); |
|
627 |
|
628 } |
|
629 |
|
630 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_CreateStreamLL() |
|
631 { |
|
632 TMccRtpSessionParams params; |
|
633 params.iRtpAPI = iRtpApi; |
|
634 params.iSessionId = iSession; |
|
635 params.iEnableRTCP = ETrue; |
|
636 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
637 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
638 |
|
639 TMccCodecInfo cInfo; |
|
640 TMccCodecInfoBuffer cInfoBuf( cInfo ); |
|
641 |
|
642 EUNIT_ASSERT_NO_LEAVE( iSource->ConfigureL( cInfoBuf ) ); |
|
643 |
|
644 // Get a new Source |
|
645 Teardown(); |
|
646 SetupL(); |
|
647 |
|
648 // This should leave because the string is too short |
|
649 TBuf8<5> dummy; |
|
650 dummy.Format( _L8( "foo42" ) ); |
|
651 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
652 EUNIT_ASSERT_LEAVE( iSource->ConfigureL( dummy ) ); |
|
653 |
|
654 // Get a new Source |
|
655 Teardown(); |
|
656 SetupL(); |
|
657 |
|
658 TMccRtpSessionParams params2; |
|
659 params2.iRtpAPI = iRtpApi; |
|
660 params2.iSessionId = iSession; |
|
661 params2.iEnableRTCP = EFalse; |
|
662 params2.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
663 iSource->SetSessionParamsL( params2 ); |
|
664 |
|
665 TMccCodecInfo cInfo2; |
|
666 cInfo2.iFourCC = TFourCC( KMccFourCCIdG711 ); |
|
667 cInfo2.iEnableDTX = ETrue; |
|
668 cInfo2.iRedundantPayload = 97; |
|
669 cInfo2.iRedundancyCount = 1; |
|
670 cInfo2.iAlgoUsed = EGenRedUsed; |
|
671 TMccCodecInfoBuffer cInfoBuf2( cInfo2 ); |
|
672 |
|
673 EUNIT_ASSERT_NO_LEAVE( iSource->ConfigureL( cInfoBuf2 ) ); |
|
674 } |
|
675 |
|
676 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_DoCreateSrtpStreamL() |
|
677 { |
|
678 // Rtp stream not created |
|
679 iSource->iRtpStreamId = KNullId; |
|
680 EUNIT_ASSERT_NO_LEAVE( iSource->DoCreateSrtpStreamL() ); |
|
681 } |
|
682 |
|
683 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_TestSendEventL() |
|
684 { |
|
685 iSource->SourceThreadLogon( *iEventHandler ); |
|
686 |
|
687 // No target payload |
|
688 iSource->SendStreamEventToClient( KMccStreamPaused, KErrNone, KMccPTNotDefined ); |
|
689 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccStreamPaused ); |
|
690 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventNumData, 0 ); |
|
691 |
|
692 // Target payload |
|
693 iSource->SendStreamEventToClient( KMccStreamResumed, KErrNone, 100 ); |
|
694 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccStreamResumed ); |
|
695 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventNumData, KMccPayloadSpecificEvent ); |
|
696 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iReserved, 100 ); |
|
697 |
|
698 // No event handler |
|
699 iSource->iEventHandler = NULL; |
|
700 iSource->SendStreamEventToClient( KMccStreamStopped, KErrNone, KMccPTNotDefined ); |
|
701 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccStreamResumed ); |
|
702 |
|
703 // Jitter event when no event handler |
|
704 TMccRtpEventData eventData; |
|
705 iSource->SendJitterEvent( eventData, KErrNone ); |
|
706 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccStreamResumed ); |
|
707 |
|
708 // Event handler exists |
|
709 iSource->iEventHandler = iEventHandler; |
|
710 iSource->SendJitterEvent( eventData, KErrNone ); |
|
711 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccMediaQualityStatus ); |
|
712 } |
|
713 |
|
714 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_StandbyL() |
|
715 { |
|
716 EUNIT_ASSERT_EQUALS( iSource->StandBy( EForceStandby, 100 ), KErrNotFound ); |
|
717 |
|
718 // Standby force when properly initialized |
|
719 InitializeL(); |
|
720 |
|
721 EUNIT_ASSERT_EQUALS( iSource->iUsers.Count(), 2 ); |
|
722 EUNIT_ASSERT_EQUALS( iSource->StandBy( EForceStandby, KPcmuPayloadType ), KErrNone ); |
|
723 iSource->iState = MMccRtpInterface::ERtpStatePlaying; |
|
724 EUNIT_ASSERT_EQUALS( iSource->StandBy( EForceStandby, KPcmuPayloadType ), KErrNone ); |
|
725 EUNIT_ASSERT( iSource->iUsers[ 0 ].iStandbyState == EInactive ); |
|
726 |
|
727 // Test activation when already inactive |
|
728 EUNIT_ASSERT_EQUALS( iSource->StandBy( EActivateStandby, KPcmuPayloadType ), KErrNone ); |
|
729 EUNIT_ASSERT( iSource->iUsers[ 0 ].iStandbyState == EInactive ); |
|
730 |
|
731 // Test activation when activating |
|
732 iSource->iUsers[ 0 ].iStandbyState = EActivating; |
|
733 EUNIT_ASSERT_EQUALS( iSource->StandBy( EActivateStandby, KPcmuPayloadType ), KErrNone ); |
|
734 EUNIT_ASSERT( iSource->iUsers[ 0 ].iStandbyState == EActivating ); |
|
735 |
|
736 // Test activation when inactive |
|
737 iSource->iUsers[ 0 ].iStandbyState = EActive; |
|
738 EUNIT_ASSERT_EQUALS( iSource->StandBy( EActivateStandby, KPcmuPayloadType ), KErrNone ); |
|
739 EUNIT_ASSERT( iSource->iUsers[ 0 ].iStandbyState == EInactive ); |
|
740 |
|
741 // Test deactivation |
|
742 EUNIT_ASSERT_EQUALS( iSource->StandBy( EDeactivateStandby, KPcmuPayloadType ), KErrNone ); |
|
743 EUNIT_ASSERT( iSource->iUsers[ 0 ].iStandbyState == ETurnedOff ); |
|
744 |
|
745 // Test activation when standby is turned off (timer expires) |
|
746 iSource->iUsers[ 0 ].iTimerId = 2; |
|
747 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->TimerExpiredL( 2, NULL ), KErrNotSupported ); |
|
748 |
|
749 // Test timer expiration for inactivity |
|
750 iSource->iInactivityTimerId = 3; |
|
751 iSource->TimerExpiredL( 3, NULL ); |
|
752 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccInactivityEvent ); |
|
753 } |
|
754 |
|
755 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SourceCustomCommandL() |
|
756 { |
|
757 // A bit hard to test |
|
758 EUNIT_ASSERT( ETrue ); |
|
759 } |
|
760 |
|
761 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_TestBaseClassL() |
|
762 { |
|
763 // Test some base class functions which are hard to test by other means |
|
764 |
|
765 // Internal event to all clients (no users) |
|
766 iSource->SendInternalRtpEventToAllClients( |
|
767 iSource->iUsers, KMccRtpSourceUid, EMccInternalEventNone, KMccStreamError, 0, KErrGeneral ); |
|
768 |
|
769 // Users exist |
|
770 InitializeL(); |
|
771 |
|
772 iSource->SendInternalRtpEventToAllClients( |
|
773 iSource->iUsers, KMccRtpSourceUid, EMccInternalEventNone, KMccStreamError, 0, KErrGeneral ); |
|
774 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccStreamError ); |
|
775 |
|
776 // Secure events |
|
777 iSource->SendSecureRtpEventToClient( |
|
778 NULL, KMccRtpSourceUid, EMccInternalEventNone, KMccStreamPaused, 0 ); |
|
779 iSource->SendSecureRtpEventToClient( |
|
780 iEventHandler, KMccRtpSourceUid, EMccInternalEventNone, KMccStreamPaused, 0 ); |
|
781 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccStreamPaused ); |
|
782 } |
|
783 |
|
784 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_DoStandbyDecisionL() |
|
785 { |
|
786 // Standby not enabled |
|
787 iSource->DoStandByDecision( NULL ); |
|
788 |
|
789 // Standby enabled |
|
790 InitializeL(); |
|
791 iSource->DoStandByDecision( &iSource->iUsers[ 0 ] ); |
|
792 EUNIT_ASSERT( iSource->iUsers[ 0 ].iStandbyState == EActive ); |
|
793 } |
|
794 |
|
795 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_RegisterPayloadTypesLL() |
|
796 { |
|
797 RArray<TUint> payloads; |
|
798 CleanupClosePushL( payloads ); |
|
799 payloads.AppendL( KPcmuPayloadType ); |
|
800 payloads.AppendL( KDefaultAmrNbPT ); |
|
801 iSource->RegisterPayloadTypesL( payloads ); |
|
802 EUNIT_ASSERT_EQUALS( iSource->iUsers.Count(), 2 ); |
|
803 |
|
804 // Do again, multiple entries are not created |
|
805 iSource->RegisterPayloadTypesL( payloads ); |
|
806 EUNIT_ASSERT_EQUALS( iSource->iUsers.Count(), 2 ); |
|
807 |
|
808 // Try to unregister not registered payload type |
|
809 RArray<TUint> payloads2; |
|
810 CleanupClosePushL( payloads2 ); |
|
811 payloads2.AppendL( KPcmaPayloadType ); |
|
812 iSource->UnRegisterPayloadTypes( payloads2 ); |
|
813 EUNIT_ASSERT_EQUALS( iSource->iUsers.Count(), 2 ); |
|
814 CleanupStack::PopAndDestroy( &payloads2 ); |
|
815 |
|
816 // Unregister registered payload types |
|
817 iSource->UnRegisterPayloadTypes( payloads ); |
|
818 EUNIT_ASSERT_EQUALS( iSource->iUsers.Count(), 0 ); |
|
819 CleanupStack::PopAndDestroy( &payloads ); |
|
820 } |
|
821 |
|
822 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SRTPMasterKeyStaleEvent1L() |
|
823 { |
|
824 //SetUp SecureSession |
|
825 TInetAddr destination; |
|
826 destination.Input(_L("127.0.0.1") ); |
|
827 iSecSession = CSRTPSession::NewL( destination ); |
|
828 |
|
829 //Set up MCCparams |
|
830 TMccRtpSessionParams params; |
|
831 params.iRtpAPI = iRtpApi; |
|
832 params.iSecSession = iSecSession; |
|
833 params.iSessionId = iSession; |
|
834 params.iEnableRTCP = EFalse; |
|
835 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
836 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
837 iSource->SourceThreadLogon( *iEventHandler ); |
|
838 |
|
839 iSource->SRTPMasterKeyStaleEvent( *iSecSession ); |
|
840 EUNIT_ASSERT( iSource->iSecureKeyExpired ); |
|
841 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccMasterKeyStaled ); |
|
842 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->SourcePlayL(), KErrGeneral ); |
|
843 } |
|
844 |
|
845 void UT_CMccRtpDataSource::UT_CMccRtpDataSource_SRTPMasterKeyStaleEvent2L() |
|
846 { |
|
847 //SetUp SecureSession |
|
848 TInetAddr destination; |
|
849 destination.Input(_L("127.0.0.1") ); |
|
850 iSecSession = CSRTPSession::NewL( destination ); |
|
851 |
|
852 //Set up Secure Stream |
|
853 //Secure Context |
|
854 |
|
855 HBufC8* masterKey = HBufC8::NewL(KRFC3711_TestMasterKey128bits().Length()); |
|
856 CleanupStack::PushL( masterKey ); |
|
857 *masterKey = KRFC3711_TestMasterKey128bits; |
|
858 |
|
859 HBufC8* masterSalt =HBufC8::NewL(KRFC3711_TestMasterSalt112bits().Length()); |
|
860 CleanupStack::PushL( masterSalt ); |
|
861 *masterSalt = KRFC3711_TestMasterSalt112bits; |
|
862 |
|
863 |
|
864 HBufC8* mki =HBufC8::NewL(KTestMKI128Bits().Length()); |
|
865 CleanupStack::PushL( mki ); |
|
866 *mki = KTestMKI128Bits; |
|
867 //Hex(*mki); |
|
868 |
|
869 CSRTPMasterKey* mKey = CSRTPMasterKey::NewL( *masterKey, *mki ); |
|
870 CleanupStack::PushL( mKey ); |
|
871 CSRTPMasterSalt* saltKey = CSRTPMasterSalt::NewL( *masterSalt ); |
|
872 CleanupStack::PushL( saltKey ); |
|
873 |
|
874 TSrtpCryptoParams srtpParams; |
|
875 CSRTPCryptoContext* context = CSRTPCryptoContext::NewL(mKey, saltKey, srtpParams ); |
|
876 CleanupStack::Pop( saltKey ); |
|
877 CleanupStack::Pop( mKey ); |
|
878 |
|
879 CleanupStack::PopAndDestroy( mki ); |
|
880 CleanupStack::PopAndDestroy( masterSalt ); |
|
881 CleanupStack::PopAndDestroy( masterKey ); |
|
882 |
|
883 CleanupStack::PushL( context ); |
|
884 |
|
885 CSRTPStreamIn* srtpStream = CSRTPStreamIn::NewL( *iSecSession, context, *iSource ); |
|
886 CleanupStack::Pop( context ); |
|
887 CleanupStack::PushL( srtpStream ); |
|
888 |
|
889 //Set up MCCparams |
|
890 TMccRtpSessionParams params; |
|
891 params.iRtpAPI = iRtpApi; |
|
892 params.iSecSession = iSecSession; |
|
893 params.iSessionId = iSession; |
|
894 params.iEnableRTCP = EFalse; |
|
895 |
|
896 params.iRtpKeepalive = iRtpKeepaliveMechanism; |
|
897 EUNIT_ASSERT_NO_LEAVE( iSource->SetSessionParamsL( params ) ); |
|
898 iSource->SourceThreadLogon( *iEventHandler ); |
|
899 //srtpStream is not equal |
|
900 iSource->SRTPMasterKeyStaleEvent( *srtpStream ); |
|
901 EUNIT_ASSERT( !iSource->iSecureKeyExpired ); |
|
902 EUNIT_ASSERT_NOT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccMasterKeyStaled ); |
|
903 //srtpStream is equal |
|
904 iSource->iSrtpStream = srtpStream; |
|
905 iSource->SRTPMasterKeyStaleEvent( *srtpStream ); |
|
906 EUNIT_ASSERT( iSource->iSecureKeyExpired ); |
|
907 EUNIT_ASSERT_EQUALS( iEventHandler->iLastEvent.iEventType, KMccMasterKeyStaled ); |
|
908 EUNIT_ASSERT_SPECIFIC_LEAVE( iSource->SourcePlayL(), KErrGeneral ); |
|
909 CleanupStack::Pop( srtpStream ); |
|
910 } |
|
911 |
|
912 // TEST TABLE |
|
913 |
|
914 EUNIT_BEGIN_TEST_TABLE( |
|
915 UT_CMccRtpDataSource, |
|
916 "CMccRtpDataSource", |
|
917 "UNIT" ) |
|
918 |
|
919 EUNIT_TEST( |
|
920 "RtpPacketReceived - test ", |
|
921 "CMccRtpDataSource", |
|
922 "RtpPacketReceived", |
|
923 "FUNCTIONALITY", |
|
924 SetupL, UT_CMccRtpDataSource_RtpPacketReceivedL, Teardown) |
|
925 |
|
926 EUNIT_TEST( |
|
927 "StartInactivityTimerL - test ", |
|
928 "CMccRtpDataSource", |
|
929 "StartInactivityTimerL", |
|
930 "FUNCTIONALITY", |
|
931 SetupL, UT_CMccRtpDataSource_StartInactivityTimerLL, Teardown) |
|
932 |
|
933 EUNIT_TEST( |
|
934 "StopInactivityTimerL - test ", |
|
935 "CMccRtpDataSource", |
|
936 "StopInactivityTimerL", |
|
937 "FUNCTIONALITY", |
|
938 SetupL, UT_CMccRtpDataSource_StopInactivityTimerLL, Teardown) |
|
939 |
|
940 EUNIT_TEST( |
|
941 "SendMediaSignallingL - test ", |
|
942 "CMccRtpDataSource", |
|
943 "SendMediaSignallingL", |
|
944 "FUNCTIONALITY", |
|
945 SetupL, UT_CMccRtpDataSource_SendMediaSignallingLL, Teardown) |
|
946 |
|
947 EUNIT_TEST( |
|
948 "SourceDataTypeCode - test ", |
|
949 "CMccRtpDataSource", |
|
950 "SourceDataTypeCode", |
|
951 "FUNCTIONALITY", |
|
952 SetupL, UT_CMccRtpDataSource_SourceDataTypeCodeL, Teardown) |
|
953 |
|
954 EUNIT_TEST( |
|
955 "SetSourceDataTypeCode - test ", |
|
956 "CMccRtpDataSource", |
|
957 "SetSourceDataTypeCode", |
|
958 "FUNCTIONALITY", |
|
959 SetupL, UT_CMccRtpDataSource_SetSourceDataTypeCodeL, Teardown) |
|
960 |
|
961 EUNIT_TEST( |
|
962 "BufferEmptiedL - test ", |
|
963 "CMccRtpDataSource", |
|
964 "BufferEmptiedL", |
|
965 "FUNCTIONALITY", |
|
966 SetupL, UT_CMccRtpDataSource_BufferEmptiedLL, Teardown) |
|
967 |
|
968 EUNIT_TEST( |
|
969 "CanCreateSourceBuffer - test ", |
|
970 "CMccRtpDataSource", |
|
971 "CanCreateSourceBuffer", |
|
972 "FUNCTIONALITY", |
|
973 SetupL, UT_CMccRtpDataSource_CanCreateSourceBufferL, Teardown) |
|
974 |
|
975 EUNIT_TEST( |
|
976 "CreateSourceBufferL - test ", |
|
977 "CMccRtpDataSource", |
|
978 "CreateSourceBufferL", |
|
979 "FUNCTIONALITY", |
|
980 SetupL, UT_CMccRtpDataSource_CreateSourceBufferLL, Teardown) |
|
981 |
|
982 EUNIT_TEST( |
|
983 "SourceThreadLogon - test ", |
|
984 "CMccRtpDataSource", |
|
985 "SourceThreadLogon", |
|
986 "FUNCTIONALITY", |
|
987 SetupL, UT_CMccRtpDataSource_SourceThreadLogonL, Teardown) |
|
988 |
|
989 EUNIT_TEST( |
|
990 "SourceThreadLogoff - test ", |
|
991 "CMccRtpDataSource", |
|
992 "SourceThreadLogoff", |
|
993 "FUNCTIONALITY", |
|
994 SetupL, UT_CMccRtpDataSource_SourceThreadLogoffL, Teardown) |
|
995 |
|
996 EUNIT_TEST( |
|
997 "SourcePrimeL - test ", |
|
998 "CMccRtpDataSource", |
|
999 "SourcePrimeL", |
|
1000 "FUNCTIONALITY", |
|
1001 SetupL, UT_CMccRtpDataSource_SourcePrimeLL, Teardown) |
|
1002 |
|
1003 EUNIT_TEST( |
|
1004 "SourcePlayL - test ", |
|
1005 "CMccRtpDataSource", |
|
1006 "SourcePlayL", |
|
1007 "FUNCTIONALITY", |
|
1008 SetupL, UT_CMccRtpDataSource_SourcePlayLL, Teardown) |
|
1009 |
|
1010 EUNIT_TEST( |
|
1011 "SourcePauseL - test ", |
|
1012 "CMccRtpDataSource", |
|
1013 "SourcePauseL", |
|
1014 "FUNCTIONALITY", |
|
1015 SetupL, UT_CMccRtpDataSource_SourcePauseLL, Teardown) |
|
1016 |
|
1017 EUNIT_TEST( |
|
1018 "SourceStopL - test ", |
|
1019 "CMccRtpDataSource", |
|
1020 "SourceStopL", |
|
1021 "FUNCTIONALITY", |
|
1022 SetupL, UT_CMccRtpDataSource_SourceStopLL, Teardown) |
|
1023 |
|
1024 EUNIT_TEST( |
|
1025 "FillBufferL - test ", |
|
1026 "CMccRtpDataSource", |
|
1027 "FillBufferL", |
|
1028 "FUNCTIONALITY", |
|
1029 SetupL, UT_CMccRtpDataSource_FillBufferLL, Teardown) |
|
1030 |
|
1031 EUNIT_TEST( |
|
1032 "SendRTCPReceiverReport - test ", |
|
1033 "CMccRtpDataSource", |
|
1034 "SendRTCPReceiverReport", |
|
1035 "FUNCTIONALITY", |
|
1036 SetupL, UT_CMccRtpDataSource_SendRTCPReceiverReportL, Teardown) |
|
1037 |
|
1038 EUNIT_TEST( |
|
1039 "SendRTCPSenderReport - test ", |
|
1040 "CMccRtpDataSource", |
|
1041 "SendRTCPSenderReport", |
|
1042 "FUNCTIONALITY", |
|
1043 SetupL, UT_CMccRtpDataSource_SendRTCPSenderReportL, Teardown) |
|
1044 |
|
1045 EUNIT_TEST( |
|
1046 "SendRTCPDataL - test ", |
|
1047 "CMccRtpDataSource", |
|
1048 "SendRTCPDataL", |
|
1049 "FUNCTIONALITY", |
|
1050 SetupL, UT_CMccRtpDataSource_SendRTCPDataLL, Teardown) |
|
1051 |
|
1052 EUNIT_TEST( |
|
1053 "NegotiateSourceL - test ", |
|
1054 "CMccRtpDataSource", |
|
1055 "NegotiateSourceL", |
|
1056 "FUNCTIONALITY", |
|
1057 SetupL, UT_CMccRtpDataSource_NegotiateSourceLL, Teardown) |
|
1058 |
|
1059 EUNIT_TEST( |
|
1060 "ConstructSourceL - test ", |
|
1061 "CMccRtpDataSource", |
|
1062 "ConstructSourceL", |
|
1063 "FUNCTIONALITY", |
|
1064 SetupL, UT_CMccRtpDataSource_ConstructSourceLL, Teardown) |
|
1065 |
|
1066 EUNIT_TEST( |
|
1067 "ValidatePacket - test ", |
|
1068 "CMccRtpDataSource", |
|
1069 "ValidatePacket", |
|
1070 "FUNCTIONALITY", |
|
1071 SetupL, UT_CMccRtpDataSource_ValidatePacketL, Teardown) |
|
1072 |
|
1073 EUNIT_TEST( |
|
1074 "DoCreateSrtpStreamL - test ", |
|
1075 "CMccRtpDataSource", |
|
1076 "DoCreateSrtpStreamL", |
|
1077 "FUNCTIONALITY", |
|
1078 SetupL, UT_CMccRtpDataSource_DoCreateSrtpStreamL, Teardown) |
|
1079 |
|
1080 EUNIT_TEST( |
|
1081 "TestSendEvent - test ", |
|
1082 "CMccRtpDataSource", |
|
1083 "TestSendEvent", |
|
1084 "FUNCTIONALITY", |
|
1085 SetupL, UT_CMccRtpDataSource_TestSendEventL, Teardown) |
|
1086 |
|
1087 EUNIT_TEST( |
|
1088 "Standby - test ", |
|
1089 "CMccRtpDataSource", |
|
1090 "Standby", |
|
1091 "FUNCTIONALITY", |
|
1092 SetupL, UT_CMccRtpDataSource_StandbyL, Teardown) |
|
1093 |
|
1094 EUNIT_TEST( |
|
1095 "SourceCustomCommand - test ", |
|
1096 "CMccRtpDataSource", |
|
1097 "SourceCustomCommand", |
|
1098 "FUNCTIONALITY", |
|
1099 SetupL, UT_CMccRtpDataSource_SourceCustomCommandL, Teardown) |
|
1100 |
|
1101 EUNIT_TEST( |
|
1102 "DoStandbyDecision - test ", |
|
1103 "CMccRtpDataSource", |
|
1104 "DoStandbyDecision", |
|
1105 "FUNCTIONALITY", |
|
1106 SetupL, UT_CMccRtpDataSource_DoStandbyDecisionL, Teardown) |
|
1107 |
|
1108 EUNIT_TEST( |
|
1109 "RegisterPayloadTypesL - test ", |
|
1110 "CMccRtpDataSource", |
|
1111 "RegisterPayloadTypesL", |
|
1112 "FUNCTIONALITY", |
|
1113 SetupL, UT_CMccRtpDataSource_RegisterPayloadTypesLL, Teardown) |
|
1114 |
|
1115 EUNIT_TEST( |
|
1116 "TestBaseClass - test ", |
|
1117 "CMccRtpDataSource", |
|
1118 "TestBaseClass", |
|
1119 "FUNCTIONALITY", |
|
1120 SetupL, UT_CMccRtpDataSource_TestBaseClassL, Teardown) |
|
1121 |
|
1122 EUNIT_TEST( |
|
1123 "SRTPMasterKeyStaleEvent1L - test ", |
|
1124 "CMccRtpDataSource", |
|
1125 "SRTPMasterKeyStaleEvent1L", |
|
1126 "FUNCTIONALITY", |
|
1127 SetupL, UT_CMccRtpDataSource_SRTPMasterKeyStaleEvent1L, Teardown) |
|
1128 |
|
1129 EUNIT_TEST( |
|
1130 "SRTPMasterKeyStaleEvent2L - test ", |
|
1131 "CMccRtpDataSource", |
|
1132 "SRTPMasterKeyStaleEvent2L", |
|
1133 "FUNCTIONALITY", |
|
1134 SetupL, UT_CMccRtpDataSource_SRTPMasterKeyStaleEvent2L, Teardown) |
|
1135 |
|
1136 EUNIT_END_TEST_TABLE |
|
1137 |
|
1138 // END OF FILE |