From a70e4317e631737d1ac775f2e56f8cfc1c433589 Mon Sep 17 00:00:00 2001 From: Mikhail Naganov Date: Fri, 15 Nov 2019 16:21:38 -0800 Subject: [PATCH] Audio VTS: Fix MMAP tests Ensure stream test runs for output MMAP profiles. Enhance checks for MMAP buffer size. Bug: 144575694 Test: atest VtsHalAudioV6_0TargetTest Change-Id: I93e66b12c93c466d661e65c4dbbb5deb32772848 --- audio/6.0/IStream.hal | 2 +- .../6.0/AudioPrimaryHidlHalTest.cpp | 3 ++- .../vts/functional/AudioPrimaryHidlHalTest.h | 20 +++++++++---------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/audio/6.0/IStream.hal b/audio/6.0/IStream.hal index 451e1162bf..b48a05d36b 100644 --- a/audio/6.0/IStream.hal +++ b/audio/6.0/IStream.hal @@ -277,7 +277,7 @@ interface IStream { * @return retval OK in case the success. * NOT_SUPPORTED on non mmap mode streams * NOT_INITIALIZED in case of memory allocation error - * INVALID_ARGUMENTS if the requested buffer size is too large + * INVALID_ARGUMENTS if the requested buffer size is invalid * INVALID_STATE if called out of sequence * @return info a MmapBufferInfo struct containing information on the MMMAP buffer created. */ diff --git a/audio/core/all-versions/vts/functional/6.0/AudioPrimaryHidlHalTest.cpp b/audio/core/all-versions/vts/functional/6.0/AudioPrimaryHidlHalTest.cpp index 30f8a7ade7..7e931ff1b1 100644 --- a/audio/core/all-versions/vts/functional/6.0/AudioPrimaryHidlHalTest.cpp +++ b/audio/core/all-versions/vts/functional/6.0/AudioPrimaryHidlHalTest.cpp @@ -100,7 +100,8 @@ const std::vector& getOutputDeviceConfigParameters() { special = true; } if ((flags & AUDIO_OUTPUT_FLAG_DIRECT) && - !(flags & AUDIO_OUTPUT_FLAG_HW_AV_SYNC)) { + !(flags & + (AUDIO_OUTPUT_FLAG_HW_AV_SYNC | AUDIO_OUTPUT_FLAG_MMAP_NOIRQ))) { result.emplace_back(device, config, AudioOutputFlag(AUDIO_OUTPUT_FLAG_DIRECT)); special = true; diff --git a/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h b/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h index 468f9b2da6..c7a7a733bc 100644 --- a/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h +++ b/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h @@ -1202,19 +1202,17 @@ TEST_IO_STREAM(closeTwice, "Make sure a stream can not be closed twice", waitForStreamDestruction()) // clang-format on -static void testCreateTooBigMmapBuffer(IStream* stream) { - MmapBufferInfo info; - Result res; - // Assume that int max is a value too big to be allocated - // This is true currently with a 32bit media server, but might not when it - // will run in 64 bit - auto minSizeFrames = std::numeric_limits::max(); - ASSERT_OK(stream->createMmapBuffer(minSizeFrames, returnIn(res, info))); - ASSERT_RESULT(invalidArgsOrNotSupported, res); +static void testMmapBufferOfInvalidSize(IStream* stream) { + for (int32_t value : {-1, 0, std::numeric_limits::max()}) { + MmapBufferInfo info; + Result res; + EXPECT_OK(stream->createMmapBuffer(value, returnIn(res, info))); + EXPECT_RESULT(invalidArgsOrNotSupported, res) << "value=" << value; + } } -TEST_IO_STREAM(CreateTooBigMmapBuffer, "Create mmap buffer too big should fail", - testCreateTooBigMmapBuffer(stream.get())) +TEST_IO_STREAM(CreateTooBigMmapBuffer, "Create mmap buffer of invalid size must fail", + testMmapBufferOfInvalidSize(stream.get())) static void testGetMmapPositionOfNonMmapedStream(IStream* stream) { Result res;