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

Merged-In: I75a6ad497f56ab0a53e764cd4f2bab8fed399bc2
Change-Id: I75a6ad497f56ab0a53e764cd4f2bab8fed399bc2
diff --git a/media/libaudioclient/tests/audio_test_utils.cpp b/media/libaudioclient/tests/audio_test_utils.cpp
index ec9a192..b068bdf 100644
--- a/media/libaudioclient/tests/audio_test_utils.cpp
+++ b/media/libaudioclient/tests/audio_test_utils.cpp
@@ -402,11 +402,8 @@
     }
     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 @@
     attributionSource.pid = VALUE_OR_FATAL(legacy2aidl_pid_t_int32_t(getpid()));
     attributionSource.token = sp<BBinder>::make();
     if (mTransferType == AudioRecord::TRANSFER_OBTAIN) {
-        mRecord = new AudioRecord(attributionSource);
-        status = mRecord->set(mInputSource, mSampleRate, mFormat, mChannelMask, mFrameCount,
-                              nullptr, nullptr, 0, false, mSessionId, mTransferType, mFlags,
-                              attributionSource.uid, attributionSource.pid);
+        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 @@
     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 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());
diff --git a/media/libaudioclient/tests/audiorecord_tests.cpp b/media/libaudioclient/tests/audiorecord_tests.cpp
index 0002384..8ac5e82 100644
--- a/media/libaudioclient/tests/audiorecord_tests.cpp
+++ b/media/libaudioclient/tests/audiorecord_tests.cpp
@@ -162,20 +162,6 @@
             << "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 @@
                                             ::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),