Merge "Audio VTS: Wait after stream close"

am: 1f004177c6

Change-Id: Iedbd1bc16136494c60e534ecf22df51d8b03068c
This commit is contained in:
Mikhail Naganov 2019-10-22 17:07:51 -07:00 committed by android-build-merger
commit 98d63d2b1d
2 changed files with 25 additions and 5 deletions

View file

@ -24,7 +24,7 @@ static void waitForDeviceDestruction() {
// flushCommand makes sure all local command are sent, thus should reduce
// the latency between local and remote destruction.
IPCThreadState::self()->flushCommands();
usleep(100);
usleep(100 * 1000);
}
TEST_F(AudioHidlTest, OpenPrimaryDeviceUsingGetDevice) {

View file

@ -699,13 +699,27 @@ class OpenStreamTest : public AudioConfigPrimaryTest,
Return<Result> closeStream() {
open = false;
return stream->close();
auto res = stream->close();
stream.clear();
waitForStreamDestruction();
return res;
}
void waitForStreamDestruction() {
// FIXME: there is no way to know when the remote IStream is being destroyed
// Binder does not support testing if an object is alive, thus
// wait for 100ms to let the binder destruction propagates and
// the remote device has the time to be destroyed.
// flushCommand makes sure all local command are sent, thus should reduce
// the latency between local and remote destruction.
IPCThreadState::self()->flushCommands();
usleep(100 * 1000);
}
private:
void TearDown() override {
if (open) {
ASSERT_OK(stream->close());
ASSERT_OK(closeStream());
}
AudioConfigPrimaryTest::TearDown();
}
@ -1003,8 +1017,14 @@ TEST_IO_STREAM(getMmapPositionNoMmap, "Get a stream Mmap position before mapping
ASSERT_RESULT(invalidStateOrNotSupported, stream->stop()))
TEST_IO_STREAM(close, "Make sure a stream can be closed", ASSERT_OK(closeStream()))
TEST_IO_STREAM(closeTwice, "Make sure a stream can not be closed twice", ASSERT_OK(closeStream());
ASSERT_RESULT(Result::INVALID_STATE, closeStream()))
// clang-format off
TEST_IO_STREAM(closeTwice, "Make sure a stream can not be closed twice",
auto streamCopy = stream;
ASSERT_OK(closeStream());
ASSERT_RESULT(Result::INVALID_STATE, streamCopy->close());
streamCopy.clear();
waitForStreamDestruction())
// clang-format on
static void testCreateTooBigMmapBuffer(IStream* stream) {
MmapBufferInfo info;