diff --git a/multimedia/media/media_js_standard/AVPlayerTestBase.js b/multimedia/media/media_js_standard/AVPlayerTestBase.js index 0e37265b1ce3a844d75dd5345210dd529705e4ad..31aaeef74723f192b8de454a80c87e24339be57b 100644 --- a/multimedia/media/media_js_standard/AVPlayerTestBase.js +++ b/multimedia/media/media_js_standard/AVPlayerTestBase.js @@ -609,28 +609,30 @@ export async function seekLoop(src, avPlayer, done) { }, (err) => { console.error('seekLoop play filed,error message is :' + err.message) }) - if(avPlayer.state == AV_PLAYER_STATE.PLAYING){ - console.info('seekLoop avPlayer from play to seek') - // play seek loop 1000 times - for(var loopTime = 0;loopTime < 1000; loopTime++){ - avPlayer.seek(loopTime) - console.info(`case seekLoopWithCallback loopTime is ${loopTime}`); - } - } + await seekLoopWithCallback(avPlayer) + console.info('seekLoop avPlayer from play to seek') + // play seek loop 1000 times await avPlayer.stop().then(() => { console.info('seekLoopWithCallback avPlayer from play to stop') - avPlayer.release().then(() => { - console.info('seekLoopWithCallback avPlayer from stop to release') - expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); - done(); - }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); + await avPlayer.release().then(() => { + console.info('seekLoopWithCallback avPlayer from stop to release') + expect(avPlayer.state).assertEqual(AV_PLAYER_STATE.RELEASED); + done(); }, mediaTestBase.failureCallback).catch(mediaTestBase.catchCallback); } async function seekLoopWithCallback(avPlayer) { - avPlayer.on('seekDone', async (seekDoneTime) => { - console.info(`case seekDone called seekDoneTime is ${seekDoneTime}`); - }); + for (let loopTime = 0; loopTime < 5000; loopTime += 5) { + await new Promise(resolve => { + avPlayer.on('seekDone', seekDoneTime => { + console.info(`case seekDone called seekDoneTime is ${seekDoneTime}`); + resolve(); + }); + avPlayer.seek(loopTime); + console.info(`case seekLoopWithCallback loopTime is ${loopTime}`); + }); + } } export async function seekLoopWithoutCallback(src, avPlayer, done) { diff --git a/multimedia/media/media_js_standard/AVRecorderTestBase.js b/multimedia/media/media_js_standard/AVRecorderTestBase.js index cac8ede259fe23b261afb468a955762afb55927a..efe87af06b01d840ab7268361682c998cc036613 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 ba700375ea4b23a1561b5f0fc4f3492f6ae8256b..45dc7b11b3f1b53f6765a87bdd329f142f3782af 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 8ec9d5634e9a81d5665da1af4f833667c8a773cb..776af4292c5be48c4953d9c2f6d2f2c0a083042c 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 dc3ee6873e9c9b2a8858fb9d0e4b557bbcec477e..c4150e02c3ec5ff161fec90fd715b04edaef1ec2 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') })