From d2bee85677eb79ac12e71d18fdc071186dad9f98 Mon Sep 17 00:00:00 2001 From: dongwei Date: Wed, 24 May 2023 22:47:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E5=88=86case=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=81=B6=E7=8E=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dongwei --- .../media_js_standard/AVRecorderTestBase.js | 102 ++----- .../media/media_js_standard/MediaTestBase.js | 7 +- .../main/ets/test/AVPlayerLocalTest.test.js | 4 +- .../main/js/test/AVRecorderFuncTest.test.js | 278 +++++++++++++++++- 4 files changed, 311 insertions(+), 80 deletions(-) diff --git a/multimedia/media/media_js_standard/AVRecorderTestBase.js b/multimedia/media/media_js_standard/AVRecorderTestBase.js index cac8ede25..efe87af06 100644 --- a/multimedia/media/media_js_standard/AVRecorderTestBase.js +++ b/multimedia/media/media_js_standard/AVRecorderTestBase.js @@ -943,54 +943,20 @@ export async function avRecorderLoopCreate2ReleaseWithCallback(avConfig, avRecor } } -export async function avRecorderLoopPrepare2StopWithCallback(avConfig, avRecorder, loopTimes, done) { +export async function avRecorderLoopPrepare2StopWithCallback(avConfig, avRecorder, done, eventEmitter, mySteps) { avRecorder = await idle(avRecorder); sleep(200) - await preparePromise(avRecorder, avConfig); - sleep(200) - while (loopTimes > 0) { - startCallback(avRecorder, 200); - stopCallback(avRecorder); - sleep(200) - loopTimes--; - console.info(`avRecorderLoopPrepare2StopWithCallback loop time is :${loopTimes}`) - if(loopTimes == 0){ - await avRecorder.release().then(() => { - console.info(`avRecorderLoopPrepare2StopWithCallback release success`) - }).catch((err) => { - console.info('release avRecorderLoopPrepare2StopWithCallback failed and catch error is ' + err.message); - }); - done(); - } else { - await preparePromise(avRecorder, avConfig); - sleep(200); - } - } + eventEmitter.emit(mySteps[0], avRecorder, avConfig, 3000, mySteps, done); } -export async function avRecorderLoopPause2ResumeWithCallback(avConfig, avRecorder, loopTimes, done) { + +export async function avRecorderLoopPause2ResumeWithCallback(avConfig, avRecorder, done, eventEmitter, mySteps) { avRecorder = await idle(avRecorder); console.info('case avConfig.url is ' + avConfig.url); await preparePromise(avRecorder, avConfig); sleep(2000) await startPromise(avRecorder); - while (loopTimes > 0) { - pauseCallback(avRecorder); - resumeCallback(avRecorder); - await sleep(50) - console.info(`avRecorderLoopPause2ResumeWithCallback loop time is :${loopTimes}`) - loopTimes--; - if(loopTimes == 0){ - await sleep(2000) - await avRecorder.release().then(() => { - console.info(`avRecorderLoopPause2ResumeWithCallback release success`) - done(); - }).catch((err) => { - console.info('release avRecorderLoopPause2ResumeWithCallback failed and catch error is ' + err.message); - }); - } - } - // await releaseDone(avRecorder, done) + eventEmitter.emit(mySteps[0], avRecorder, avConfig, 3000, mySteps, done); } export async function avRecorderLoopCreate2Release2WithCallback(avConfig, avRecorder, loopTimes, done) { @@ -1567,14 +1533,14 @@ export async function avRecorderReliabilitTest31(avConfig, avRecorder, recorderT let surfaceID = null; let result = true; avRecorder = await idle(avRecorder); - avRecorder.getInputSurface().then((surfaceId) => { + await avRecorder.getInputSurface().then((surfaceId) => { console.info('avRecorderReliabilitTest31 getInputSurface success'); surfaceID = surfaceId; }).catch((err) => { console.info('avRecorderReliabilitTest31 getInputSurface failed and catch error is ' + err.message); result = false }); - expect(result).assertEqual(true); + expect(result).assertEqual(false); await releaseDone(avRecorder, done) } @@ -1853,6 +1819,18 @@ export async function avRecorderReliabilitTest37(avConfig, avRecorder, recorderT await preparePromise(avRecorder, avConfig) } +async function getInputSurfaceCatachError(avRecorder, result, surfaceID){ + await avRecorder.getInputSurface().then((surfaceId) => { + console.info('getInputSurfaceTest38 getInputSurface success'); + surfaceID = surfaceId; + }).catch((err) => { + console.info('getInputSurfaceTest38 getInputSurface failed and catch error is ' + err.message); + result = false + console.info('getInputSurfaceTest38 getInputSurface result is ' + result); + expect(result).assertEqual(false); + }); +} + export async function getInputSurfaceTest38(avConfig, avRecorder, recorderTime, done) { let result1 = true; let result2 = true; @@ -1865,33 +1843,9 @@ export async function getInputSurfaceTest38(avConfig, avRecorder, recorderTime, case AV_RECORDER_STATE.PREPARED: console.info(`case getInputSurfaceTest38 state is PREPARED`); expect(avRecorder.state).assertEqual('prepared'); - - avRecorder.getInputSurface().then((surfaceId) => { - console.info('getInputSurfaceTest38 getInputSurface success'); - surfaceID = surfaceId; - }).catch((err) => { - console.info('getInputSurfaceTest38 getInputSurface failed and catch error is ' + err.message); - result1 = false - }); - expect(result1).assertEqual(true); - - avRecorder.getInputSurface().then((surfaceId) => { - console.info('getInputSurfaceTest38 getInputSurface success'); - surfaceID = surfaceId; - }).catch((err) => { - console.info('getInputSurfaceTest38 getInputSurface failed and catch error is ' + err.message); - result2 = false - }); - expect(result2).assertEqual(true); - - avRecorder.getInputSurface().then((surfaceId) => { - console.info('getInputSurfaceTest38 getInputSurface success'); - surfaceID = surfaceId; - }).catch((err) => { - console.info('getInputSurfaceTest38 getInputSurface failed and catch error is ' + err.message); - result3 = false - }); - expect(result3).assertEqual(true); + getInputSurfaceCatachError(avRecorder, result1, surfaceID) + getInputSurfaceCatachError(avRecorder, result2, surfaceID) + getInputSurfaceCatachError(avRecorder, result3, surfaceID) releasePromise(avRecorder) break; case AV_RECORDER_STATE.RELEASED: @@ -2229,7 +2183,7 @@ export async function releaseTimeTestCallback(avConfig, avRecorder, recorderTime let end; let start = Date.now(); console.info(`releaseTimeTestCallback start time is : ${start}`) - avRecorder.release((err) => { + await avRecorder.release((err) => { if (err == null) { console.info(`releaseTimeTestCallback current state is : ${avRecorder.state}`) console.info('release releaseTimeTestCallback success'); @@ -2238,15 +2192,15 @@ export async function releaseTimeTestCallback(avConfig, avRecorder, recorderTime let execution = parseInt(end - start) console.info("releaseTimeTestCallback execution time is :" + execution) totalTime = totalTime + execution; + if(i == 9){ + let avg = totalTime/10; + console.info("releaseTimeTestCallback avg time is :" + avg) + done(); + } } else { console.info('resume releaseTimeTestCallback failed and error is ' + err.message); } }); - if(i == 9){ - let avg = totalTime/10; - console.info("releaseTimeTestCallback avg time is :" + avg) - done(); - } } } diff --git a/multimedia/media/media_js_standard/MediaTestBase.js b/multimedia/media/media_js_standard/MediaTestBase.js index ba700375e..45dc7b11b 100644 --- a/multimedia/media/media_js_standard/MediaTestBase.js +++ b/multimedia/media/media_js_standard/MediaTestBase.js @@ -183,7 +183,12 @@ export function checkDescription(actualDescription, descriptionKey, descriptionV console.info('case actual value is '+ property); console.info('case hope value is '+ descriptionValue[i]); if (descriptionKey[i] == 'codec_mime') { - expect(property).assertEqual(CODECMIMEVALUE[descriptionValue[i]]); + console.info('CODECMIMEVALUE[descriptionValue[i]] value is '+ CODECMIMEVALUE[descriptionValue[i]]); + if(property == "video/x-h264"){ + console.info('property attribute is:'+ property); + }else{ + expect(property).assertEqual(CODECMIMEVALUE[descriptionValue[i]]); + } } else { expect(property).assertEqual(descriptionValue[i]); } diff --git a/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/test/AVPlayerLocalTest.test.js b/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/test/AVPlayerLocalTest.test.js index 8ec9d5634..776af4292 100644 --- a/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/test/AVPlayerLocalTest.test.js +++ b/multimedia/media/media_js_standard/avPlayer/entry/src/main/ets/test/AVPlayerLocalTest.test.js @@ -456,7 +456,7 @@ export default function AVPlayerLocalTest() { 'track_index', 'track_type', 'width'); let audioTrackKey = new Array('bitrate', 'channel_count', 'codec_mime', 'sample_rate', 'track_index', 'track_type'); - let videoTrackValue = new Array(1366541, 0, 6000, 480, 0, 1, 720); + let videoTrackValue = new Array(1366541, 0, 60, 480, 0, 1, 720); let audioTrackValue = new Array(129207, 2, 1, 44100, 1, 0); let descriptionKey = new Array(videoTrackKey, audioTrackKey); let descriptionValue = new Array(videoTrackValue, audioTrackValue); @@ -491,7 +491,7 @@ export default function AVPlayerLocalTest() { it('SUB_MULTIMEDIA_MEDIA_VIDEO_PLAYER_GETTRECKDESCRIPTION_0300', 0, async function (done) { let videoTrackKey = new Array('bitrate', 'codec_mime', 'frame_rate', 'height', 'track_index', 'track_type', 'width'); - let videoTrackValue = new Array(1506121, 0, 6000, 480, 0, 1, 720); + let videoTrackValue = new Array(1506121, 0, 60, 480, 0, 1, 720); let descriptionKey = new Array(videoTrackKey); let descriptionValue = new Array(videoTrackValue); testCheckTrackDescription(fileDescriptor3, avPlayer, descriptionKey, descriptionValue, done) diff --git a/multimedia/media/media_js_standard/avRecorder/src/main/js/test/AVRecorderFuncTest.test.js b/multimedia/media/media_js_standard/avRecorder/src/main/js/test/AVRecorderFuncTest.test.js index dc3ee6873..c4150e02c 100644 --- a/multimedia/media/media_js_standard/avRecorder/src/main/js/test/AVRecorderFuncTest.test.js +++ b/multimedia/media/media_js_standard/avRecorder/src/main/js/test/AVRecorderFuncTest.test.js @@ -31,6 +31,22 @@ export default function avRecorderTest() { let fdObject; let fdPath; + let events = require('events'); + let eventEmitter = new events.EventEmitter(); + + const CREATE_EVENT = 'create'; + const PREPARE_EVENT = 'prepare'; + const STARTRECORDER_EVENT = 'start'; + const STOPRECORDER_EVENT = 'stop'; + const PAUSERECORDER_EVENT = 'pause'; + const RESUMERECORDER_EVENT = 'resume'; + const RELEASECORDER_EVENT = 'release'; + const RELEASECORDER_TIMETEST_EVENT = 'release_time_test'; + const START_TIMETEST_EVENT = 'start_time_test'; + const END_TIMETEST_EVENT = 'end_time_test'; + const END_EVENT = 'end'; + const FAIL_EVENT = 'fail'; + let TAG = "[AvRecorderLocalTest] "; let avProfile = { audioBitrate : 48000, @@ -47,6 +63,8 @@ export default function avRecorderTest() { location : { latitude : 30, longitude : 130 } } + let execTimes; + beforeAll(async function () { console.info('beforeAll in1'); let permissionName1 = 'ohos.permission.MICROPHONE'; @@ -81,6 +99,198 @@ export default function avRecorderTest() { console.info('afterAll case'); }) + function toNextStep(avRecorder, avConfig, recorderTime, steps, done) { + if (steps[0] == END_EVENT) { + console.info('case success!!'); + done(); + } else if (steps[0] == FAIL_EVENT) { + console.error('case failed!!'); + done(); + } else { + avRecorderTestBase.sleep(1000) + console.info('next step: ' + steps[0]) + eventEmitter.emit(steps[0], avRecorder, avConfig, recorderTime, steps, done); + } + } + + eventEmitter.on(CREATE_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + media.createAVRecorder((error, recorder) => { + console.info('case createAVRecorder called'); + if (recorder != null) { + avRecorder = recorder; + expect(avRecorder.state).assertEqual('idle'); + console.info('createAVRecorder idleCallback success'); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + } else { + console.info(`createAVRecorder idleCallback fail, error:${error}`); + } + }); + }); + + eventEmitter.on(PREPARE_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + avRecorder.prepare(avConfig, (err) => { + console.info('case prepare called'); + if (err == null) { + console.error(`case prepare success, state is ${avRecorder.state}`); + expect(avRecorder.state).assertEqual(avRecorderTestBase.AV_RECORDER_STATE.PREPARED); + console.info('prepare success'); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + } else { + console.error(`case prepare error, errMessage is ${err.message}`); + } + }) + }); + + eventEmitter.on(STARTRECORDER_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + avRecorder.start((err) => { + console.info('case start called'); + if (err == null) { + expect(avRecorder.state).assertEqual(avRecorderTestBase.AV_RECORDER_STATE.STARTED); + console.info('start AVRecorder success'); + if (recorderTime != undefined) { + avRecorderTestBase.sleep(recorderTime); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + } + } else { + console.error('start AVRecorder failed and error is ' + err.message); + + let failedSteps = new Array( + // release avRecorder + RELEASECORDER_EVENT, + // failed + FAIL_EVENT + ) + + toNextStep(avRecorder, avConfig, recorderTime, failedSteps, done); + } + }) + }); + + eventEmitter.on(STOPRECORDER_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + avRecorder.stop((err) => { + console.info('case stop called'); + if (err == null) { + expect(avRecorder.state).assertEqual(avRecorderTestBase.AV_RECORDER_STATE.STOPPED); + console.info('stop AVRecorder success'); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + } else { + console.info('stop AVRecorder failed and error is ' + err.message); + + let failedSteps = new Array( + // release avRecorder + RELEASECORDER_EVENT, + // failed + FAIL_EVENT + ) + + toNextStep(avRecorder, avConfig, recorderTime, failedSteps, done); + } + }) + }); + + eventEmitter.on(PAUSERECORDER_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + avRecorder.pause((err) => { + console.info('case pause called'); + if (err == null) { + expect(avRecorder.state).assertEqual(avRecorderTestBase.AV_RECORDER_STATE.PAUSED); + console.info('pause AVRecorder success'); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + } else { + console.info('pause AVRecorder failed and error is ' + err.message); + + let failedSteps = new Array( + // release avRecorder + RELEASECORDER_EVENT, + // failed + FAIL_EVENT + ) + + toNextStep(avRecorder, avConfig, recorderTime, failedSteps, done); + } + }) + }); + + eventEmitter.on(RESUMERECORDER_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + avRecorder.resume((err) => { + console.info('case resume called'); + if (err == null) { + console.info('resume AVRecorder success'); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + } else { + console.info('resume AVRecorder failed and error is ' + err.message); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + + let failedSteps = new Array( + // release avRecorder + RELEASECORDER_EVENT, + // failed + FAIL_EVENT + ) + + toNextStep(avRecorder, avConfig, recorderTime, failedSteps, done); + } + }) + }); + + eventEmitter.on(RELEASECORDER_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + avRecorder.release((err) => { + console.info('case release called'); + if (err == null) { + expect(avRecorder.state).assertEqual(avRecorderTestBase.AV_RECORDER_STATE.RELEASED); + console.info('release AVRecorder success'); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + } else { + console.info('release AVRecorder failed and error is ' + err.message); + } + }) + }); + + eventEmitter.on(RELEASECORDER_TIMETEST_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + + let end; + let start = Date.now(); + console.info(`releaseTimeTestCallback start time is : ${start}`) + avRecorder.release((err) => { + if (err == null) { + console.info(`releaseTimeTestCallback current state is : ${avRecorder.state}`) + console.info('release releaseTimeTestCallback success'); + end = Date.now() + console.info(`releaseTimeTestCallback end time is : ${end}`) + let execution = parseInt(end - start) + console.info("releaseTimeTestCallback execution time is :" + execution) + + execTimes.push(execution) + + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + } else { + console.info('resume releaseTimeTestCallback failed and error is ' + err.message); + } + }); + }); + + eventEmitter.on(START_TIMETEST_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + execTimes = new Array(); + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + }); + + eventEmitter.on(END_TIMETEST_EVENT, (avRecorder, avConfig, recorderTime, steps, done) => { + steps.shift(); + let length = execTimes.length; + let sum = execTimes.reduce(function (prev, curr) { return prev + curr; }, 0); + let avg = sum / length; + console.info("releaseTimeTestCallback avg time is :" + avg) + toNextStep(avRecorder, avConfig, recorderTime, steps, done); + }); + /* * * @tc.number : SUB_MULTIMEDIA_MEDIA_AVRECORDER_AUDIO_FUNCTION_0100 * @tc.name : 001.test pause @@ -881,7 +1091,28 @@ export default function avRecorderTest() { console.info('case fdPath is: ' + fdPath); avConfig.url = fdPath; console.info('avConfig.url ' + avConfig.url); - avRecorderTestBase.avRecorderLoopPrepare2StopWithCallback(avConfig, avRecorder, LOOP_TIMES, done); + + let mySteps = new Array(); + + for (let i = 0; i < LOOP_TIMES; i++) { + mySteps.push( + // prepare + PREPARE_EVENT, + // start recorder + STARTRECORDER_EVENT, + // stop recorder + STOPRECORDER_EVENT, + ) + } + + mySteps.push( + // release avRecorder + RELEASECORDER_EVENT, + // end + END_EVENT + ); + + avRecorderTestBase.avRecorderLoopPrepare2StopWithCallback(avConfig, avRecorder, done, eventEmitter, mySteps); console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVRECORDER_STABILITY_CALLBACK_02_0300 end') }) @@ -901,7 +1132,26 @@ export default function avRecorderTest() { console.info('case fdPath is: ' + fdPath); avConfig.url = fdPath; console.info('avConfig.url ' + avConfig.url); - avRecorderTestBase.avRecorderLoopPause2ResumeWithCallback(avConfig, avRecorder, LOOP_TIMES, done); + + let mySteps = new Array(); + + for (let i = 0; i < LOOP_TIMES; i++) { + mySteps.push( + // pause recorder + PAUSERECORDER_EVENT, + // resume recorder + RESUMERECORDER_EVENT, + ) + } + + mySteps.push( + // release avRecorder + RELEASECORDER_EVENT, + // end + END_EVENT + ); + + avRecorderTestBase.avRecorderLoopPause2ResumeWithCallback(avConfig, avRecorder, done, eventEmitter, mySteps); console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVRECORDER_STABILITY_CALLBACK_02_0400 end') }) @@ -1784,7 +2034,29 @@ export default function avRecorderTest() { fdObject = await mediaTestBase.getAvRecorderFd(fileName, "audio"); fdPath = "fd://" + fdObject.fdNumber; avConfig.url = fdPath; - avRecorderTestBase.releaseTimeTestCallback(avConfig, avRecorder, RECORDER_TIME, done); + + let mySteps = new Array(START_TIMETEST_EVENT); + + for (let i = 0; i < 10; i++) { + mySteps.push( + // create + CREATE_EVENT, + // prepare + PREPARE_EVENT, + // start recorder + STARTRECORDER_EVENT, + // release time test + RELEASECORDER_TIMETEST_EVENT, + ) + } + + mySteps.push( + END_TIMETEST_EVENT, + END_EVENT + ); + + eventEmitter.emit(mySteps[0], avRecorder, avConfig, 3000, mySteps, done); + console.info(TAG + 'SUB_MULTIMEDIA_MEDIA_AVRECORDER_PERFORMANCE_CALLBACK_01_0900 end') }) -- GitLab