Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(353)

Unified Diff: mojo/message_pump/handle_watcher_unittest.cc

Issue 1475983004: Revert making HandleWatcher block until no longer waiting on pipe (r285266). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/message_pump/handle_watcher.cc ('k') | mojo/message_pump/message_pump_mojo.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/message_pump/handle_watcher_unittest.cc
diff --git a/mojo/message_pump/handle_watcher_unittest.cc b/mojo/message_pump/handle_watcher_unittest.cc
index f904df0586f18071756e1bf0aeebeda294c33d89..7cca49ea8640738d48d7eb129c8787f6d4b929a5 100644
--- a/mojo/message_pump/handle_watcher_unittest.cc
+++ b/mojo/message_pump/handle_watcher_unittest.cc
@@ -9,10 +9,8 @@
#include "base/at_exit.h"
#include "base/auto_reset.h"
#include "base/bind.h"
-#include "base/memory/scoped_vector.h"
#include "base/run_loop.h"
#include "base/test/simple_test_tick_clock.h"
-#include "base/threading/thread.h"
#include "mojo/message_pump/message_pump_mojo.h"
#include "mojo/message_pump/time_helper.h"
#include "mojo/public/cpp/system/core.h"
@@ -373,111 +371,6 @@ TEST_P(HandleWatcherTest, AbortedOnMessageLoopDestruction) {
EXPECT_EQ(MOJO_RESULT_ABORTED, result);
}
-void NeverReached(MojoResult result) {
- FAIL() << "Callback should never be invoked " << result;
-}
-
-// Called on the main thread when a thread is done. Decrements |active_count|
-// and if |active_count| is zero quits |run_loop|.
-void StressThreadDone(base::RunLoop* run_loop, int* active_count) {
- (*active_count)--;
- EXPECT_GE(*active_count, 0);
- if (*active_count == 0)
- run_loop->Quit();
-}
-
-// See description of StressTest. This is called on the background thread.
-// |count| is the number of HandleWatchers to create. |active_count| is the
-// number of outstanding threads, |task_runner| the task runner for the main
-// thread and |run_loop| the run loop that should be quit when there are no more
-// threads running. When done StressThreadDone() is invoked on the main thread.
-// |active_count| and |run_loop| should only be used on the main thread.
-void RunStressTest(int count,
- scoped_refptr<base::TaskRunner> task_runner,
- base::RunLoop* run_loop,
- int* active_count) {
- struct TestData {
- MessagePipe pipe;
- HandleWatcher watcher;
- };
- ScopedVector<TestData> data_vector;
- for (int i = 0; i < count; ++i) {
- if (i % 20 == 0) {
- // Every so often we wait. This results in some level of thread balancing
- // as well as making sure HandleWatcher has time to actually start some
- // watches.
- MessagePipe test_pipe;
- ASSERT_TRUE(test_pipe.handle0.is_valid());
- CallbackHelper callback_helper;
- HandleWatcher watcher;
- callback_helper.Start(&watcher, test_pipe.handle0.get());
- RunUntilIdle();
- EXPECT_FALSE(callback_helper.got_callback());
- EXPECT_TRUE(mojo::test::WriteTextMessage(test_pipe.handle1.get(),
- std::string()));
- base::MessageLoop::ScopedNestableTaskAllower scoper(
- base::MessageLoop::current());
- callback_helper.RunUntilGotCallback();
- EXPECT_TRUE(callback_helper.got_callback());
- } else {
- scoped_ptr<TestData> test_data(new TestData);
- ASSERT_TRUE(test_data->pipe.handle0.is_valid());
- test_data->watcher.Start(test_data->pipe.handle0.get(),
- MOJO_HANDLE_SIGNAL_READABLE,
- MOJO_DEADLINE_INDEFINITE,
- base::Bind(&NeverReached));
- data_vector.push_back(test_data.release());
- }
- if (i % 15 == 0)
- data_vector.clear();
- }
- task_runner->PostTask(FROM_HERE,
- base::Bind(&StressThreadDone, run_loop,
- active_count));
-}
-
-// This test is meant to stress HandleWatcher. It uses from various threads
-// repeatedly starting and stopping watches. It spins up kThreadCount
-// threads. Each thread creates kWatchCount watches. Every so often each thread
-// writes to a pipe and waits for the response.
-TEST(HandleWatcherCleanEnvironmentTest, StressTest) {
Anand Mistry (off Chromium) 2015/11/26 02:49:04 Can you keep this test? If HandleWatcher is functi
jam 2015/11/26 03:32:01 ah good point thanks. I had blindly reverted it. B
-#if defined(NDEBUG)
- const int kThreadCount = 15;
- const int kWatchCount = 400;
-#else
- const int kThreadCount = 10;
- const int kWatchCount = 250;
-#endif
-
- base::ShadowingAtExitManager at_exit;
- base::MessageLoop message_loop;
- base::RunLoop run_loop;
- ScopedVector<base::Thread> threads;
- int threads_active_counter = kThreadCount;
- // Starts the threads first and then post the task in hopes of having more
- // threads running at once.
- for (int i = 0; i < kThreadCount; ++i) {
- scoped_ptr<base::Thread> thread(new base::Thread("test thread"));
- if (i % 2) {
- base::Thread::Options thread_options;
- thread_options.message_pump_factory =
- base::Bind(&MessagePumpMojo::Create);
- thread->StartWithOptions(thread_options);
- } else {
- thread->Start();
- }
- threads.push_back(thread.release());
- }
- for (int i = 0; i < kThreadCount; ++i) {
- threads[i]->task_runner()->PostTask(
- FROM_HERE, base::Bind(&RunStressTest, kWatchCount,
- message_loop.task_runner(),
- &run_loop, &threads_active_counter));
- }
- run_loop.Run();
- ASSERT_EQ(0, threads_active_counter);
-}
-
} // namespace test
} // namespace common
} // namespace mojo
« no previous file with comments | « mojo/message_pump/handle_watcher.cc ('k') | mojo/message_pump/message_pump_mojo.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698