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