• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import media from '@ohos.multimedia.media'
17import * as mediaTestBase from './MediaTestBase.js';
18
19export function resourceName(){
20    let timestamp = Date.now();
21    let filename = `avRecorder_${timestamp}.m4a`;
22    return filename;
23}
24
25export async function idleCallback(avRecorder, avConfig, done) {
26    console.info('case idleCallback called');
27    media.createAVRecorder((error, recorder) => {
28        if (recorder != null) {
29            avRecorder = recorder;
30            console.info('createAVRecorder idleCallback success');
31            avRecorder.prepare(avConfig)
32            releaseDone(avRecorder, done)
33        } else {
34            console.info(`createAVRecorder idleCallback fail, error:${error}`);
35        }
36    });
37}
38
39export async function idle(avRecorder) {
40    console.info('case createAVRecorder called');
41    await media.createAVRecorder().then((recorder) => {
42        if (recorder != null) {
43            avRecorder = recorder;
44            console.info('createAVRecorder success');
45        } else {
46            console.info('createAVRecorder fail');
47        }
48    }).catch((error) => {
49        console.info(`createAVRecorder catchCallback, error:${error}`);
50    });
51    return avRecorder;
52}
53
54export const AV_RECORDER_STATE = {
55    IDLE : 'idle',
56    PREPARED : 'prepared',
57    STARTED : 'started',
58    PAUSED : 'paused',
59    STOPPED : 'stopped',
60    RELEASED : 'released',
61    ERROR : 'error',
62}
63
64export function prepareCallback(avRecorder, avConfig) {
65    if (typeof(avRecorder) == 'undefined') {
66        return;
67    }
68    avRecorder.prepare(avConfig, (err) => {
69        console.info('case prepare called' + err);
70        if (err == null) {
71            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
72            console.info('prepare success');
73        } else {
74            console.error(`case prepare error, errMessage is ${err.message}`);
75        }
76    })
77}
78
79export async function preparePromise(avRecorder, avConfig) {
80    if (typeof(avRecorder) == 'undefined') {
81        return;
82    }
83    await avRecorder.prepare(avConfig).then(() => {
84        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
85        console.info('prepare success');
86    }).catch((err) => {
87        console.info('prepare failed and catch error is ' + err.message);
88    });
89}
90
91export async function getInputSurfacePromise(avRecorder) {
92    let surfaceID = null;
93    if (typeof(avRecorder) == 'undefined') {
94        return;
95    }
96    await avRecorder.getInputSurface().then((surfaceId) => {
97        console.info('getInputSurface success');
98        surfaceID = surfaceId;
99    }).catch((err) => {
100        console.info('getInputSurface failed and catch error is ' + err.message);
101    });
102}
103
104export function getInputSurfaceCallback(avRecorder) {
105    if (typeof(avRecorder) == 'undefined') {
106        return;
107    }
108    let surfaceID = null;
109    avRecorder.getInputSurface((err, surfaceId) => {
110        if (err == null) {
111            console.info('getInputSurface success');
112            surfaceID = surfaceId;
113        } else {
114            console.info('getInputSurface failed and error is ' + err.message);
115        }
116    });
117}
118
119export function startCallback(avRecorder, recorderTime) {
120    if (typeof(avRecorder) == 'undefined') {
121        return;
122    }
123    avRecorder.start((err) => {
124        console.info('case start called');
125        if (err == null) {
126            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
127            console.info('start AVRecorder success');
128            sleep(recorderTime);
129        } else {
130            console.info('start AVRecorder failed and error is ' + err.message);
131        }
132    })
133}
134
135export async function startPromise(avRecorder, recorderTime) {
136    if (typeof(avRecorder) == 'undefined') {
137        return;
138    }
139    await avRecorder.start().then(() => {
140        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
141        console.info('start success');
142        if (recorderTime != undefined) {
143            sleep(recorderTime);
144        }
145    }).catch((err) => {
146        console.info('start failed and catch error is ' + err.message);
147    });
148    if (recorderTime != undefined) {
149        await sleep(recorderTime);
150    }
151}
152
153export function pauseCallback(avRecorder) {
154    if (typeof(avRecorder) == 'undefined') {
155        return;
156    }
157    avRecorder.pause((err) => {
158        console.info('case pause called');
159        if (err == null) {
160            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
161            console.info('pause AVRecorder success');
162        } else {
163            console.info('pause AVRecorder failed and error is ' + err.message);
164        }
165    })
166}
167
168export async function pausePromise(avRecorder) {
169    if (typeof(avRecorder) == 'undefined') {
170        return;
171    }
172    await avRecorder.pause().then(() => {
173        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
174        console.info('pause success');
175    }).catch((err) => {
176        console.info('pause failed and catch error is ' + err.message);
177    });
178}
179
180export function resumeCallback(avRecorder) {
181    if (typeof(avRecorder) == 'undefined') {
182        return;
183    }
184    avRecorder.resume((err) => {
185        console.info('case resume called');
186        if (err == null) {
187            console.info('resume AVRecorder success');
188        } else {
189            console.info('resume AVRecorder failed and error is ' + err.message);
190        }
191    })
192}
193
194export async function resumePromise(avRecorder) {
195    if (typeof(avRecorder) == 'undefined') {
196        return;
197    }
198    await avRecorder.resume().then(() => {
199        console.info('resume success');
200    }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
201}
202
203export function stopCallback(avRecorder) {
204    if (typeof(avRecorder) == 'undefined') {
205        return;
206    }
207    avRecorder.stop((err) => {
208        console.info('case stop called');
209        if (err == null) {
210            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STOPPED);
211            console.info('stop AVRecorder success');
212        } else {
213            console.info('stop AVRecorder failed and error is ' + err.message);
214        }
215    })
216}
217
218export async function stopPromise(avRecorder) {
219    if (typeof(avRecorder) == 'undefined') {
220        return;
221    }
222    await avRecorder.stop().then(() => {
223        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STOPPED);
224        console.info('stop success');
225    }).catch((err) => {
226        console.info('stop failed and catch error is ' + err.message);
227    });
228}
229
230export function resetCallback(avRecorder) {
231    if (typeof(avRecorder) == 'undefined') {
232        return;
233    }
234    avRecorder.reset((err) => {
235        console.info('case reset called');
236        if (err == null) {
237            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
238            console.info('reset AVRecorder success');
239        } else {
240            console.info('reset AVRecorder failed and error is ' + err.message);
241        }
242    })
243}
244
245export async function resetPromise(avRecorder) {
246    if (typeof(avRecorder) == 'undefined') {
247        return;
248    }
249    await avRecorder.reset().then(() => {
250        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
251    }).catch((err) => {
252        console.info('reset AVRecorder failed and catch error is ' + err.message);
253    });
254}
255
256export function releaseCallback(avRecorder) {
257    if (typeof(avRecorder) == 'undefined') {
258        return;
259    }
260    avRecorder.release((err) => {
261        console.info('case release called');
262        if (err == null) {
263            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
264            console.info('release AVRecorder success');
265        } else {
266            console.info('release AVRecorder failed and error is ' + err.message);
267        }
268    })
269}
270
271export async function releasePromise(avRecorder) {
272    if (typeof(avRecorder) == 'undefined') {
273        return;
274    }
275    await avRecorder.release().then(() => {
276        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
277    }).catch((err) => {
278        console.info('release AVRecorder failed and catch error is ' + err.message);
279    });
280}
281
282async function releaseDone(avRecorder, done){
283    await avRecorder.release().then(() => {
284        console.info('releaseDone avRecorder.state is ' + avRecorder.state);
285        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
286        done();
287    }).catch((err) => {
288        console.info('release releaseDone failed and catch error is ' + err.message);
289    });
290}
291
292export function sleep(ms) {
293    return new Promise(resolve => setTimeout(resolve, ms));
294}
295
296export function offCallback(avRecorder, typeArr)
297{
298    if (avRecorder == null) {
299        return;
300    }
301    for (let i = 0; i < typeArr.length; i++) {
302        switch (typeArr[i]) {
303            case 'stateChange':
304                avRecorder.off('stateChange');
305                break;
306            case 'error':
307                avRecorder.off('error');
308                break;
309            default:
310                break;
311        }
312    }
313}
314
315export async function setOnCallback(avConfig, avRecorder, recorderTime, done) {
316    console.info(`case setOnCallback in`);
317    avRecorder.on('stateChange', async (state, reason) => {
318        console.info('case state has changed, new state is :' + state);
319        switch (state) {
320            case AV_RECORDER_STATE.IDLE:
321                console.info(`case avRecorderWithCallBack is idle`);
322                expect(avRecorder.state).assertEqual("idle");
323                // start->stop->release
324                prepareCallback(avRecorder, avConfig);
325                break;
326            case AV_RECORDER_STATE.PREPARED:
327                console.info(`case avRecorderWithCallBack is prepared`);
328                expect(avRecorder.state).assertEqual('prepared');
329                startCallback(avRecorder);
330                break;
331            case AV_RECORDER_STATE.STARTED:
332                console.info(`case avRecorderWithCallBack is started`)
333                expect(avRecorder.state).assertEqual('started');
334                await sleep(recorderTime);
335                stopCallback(avRecorder);
336                break;
337            case AV_RECORDER_STATE.PAUSED:
338                console.info(`case avRecorderWithCallBackis paused`)
339                expect(avRecorder.state).assertEqual('paused');
340                break;
341            case AV_RECORDER_STATE.STOPPED:
342                console.info(`case avRecorderWithCallBack is stopped`)
343                expect(avRecorder.state).assertEqual('stopped');
344                releasePromise(avRecorder)
345                break;
346            case AV_RECORDER_STATE.RELEASED:
347                console.info(`case avRecorderWithCallBack is released`);
348                expect(avRecorder.state).assertEqual('released');
349                done();
350                break;
351            case AV_RECORDER_STATE.ERROR:
352                console.info(`case avRecorderWithCallBack is error`)
353                expect(avRecorder.state).assertEqual('error');
354                break;
355            default:
356                console.info('case state is unknown');
357        }
358    });
359
360    avRecorder.on('error', (err) => {
361        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
362    });
363}
364
365export async function setPrepareOnCallback(avConfig, avRecorder, recorderTime, done) {
366    console.info(`case setOnCallback in`);
367    avRecorder.on('stateChange', async (state, reason) => {
368        console.info('case state has changed, new state is :' + state);
369        switch (state) {
370            case AV_RECORDER_STATE.PREPARED:
371                console.info(`case AV_RECORDER_STATE.PREPARED`);
372                expect(avRecorder.state).assertEqual('prepared');
373                releaseCallback(avRecorder);
374                break;
375            case AV_RECORDER_STATE.RELEASED:
376                console.info(`case setPrepareOnCallback is released`);
377                expect(avRecorder.state).assertEqual('released');
378                done();
379                break;
380            case AV_RECORDER_STATE.ERROR:
381                console.info(`case AV_RECORDER_STATE.ERROR`)
382                expect(avRecorder.state).assertEqual('error');
383                break;
384            default:
385                console.info('case state is unknown');
386        }
387    });
388}
389
390export async function avRecorderWithCallBack(avConfig, avRecorder, recorderTime, done) {
391    avRecorder = await idle(avRecorder)
392    setOnCallback(avConfig, avRecorder, recorderTime, done);
393    await avRecorder.prepare(avConfig)
394}
395
396export async function avRecorderWithCallBack2(avConfig, avRecorder, recorderTime, done) {
397    avRecorder = await idle(avRecorder);
398    console.info('case avConfig.url is ' + avConfig.url);
399    await preparePromise(avRecorder, avConfig);
400    await startPromise(avRecorder, recorderTime);
401    await pausePromise(avRecorder);
402    await stopPromise(avRecorder);
403    await avRecorder.reset().then(() => {
404        console.info('reset avRecorderWithCallBack2 success');
405        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
406    }).catch((err) => {
407        console.info('reset avRecorderWithCallBack2 failed and catch error is ' + err.message);
408    });
409    await releaseDone(avRecorder, done)
410}
411
412export async function avRecorderWithCallBack3(avConfig, avRecorder, recorderTime, done) {
413    avRecorder = await idle(avRecorder);
414    console.info('case avConfig.url is ' + avConfig.url);
415    await preparePromise(avRecorder, avConfig);
416    await startPromise(avRecorder, recorderTime);
417    await pausePromise(avRecorder);
418    await resumePromise(avRecorder);
419    await stopPromise(avRecorder);
420    await avRecorder.reset().then(() => {
421        console.info('reset avRecorderWithCallBack3 success');
422        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
423    }).catch((err) => {
424        console.info('reset avRecorderWithCallBack3 failed and catch error is ' + err.message);
425    });
426    await releaseDone(avRecorder, done)
427}
428
429export async function avRecorderWithCallBack4(avConfig, avRecorder, recorderTime, done) {
430    avRecorder = await idle(avRecorder);
431    console.info('case avConfig.url is ' + avConfig.url);
432    await preparePromise(avRecorder, avConfig);
433    await startPromise(avRecorder, recorderTime);
434    await stopPromise(avRecorder);
435    await avRecorder.reset().then(() => {
436        console.info('reset avRecorderWithCallBack4 success');
437        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
438    }).catch((err) => {
439        console.info('reset avRecorderWithCallBack4 failed and catch error is ' + err.message);
440    });
441    await releaseDone(avRecorder, done)
442}
443
444export async function avRecorderWithCallBack5(avConfig, avRecorder, recorderTime, done) {
445    avRecorder = await idle(avRecorder);
446    console.info('case avConfig.url is ' + avConfig.url);
447    await preparePromise(avRecorder, avConfig);
448    await startPromise(avRecorder, recorderTime);
449    await pausePromise(avRecorder);
450    await resumePromise(avRecorder);
451    await avRecorder.reset().then(() => {
452        console.info('reset avRecorderWithCallBack5 success');
453        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
454    }).catch((err) => {
455        console.info('reset avRecorderWithCallBack5 failed and catch error is ' + err.message);
456    });
457    await releaseDone(avRecorder, done)
458}
459
460export async function avRecorderWithCallBack6(avConfig, avRecorder, recorderTime, done) {
461    avRecorder = await idle(avRecorder);
462    console.info('case avConfig.url is ' + avConfig.url);
463    await preparePromise(avRecorder, avConfig);
464    await startPromise(avRecorder, recorderTime);
465    await pausePromise(avRecorder);
466    await startPromise(avRecorder, recorderTime);
467    await avRecorder.reset().then(() => {
468        console.info('reset avRecorderWithCallBack6 success');
469        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
470    }).catch((err) => {
471        console.info('reset avRecorderWithCallBack6 failed and catch error is ' + err.message);
472    });
473    await releaseDone(avRecorder, done)
474}
475
476export async function avRecorderWithCallBack7(avConfig, avRecorder, recorderTime, done) {
477    avRecorder = await idle(avRecorder);
478    console.info('case avConfig.url is ' + avConfig.url);
479    await preparePromise(avRecorder, avConfig);
480    await startPromise(avRecorder, recorderTime);
481    await pausePromise(avRecorder);
482    await resumePromise(avRecorder);
483    await pausePromise(avRecorder);
484    await avRecorder.reset().then(() => {
485        console.info('reset avRecorderWithCallBack7 success');
486        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
487    }).catch((err) => {
488        console.info('reset avRecorderWithCallBack7 failed and catch error is ' + err.message);
489    });
490    await releaseDone(avRecorder, done)
491}
492
493export async function avRecorderWithCallBack8(avConfig, avRecorder, recorderTime, done) {
494    avRecorder = await idle(avRecorder);
495    console.info('case avConfig.url is ' + avConfig.url);
496    await preparePromise(avRecorder, avConfig);
497    await startPromise(avRecorder, recorderTime);
498    await pausePromise(avRecorder);
499    await stopPromise(avRecorder);
500    await startPromise(avRecorder, recorderTime);
501    await pausePromise(avRecorder);
502    await avRecorder.reset().then(() => {
503        console.info('reset avRecorderWithCallBack8 success');
504        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
505    }).catch((err) => {
506        console.info('reset avRecorderWithCallBack8 failed and catch error is ' + err.message);
507    });
508    await releaseDone(avRecorder, done)
509}
510
511export async function avRecorderWithCallBack9(avConfig, avRecorder, recorderTime, done) {
512    avRecorder = await idle(avRecorder);
513    console.info('case avConfig.url is ' + avConfig.url);
514    await preparePromise(avRecorder, avConfig);
515    await startPromise(avRecorder, recorderTime);
516    await stopPromise(avRecorder);
517    await avRecorder.reset().then(() => {
518        console.info('reset avRecorderWithCallBack9 success');
519        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
520    }).catch((err) => {
521        console.info('reset avRecorderWithCallBack9 failed and catch error is ' + err.message);
522    });
523    await releaseDone(avRecorder, done)
524}
525
526export async function avRecorderWithCallBack10(avConfig, avRecorder, recorderTime, done) {
527    avRecorder = await idle(avRecorder);
528    console.info('case avConfig.url is ' + avConfig.url);
529    await preparePromise(avRecorder, avConfig);
530    await startPromise(avRecorder, recorderTime);
531    await stopPromise(avRecorder);
532    await pausePromise(avRecorder);
533    await avRecorder.reset().then(() => {
534        console.info('reset AVRecorder success');
535        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
536    }).catch((err) => {
537        console.info('reset AVRecorder failed and catch error is ' + err.message);
538    });
539    await releaseDone(avRecorder, done)
540}
541
542export async function avRecorderWithCallBack11(avConfig, avRecorder, recorderTime, done) {
543    avRecorder = await idle(avRecorder);
544    console.info('case avConfig.url is ' + avConfig.url);
545    await preparePromise(avRecorder, avConfig);
546    await startPromise(avRecorder, recorderTime);
547    await pausePromise(avRecorder);
548    await avRecorder.reset().then(() => {
549        console.info('avRecorderWithCallBack11 reset AVRecorder success');
550        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
551    }).catch((err) => {
552        console.info('avRecorderWithCallBack11 reset AVRecorder failed and catch error is ' + err.message);
553    });
554    await releaseDone(avRecorder, done)
555}
556
557export async function avRecorderWithCallBack13(avConfig, avRecorder, recorderTime, done) {
558    avRecorder = await idle(avRecorder);
559    console.info('case avConfig.url is ' + avConfig.url);
560    await preparePromise(avRecorder, avConfig);
561    await startPromise(avRecorder, recorderTime);
562    await pausePromise(avRecorder);
563    await resumePromise(avRecorder);
564    await sleep(recorderTime);
565    await stopPromise(avRecorder);
566    await avRecorder.release().then(() => {
567        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
568        console.info('release success');
569        done();
570    }).catch((err) => {
571        console.info('release failed and catch error is ' + err.message);
572    });
573}
574
575export async function setPrepareOnPromise(avRecorder, avConfig, loopTimes, done) {
576    console.info(`case setOnCallback in`);
577    avRecorder.on('stateChange', async (state, reason) => {
578        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
579        switch (state) {
580            case AV_RECORDER_STATE.IDLE:
581                console.info(`case avRecorderWithPreparePromise is idled`)
582                expect(avRecorder.state).assertEqual('idle');
583                while (loopTimes > 0) {
584                    avRecorder.prepare(avConfig).then(() => {
585                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
586                        loopTimes--;
587                        console.info('prepare success');
588                    }).catch((err) => {
589                        console.info('prepare failed and catch error is ' + err.message);
590                    });
591                }
592            case AV_RECORDER_STATE.PREPARED:
593                console.info(`case avRecorderWithPreparePromise is prepared`)
594                expect(avRecorder.state).assertEqual('prepared');
595                if (loopTimes <= 0) {
596                    releasePromise(avRecorder);
597                }
598            case AV_RECORDER_STATE.RELEASED:
599                console.info(`case setPrepareOnCallback is released`);
600                expect(avRecorder.state).assertEqual('released');
601                offCallback(avRecorder, ['stateChange', 'error']);
602                done();
603                break;
604            case AV_RECORDER_STATE.ERROR:
605                console.info(`case AV_RECORDER_STATE.ERROR`)
606                expect(avRecorder.state).assertEqual('error');
607                break;
608            default:
609                console.info('case state is unknown');
610        }
611    });
612}
613
614export async function avRecorderWithPreparePromise(avConfig, avRecorder, loopTimes, done) {
615    avRecorder = await idle(avRecorder);
616    console.info('case avConfig.url is ' + avConfig.url);
617    await preparePromise(avRecorder, avConfig);
618    await resetPromise(avRecorder);
619    setPrepareOnPromise(avRecorder, avConfig, loopTimes, done);
620}
621
622export async function setStartOnPromise(avRecorder, loopTimes, done) {
623    console.info(`case setOnCallback in`);
624    avRecorder.on('stateChange', async (state, reason) => {
625        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
626        switch (state) {
627            case AV_RECORDER_STATE.PREPARED:
628                console.info(`case avRecorderWithStartPromise is prepared`)
629                expect(avRecorder.state).assertEqual('prepared');
630                while (loopTimes > 0) {
631                    avRecorder.start().then(() => {
632                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
633                        loopTimes--;
634                        console.info('start success');
635                    }).catch((err) => {
636                        console.info('start failed and catch error is ' + err.message);
637                    });
638                }
639            case AV_RECORDER_STATE.STARTED:
640                console.info(`case avRecorderWithStartPromise is started`)
641                expect(avRecorder.state).assertEqual('started');
642                if (loopTimes <= 0) {
643                    releasePromise(avRecorder);
644                }
645            case AV_RECORDER_STATE.RELEASED:
646                console.info(`case setPrepareOnCallback is released`);
647                expect(avRecorder.state).assertEqual('released');
648                offCallback(avRecorder, ['stateChange', 'error']);
649                done();
650                break;
651            case AV_RECORDER_STATE.ERROR:
652                console.info(`case AV_RECORDER_STATE.ERROR`)
653                expect(avRecorder.state).assertEqual('error');
654                break;
655            default:
656                console.info('case state is unknown');
657        }
658    });
659}
660
661export async function avRecorderWithStartPromise(avConfig, avRecorder, loopTimes, done) {
662    avRecorder = await idle(avRecorder);
663    console.info('case avConfig.url is ' + avConfig.url);
664    await preparePromise(avRecorder, avConfig);
665    setStartOnPromise(avRecorder, loopTimes, done);
666}
667
668export async function setPauseOnPromise(avRecorder, loopTimes, done) {
669    console.info(`case setOnCallback in`);
670    avRecorder.on('stateChange', async (state, reason) => {
671        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
672        switch (state) {
673            case AV_RECORDER_STATE.STARTED:
674                console.info(`case avRecorderWithPausePromise is started`)
675                expect(avRecorder.state).assertEqual('started');
676                while (loopTimes > 0) {
677                    avRecorder.pause().then(() => {
678                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
679                        loopTimes--;
680                        console.info('pause success');
681                    }).catch((err) => {
682                        console.info('pause failed and catch error is ' + err.message);
683                    });
684                }
685            case AV_RECORDER_STATE.PAUSED:
686                console.info(`case avRecorderWithPausePromise is paused`)
687                expect(avRecorder.state).assertEqual('paused');
688                if (loopTimes <= 0) {
689                    releasePromise(avRecorder);
690                }
691            case AV_RECORDER_STATE.RELEASED:
692                console.info(`case setPrepareOnCallback is released`);
693                expect(avRecorder.state).assertEqual('released');
694                offCallback(avRecorder, ['stateChange', 'error']);
695                done();
696                break;
697            case AV_RECORDER_STATE.ERROR:
698                console.info(`case AV_RECORDER_STATE.ERROR`)
699                expect(avRecorder.state).assertEqual('error');
700                break;
701            default:
702                console.info('case state is unknown');
703        }
704    });
705}
706
707export async function avRecorderWithPausePromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
708    avRecorder = await idle(avRecorder);
709    console.info('case avConfig.url is ' + avConfig.url);
710    await preparePromise(avRecorder, avConfig);
711    await startPromise(avRecorder, recorderTime);
712    setPauseOnPromise(avRecorder, loopTimes, done);
713}
714
715export async function setResumeOnPromise(avRecorder, loopTimes, done) {
716    console.info(`case setOnCallback in`);
717    avRecorder.on('stateChange', async (state, reason) => {
718        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
719        switch (state) {
720            case AV_RECORDER_STATE.PAUSED:
721                console.info(`case avRecorderWithResumePromise is paused`)
722                expect(avRecorder.state).assertEqual('paused');
723                while (loopTimes > 0) {
724                    avRecorder.resume().then(() => {
725                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
726                        loopTimes--;
727                        console.info('resume success');
728                    }).catch((err) => {
729                        console.info('resume failed and catch error is ' + err.message);
730                    });
731                }
732
733            case AV_RECORDER_STATE.STARTED:
734                console.info(`case avRecorderWithResumePromise is resumed`)
735                expect(avRecorder.state).assertEqual('started');
736                if (loopTimes <= 0) {
737                    releasePromise(avRecorder);
738                }
739            case AV_RECORDER_STATE.RELEASED:
740                console.info(`case setPrepareOnCallback is released`);
741                expect(avRecorder.state).assertEqual('released');
742                offCallback(avRecorder, ['stateChange', 'error']);
743                done();
744                break;
745            case AV_RECORDER_STATE.ERROR:
746                console.info(`case AV_RECORDER_STATE.ERROR`)
747                expect(avRecorder.state).assertEqual('error');
748                break;
749            default:
750                console.info('case state is unknown');
751        }
752    });
753}
754
755export async function avRecorderWithResumePromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
756    avRecorder = await idle(avRecorder);
757    console.info('case avConfig.url is ' + avConfig.url);
758    await preparePromise(avRecorder, avConfig);
759    await startPromise(avRecorder, recorderTime);
760    await pausePromise(avRecorder);
761    setResumeOnPromise(avRecorder, loopTimes, done);
762}
763
764export async function setStopOnPromise(avRecorder, loopTimes, done) {
765    console.info(`case setOnCallback in`);
766    avRecorder.on('stateChange', async (state, reason) => {
767        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
768        switch (state) {
769            case AV_RECORDER_STATE.STARTED:
770                console.info(`case avRecorderWithStopPromise is started`)
771                expect(avRecorder.state).assertEqual('started');
772                while (loopTimes > 0) {
773                    avRecorder.stop().then(() => {
774                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STOPPED);
775                        loopTimes--;
776                        console.info('stop success');
777                    }).catch((err) => {
778                        console.info('stop failed and catch error is ' + err.message);
779                    });
780                }
781            case AV_RECORDER_STATE.STOPPED:
782                console.info(`case avRecorderWithStopPromise is stopped`)
783                expect(avRecorder.state).assertEqual('stopped');
784                if (loopTimes <= 0) {
785                    releasePromise(avRecorder);
786                }
787            case AV_RECORDER_STATE.RELEASED:
788                console.info(`case setPrepareOnCallback is released`);
789                expect(avRecorder.state).assertEqual('released');
790                offCallback(avRecorder, ['stateChange', 'error']);
791                done();
792                break;
793            case AV_RECORDER_STATE.ERROR:
794                console.info(`case AV_RECORDER_STATE.ERROR`)
795                expect(avRecorder.state).assertEqual('error');
796                break;
797            default:
798                console.info('case state is unknown');
799        }
800    });
801}
802
803export async function avRecorderWithStopPromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
804    avRecorder = await idle(avRecorder);
805    console.info('case avConfig.url is ' + avConfig.url);
806    await preparePromise(avRecorder, avConfig);
807    await startPromise(avRecorder, recorderTime);
808    setStopOnPromise(avRecorder, loopTimes, done);
809}
810
811export async function setResetOnPromise(avRecorder, loopTimes, done) {
812    console.info(`case setOnCallback in`);
813    avRecorder.on('stateChange', async (state, reason) => {
814        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
815        switch (state) {
816            case AV_RECORDER_STATE.STARTED:
817                console.info(`case avRecorderWithResetPromise is started`)
818                expect(avRecorder.state).assertEqual('started');
819                while (loopTimes > 0) {
820                    avRecorder.reset().then(() => {
821                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
822                        loopTimes--;
823                        console.info('reset success');
824                    }).catch((err) => {
825                        console.info('reset failed and catch error is ' + err.message);
826                    });
827                }
828            case AV_RECORDER_STATE.IDLE:
829                console.info(`case avRecorderWithResetPromise is reseted`)
830                expect(avRecorder.state).assertEqual('idle');
831                if (loopTimes <= 0) {
832                    releasePromise(avRecorder);
833                }
834            case AV_RECORDER_STATE.RELEASED:
835                console.info(`case setPrepareOnCallback is released`);
836                expect(avRecorder.state).assertEqual('released');
837                offCallback(avRecorder, ['stateChange', 'error']);
838                done();
839                break;
840            case AV_RECORDER_STATE.ERROR:
841                console.info(`case AV_RECORDER_STATE.ERROR`)
842                expect(avRecorder.state).assertEqual('error');
843                break;
844            default:
845                console.info('case state is unknown');
846        }
847    });
848}
849
850export async function avRecorderWithResetPromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
851    avRecorder = await idle(avRecorder);
852    console.info('case avConfig.url is ' + avConfig.url);
853    await preparePromise(avRecorder, avConfig);
854    await startPromise(avRecorder, recorderTime);
855    setResetOnPromise(avRecorder, loopTimes, done);
856}
857
858export async function setReleaseOnPromise(avRecorder, loopTimes, done) {
859    console.info(`case setOnCallback in`);
860    avRecorder.on('stateChange', async (state, reason) => {
861        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
862        switch (state) {
863            case AV_RECORDER_STATE.STARTED:
864                console.info(`case avRecorderWithReleasePromise is started`)
865                expect(avRecorder.state).assertEqual('started');
866                while (loopTimes > 0) {
867                    avRecorder.release().then(() => {
868                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
869                        loopTimes--;
870                        console.info('release success');
871                    }).catch((err) => {
872                        console.info('release failed and catch error is ' + err.message);
873                    });
874                }
875            case AV_RECORDER_STATE.RELEASED:
876                console.info(`case avRecorderWithReleasePromise is released`)
877                expect(avRecorder.state).assertEqual('released');
878                if (loopTimes <= 0) {
879                    offCallback(avRecorder, ['stateChange', 'error']);
880                    done();
881                }
882            case AV_RECORDER_STATE.ERROR:
883                console.info(`case AV_RECORDER_STATE.ERROR`)
884                expect(avRecorder.state).assertEqual('error');
885                break;
886            default:
887                console.info('case state is unknown');
888        }
889    });
890}
891
892export async function avRecorderWithReleasePromise(avConfig, avRecorder, recorderTime, loopTimes, done) {
893    avRecorder = await idle(avRecorder);
894    console.info('case avConfig.url is ' + avConfig.url);
895    await preparePromise(avRecorder, avConfig);
896    await startPromise(avRecorder, recorderTime);
897    setReleaseOnPromise(avRecorder, loopTimes, done);
898}
899
900export async function avRecorderWithPrepareCallback(avConfig, avRecorder, loopTimes, done) {
901    avRecorder = await idle(avRecorder);
902    console.info('case avConfig.url is ' + avConfig.url);
903    while (loopTimes > 0) {
904        prepareCallback(avRecorder, avConfig);
905        loopTimes--;
906    }
907    await avRecorder.release().then(() => {
908        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
909        done();
910    }).catch((err) => {
911        console.info('release AVRecorder failed and catch error is ' + err.message);
912    });
913}
914
915export async function avRecorderWithStartCallback(avConfig, avRecorder, loopTimes, done) {
916    avRecorder = await idle(avRecorder);
917    console.info('case avConfig.url is ' + avConfig.url);
918    await preparePromise(avRecorder, avConfig);
919    while (loopTimes > 0) {
920        avRecorder.start((err) => {
921            console.info('case start called');
922            if (err == null) {
923                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
924                console.info('start AVRecorder success');
925            } else {
926                console.info('start AVRecorder failed and error is ' + err.message);
927            }
928        })
929        loopTimes--;
930    }
931    await avRecorder.release().then(() => {
932        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
933        done();
934    }).catch((err) => {
935        console.info('release AVRecorder failed and catch error is ' + err.message);
936    });
937}
938
939export async function avRecorderWithPauseCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
940    avRecorder = await idle(avRecorder);
941    console.info('case avConfig.url is ' + avConfig.url);
942    await preparePromise(avRecorder, avConfig);
943    await startPromise(avRecorder, recorderTime);
944    while (loopTimes > 0) {
945        pauseCallback(avRecorder, avConfig);
946        loopTimes--;
947    }
948    await avRecorder.release().then(() => {
949        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
950        done();
951    }).catch((err) => {
952        console.info('release AVRecorder failed and catch error is ' + err.message);
953    });
954}
955
956export async function avRecorderWithResumeCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
957    avRecorder = await idle(avRecorder);
958    console.info('case avConfig.url is ' + avConfig.url);
959    await preparePromise(avRecorder, avConfig);
960    await startPromise(avRecorder, recorderTime);
961    await pausePromise(avRecorder);
962    while (loopTimes > 0) {
963        resumeCallback(avRecorder, avConfig);
964        loopTimes--;
965    }
966    await avRecorder.release().then(() => {
967        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
968        done();
969    }).catch((err) => {
970        console.info('release AVRecorder failed and catch error is ' + err.message);
971    });
972}
973
974export async function avRecorderWithStopCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
975    avRecorder = await idle(avRecorder);
976    console.info('case avConfig.url is ' + avConfig.url);
977    await preparePromise(avRecorder, avConfig);
978    await startPromise(avRecorder, recorderTime);
979    while (loopTimes > 0) {
980        stopCallback(avRecorder, avConfig);
981        loopTimes--;
982    }
983    await avRecorder.release().then(() => {
984        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
985        done();
986    }).catch((err) => {
987        console.info('release AVRecorder failed and catch error is ' + err.message);
988    });
989}
990
991export async function avRecorderWithResetCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
992    avRecorder = await idle(avRecorder);
993    console.info('case avConfig.url is ' + avConfig.url);
994    await preparePromise(avRecorder, avConfig);
995    await startPromise(avRecorder, recorderTime);
996    while (loopTimes > 0) {
997        resetCallback(avRecorder, avConfig);
998        loopTimes--;
999    }
1000    await avRecorder.release().then(() => {
1001        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1002        done();
1003    }).catch((err) => {
1004        console.info('release AVRecorder failed and catch error is ' + err.message);
1005    });
1006}
1007
1008export async function avRecorderWithReleaseCallback(avConfig, avRecorder, recorderTime, loopTimes, done) {
1009    avRecorder = await idle(avRecorder);
1010    console.info('case avConfig.url is ' + avConfig.url);
1011    await preparePromise(avRecorder, avConfig);
1012    await startPromise(avRecorder, recorderTime);
1013    while (loopTimes > 0) {
1014        releaseCallback(avRecorder, avConfig);
1015        loopTimes--;
1016    }
1017    done();
1018}
1019
1020export async function avRecorderWithLongRun(avConfig, avRecorder, recorderTime, done) {
1021    avRecorder = await idle(avRecorder);
1022    console.info('case avConfig.url is ' + avConfig.url);
1023    await preparePromise(avRecorder, avConfig);
1024    await startPromise(avRecorder, recorderTime);
1025    await stopPromise(avRecorder);
1026    await avRecorder.release().then(() => {
1027        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1028        done();
1029    }).catch((err) => {
1030        console.info('release AVRecorder failed and catch error is ' + err.message);
1031    });
1032}
1033
1034export async function avRecorderLoopPrepare2Reset(avConfig, avRecorder, loopTimes, done) {
1035    avRecorder = await idle(avRecorder);
1036    console.info('case avConfig.url is ' + avConfig.url);
1037    while (loopTimes > 0) {
1038        prepareCallback(avRecorder, avConfig);
1039        startCallback(avRecorder);
1040        resetCallback(avRecorder);
1041        loopTimes--;
1042    }
1043    await avRecorder.release().then(() => {
1044        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1045        done();
1046    }).catch((err) => {
1047        console.info('release AVRecorder failed and catch error is ' + err.message);
1048    });
1049}
1050
1051export async function avRecorderLoopCreate2Release(avConfig, avRecorder, loopTimes, done) {
1052    while (loopTimes > 0) {
1053        avRecorder = await idle(avRecorder);
1054        console.info('case avConfig.url is ' + avConfig.url);
1055        prepareCallback(avRecorder, avConfig);
1056        startCallback(avRecorder);
1057        resetCallback(avRecorder);
1058        releaseCallback(avRecorder);
1059        loopTimes--;
1060    }
1061    done();
1062}
1063
1064export async function avRecorderLoopPrepare2Stop(avConfig, avRecorder, loopTimes, done) {
1065    avRecorder = await idle(avRecorder);
1066    console.info('case avConfig.url is ' + avConfig.url);
1067    while (loopTimes > 0) {
1068        prepareCallback(avRecorder, avConfig);
1069        startCallback(avRecorder);
1070        stopCallback(avRecorder);
1071        loopTimes--;
1072    }
1073    await avRecorder.release().then(() => {
1074        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1075        done();
1076    }).catch((err) => {
1077        console.info('release AVRecorder failed and catch error is ' + err.message);
1078    });
1079}
1080
1081export async function avRecorderLoopPause2Resume(avConfig, avRecorder, loopTimes, done) {
1082    avRecorder = await idle(avRecorder);
1083    console.info('case avConfig.url is ' + avConfig.url);
1084    await preparePromise(avRecorder, avConfig);
1085    await startPromise(avRecorder);
1086    while (loopTimes > 0) {
1087        pauseCallback(avRecorder);
1088        resumeCallback(avRecorder);
1089        loopTimes--;
1090    }
1091    await avRecorder.release().then(() => {
1092        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1093        done();
1094    }).catch((err) => {
1095        console.info('release AVRecorder failed and catch error is ' + err.message);
1096    });
1097}
1098
1099export async function avRecorderLoopCreate2Release2(avConfig, avRecorder, loopTimes, done) {
1100    while (loopTimes > 0) {
1101        avRecorder = await idle(avRecorder);
1102        console.info('case avConfig.url is ' + avConfig.url);
1103        releaseCallback(avRecorder);
1104        loopTimes--;
1105    }
1106    done();
1107}
1108
1109export async function setPrepare2ResetOnCallback(avConfig, avRecorder, done) {
1110    console.info(`case setOnCallback in`);
1111    let count = 0;
1112    avRecorder.on('stateChange', async (state, reason) => {
1113        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1114        switch (state) {
1115            case AV_RECORDER_STATE.IDLE:
1116                console.info(`case AV_RECORDER_STATE.IDLE`);
1117                expect(avRecorder.state).assertEqual('idle');
1118                count++;
1119                if (count == 1001) {
1120                    releasePromise(avRecorder);
1121                } else {
1122                    avRecorder.prepare(avConfig).then(() => {
1123                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
1124                        console.info(`case avRecorderLoopPrepare2ResetWithCallback is prepared`);
1125                        avRecorder.start().then(() => {
1126                            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
1127                            console.info(`case avRecorderLoopPrepare2ResetWithCallback is started`);
1128                            avRecorder.reset().then(() => {
1129                                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
1130                                console.info(`case avRecorderLoopPrepare2ResetWithCallback is reset`);
1131                            }).catch((err1) => {
1132                                console.info('reset failed and catch error is ' + err1.message);
1133                            });
1134                        }).catch((err2) => {
1135                            console.info('start failed and catch error is ' + err2.message);
1136                        });
1137                    }).catch((err3) => {
1138                        console.info('prepare failed and catch error is ' + err3.message);
1139                    });
1140                }
1141            case AV_RECORDER_STATE.RELEASED:
1142                console.info(`case AV_RECORDER_STATE.RELEASED`)
1143                expect(avRecorder.state).assertEqual('released');
1144                offCallback(avRecorder, ['stateChange', 'error']);
1145                done();
1146                break;
1147            case AV_RECORDER_STATE.ERROR:
1148                console.info(`case AV_RECORDER_STATE.ERROR`)
1149                expect(avRecorder.state).assertEqual('error');
1150                break;
1151            default:
1152                console.info('case state is unknown');
1153        }
1154    });
1155}
1156
1157export async function avRecorderLoopPrepare2ResetWithCallback(avConfig, avRecorder, done) {
1158    avRecorder = await idle(avRecorder);
1159    await preparePromise(avRecorder, avConfig);
1160    await resetPromise(avRecorder);
1161    setPrepare2ResetOnCallback(avConfig, avRecorder, done);
1162}
1163
1164export async function setCreate2ReleaseOnCallback(avRecorder, avConfig, loopTimes, done) {
1165    console.info(`case setOnCallback in`);
1166    avRecorder.on('stateChange', async (state, reason) => {
1167        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1168        switch (state) {
1169            case AV_RECORDER_STATE.IDLE:
1170                console.info(`case AV_RECORDER_STATE.IDLE`);
1171                expect(avRecorder.state).assertEqual('idle');
1172                await releasePromise(avRecorder);
1173            case AV_RECORDER_STATE.PREPARED:
1174                console.info(`case AV_RECORDER_STATE.PREPARED`);
1175                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
1176                await startPromise(avRecorder);
1177                break;
1178            case AV_RECORDER_STATE.STARTED:
1179                console.info(`case AV_RECORDER_STATE.STARTED`)
1180                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
1181                await resetPromise(avRecorder);
1182                break;
1183            case AV_RECORDER_STATE.RELEASED:
1184                console.info(`case AV_RECORDER_STATE.RELEASED`);
1185                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1186                loopTimes--;
1187                if (loopTimes <= 0) {
1188                    done();
1189                } else {
1190                    avRecorderLoopCreate2ReleaseWithCallback(avRecorder, avConfig, loopTimes, done);
1191                }
1192                break;
1193            case AV_RECORDER_STATE.ERROR:
1194                console.info(`case AV_RECORDER_STATE.ERROR`)
1195                expect(avRecorder.state).assertEqual('error');
1196                break;
1197            default:
1198                console.info('case state is unknown');
1199        }
1200    });
1201}
1202
1203export async function avRecorderLoopCreate2ReleaseWithCallback(avRecorder, avConfig, loopTimes, done) {
1204    avRecorder = await idle(avRecorder);
1205    await preparePromise(avRecorder, avConfig);
1206    setCreate2ReleaseOnCallback(avRecorder, loopTimes, done)
1207}
1208
1209export async function setPrepare2StopOnCallback(avRecorder, done) {
1210    console.info(`case setOnCallback in`);
1211    let count = 0;
1212    avRecorder.on('stateChange', async (state, reason) => {
1213        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1214        switch (state) {
1215            case AV_RECORDER_STATE.PREPARED:
1216                console.info(`case AV_RECORDER_STATE.PREPARED`);
1217                expect(avRecorder.state).assertEqual('prepared');
1218                while (count < 1001) {
1219                    avRecorder.start().then(() => {
1220                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
1221                        console.info(`case avRecorderLoopPrepare2StopWithCallback is started`);
1222                        avRecorder.stop().then(() => {
1223                            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STOPPED);
1224                            console.info(`case avRecorderLoopPrepare2StopWithCallback is stopped`);
1225                            count++;
1226                        }).catch((err1) => {
1227                            console.info('stop failed and catch error is ' + err1.message);
1228                        });
1229                    }).catch((err2) => {
1230                        console.info('start failed and catch error is ' + err2.message);
1231                    });
1232                }
1233                offCallback(avRecorder, ['stateChange', 'error']);
1234                done();
1235            case AV_RECORDER_STATE.STOPPED:
1236                console.info(`case AV_RECORDER_STATE.STOPPED`)
1237                expect(avRecorder.state).assertEqual('stopped');
1238                if (count == 1001) {
1239                    await releasePromise(avRecorder);
1240                }
1241                break;
1242            case AV_RECORDER_STATE.RELEASED:
1243                console.info(`case AV_RECORDER_STATE.RELEASED`)
1244                expect(avRecorder.state).assertEqual('released');
1245                done();
1246                break;
1247            case AV_RECORDER_STATE.ERROR:
1248                console.info(`case AV_RECORDER_STATE.ERROR`)
1249                expect(avRecorder.state).assertEqual('error');
1250                break;
1251            default:
1252                console.info('case state is unknown');
1253        }
1254    });
1255}
1256
1257export async function avRecorderLoopPrepare2StopWithCallback(avConfig, avRecorder, done) {
1258    avRecorder = await idle(avRecorder);
1259    console.info('case avConfig.url is ' + avConfig.url);
1260    await preparePromise(avRecorder, avConfig);
1261    setPrepare2StopOnCallback(avRecorder, done)
1262}
1263
1264export async function setPause2ResumeOnCallback(avRecorder, done) {
1265    console.info(`case setOnCallback in`);
1266    let count = 0;
1267    avRecorder.on('stateChange', async (state, reason) => {
1268        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1269        switch (state) {
1270            case AV_RECORDER_STATE.STARTED:
1271                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.STARTED);
1272                console.info(`case avRecorderLoopPause2ResumeWithCallback is started`);
1273                count++;
1274                if (count == 1001) {
1275                    offCallback(avRecorder, ['stateChange', 'error']);
1276                    done();
1277                } else {
1278                    avRecorder.pause().then(() => {
1279                        expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PAUSED);
1280                        console.info(`case avRecorderLoopPause2ResumeWithCallback is paused`);
1281                        avRecorder.reset().then(() => {
1282                            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.IDLE);
1283                            console.info(`case avRecorderLoopPause2ResumeWithCallback is resumed`);
1284                        }).catch((err1) => {
1285                            console.info('reset failed and catch error is ' + err1.message);
1286                        });
1287                    }).catch((err2) => {
1288                        console.info('pause failed and catch error is ' + err2.message);
1289                    });
1290                }
1291            case AV_RECORDER_STATE.IDLE:
1292                console.info(`case AV_RECORDER_STATE.IDLE`)
1293                expect(avRecorder.state).assertEqual('idle');
1294                if (count == 1001) {
1295                    await releasePromise(avRecorder);
1296                }
1297                break;
1298            case AV_RECORDER_STATE.RELEASED:
1299                console.info(`case AV_RECORDER_STATE.RELEASED`)
1300                expect(avRecorder.state).assertEqual('released');
1301                done();
1302                break;
1303            case AV_RECORDER_STATE.ERROR:
1304                console.info(`case AV_RECORDER_STATE.ERROR`)
1305                expect(avRecorder.state).assertEqual('error');
1306                break;
1307            default:
1308                console.info('case state is unknown');
1309        }
1310    });
1311}
1312
1313export async function avRecorderLoopPause2ResumeWithCallback(avConfig, avRecorder, done) {
1314    avRecorder = await idle(avRecorder);
1315    console.info('case avConfig.url is ' + avConfig.url);
1316    await preparePromise(avRecorder, avConfig);
1317    await startPromise(avRecorder);
1318    setPause2ResumeOnCallback(avRecorder, done);
1319}
1320
1321export async function setCreate2Release2OnCallback(avRecorder, loopTimes, done) {
1322    console.info(`case setOnCallback in`);
1323    avRecorder.on('stateChange', async (state, reason) => {
1324        console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
1325        switch (state) {
1326            case AV_RECORDER_STATE.IDLE:
1327                console.info(`case AV_RECORDER_STATE.IDLE`);
1328                expect(avRecorder.state).assertEqual('idle');
1329            case AV_RECORDER_STATE.RELEASED:
1330                console.info(`case AV_RECORDER_STATE.RELEASED`);
1331                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
1332                loopTimes--;
1333                if (loopTimes <= 0) {
1334                    done();
1335                } else {
1336                    avRecorderLoopCreate2Release2WithCallback(avRecorder, loopTimes, done);
1337                }
1338                break;
1339            case AV_RECORDER_STATE.ERROR:
1340                console.info(`case AV_RECORDER_STATE.ERROR`)
1341                expect(avRecorder.state).assertEqual('error');
1342                break;
1343            default:
1344                console.info('case state is unknown');
1345        }
1346    });
1347}
1348
1349export async function avRecorderLoopCreate2Release2WithCallback(avRecorder, loopTimes, done) {
1350    avRecorder = await idle(avRecorder);
1351    await releasePromise(avRecorder);
1352    setCreate2Release2OnCallback(avRecorder, done);
1353}
1354
1355export async function avRecorderReliabilitTest01(avConfig, avRecorder, recorderTime, done) {
1356    let result = true;
1357    avRecorder = await idle(avRecorder);
1358    await avRecorder.pause((err) => {
1359        if (err == null) {
1360            console.info('pause avRecorderReliabilitTest01 success');
1361        } else {
1362            result = false
1363            expect(result).assertEqual(false);
1364            console.info('pause avRecorderReliabilitTest01 failed and error is ' + err.message);
1365
1366        }
1367    });
1368    console.info('pause avRecorderReliabilitTest01 001');
1369    await releaseDone(avRecorder, done)
1370}
1371
1372export async function avRecorderReliabilitTest02(avConfig, avRecorder, recorderTime, done) {
1373    avRecorder = await idle(avRecorder);
1374    await preparePromise(avRecorder, avConfig)
1375    await releaseDone(avRecorder, done)
1376}
1377
1378export async function avRecorderReliabilitTest03(avConfig, avRecorder, recorderTime, done) {
1379    avRecorder = await idle(avRecorder);
1380    setPrepareOnCallback(avConfig, avRecorder, recorderTime, done)
1381    await avRecorder.prepare(avConfig)
1382}
1383
1384export async function avRecorderReliabilitTest001(avConfig, avRecorder, recorderTime, done) {
1385    idleCallback(avRecorder, avConfig, done)
1386}
1387
1388export async function avRecorderReliabilitTest04(avConfig, avRecorder, recorderTime, done) {
1389    let result = true;
1390    avRecorder = await idle(avRecorder);
1391    await avRecorder.resume().then(() => {
1392        console.info('resume avRecorderReliabilitTest04 success');
1393    }).catch((err) => {
1394        console.info('resume avRecorderReliabilitTest04 failed and catch error is ' + err.message);
1395        result = false
1396    });
1397    expect(result).assertEqual(false);
1398    await preparePromise(avRecorder, avConfig)
1399    await releaseDone(avRecorder, done)
1400}
1401
1402export async function avRecorderReliabilitTest05(avConfig, avRecorder, recorderTime, done) {
1403    avRecorder = await idle(avRecorder);
1404    await prepareCallback(avRecorder, avConfig)
1405    await releaseDone(avRecorder, done)
1406}
1407
1408export async function avRecorderReliabilitTest06(avConfig, avRecorder, recorderTime, done) {
1409    avRecorder = await idle(avRecorder);
1410    await preparePromise(avRecorder, avConfig)
1411    await startPromise(avRecorder)
1412    await pausePromise(avRecorder)
1413    await startPromise(avRecorder)
1414    await releaseDone(avRecorder, done)
1415}
1416
1417export async function avRecorderReliabilitTest07(avConfig, avRecorder, recorderTime, done) {
1418    avRecorder = await idle(avRecorder);
1419    await preparePromise(avRecorder, avConfig)
1420    await startPromise(avRecorder)
1421    await resumePromise(avRecorder)
1422    await startPromise(avRecorder)
1423    await releaseDone(avRecorder, done)
1424}
1425
1426export async function avRecorderReliabilitTest08(avConfig, avRecorder, recorderTime, done) {
1427    let result = true;
1428    avRecorder = await idle(avRecorder);
1429    await avRecorder.pause().then(() => {
1430        console.info('pause avRecorderReliabilitTest08 success');
1431    }).catch((err) => {
1432        console.info('pause avRecorderReliabilitTest08 failed and catch error is ' + err.message);
1433        result = false
1434    });
1435    expect(result).assertEqual(false);
1436    await releaseDone(avRecorder, done)
1437}
1438
1439export async function avRecorderReliabilitTest09(avConfig, avRecorder, recorderTime, done) {
1440    let result = true;
1441    avRecorder = await idle(avRecorder);
1442    await preparePromise(avRecorder, avConfig)
1443    await avRecorder.pause().then(() => {
1444        console.info('pause avRecorderReliabilitTest09 success');
1445    }).catch((err) => {
1446        console.info('pause avRecorderReliabilitTest09 failed and catch error is ' + err.message);
1447        result = false
1448    });
1449    expect(result).assertEqual(false);
1450    await releaseDone(avRecorder, done)
1451}
1452
1453export async function avRecorderReliabilitTest10(avConfig, avRecorder, recorderTime, done) {
1454    avRecorder = await idle(avRecorder);
1455    await preparePromise(avRecorder, avConfig)
1456    await startPromise(avRecorder)
1457    await pausePromise(avRecorder)
1458    await releaseDone(avRecorder, done)
1459}
1460
1461export async function avRecorderReliabilitTest11(avConfig, avRecorder, recorderTime, done) {
1462    avRecorder = await idle(avRecorder);
1463    await preparePromise(avRecorder, avConfig)
1464    await startPromise(avRecorder)
1465    await resumePromise(avRecorder)
1466    await pausePromise(avRecorder)
1467    await releaseDone(avRecorder, done)
1468}
1469
1470export async function avRecorderReliabilitTest12(avConfig, avRecorder, recorderTime, done) {
1471    let result = true;
1472    avRecorder = await idle(avRecorder);
1473    await preparePromise(avRecorder, avConfig)
1474    await startPromise(avRecorder)
1475    await stopPromise(avRecorder)
1476    await avRecorder.pause().then(() => {
1477        console.info('pause avRecorderReliabilitTest12 success');
1478    }).catch((err) => {
1479        console.info('pause avRecorderReliabilitTest12 failed and catch error is ' + err.message);
1480        result = false
1481    });
1482    expect(result).assertEqual(false);
1483    await releaseDone(avRecorder, done)
1484}
1485
1486export async function avRecorderReliabilitTest13(avConfig, avRecorder, recorderTime, done) {
1487    let result = true;
1488    avRecorder = await idle(avRecorder);
1489    await preparePromise(avRecorder, avConfig)
1490    await startPromise(avRecorder)
1491    await stopPromise(avRecorder)
1492    await resetPromise(avRecorder)
1493    await avRecorder.pause().then(() => {
1494        console.info('pause avRecorderReliabilitTest13 success');
1495    }).catch((err) => {
1496        console.info('pause avRecorderReliabilitTest13 failed and catch error is ' + err.message);
1497        result = false
1498    });
1499    expect(result).assertEqual(false);
1500    await releaseDone(avRecorder, done)
1501}
1502
1503export async function avRecorderReliabilitTest14(avConfig, avRecorder, recorderTime, done) {
1504    let result1 = true;
1505    let result2 = true;
1506    let result3 = true;
1507    let result4 = true;
1508    let result5 = true;
1509
1510    avRecorder = await idle(avRecorder);
1511    await avRecorder.pause().then(() => {
1512        console.info('pause avRecorderReliabilitTest14 success');
1513    }).catch((err) => {
1514        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1515        result1 = false
1516    });
1517    expect(result1).assertEqual(false);
1518
1519    await preparePromise(avRecorder, avConfig)
1520    await avRecorder.pause().then(() => {
1521        console.info('pause avRecorderReliabilitTest14 success');
1522    }).catch((err) => {
1523        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1524        result2 = false
1525    });
1526    expect(result2).assertEqual(false);
1527
1528    await startPromise(avRecorder)
1529    await avRecorder.pause().then(() => {
1530        console.info('pause avRecorderReliabilitTest14 success');
1531    }).catch((err) => {
1532        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1533        result3 = false
1534    });
1535    expect(result3).assertEqual(true);
1536
1537    await stopPromise(avRecorder)
1538    await avRecorder.pause().then(() => {
1539        console.info('pause avRecorderReliabilitTest14 success');
1540    }).catch((err) => {
1541        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1542        result4 = false
1543    });
1544    expect(result4).assertEqual(false);
1545
1546    await resetPromise(avRecorder)
1547    await avRecorder.pause().then(() => {
1548        console.info('pause avRecorderReliabilitTest14 success');
1549    }).catch((err) => {
1550        console.info('pause avRecorderReliabilitTest14 failed and catch error is ' + err.message);
1551        result5 = false
1552    });
1553    expect(result5).assertEqual(false);
1554
1555    await releaseDone(avRecorder, done)
1556}
1557
1558export async function avRecorderReliabilitTest15(avConfig, avRecorder, recorderTime, done) {
1559    let result1 = true;
1560    let result2 = true;
1561    let result3 = true;
1562
1563    avRecorder = await idle(avRecorder);
1564    await preparePromise(avRecorder, avConfig)
1565    await startPromise(avRecorder)
1566    await avRecorder.pause().then(() => {
1567        console.info('pause avRecorderReliabilitTest15 success');
1568    }).catch((err) => {
1569        console.info('pause avRecorderReliabilitTest15 failed and catch error is ' + err.message);
1570        result1 = false
1571    });
1572    expect(result1).assertEqual(true);
1573
1574    await avRecorder.pause().then(() => {
1575        console.info('pause avRecorderReliabilitTest15 success');
1576    }).catch((err) => {
1577        console.info('pause avRecorderReliabilitTest15 failed and catch error is ' + err.message);
1578        result2 = false
1579    });
1580    expect(result2).assertEqual(true);
1581
1582    await avRecorder.pause().then(() => {
1583        console.info('pause avRecorderReliabilitTest15 success');
1584    }).catch((err) => {
1585        console.info('pause avRecorderReliabilitTest15 failed and catch error is ' + err.message);
1586        result3 = false
1587    });
1588    expect(result3).assertEqual(true);
1589
1590    await releaseDone(avRecorder, done)
1591}
1592
1593export async function avRecorderReliabilitTest16(avConfig, avRecorder, recorderTime, done) {
1594    let result = true;
1595    avRecorder = await idle(avRecorder);
1596    await avRecorder.resume().then(() => {
1597        console.info('resume AVRecorder success');
1598    }).catch((err) => {
1599        console.info('resume AVRecorder failed and catch error is ' + err.message);
1600        result = false
1601    });
1602    expect(result).assertEqual(false);
1603    await releaseDone(avRecorder, done)
1604}
1605
1606export async function avRecorderReliabilitTest17(avConfig, avRecorder, recorderTime, done) {
1607    let result = true;
1608    avRecorder = await idle(avRecorder);
1609    await preparePromise(avRecorder, avConfig)
1610    await avRecorder.resume().then(() => {
1611        console.info('resume AVRecorder success');
1612    }).catch((err) => {
1613        console.info('resume AVRecorder failed and catch error is ' + err.message);
1614        result = false
1615    });
1616    expect(result).assertEqual(false);
1617    await releaseDone(avRecorder, done)
1618}
1619
1620export async function avRecorderReliabilitTest18(avConfig, avRecorder, recorderTime, done) {
1621    let result = true;
1622    avRecorder = await idle(avRecorder);
1623    await preparePromise(avRecorder, avConfig)
1624    await startPromise(avRecorder)
1625    await avRecorder.resume().then(() => {
1626        console.info('avRecorderReliabilitTest18 resume AVRecorder success');
1627    }).catch((err) => {
1628        console.info('avRecorderReliabilitTest18 resume AVRecorder failed and catch error is ' + err.message);
1629        result = false
1630    });
1631    expect(result).assertEqual(true);
1632    await releaseDone(avRecorder, done)
1633}
1634
1635export async function avRecorderReliabilitTest19(avConfig, avRecorder, recorderTime, done) {
1636    let result = true;
1637    avRecorder = await idle(avRecorder);
1638    await preparePromise(avRecorder, avConfig)
1639    await startPromise(avRecorder)
1640    await pausePromise(avRecorder)
1641    await avRecorder.resume().then(() => {
1642        console.info('avRecorderReliabilitTest19 resume AVRecorder success');
1643    }).catch((err) => {
1644        console.info('avRecorderReliabilitTest19 resume AVRecorder failed and catch error is ' + err.message);
1645        result = false
1646    });
1647    expect(result).assertEqual(true);
1648    await releaseDone(avRecorder, done)
1649}
1650
1651export async function avRecorderReliabilitTest20(avConfig, avRecorder, recorderTime, done) {
1652    let result = true;
1653    avRecorder = await idle(avRecorder);
1654    await preparePromise(avRecorder, avConfig)
1655    await startPromise(avRecorder)
1656    await stopPromise(avRecorder)
1657    await avRecorder.resume().then(() => {
1658        console.info('avRecorderReliabilitTest20 resume AVRecorder success');
1659    }).catch((err) => {
1660        console.info('avRecorderReliabilitTest20 resume AVRecorder failed and catch error is ' + err.message);
1661        result = false
1662    });
1663    expect(result).assertEqual(false);
1664    await releaseDone(avRecorder, done)
1665}
1666
1667export async function avRecorderReliabilitTest21(avConfig, avRecorder, recorderTime, done) {
1668    let result = true;
1669    avRecorder = await idle(avRecorder);
1670    await preparePromise(avRecorder, avConfig)
1671    await startPromise(avRecorder)
1672    await pausePromise(avRecorder)
1673    await resetPromise(avRecorder)
1674    await avRecorder.resume().then(() => {
1675        console.info('avRecorderReliabilitTest20 resume AVRecorder success');
1676    }).catch((err) => {
1677        console.info('avRecorderReliabilitTest20 resume AVRecorder failed and catch error is ' + err.message);
1678        result = false
1679    });
1680    expect(result).assertEqual(false);
1681    await releaseDone(avRecorder, done)
1682}
1683
1684export async function avRecorderReliabilitTest22(avConfig, avRecorder, recorderTime, done) {
1685    let result1 = true;
1686    let result2 = true;
1687    let result3 = true;
1688    let result4 = true;
1689    let result5 = true;
1690
1691    avRecorder = await idle(avRecorder);
1692    await avRecorder.resume().then(() => {
1693        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1694    }).catch((err) => {
1695        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1696        result1 = false
1697    });
1698    expect(result1).assertEqual(false);
1699
1700    await preparePromise(avRecorder, avConfig)
1701    await avRecorder.resume().then(() => {
1702        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1703    }).catch((err) => {
1704        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1705        result2 = false
1706    });
1707    expect(result2).assertEqual(false);
1708
1709    await startPromise(avRecorder)
1710    await avRecorder.resume().then(() => {
1711        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1712    }).catch((err) => {
1713        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1714        result3 = false
1715    });
1716    expect(result3).assertEqual(true);
1717
1718    await pausePromise(avRecorder)
1719    await avRecorder.resume().then(() => {
1720        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1721    }).catch((err) => {
1722        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1723        result4 = false
1724    });
1725    expect(result4).assertEqual(true);
1726
1727    await resetPromise(avRecorder)
1728    await avRecorder.resume().then(() => {
1729        console.info('avRecorderReliabilitTest22 resume avRecorder success');
1730    }).catch((err) => {
1731        console.info('avRecorderReliabilitTest22 resume avRecorder failed and catch error is ' + err.message);
1732        result5 = false
1733    });
1734    expect(result5).assertEqual(false);
1735
1736    await releaseDone(avRecorder, done)
1737}
1738
1739export async function avRecorderReliabilitTest23(avConfig, avRecorder, recorderTime, done) {
1740    let result1 = true;
1741    let result2 = true;
1742    let result3 = true;
1743
1744    avRecorder = await idle(avRecorder);
1745    await preparePromise(avRecorder, avConfig)
1746    await startPromise(avRecorder)
1747    await pausePromise(avRecorder)
1748    await avRecorder.resume().then(() => {
1749        console.info('avRecorderReliabilitTest23 resume avRecorder success');
1750    }).catch((err) => {
1751        console.info('avRecorderReliabilitTest23 resume avRecorder failed and catch error is ' + err.message);
1752        result1 = false
1753    });
1754    expect(result1).assertEqual(true);
1755
1756    await avRecorder.resume().then(() => {
1757        console.info('avRecorderReliabilitTest23 resume avRecorder success');
1758    }).catch((err) => {
1759        console.info('avRecorderReliabilitTest23 resume avRecorder failed and catch error is ' + err.message);
1760        result2 = false
1761    });
1762    expect(result2).assertEqual(true);
1763
1764    await avRecorder.resume().then(() => {
1765        console.info('avRecorderReliabilitTest23 resume avRecorder success');
1766    }).catch((err) => {
1767        console.info('avRecorderReliabilitTest23 resume avRecorder failed and catch error is ' + err.message);
1768        result3 = false
1769    });
1770    expect(result3).assertEqual(true);
1771
1772    await releaseDone(avRecorder, done)
1773}
1774
1775export async function avRecorderReliabilitTest24(avConfig, avRecorder, recorderTime, done) {
1776    let result = true;
1777    avRecorder = await idle(avRecorder);
1778    await preparePromise(avRecorder, avConfig)
1779    await startPromise(avRecorder, recorderTime)
1780    await pausePromise(avRecorder)
1781    await avRecorder.stop().then(() => {
1782        console.info('avRecorderReliabilitTest24 stop avRecorder success');
1783    }).catch((err) => {
1784        console.info('avRecorderReliabilitTest24 stop avRecorder failed and catch error is ' + err.message);
1785        result = false
1786    });
1787    expect(result).assertEqual(true);
1788    await releaseDone(avRecorder, done)
1789}
1790
1791export async function avRecorderReliabilitTest25(avConfig, avRecorder, recorderTime, done) {
1792    let result = true;
1793    avRecorder = await idle(avRecorder);
1794    await preparePromise(avRecorder, avConfig)
1795    await startPromise(avRecorder, recorderTime)
1796    await pausePromise(avRecorder)
1797    await resumePromise(avRecorder)
1798    await avRecorder.stop().then(() => {
1799        console.info('avRecorderReliabilitTest25 stop avRecorder success');
1800    }).catch((err) => {
1801        console.info('avRecorderReliabilitTest25 stop avRecorder failed and catch error is ' + err.message);
1802        result = false
1803    });
1804    expect(result).assertEqual(true);
1805    await releaseDone(avRecorder, done)
1806}
1807
1808export async function avRecorderReliabilitTest26(avConfig, avRecorder, recorderTime, done) {
1809    let result = true;
1810    avRecorder = await idle(avRecorder);
1811    await preparePromise(avRecorder, avConfig)
1812    await startPromise(avRecorder)
1813    await pausePromise(avRecorder)
1814    await avRecorder.reset().then(() => {
1815        console.info('avRecorderReliabilitTest26 reset avRecorder success');
1816    }).catch((err) => {
1817        console.info('avRecorderReliabilitTest26 reset avRecorder failed and catch error is ' + err.message);
1818        result = false
1819    });
1820    expect(result).assertEqual(true);
1821    await releaseDone(avRecorder, done)
1822}
1823
1824export async function avRecorderReliabilitTest27(avConfig, avRecorder, recorderTime, done) {
1825    let result = true;
1826    avRecorder = await idle(avRecorder);
1827    await preparePromise(avRecorder, avConfig)
1828    await startPromise(avRecorder)
1829    await pausePromise(avRecorder)
1830    await resumePromise(avRecorder)
1831    await avRecorder.reset().then(() => {
1832        console.info('avRecorderReliabilitTest27 reset avRecorder success');
1833    }).catch((err) => {
1834        console.info('avRecorderReliabilitTest27 reset avRecorder failed and catch error is ' + err.message);
1835        result = false
1836    });
1837    expect(result).assertEqual(true);
1838    await releaseDone(avRecorder, done)
1839}
1840
1841export async function avRecorderReliabilitTest28(avConfig, avRecorder, recorderTime, done) {
1842    let result = true;
1843    avRecorder = await idle(avRecorder);
1844    await preparePromise(avRecorder, avConfig)
1845    await startPromise(avRecorder)
1846    await pausePromise(avRecorder)
1847    await avRecorder.release().then(() => {
1848        console.info('avRecorderReliabilitTest28 release avRecorder success');
1849    }).catch((err) => {
1850        console.info('avRecorderReliabilitTest28 release avRecorder failed and catch error is ' + err.message);
1851        result = false
1852    });
1853    expect(result).assertEqual(true);
1854    await releaseDone(avRecorder, done)
1855}
1856
1857export async function avRecorderReliabilitTest29(avConfig, avRecorder, recorderTime, done) {
1858    let result = true;
1859    avRecorder = await idle(avRecorder);
1860    await preparePromise(avRecorder, avConfig)
1861    await startPromise(avRecorder)
1862    await pausePromise(avRecorder)
1863    await resumePromise(avRecorder)
1864    await avRecorder.release().then(() => {
1865        console.info('avRecorderReliabilitTest29 release avRecorder success');
1866    }).catch((err) => {
1867        console.info('avRecorderReliabilitTest29 release avRecorder failed and catch error is ' + err.message);
1868        result = false
1869    });
1870    expect(result).assertEqual(true);
1871    await releaseDone(avRecorder, done)
1872}
1873
1874export async function avRecorderReliabilitTest30(avConfig, avRecorder, recorderTime, done) {
1875    let result1 = true;
1876    let result2 = true;
1877    let result3 = true;
1878
1879    avRecorder = await idle(avRecorder);
1880    await preparePromise(avRecorder, avConfig)
1881    await startPromise(avRecorder)
1882    await pausePromise(avRecorder)
1883    await avRecorder.release().then(() => {
1884        console.info('avRecorderReliabilitTest30 release avRecorder success');
1885    }).catch((err) => {
1886        console.info('avRecorderReliabilitTest30 release avRecorder failed and catch error is ' + err.message);
1887        result1 = false
1888    });
1889    expect(result1).assertEqual(true);
1890
1891    await avRecorder.release().then(() => {
1892        console.info('avRecorderReliabilitTest30 release avRecorder success');
1893    }).catch((err) => {
1894        console.info('avRecorderReliabilitTest30 release avRecorder failed and catch error is ' + err.message);
1895        result2 = false
1896    });
1897    expect(result2).assertEqual(true);
1898
1899    await avRecorder.release().then(() => {
1900        console.info('avRecorderReliabilitTest30 release avRecorder success');
1901    }).catch((err) => {
1902        console.info('avRecorderReliabilitTest30 release avRecorder failed and catch error is ' + err.message);
1903        result3 = false
1904    });
1905    expect(result3).assertEqual(true);
1906    done();
1907}
1908
1909export async function avRecorderReliabilitTest31(avConfig, avRecorder, recorderTime, done) {
1910    let surfaceID = null;
1911    let result = true;
1912    avRecorder = await idle(avRecorder);
1913    await avRecorder.getInputSurface().then((surfaceId) => {
1914        console.info('avRecorderReliabilitTest31 getInputSurface success');
1915        surfaceID = surfaceId;
1916    }).catch((err) => {
1917        console.info('avRecorderReliabilitTest31 getInputSurface failed and catch error is ' + err.message);
1918        result = false
1919    });
1920    expect(result).assertEqual(false);
1921    await releaseDone(avRecorder, done)
1922}
1923
1924
1925export async function getInputSurfaceTest32(avConfig, avRecorder, recorderTime, done) {
1926    console.info(`case getInputSurfaceTest in`);
1927    avRecorder.on('stateChange', async (state, reason) => {
1928        console.info('case state has changed, new state is :' + state);
1929        switch (state) {
1930            case AV_RECORDER_STATE.PREPARED:
1931                console.info(`case getInputSurfaceTest32 state is PREPARED`);
1932                expect(avRecorder.state).assertEqual('prepared');
1933                getInputSurfacePromise(avRecorder)
1934                releasePromise(avRecorder)
1935                break;
1936            case AV_RECORDER_STATE.RELEASED:
1937                console.info(`case getInputSurfaceTest32 state is released`);
1938                expect(avRecorder.state).assertEqual('released');
1939                done();
1940                break;
1941            case AV_RECORDER_STATE.ERROR:
1942                console.info(`case getInputSurfaceTest32 state is ERROR`)
1943                expect(avRecorder.state).assertEqual('error');
1944                break;
1945            default:
1946                console.info('case state is unknown');
1947        }
1948    });
1949    avRecorder.on('error', (err) => {
1950        console.info('case getInputSurfaceTest32 avRecorder.on(error) called, errMessage is ' + err.message);
1951        done();
1952    });
1953}
1954
1955export async function avRecorderReliabilitTest32(avConfig, avRecorder, recorderTime, done) {
1956    avRecorder = await idle(avRecorder);
1957    getInputSurfaceTest32(avConfig, avRecorder, recorderTime, done)
1958    await preparePromise(avRecorder, avConfig)
1959}
1960
1961export async function getInputSurfaceTest33(avConfig, avRecorder, recorderTime, done) {
1962    console.info(`case getInputSurfaceTest33 in`);
1963    avRecorder.on('stateChange', async (state, reason) => {
1964        console.info('case state has changed, new state is :' + state);
1965        switch (state) {
1966            case AV_RECORDER_STATE.PREPARED:
1967                console.info(`case getInputSurfaceTest33 state is PREPARED`);
1968                expect(avRecorder.state).assertEqual('prepared');
1969                getInputSurfacePromise(avRecorder)
1970                startPromise(avRecorder)
1971                break;
1972            case AV_RECORDER_STATE.STARTED:
1973                console.info(`case getInputSurfaceTest33 state is started`)
1974                expect(avRecorder.state).assertEqual('started');
1975                await sleep(recorderTime);
1976                console.info(`case getInputSurfaceTest33 111`)
1977                getInputSurfacePromise(avRecorder)
1978                console.info(`case getInputSurfaceTest33 222`)
1979                releasePromise(avRecorder)
1980                break;
1981            case AV_RECORDER_STATE.RELEASED:
1982                console.info(`case getInputSurfaceTest33 state is released`);
1983                expect(avRecorder.state).assertEqual('released');
1984                done();
1985                break;
1986            case AV_RECORDER_STATE.ERROR:
1987                console.info(`case getInputSurfaceTest33 state is ERROR`)
1988                expect(avRecorder.state).assertEqual('error');
1989                break;
1990            default:
1991                console.info('case state is unknown');
1992        }
1993    });
1994    avRecorder.on('error', (err) => {
1995        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
1996        done();
1997    });
1998}
1999
2000export async function avRecorderReliabilitTest33(avConfig, avRecorder, recorderTime, done) {
2001    avRecorder = await idle(avRecorder);
2002    getInputSurfaceTest33(avConfig, avRecorder, recorderTime, done)
2003    await preparePromise(avRecorder, avConfig)
2004}
2005
2006export async function getInputSurfaceTest34(avConfig, avRecorder, recorderTime, done) {
2007    console.info(`case getInputSurfaceTest34 in`);
2008    avRecorder.on('stateChange', async (state, reason) => {
2009        console.info('case state has changed, new state is :' + state);
2010        switch (state) {
2011            case AV_RECORDER_STATE.PREPARED:
2012                console.info(`case getInputSurfaceTest34 state is PREPARED`);
2013                expect(avRecorder.state).assertEqual('prepared');
2014                getInputSurfacePromise(avRecorder)
2015                startPromise(avRecorder)
2016                break;
2017            case AV_RECORDER_STATE.STARTED:
2018                console.info(`case getInputSurfaceTest34 state is started`)
2019                expect(avRecorder.state).assertEqual('started');
2020                await sleep(recorderTime);
2021                pausePromise(avRecorder)
2022                break;
2023            case AV_RECORDER_STATE.PAUSED:
2024                console.info(`case getInputSurfaceTest34 state is paused`)
2025                expect(avRecorder.state).assertEqual('paused');
2026                getInputSurfacePromise(avRecorder)
2027                releasePromise(avRecorder)
2028                break;
2029            case AV_RECORDER_STATE.RELEASED:
2030                console.info(`case getInputSurfaceTest34 state is released`);
2031                expect(avRecorder.state).assertEqual('released');
2032                done();
2033                break;
2034            case AV_RECORDER_STATE.ERROR:
2035                console.info(`case getInputSurfaceTest34 state is ERROR`)
2036                expect(avRecorder.state).assertEqual('error');
2037                break;
2038            default:
2039                console.info('case state is unknown');
2040        }
2041    });
2042    avRecorder.on('error', (err) => {
2043        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2044        done();
2045    });
2046}
2047
2048export async function avRecorderReliabilitTest34(avConfig, avRecorder, recorderTime, done) {
2049    avRecorder = await idle(avRecorder);
2050    getInputSurfaceTest34(avConfig, avRecorder, recorderTime, done)
2051    await preparePromise(avRecorder, avConfig)
2052}
2053
2054export async function getInputSurfaceTest35(avConfig, avRecorder, recorderTime, done) {
2055    console.info(`case getInputSurfaceTest35 in`);
2056    avRecorder.on('stateChange', async (state, reason) => {
2057        console.info('case state has changed, new state is :' + state);
2058        switch (state) {
2059            case AV_RECORDER_STATE.PREPARED:
2060                console.info(`case getInputSurfaceTest35 state is PREPARED`);
2061                expect(avRecorder.state).assertEqual('prepared');
2062                getInputSurfacePromise(avRecorder)
2063                startPromise(avRecorder)
2064                break;
2065            case AV_RECORDER_STATE.STARTED:
2066                console.info(`case getInputSurfaceTest35 state is started`)
2067                expect(avRecorder.state).assertEqual('started');
2068                await sleep(recorderTime);
2069                pausePromise(avRecorder)
2070                break;
2071            case AV_RECORDER_STATE.PAUSED:
2072                console.info(`case getInputSurfaceTest35 state is paused`)
2073                expect(avRecorder.state).assertEqual('paused');
2074                resumePromise(avRecorder)
2075                getInputSurfacePromise(avRecorder)
2076                releasePromise(avRecorder)
2077                break;
2078            case AV_RECORDER_STATE.RELEASED:
2079                console.info(`case getInputSurfaceTest35 state is released`);
2080                expect(avRecorder.state).assertEqual('released');
2081                done();
2082                break;
2083            case AV_RECORDER_STATE.ERROR:
2084                console.info(`case getInputSurfaceTest35 state is ERROR`)
2085                expect(avRecorder.state).assertEqual('error');
2086                break;
2087            default:
2088                console.info('case state is unknown');
2089        }
2090    });
2091    avRecorder.on('error', (err) => {
2092        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2093        done();
2094    });
2095}
2096
2097export async function avRecorderReliabilitTest35(avConfig, avRecorder, recorderTime, done) {
2098    avRecorder = await idle(avRecorder);
2099    getInputSurfaceTest35(avConfig, avRecorder, recorderTime, done)
2100    await preparePromise(avRecorder, avConfig)
2101}
2102
2103export async function getInputSurfaceTest36(avConfig, avRecorder, recorderTime, done) {
2104    console.info(`case getInputSurfaceTest36 in`);
2105    avRecorder.on('stateChange', async (state, reason) => {
2106        console.info('case state has changed, new state is :' + state);
2107        switch (state) {
2108            case AV_RECORDER_STATE.PREPARED:
2109                console.info(`case getInputSurfaceTest36 state is PREPARED`);
2110                expect(avRecorder.state).assertEqual('prepared');
2111                getInputSurfacePromise(avRecorder)
2112                startPromise(avRecorder)
2113                break;
2114            case AV_RECORDER_STATE.STARTED:
2115                console.info(`case getInputSurfaceTest36 state is started`)
2116                expect(avRecorder.state).assertEqual('started');
2117                await sleep(recorderTime);
2118                stopPromise(avRecorder)
2119                break;
2120            case AV_RECORDER_STATE.STOPPED:
2121                console.info(`case getInputSurfaceTest36 state is stopped`)
2122                expect(avRecorder.state).assertEqual('stopped');
2123                getInputSurfacePromise(avRecorder)
2124                releasePromise(avRecorder)
2125                break;
2126            case AV_RECORDER_STATE.RELEASED:
2127                console.info(`case getInputSurfaceTest36 state is released`);
2128                expect(avRecorder.state).assertEqual('released');
2129                done();
2130                break;
2131            case AV_RECORDER_STATE.ERROR:
2132                console.info(`case getInputSurfaceTest36 state is ERROR`)
2133                expect(avRecorder.state).assertEqual('error');
2134                break;
2135            default:
2136                console.info('case state is unknown');
2137        }
2138    });
2139    avRecorder.on('error', (err) => {
2140        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2141        done();
2142    });
2143}
2144
2145export async function avRecorderReliabilitTest36(avConfig, avRecorder, recorderTime, done) {
2146    avRecorder = await idle(avRecorder);
2147    getInputSurfaceTest36(avConfig, avRecorder, recorderTime, done)
2148    await preparePromise(avRecorder, avConfig)
2149}
2150
2151export async function getInputSurfaceTest37(avConfig, avRecorder, recorderTime, done) {
2152    console.info(`case getInputSurfaceTest37 in`);
2153    avRecorder.on('stateChange', async (state, reason) => {
2154        console.info('case state has changed, new state is :' + state);
2155        switch (state) {
2156            case AV_RECORDER_STATE.IDLE:
2157                console.info(`case getInputSurfaceTest37 state is idle`);
2158                expect(avRecorder.state).assertEqual("idle");
2159                getInputSurfacePromise(avRecorder)
2160                releasePromise(avRecorder)
2161                break;
2162            case AV_RECORDER_STATE.PREPARED:
2163                console.info(`case getInputSurfaceTest37 state isPREPARED`);
2164                expect(avRecorder.state).assertEqual('prepared');
2165                getInputSurfacePromise(avRecorder)
2166                startPromise(avRecorder)
2167                break;
2168            case AV_RECORDER_STATE.STARTED:
2169                console.info(`case getInputSurfaceTest37 state isstarted`)
2170                expect(avRecorder.state).assertEqual('started');
2171                await sleep(recorderTime);
2172                resetPromise(avRecorder)
2173                break;
2174            case AV_RECORDER_STATE.RELEASED:
2175                console.info(`case getInputSurfaceTest37 state is released`);
2176                expect(avRecorder.state).assertEqual('released');
2177                done();
2178                break;
2179            case AV_RECORDER_STATE.ERROR:
2180                console.info(`case getInputSurfaceTest37 state is ERROR`)
2181                expect(avRecorder.state).assertEqual('error');
2182                break;
2183            default:
2184                console.info('case state is unknown');
2185        }
2186    });
2187    avRecorder.on('error', (err) => {
2188        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2189        done();
2190    });
2191}
2192
2193export async function avRecorderReliabilitTest37(avConfig, avRecorder, recorderTime, done) {
2194    avRecorder = await idle(avRecorder);
2195    getInputSurfaceTest37(avConfig, avRecorder, recorderTime, done)
2196    await preparePromise(avRecorder, avConfig)
2197}
2198
2199async function  getInputSurfaceCatachError(avRecorder, result, surfaceID){
2200    await avRecorder.getInputSurface().then((surfaceId) => {
2201        console.info('getInputSurfaceTest38 getInputSurface success');
2202        surfaceID = surfaceId;
2203    }).catch((err) => {
2204        console.info('getInputSurfaceTest38 getInputSurface failed and catch error is ' + err.message);
2205        result = false
2206        console.info('getInputSurfaceTest38 getInputSurface result is ' + result);
2207        expect(result).assertEqual(false);
2208    });
2209}
2210
2211export async function getInputSurfaceTest38(avConfig, avRecorder, recorderTime, done) {
2212    let result1 = true;
2213    let result2 = true;
2214    let result3 = true;
2215    let surfaceID = null;
2216    console.info(`case getInputSurfaceTest38 in`);
2217    avRecorder.on('stateChange', async (state, reason) => {
2218        console.info('case state has changed, new state is :' + state);
2219        switch (state) {
2220            case AV_RECORDER_STATE.PREPARED:
2221                console.info(`case getInputSurfaceTest38 state is PREPARED`);
2222                expect(avRecorder.state).assertEqual('prepared');
2223                getInputSurfaceCatachError(avRecorder, result1, surfaceID)
2224                getInputSurfaceCatachError(avRecorder, result2, surfaceID)
2225                getInputSurfaceCatachError(avRecorder, result3, surfaceID)
2226                releasePromise(avRecorder)
2227                break;
2228            case AV_RECORDER_STATE.RELEASED:
2229                console.info(`case getInputSurfaceTest38 state is released`);
2230                expect(avRecorder.state).assertEqual('released');
2231                done();
2232                break;
2233            case AV_RECORDER_STATE.ERROR:
2234                console.info(`case getInputSurfaceTest38 state is ERROR`)
2235                expect(avRecorder.state).assertEqual('error');
2236                break;
2237            default:
2238                console.info('case state is unknown');
2239        }
2240    });
2241    avRecorder.on('error', (err) => {
2242        console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
2243        done();
2244    });
2245}
2246
2247
2248export async function avRecorderReliabilitTest38(avConfig, avRecorder, recorderTime, done) {
2249    avRecorder = await idle(avRecorder);
2250    getInputSurfaceTest38(avConfig, avRecorder, recorderTime, done)
2251    await preparePromise(avRecorder, avConfig)
2252}
2253
2254export async function createTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2255    let totalTime = 0;
2256    for(var i = 0;i < 10;i++){
2257        let start = Date.now();
2258        console.info(`createTimeTestCallback start time is : ${start}`)
2259        avRecorder = await idle(avRecorder);
2260        let end = Date.now()
2261        let execution = parseInt(end - start)
2262        console.info("createTimeTestCallback execution time  is :" + execution)
2263        totalTime = totalTime + execution;
2264        await avRecorder.release().then(() => {
2265            console.info('createTimeTestCallback avPlayer is release')
2266            console.info(`createTimeTestCallback avRecorder.state is : ${avRecorder.state}`)
2267            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2268            if(i == 9){
2269                let avg = totalTime/10;
2270                console.info("createTimeTest avg time  is :" + avg)
2271                done();
2272            }
2273        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2274    }
2275}
2276
2277export async function prepareTimeCallback(avConfig, avRecorder, recorderTime, done) {
2278    let totalTime = 0;
2279    for(var i = 0;i < 10;i++){
2280        avRecorder = await idle(avRecorder);
2281        await sleep(20)
2282        let start = Date.now();
2283        console.info(`prepareTimeWithoutCallback start time is : ${start}`)
2284        let end;
2285        await avRecorder.prepare(avConfig, (err) => {
2286            if (err == null) {
2287                expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2288                console.info('prepareTimeWithoutCallback avPlayer state is prepared')
2289                end = Date.now()
2290                console.info(`prepareTimeWithoutCallback end time is : ${end}`)
2291            } else {
2292                console.info('prepare failed and error is ' + err.message);
2293            }
2294        })
2295        let execution = parseInt(end - start)
2296        console.info("prepareTimeWithoutCallback execution time  is :" + execution)
2297        totalTime = totalTime + execution;
2298        await avRecorder.release().then(() => {
2299            console.info('prepareTimeWithoutCallback avPlayer is release')
2300            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2301        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2302    }
2303    let avg = totalTime/10;
2304    console.info("prepareTimeWithoutCallback avg time  is :" + avg)
2305    done();
2306}
2307
2308export async function getInputSurfaceTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2309    let totalTime = 0;
2310    let surfaceID = null;
2311    for(var i = 0;i < 10;i++){
2312        avRecorder = await idle(avRecorder);
2313        await sleep(20)
2314        let end;
2315        await avRecorder.prepare(avConfig).then(() => {
2316            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2317            console.info('getInputSurfaceTimeTestCallback avPlayer state is prepared')
2318        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2319
2320        let start = Date.now();
2321        console.info(`getInputSurfaceTimeTestCallback start time is : ${start}`)
2322        await avRecorder.getInputSurface((err, surfaceId) => {
2323            if (err == null) {
2324                console.info('getInputSurfaceTimeTestCallback success');
2325                surfaceID = surfaceId;
2326                end = Date.now()
2327                console.info(`getInputSurfaceTimeTestCallback end time is : ${end}`)
2328                let execution = parseInt(end - start)
2329                console.info("getInputSurfaceTimeTestCallback execution time  is :" + execution)
2330                totalTime = totalTime + execution;
2331            } else {
2332                console.info('getInputSurfaceTimeTestCallback failed and error is ' + err.message);
2333            }
2334        });
2335        await avRecorder.release().then(() => {
2336            console.info('getInputSurfaceTimeTestCallback avPlayer is release')
2337            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2338        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2339    }
2340    let avg = totalTime/10;
2341    console.info("getInputSurfaceTimeTestCallback avg time  is :" + avg)
2342    done();
2343}
2344
2345export async function startTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2346    let totalTime = 0;
2347    for(var i = 0;i < 10;i++){
2348        avRecorder = await idle(avRecorder);
2349        await sleep(20)
2350        let end;
2351        await avRecorder.prepare(avConfig).then(() => {
2352            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2353            console.info('startTimeTestCallback avPlayer state is prepared')
2354        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2355        let start = Date.now();
2356        console.info(`startTimeTestCallback start time is : ${start}`)
2357        await avRecorder.start((err) => {
2358            if (err == null) {
2359                end = Date.now()
2360                console.info(`startTimeTestCallback end time is : ${end}`)
2361                console.info('startTimeTestCallback avRecorder success');
2362                let execution = parseInt(end - start)
2363                console.info("startTimeTestCallback execution time  is :" + execution)
2364                totalTime = totalTime + execution;
2365            } else {
2366                console.info('startTimeTestCallback failed and error is ' + err.message);
2367            }
2368        });
2369        await avRecorder.release().then(() => {
2370            console.info('startTimeTestCallback avPlayer is release')
2371            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2372        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2373    }
2374    let avg = totalTime/10;
2375    console.info("startTimeTestCallback avg time  is :" + avg)
2376    done();
2377}
2378
2379export async function pauseTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2380    let totalTime = 0;
2381    for(var i = 0;i < 10;i++){
2382        avRecorder = await idle(avRecorder);
2383        await sleep(20)
2384        await avRecorder.prepare(avConfig).then(() => {
2385            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2386            console.info('pauseTimeTestCallback avPlayer state is prepared')
2387        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2388
2389        await avRecorder.start().then(() => {
2390            console.info('start avRecorder success');
2391        }).catch((err) => {
2392            console.info('pauseTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2393        });
2394        let start = Date.now();
2395        console.info(`pauseTimeTestCallback start time is : ${start}`)
2396        let end;
2397        await avRecorder.pause((err) => {
2398            if (err == null) {
2399                end = Date.now()
2400                console.info(`pauseTimeTestCallback end time is : ${end}`)
2401                console.info('pause pauseTimeTestCallback success');
2402                let execution = parseInt(end - start)
2403                console.info("pauseTimeTestCallback execution time  is :" + execution)
2404                totalTime = totalTime + execution;
2405            } else {
2406                console.info('pause pauseTimeTestCallback failed and error is ' + err.message);
2407            }
2408        });
2409        await avRecorder.release().then(() => {
2410            console.info('pauseTimeTestCallback avPlayer is release')
2411            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2412        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2413    }
2414    let avg = totalTime/10;
2415    console.info("pauseTimeTestCallback avg time  is :" + avg)
2416    done();
2417}
2418
2419export async function resumeTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2420    let totalTime = 0;
2421    for(var i = 0;i < 10;i++){
2422        avRecorder = await idle(avRecorder);
2423        await sleep(20)
2424        await avRecorder.prepare(avConfig).then(() => {
2425            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2426            console.info('resumeTimeTestCallback avPlayer state is prepared')
2427        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2428
2429        await avRecorder.start().then(() => {
2430            console.info('start resumeTimeTestCallback success');
2431        }).catch((err) => {
2432            console.info('resumeTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2433        });
2434        let end;
2435        await avRecorder.pause((err) => {
2436            if (err == null) {
2437                console.info('pause resumeTimeTestCallback success');
2438            } else {
2439                console.info('pause resumeTimeTestCallback failed and error is ' + err.message);
2440            }
2441        });
2442        let start = Date.now();
2443        console.info(`resumeTimeTestCallback start time is : ${start}`)
2444        await avRecorder.resume((err) => {
2445            if (err == null) {
2446                console.info('resume resumeTimeTestCallback success');
2447                end = Date.now()
2448                console.info(`resumeTimeTestCallback end time is : ${end}`)
2449                let execution = parseInt(end - start)
2450                console.info("resumeTimeTestCallback execution time  is :" + execution)
2451                totalTime = totalTime + execution;
2452            } else {
2453                console.info('resume resumeTimeTestCallback failed and error is ' + err.message);
2454            }
2455        });
2456        await avRecorder.release().then(() => {
2457            console.info('resumeTimeTestCallback avPlayer is release')
2458            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2459        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2460    }
2461    let avg = totalTime/10;
2462    console.info("resumeTimeTestCallback avg time  is :" + avg)
2463    done();
2464}
2465
2466export async function stopTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2467    let totalTime = 0;
2468    for(var i = 0;i < 10;i++){
2469        avRecorder = await idle(avRecorder);
2470        await sleep(20)
2471        await avRecorder.prepare(avConfig).then(() => {
2472            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2473            console.info('stopTimeTestCallback avPlayer state is prepared')
2474        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2475
2476        await avRecorder.start().then(() => {
2477            console.info('start stopTimeTestCallback success');
2478        }).catch((err) => {
2479            console.info('stopTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2480        });
2481        let end;
2482        let start = Date.now();
2483        console.info(`stopTimeTestCallback start time is : ${start}`)
2484        await avRecorder.stop((err) => {
2485            if (err == null) {
2486                console.info('resume stopTimeTestCallback success');
2487                end = Date.now()
2488                console.info(`stopTimeTestCallback end time is : ${end}`)
2489                let execution = parseInt(end - start)
2490                console.info("stopTimeTestCallback execution time  is :" + execution)
2491                totalTime = totalTime + execution;
2492            } else {
2493                console.info('resume stopTimeTestCallback failed and error is ' + err.message);
2494            }
2495        });
2496        await avRecorder.release().then(() => {
2497            console.info('stopTimeTestCallback avPlayer is release')
2498            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2499        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2500    }
2501    let avg = totalTime/10;
2502    console.info("stopTimeTestCallback avg time  is :" + avg)
2503    done();
2504}
2505
2506export async function resetTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2507    let totalTime = 0;
2508    for(var i = 0;i < 10;i++){
2509        avRecorder = await idle(avRecorder);
2510        await sleep(20)
2511        await avRecorder.prepare(avConfig).then(() => {
2512            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2513            console.info('resetTimeTestCallback avPlayer state is prepared')
2514        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2515
2516        await avRecorder.start().then(() => {
2517            console.info('start resetTimeTestCallback success');
2518        }).catch((err) => {
2519            console.info('resetTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2520        });
2521        let end;
2522        let start = Date.now();
2523        console.info(`resetTimeTestCallback start time is : ${start}`)
2524        await avRecorder.reset((err) => {
2525            if (err == null) {
2526                console.info('resume resetTimeTestCallback success');
2527                end = Date.now()
2528                console.info(`resetTimeTestCallback end time is : ${end}`)
2529                let execution = parseInt(end - start)
2530                console.info("resetTimeTestCallback execution time  is :" + execution)
2531                totalTime = totalTime + execution;
2532            } else {
2533                console.info('resume resetTimeTestCallback failed and error is ' + err.message);
2534            }
2535        });
2536        await avRecorder.release().then(() => {
2537            console.info('resetTimeTestCallback avPlayer is release')
2538            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2539        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2540    }
2541    let avg = totalTime/10;
2542    console.info("resetTimeTestCallback avg time  is :" + avg)
2543    done();
2544}
2545
2546export async function releaseTimeTestCallback(avConfig, avRecorder, recorderTime, done) {
2547    let totalTime = 0;
2548    for(var i = 0;i < 10;i++){
2549        avRecorder = await idle(avRecorder);
2550        await sleep(20)
2551        await avRecorder.prepare(avConfig).then(() => {
2552            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2553            console.info('releaseTimeTestCallback avPlayer state is prepared')
2554        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2555
2556        await avRecorder.start().then(() => {
2557            console.info('start releaseTimeTestCallback success');
2558        }).catch((err) => {
2559            console.info('releaseTimeTestCallback start avRecorder failed and catch error is ' + err.message);
2560        });
2561        let end;
2562        let start = Date.now();
2563        console.info(`releaseTimeTestCallback start time is : ${start}`)
2564        await avRecorder.release((err) => {
2565            if (err == null) {
2566                console.info(`releaseTimeTestCallback current state is : ${avRecorder.state}`)
2567                console.info('release releaseTimeTestCallback success');
2568                end = Date.now()
2569                console.info(`releaseTimeTestCallback end time is : ${end}`)
2570                let execution = parseInt(end - start)
2571                console.info("releaseTimeTestCallback execution time  is :" + execution)
2572                totalTime = totalTime + execution;
2573            } else {
2574                console.info('resume releaseTimeTestCallback failed and error is ' + err.message);
2575            }
2576        });
2577        if(i == 9){
2578            let avg = totalTime/10;
2579            console.info("releaseTimeTestCallback avg time  is :" + avg)
2580            done();
2581        }
2582    }
2583}
2584
2585export async function createTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2586    let totalTime = 0;
2587    for(var i = 0;i < 10;i++){
2588        let start = Date.now();
2589        console.info(`createTimeTestPromise start time is : ${start}`)
2590        avRecorder = await idle(avRecorder);
2591        let end = Date.now()
2592        let execution = parseInt(end - start)
2593        console.info("createTimeTestPromise execution time  is :" + execution)
2594        totalTime = totalTime + execution;
2595        await avRecorder.release().then(() => {
2596            console.info('createTimeTestPromise avPlayer is release')
2597            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2598        }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback);
2599    }
2600    let avg = totalTime/10;
2601    console.info("createTimeTestPromise avg time  is :" + avg)
2602    done();
2603}
2604
2605export async function prepareTimePromise(avConfig, avRecorder, recorderTime, done) {
2606    let totalTime = 0;
2607    for(var i = 0;i < 10;i++){
2608        avRecorder = await idle(avRecorder);
2609        await sleep(20)
2610        let start = Date.now();
2611        console.info(`prepareTimeWithoutPromise start time is : ${start}`)
2612        let end;
2613        await avRecorder.prepare(avConfig).then(() => {
2614            console.info('prepare success');
2615            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2616            console.info('prepareTimeWithoutPromise avPlayer state is prepared')
2617            end = Date.now()
2618            console.info(`prepareTimeWithoutPromise end time is : ${end}`)
2619        }).catch((err) => {
2620            console.info('prepare failed and catch error is ' + err.message);
2621        });
2622        let execution = parseInt(end - start)
2623        console.info("prepareTimeWithoutPromise execution time  is :" + execution)
2624        totalTime = totalTime + execution;
2625        await avRecorder.release().then(() => {
2626            console.info('prepareTimeWithoutPromise avPlayer is release')
2627            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2628        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2629    }
2630    let avg = totalTime/10;
2631    console.info("prepareTimeWithoutPromise avg time  is :" + avg)
2632    done();
2633}
2634
2635export async function getInputSurfaceTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2636    let totalTime = 0;
2637    let surfaceID = null;
2638    for(var i = 0;i < 10;i++){
2639        avRecorder = await idle(avRecorder);
2640        await sleep(20)
2641        let end;
2642        await avRecorder.prepare(avConfig).then(() => {
2643            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2644            console.info('getInputSurfaceTimeTestPromise avPlayer state is prepared')
2645        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2646        let start = Date.now();
2647        console.info(`getInputSurfaceTimeTestPromise start time is : ${start}`)
2648        await avRecorder.getInputSurface().then((surfaceId) => {
2649            console.info('getInputSurfaceTimeTestPromise success');
2650            surfaceID = surfaceId;
2651            end = Date.now()
2652            console.info(`getInputSurfaceTimeTestPromise end time is : ${end}`)
2653            let execution = parseInt(end - start)
2654            console.info("getInputSurfaceTimeTestPromise execution time  is :" + execution)
2655            totalTime = totalTime + execution;
2656        }).catch((err) => {
2657            console.info('getInputSurface failed and catch error is ' + err.message);
2658        });
2659        await avRecorder.release().then(() => {
2660            console.info('getInputSurfaceTimeTestPromise avPlayer is release')
2661            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2662        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2663    }
2664    let avg = totalTime/10;
2665    console.info("getInputSurfaceTimeTestPromise avg time  is :" + avg)
2666    done();
2667}
2668
2669export async function startTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2670    let totalTime = 0;
2671    for(var i = 0;i < 10;i++){
2672        avRecorder = await idle(avRecorder);
2673        await sleep(20)
2674        let end;
2675        await avRecorder.prepare(avConfig).then(() => {
2676            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2677            console.info('startTimeTestPromise avPlayer state is prepared')
2678        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2679        let start = Date.now();
2680        console.info(`startTimeTestPromise start time is : ${start}`)
2681        await avRecorder.start().then(() => {
2682            console.info('start AVRecorder success');
2683            end = Date.now()
2684            console.info(`startTimeTestPromise end time is : ${end}`)
2685            let execution = parseInt(end - start)
2686            console.info("startTimeTestPromise execution time  is :" + execution)
2687            totalTime = totalTime + execution;
2688            console.info('startTimeTestPromise avRecorder success');
2689        }).catch((err) => {
2690            console.info('start AVRecorder failed and catch error is ' + err.message);
2691        });
2692        await avRecorder.release().then(() => {
2693            console.info('startTimeTestPromise avPlayer is release')
2694            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2695        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2696    }
2697    let avg = totalTime/10;
2698    console.info("startTimeTestPromise avg time  is :" + avg)
2699    done();
2700}
2701
2702export async function pauseTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2703    let totalTime = 0;
2704    for(var i = 0;i < 10;i++){
2705        avRecorder = await idle(avRecorder);
2706        await sleep(20)
2707        await avRecorder.prepare(avConfig).then(() => {
2708            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2709            console.info('pauseTimeTestPromise avPlayer state is prepared')
2710        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2711        await avRecorder.start().then(() => {
2712            console.info('start avRecorder success');
2713        }).catch((err) => {
2714            console.info('pauseTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2715        });
2716        let start = Date.now();
2717        console.info(`pauseTimeTestPromise start time is : ${start}`)
2718        let end;
2719        await avRecorder.pause().then(() => {
2720            console.info('pause AVRecorder success');
2721            end = Date.now()
2722            console.info(`pauseTimeTestPromise end time is : ${end}`)
2723            let execution = parseInt(end - start)
2724            console.info("pauseTimeTestPromise execution time  is :" + execution)
2725            totalTime = totalTime + execution;
2726            console.info('pause pauseTimeTestPromise success');
2727        }).catch((err) => {
2728            console.info('pause AVRecorder failed and catch error is ' + err.message);
2729        });
2730        await avRecorder.release().then(() => {
2731            console.info('pauseTimeTestPromise avPlayer is release')
2732            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2733        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2734    }
2735    let avg = totalTime/10;
2736    console.info("pauseTimeTestPromise avg time  is :" + avg)
2737    done();
2738}
2739
2740export async function resumeTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2741    let totalTime = 0;
2742    for(var i = 0;i < 10;i++){
2743        avRecorder = await idle(avRecorder);
2744        await sleep(20)
2745        await avRecorder.prepare(avConfig).then(() => {
2746            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2747            console.info('resumeTimeTestPromise avPlayer state is prepared')
2748        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2749
2750        await avRecorder.start().then(() => {
2751            console.info('start resumeTimeTestPromise success');
2752        }).catch((err) => {
2753            console.info('resumeTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2754        });
2755        let end;
2756        await avRecorder.pause((err) => {
2757            if (err == null) {
2758                console.info('pause resumeTimeTestPromise success');
2759            } else {
2760                console.info('pause resumeTimeTestPromise failed and error is ' + err.message);
2761            }
2762        });
2763        let start = Date.now();
2764        console.info(`resumeTimeTestPromise start time is : ${start}`)
2765        await avRecorder.resume().then(() => {
2766            console.info('resume AVRecorder success');
2767            console.info('resume resumeTimeTestPromise success');
2768            end = Date.now()
2769            console.info(`resumeTimeTestPromise end time is : ${end}`)
2770            let execution = parseInt(end - start)
2771            console.info("resumeTimeTestPromise execution time  is :" + execution)
2772            totalTime = totalTime + execution;
2773        }).catch((err) => {
2774            console.info('resume AVRecorder failed and catch error is ' + err.message);
2775        });
2776        await avRecorder.release().then(() => {
2777            console.info('resumeTimeTestPromise avPlayer is release')
2778            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2779        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2780    }
2781    let avg = totalTime/10;
2782    console.info("resumeTimeTestPromise avg time  is :" + avg)
2783    done();
2784}
2785
2786export async function stopTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2787    let totalTime = 0;
2788    for(var i = 0;i < 10;i++){
2789        avRecorder = await idle(avRecorder);
2790        await sleep(20)
2791        await avRecorder.prepare(avConfig).then(() => {
2792            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2793            console.info('stopTimeTestPromise avPlayer state is prepared')
2794        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2795
2796        await avRecorder.start().then(() => {
2797            console.info('start stopTimeTestPromise success');
2798        }).catch((err) => {
2799            console.info('stopTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2800        });
2801        let end;
2802        let start = Date.now();
2803        console.info(`stopTimeTestPromise start time is : ${start}`)
2804        await avRecorder.stop().then(() => {
2805            console.info('stop AVRecorder success');
2806            console.info('resume stopTimeTestPromise success');
2807            end = Date.now()
2808            console.info(`stopTimeTestPromise end time is : ${end}`)
2809            let execution = parseInt(end - start)
2810            console.info("stopTimeTestPromise execution time  is :" + execution)
2811            totalTime = totalTime + execution;
2812        }).catch((err) => {
2813            console.info('stop AVRecorder failed and catch error is ' + err.message);
2814        });
2815        await avRecorder.release().then(() => {
2816            console.info('stopTimeTestPromise avPlayer is release')
2817            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2818        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2819    }
2820    let avg = totalTime/10;
2821    console.info("stopTimeTestPromise avg time  is :" + avg)
2822    done();
2823}
2824
2825export async function resetTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2826    let totalTime = 0;
2827    for(var i = 0;i < 10;i++){
2828        avRecorder = await idle(avRecorder);
2829        await sleep(20)
2830        await avRecorder.prepare(avConfig).then(() => {
2831            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2832            console.info('resetTimeTestPromise avPlayer state is prepared')
2833        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2834
2835        await avRecorder.start().then(() => {
2836            console.info('start resetTimeTestPromise success');
2837        }).catch((err) => {
2838            console.info('resetTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2839        });
2840        let end;
2841        let start = Date.now();
2842        console.info(`resetTimeTestPromise start time is : ${start}`)
2843        await avRecorder.reset().then(() => {
2844            console.info('reset AVRecorder success');
2845            console.info('resume resetTimeTestPromise success');
2846            end = Date.now()
2847            console.info(`resetTimeTestPromise end time is : ${end}`)
2848            let execution = parseInt(end - start)
2849            console.info("resetTimeTestPromise execution time  is :" + execution)
2850            totalTime = totalTime + execution;
2851        }).catch((err) => {
2852            console.info('resume resetTimeTestPromise failed and error is ' + err.message);
2853        });
2854        await avRecorder.release().then(() => {
2855            console.info('resetTimeTestPromise avPlayer is release')
2856            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2857        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2858    }
2859    let avg = totalTime/10;
2860    console.info("resetTimeTestPromise avg time  is :" + avg)
2861    done();
2862}
2863
2864export async function releaseTimeTestPromise(avConfig, avRecorder, recorderTime, done) {
2865    let totalTime = 0;
2866    for(var i = 0;i < 10;i++){
2867        avRecorder = await idle(avRecorder);
2868        await sleep(20)
2869        await avRecorder.prepare(avConfig).then(() => {
2870            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.PREPARED);
2871            console.info('releaseTimeTestPromise avPlayer state is prepared')
2872        }, mediaTestBase.failurePromise).catch(mediaTestBase.catchPromise);
2873
2874        await avRecorder.start().then(() => {
2875            console.info('start releaseTimeTestPromise success');
2876        }).catch((err) => {
2877            console.info('releaseTimeTestPromise start avRecorder failed and catch error is ' + err.message);
2878        });
2879        let end;
2880        let start = Date.now();
2881        console.info(`releaseTimeTestPromise start time is : ${start}`)
2882        await avRecorder.release().then(() => {
2883            expect(avRecorder.state).assertEqual(AV_RECORDER_STATE.RELEASED);
2884            console.info('release AVRecorder success');
2885            console.info('resume releaseTimeTestPromise success');
2886            end = Date.now()
2887            let execution = parseInt(end - start)
2888            console.info("releaseTimeTestPromise execution time  is :" + execution)
2889            totalTime = totalTime + execution;
2890            console.info(`releaseTimeTestPromise end time is : ${end}`)
2891        }).catch((err) => {
2892            console.info('resume releaseTimeTestPromise failed and error is ' + err.message);
2893        });
2894    }
2895    let avg = totalTime/10;
2896    console.info("releaseTimeTestPromise avg time  is :" + avg)
2897    done();
2898}
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914