Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abc244ef authored by Ram Mohan's avatar Ram Mohan Committed by Mikhail Naganov
Browse files

Update audiorecord tests

1. Test that are duplicate of AudioRecordTest are removed.
2. Incorrect validation of buffer overrun scenario removed
3. Added few more test parameters (input flag fast)

Bug: 215776959
Test: atest audiorecord_tests

Change-Id: I75a6ad497f56ab0a53e764cd4f2bab8fed399bc2
parent 4a2cc3e8
Loading
Loading
Loading
Loading
+17 −15
Original line number Diff line number Diff line
@@ -402,11 +402,8 @@ status_t AudioCapture::create() {
    }
    if (mFlags & AUDIO_INPUT_FLAG_FAST) {
        ALOGW("Overriding all previous computations");
        const uint32_t kMinNormalCaptureBufferSizeMs = 12;
        size_t maxFrameCount = kMinNormalCaptureBufferSizeMs * mSampleRate / 1000;
        mMaxBytesPerCallback = maxFrameCount * samplesPerFrame * bytesPerSample / 2;
        mNotificationFrames = maxFrameCount / 2;
        mFrameCount = 2 * mNotificationFrames;
        mFrameCount = 0;
        mNotificationFrames = 0;
    }
    mNumFramesToRecord = (mSampleRate * 0.25);  // record .25 sec
    std::string packageName{"AudioCapture"};
@@ -416,10 +413,16 @@ status_t AudioCapture::create() {
    attributionSource.pid = VALUE_OR_FATAL(legacy2aidl_pid_t_int32_t(getpid()));
    attributionSource.token = sp<BBinder>::make();
    if (mTransferType == AudioRecord::TRANSFER_OBTAIN) {
        if (mSampleRate == 48000) {  // test all available constructors
            mRecord = new AudioRecord(mInputSource, mSampleRate, mFormat, mChannelMask,
                                      attributionSource, mFrameCount, nullptr, nullptr,
                                      mNotificationFrames, mSessionId, mTransferType, mFlags);
        } else {
            mRecord = new AudioRecord(attributionSource);
            status = mRecord->set(mInputSource, mSampleRate, mFormat, mChannelMask, mFrameCount,
                                  nullptr, nullptr, 0, false, mSessionId, mTransferType, mFlags,
                                  attributionSource.uid, attributionSource.pid);
        }
        if (NO_ERROR != status) return status;
    } else if (mTransferType == AudioRecord::TRANSFER_CALLBACK) {
        mRecord = new AudioRecord(mInputSource, mSampleRate, mFormat, mChannelMask,
@@ -433,6 +436,11 @@ status_t AudioCapture::create() {
    mRecord->setCallerName(packageName);
    status = mRecord->initCheck();
    if (NO_ERROR == status) mState = REC_READY;
    if (mFlags & AUDIO_INPUT_FLAG_FAST) {
        mFrameCount = mRecord->frameCount();
        mNotificationFrames = mRecord->getNotificationPeriodInFrames();
        mMaxBytesPerCallback = mNotificationFrames * samplesPerFrame * bytesPerSample;
    }
    return status;
}

@@ -458,12 +466,6 @@ status_t AudioCapture::stop() {
    status_t status = OK;
    mStopRecording = true;
    if (mState != REC_STOPPED) {
        uint32_t position;
        status = mRecord->getPosition(&position);
        if (OK == status && mTransferType == AudioRecord::TRANSFER_CALLBACK) {
            if (position - mNumFramesToRecord > mFrameCount)
                if (mBufferOverrun == false) status = BAD_VALUE;
        }
        mRecord->stopAndJoinCallbacks();
        mState = REC_STOPPED;
        LOG_FATAL_IF(true != mRecord->stopped());
+12 −14
Original line number Diff line number Diff line
@@ -162,20 +162,6 @@ TEST_F(AudioRecordTest, TestGetSetMarkerPeriodical) {
            << "configured marker and received cb marker are different";
}

TEST_F(AudioRecordTest, TestMicDirectionConfiguration) {
    EXPECT_EQ(OK, mAC->getAudioRecordHandle()->setPreferredMicrophoneDirection(MIC_DIRECTION_FRONT))
            << "setPreferredMicrophoneDirection() Failed";
    EXPECT_EQ(OK, mAC->start()) << "start recording failed";
    EXPECT_EQ(OK, mAC->audioProcess()) << "audioProcess failed";
}

TEST_F(AudioRecordTest, TestMicFieldConfiguration) {
    EXPECT_EQ(OK, mAC->getAudioRecordHandle()->setPreferredMicrophoneFieldDimension(0.5f))
            << "setPreferredMicrophoneFieldDimension() Failed";
    EXPECT_EQ(OK, mAC->start()) << "start recording failed";
    EXPECT_EQ(OK, mAC->audioProcess()) << "audioProcess failed";
}

TEST_F(AudioRecordTest, TestGetPosition) {
    uint32_t position;
    EXPECT_EQ(OK, mAC->getAudioRecordHandle()->getPosition(&position)) << "getPosition() failed";
@@ -223,6 +209,18 @@ INSTANTIATE_TEST_SUITE_P(AudioRecordPrimaryInput, AudioRecordCreateTest,
                                            ::testing::Values(AUDIO_SESSION_NONE),
                                            ::testing::Values(AUDIO_SOURCE_DEFAULT)));

// for port fast input
INSTANTIATE_TEST_SUITE_P(AudioRecordFastInput, AudioRecordCreateTest,
                         ::testing::Combine(::testing::Values(8000, 11025, 12000, 16000, 22050,
                                                              24000, 32000, 44100, 48000),
                                            ::testing::Values(AUDIO_FORMAT_PCM_8_24_BIT),
                                            ::testing::Values(AUDIO_CHANNEL_IN_MONO,
                                                              AUDIO_CHANNEL_IN_STEREO,
                                                              AUDIO_CHANNEL_IN_FRONT_BACK),
                                            ::testing::Values(AUDIO_INPUT_FLAG_FAST),
                                            ::testing::Values(AUDIO_SESSION_NONE),
                                            ::testing::Values(AUDIO_SOURCE_DEFAULT)));

// misc
INSTANTIATE_TEST_SUITE_P(AudioRecordMiscInput, AudioRecordCreateTest,
                         ::testing::Combine(::testing::Values(48000),