diff options
| author | 2021-09-20 23:53:02 +0000 | |
|---|---|---|
| committer | 2021-09-20 23:53:02 +0000 | |
| commit | 38f736acaa3c8d811f17ef8f5d0fc0afaa1e35c7 (patch) | |
| tree | 2d96a3c2711c426a6e4075f4249ed3bc0714b732 | |
| parent | 945433906a812ae8f459e37fd34eaa34011d984c (diff) | |
| parent | beb91bd2268fcf21627f0e5a71ef8e29d4fa245a (diff) | |
Merge "binderRpcTest: fix OnewayStressTest flake" am: beb91bd226
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1830385
Change-Id: Ie22fd6e0e1fe241dade2f610201bde8eb27425ee
| -rw-r--r-- | libs/binder/tests/binderRpcTest.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp index 84e8ac643a..8b2950f056 100644 --- a/libs/binder/tests/binderRpcTest.cpp +++ b/libs/binder/tests/binderRpcTest.cpp @@ -1036,6 +1036,14 @@ TEST_P(BinderRpc, ThreadingStressTest) { for (auto& t : threads) t.join(); } +static void saturateThreadPool(size_t threadCount, const sp<IBinderRpcTest>& iface) { + std::vector<std::thread> threads; + for (size_t i = 0; i < threadCount; i++) { + threads.push_back(std::thread([&] { EXPECT_OK(iface->sleepMs(500)); })); + } + for (auto& t : threads) t.join(); +} + TEST_P(BinderRpc, OnewayStressTest) { constexpr size_t kNumClientThreads = 10; constexpr size_t kNumServerThreads = 10; @@ -1049,13 +1057,12 @@ TEST_P(BinderRpc, OnewayStressTest) { for (size_t j = 0; j < kNumCalls; j++) { EXPECT_OK(proc.rootIface->sendString("a")); } - - // check threads are not stuck - EXPECT_OK(proc.rootIface->sleepMs(250)); })); } for (auto& t : threads) t.join(); + + saturateThreadPool(kNumServerThreads, proc.rootIface); } TEST_P(BinderRpc, OnewayCallDoesNotWait) { @@ -1098,13 +1105,7 @@ TEST_P(BinderRpc, OnewayCallQueueing) { EXPECT_GT(epochMsAfter, epochMsBefore + kSleepMs * kNumSleeps); - // pending oneway transactions hold ref, make sure we read data on all - // sockets - std::vector<std::thread> threads; - for (size_t i = 0; i < 1 + kNumExtraServerThreads; i++) { - threads.push_back(std::thread([&] { EXPECT_OK(proc.rootIface->sleepMs(250)); })); - } - for (auto& t : threads) t.join(); + saturateThreadPool(1 + kNumExtraServerThreads, proc.rootIface); } TEST_P(BinderRpc, OnewayCallExhaustion) { |