Skip to content

Commit d99a722

Browse files
committed
tests: test waitForStateChange() timeout
Seems broken on OpenSL ES. Tests for #1061
1 parent 120b61d commit d99a722

File tree

1 file changed

+41
-10
lines changed

1 file changed

+41
-10
lines changed

tests/testStreamWaitState.cpp

+41-10
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@ class TestStreamWaitState : public ::testing::Test {
5757
return (r == Result::OK || r == Result::ErrorClosed);
5858
}
5959

60-
void checkWaitZeroTimeout() {
60+
// if zero then don't wait for a state change
61+
void checkWaitForStateChangeTimeout(int64_t timeout = kTimeoutInNanos) {
6162
StreamState next = StreamState::Unknown;
62-
int64_t timeout = 0; // don't wait for a state change
63-
Result result = mStream->waitForStateChange(mStream->getState(), &next, timeout);
64-
EXPECT_EQ(Result::ErrorTimeout, result);
65-
}
63+
Result result = mStream->waitForStateChange(mStream->getState(), &next, timeout);
64+
EXPECT_EQ(Result::ErrorTimeout, result);
65+
}
6666

6767
void checkStopWhileWaiting() {
6868
StreamState next = StreamState::Unknown;
@@ -120,15 +120,16 @@ class TestStreamWaitState : public ::testing::Test {
120120

121121
};
122122

123+
// Test return of error timeout when zero passed as the timeoutNanos.
123124
TEST_F(TestStreamWaitState, OutputLowWaitZero) {
124125
ASSERT_TRUE(openStream(Direction::Output, PerformanceMode::LowLatency));
125-
checkWaitZeroTimeout();
126+
checkWaitForStateChangeTimeout(0);
126127
ASSERT_TRUE(closeStream());
127128
}
128129

129130
TEST_F(TestStreamWaitState, OutputNoneWaitZero) {
130131
ASSERT_TRUE(openStream(Direction::Output, PerformanceMode::None));
131-
checkWaitZeroTimeout();
132+
checkWaitForStateChangeTimeout(0);
132133
ASSERT_TRUE(closeStream());
133134
}
134135

@@ -137,7 +138,7 @@ TEST_F(TestStreamWaitState, OutputLowWaitZeroSLES) {
137138
builder.setPerformanceMode(PerformanceMode::LowLatency);
138139
builder.setAudioApi(AudioApi::OpenSLES);
139140
ASSERT_TRUE(openStream(builder));
140-
checkWaitZeroTimeout();
141+
checkWaitForStateChangeTimeout(0);
141142
ASSERT_TRUE(closeStream());
142143
}
143144

@@ -146,10 +147,40 @@ TEST_F(TestStreamWaitState, OutputNoneWaitZeroSLES) {
146147
builder.setPerformanceMode(PerformanceMode::None);
147148
builder.setAudioApi(AudioApi::OpenSLES);
148149
ASSERT_TRUE(openStream(builder));
149-
checkWaitZeroTimeout();
150+
checkWaitForStateChangeTimeout(0);
151+
ASSERT_TRUE(closeStream());
152+
}
153+
154+
// Test actual timeout.
155+
TEST_F(TestStreamWaitState, OutputLowWaitNonZero) {
156+
ASSERT_TRUE(openStream(Direction::Output, PerformanceMode::LowLatency));
157+
checkWaitForStateChangeTimeout();
150158
ASSERT_TRUE(closeStream());
151159
}
152160

161+
TEST_F(TestStreamWaitState, OutputNoneWaitNonZero) {
162+
ASSERT_TRUE(openStream(Direction::Output, PerformanceMode::None));
163+
checkWaitForStateChangeTimeout();
164+
ASSERT_TRUE(closeStream());
165+
}
166+
167+
TEST_F(TestStreamWaitState, OutputLowWaitNonZeroSLES) {
168+
AudioStreamBuilder builder;
169+
builder.setPerformanceMode(PerformanceMode::LowLatency);
170+
builder.setAudioApi(AudioApi::OpenSLES);
171+
ASSERT_TRUE(openStream(builder));
172+
checkWaitForStateChangeTimeout();
173+
ASSERT_TRUE(closeStream());
174+
}
175+
176+
TEST_F(TestStreamWaitState, OutputNoneWaitNonZeroSLES) {
177+
AudioStreamBuilder builder;
178+
builder.setPerformanceMode(PerformanceMode::None);
179+
builder.setAudioApi(AudioApi::OpenSLES);
180+
ASSERT_TRUE(openStream(builder));
181+
checkWaitForStateChangeTimeout();
182+
ASSERT_TRUE(closeStream());
183+
}
153184

154185
TEST_F(TestStreamWaitState, OutputLowStopWhileWaiting) {
155186
ASSERT_TRUE(openStream(Direction::Output, PerformanceMode::LowLatency));
@@ -215,4 +246,4 @@ TEST_F(TestStreamWaitState, OutputLowCloseWhileWaitingSLES) {
215246
ASSERT_TRUE(openStream(builder));
216247
checkCloseWhileWaiting();
217248
ASSERT_TRUE(closeStream());
218-
}
249+
}

0 commit comments

Comments
 (0)