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

Side by Side Diff: ipc/ipc_channel_proxy_unittest.cc

Issue 2451953003: Change most IPC tests to use ChannelMojo. (Closed)
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « ipc/ipc_channel_mojo_unittest.cc ('k') | ipc/ipc_fuzzing_tests.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 ~MessageCountFilter() override {} 225 ~MessageCountFilter() override {}
226 226
227 size_t messages_received_; 227 size_t messages_received_;
228 uint32_t supported_message_class_; 228 uint32_t supported_message_class_;
229 bool is_global_filter_; 229 bool is_global_filter_;
230 230
231 FilterEvent last_filter_event_; 231 FilterEvent last_filter_event_;
232 bool message_filtering_enabled_; 232 bool message_filtering_enabled_;
233 }; 233 };
234 234
235 class IPCChannelProxyTest : public IPCTestBase { 235 class IPCChannelProxyTest : public IPCChannelMojoTestBase {
236 public: 236 public:
237 IPCChannelProxyTest() {} 237 IPCChannelProxyTest() {}
238 ~IPCChannelProxyTest() override {} 238 ~IPCChannelProxyTest() override {}
239 239
240 void SetUp() override { 240 void SetUp() override {
241 IPCTestBase::SetUp(); 241 IPCChannelMojoTestBase::SetUp();
242 242
243 Init("ChannelProxyClient"); 243 Init("ChannelProxyClient");
244 244
245 thread_.reset(new base::Thread("ChannelProxyTestServerThread")); 245 thread_.reset(new base::Thread("ChannelProxyTestServerThread"));
246 base::Thread::Options options; 246 base::Thread::Options options;
247 options.message_loop_type = base::MessageLoop::TYPE_IO; 247 options.message_loop_type = base::MessageLoop::TYPE_IO;
248 thread_->StartWithOptions(options); 248 thread_->StartWithOptions(options);
249 249
250 listener_.reset(new QuitListener()); 250 listener_.reset(new QuitListener());
251 CreateChannelProxy(listener_.get(), thread_->task_runner().get()); 251 channel_proxy_ = IPC::ChannelProxy::Create(
252 252 TakeHandle().release(), IPC::Channel::MODE_SERVER, listener_.get(),
253 ASSERT_TRUE(StartClient()); 253 thread_->task_runner());
254 } 254 }
255 255
256 void TearDown() override { 256 void TearDown() override {
257 DestroyChannelProxy(); 257 channel_proxy_.reset();
258 thread_.reset(); 258 thread_.reset();
259 listener_.reset(); 259 listener_.reset();
260 IPCTestBase::TearDown(); 260 IPCChannelMojoTestBase::TearDown();
261 } 261 }
262 262
263 void SendQuitMessageAndWaitForIdle() { 263 void SendQuitMessageAndWaitForIdle() {
264 sender()->Send(new WorkerMsg_Quit); 264 sender()->Send(new WorkerMsg_Quit);
265 base::RunLoop().Run(); 265 base::RunLoop().Run();
266 EXPECT_TRUE(WaitForClientShutdown()); 266 EXPECT_TRUE(WaitForClientShutdown());
267 } 267 }
268 268
269 bool DidListenerGetBadMessage() { 269 bool DidListenerGetBadMessage() {
270 return listener_->bad_message_received_; 270 return listener_->bad_message_received_;
271 } 271 }
272 272
273 IPC::ChannelProxy* channel_proxy() { return channel_proxy_.get(); }
274 IPC::Sender* sender() { return channel_proxy_.get(); }
275
273 private: 276 private:
274 std::unique_ptr<base::Thread> thread_; 277 std::unique_ptr<base::Thread> thread_;
275 std::unique_ptr<QuitListener> listener_; 278 std::unique_ptr<QuitListener> listener_;
279 std::unique_ptr<IPC::ChannelProxy> channel_proxy_;
276 }; 280 };
277 281
278 TEST_F(IPCChannelProxyTest, MessageClassFilters) { 282 TEST_F(IPCChannelProxyTest, MessageClassFilters) {
279 // Construct a filter per message class. 283 // Construct a filter per message class.
280 std::vector<scoped_refptr<MessageCountFilter> > class_filters; 284 std::vector<scoped_refptr<MessageCountFilter> > class_filters;
281 class_filters.push_back(make_scoped_refptr( 285 class_filters.push_back(make_scoped_refptr(
282 new MessageCountFilter(TestMsgStart))); 286 new MessageCountFilter(TestMsgStart)));
283 class_filters.push_back(make_scoped_refptr( 287 class_filters.push_back(make_scoped_refptr(
284 new MessageCountFilter(UtilityMsgStart))); 288 new MessageCountFilter(UtilityMsgStart)));
285 for (size_t i = 0; i < class_filters.size(); ++i) 289 for (size_t i = 0; i < class_filters.size(); ++i)
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 // Ensure that the filters were removed and did not receive any messages. 351 // Ensure that the filters were removed and did not receive any messages.
348 SendQuitMessageAndWaitForIdle(); 352 SendQuitMessageAndWaitForIdle();
349 EXPECT_EQ(MessageCountFilter::FILTER_REMOVED, 353 EXPECT_EQ(MessageCountFilter::FILTER_REMOVED,
350 global_filter->last_filter_event()); 354 global_filter->last_filter_event());
351 EXPECT_EQ(MessageCountFilter::FILTER_REMOVED, 355 EXPECT_EQ(MessageCountFilter::FILTER_REMOVED,
352 class_filter->last_filter_event()); 356 class_filter->last_filter_event());
353 EXPECT_EQ(0U, class_filter->messages_received()); 357 EXPECT_EQ(0U, class_filter->messages_received());
354 EXPECT_EQ(0U, global_filter->messages_received()); 358 EXPECT_EQ(0U, global_filter->messages_received());
355 } 359 }
356 360
357 // The test that follow trigger DCHECKS in debug build.
358 #if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON)
359
360 TEST_F(IPCChannelProxyTest, BadMessageOnListenerThread) { 361 TEST_F(IPCChannelProxyTest, BadMessageOnListenerThread) {
361 scoped_refptr<MessageCountFilter> class_filter( 362 scoped_refptr<MessageCountFilter> class_filter(
362 new MessageCountFilter(TestMsgStart)); 363 new MessageCountFilter(TestMsgStart));
363 class_filter->set_message_filtering_enabled(false); 364 class_filter->set_message_filtering_enabled(false);
364 channel_proxy()->AddFilter(class_filter.get()); 365 channel_proxy()->AddFilter(class_filter.get());
365 366
366 sender()->Send(new TestMsg_SendBadMessage()); 367 sender()->Send(new TestMsg_SendBadMessage());
367 368
368 SendQuitMessageAndWaitForIdle(); 369 SendQuitMessageAndWaitForIdle();
369 EXPECT_TRUE(DidListenerGetBadMessage()); 370 EXPECT_TRUE(DidListenerGetBadMessage());
370 } 371 }
371 372
372 TEST_F(IPCChannelProxyTest, BadMessageOnIPCThread) { 373 TEST_F(IPCChannelProxyTest, BadMessageOnIPCThread) {
373 scoped_refptr<MessageCountFilter> class_filter( 374 scoped_refptr<MessageCountFilter> class_filter(
374 new MessageCountFilter(TestMsgStart)); 375 new MessageCountFilter(TestMsgStart));
375 class_filter->set_message_filtering_enabled(true); 376 class_filter->set_message_filtering_enabled(true);
376 channel_proxy()->AddFilter(class_filter.get()); 377 channel_proxy()->AddFilter(class_filter.get());
377 378
378 sender()->Send(new TestMsg_SendBadMessage()); 379 sender()->Send(new TestMsg_SendBadMessage());
379 380
380 SendQuitMessageAndWaitForIdle(); 381 SendQuitMessageAndWaitForIdle();
381 EXPECT_TRUE(DidListenerGetBadMessage()); 382 EXPECT_TRUE(DidListenerGetBadMessage());
382 } 383 }
383 384
384 class IPCChannelBadMessageTest : public IPCTestBase { 385 class IPCChannelBadMessageTest : public IPCChannelMojoTestBase {
385 public: 386 public:
386 void SetUp() override { 387 void SetUp() override {
387 IPCTestBase::SetUp(); 388 IPCChannelMojoTestBase::SetUp();
388 389
389 Init("ChannelProxyClient"); 390 Init("ChannelProxyClient");
390 391
391 listener_.reset(new QuitListener()); 392 listener_.reset(new QuitListener());
392 CreateChannel(listener_.get()); 393 CreateChannel(listener_.get());
393 ASSERT_TRUE(ConnectChannel()); 394 ASSERT_TRUE(ConnectChannel());
394
395 ASSERT_TRUE(StartClient());
396 } 395 }
397 396
398 void TearDown() override { 397 void TearDown() override {
398 IPCChannelMojoTestBase::TearDown();
399 listener_.reset(); 399 listener_.reset();
400 IPCTestBase::TearDown();
401 } 400 }
402 401
403 void SendQuitMessageAndWaitForIdle() { 402 void SendQuitMessageAndWaitForIdle() {
404 sender()->Send(new WorkerMsg_Quit); 403 sender()->Send(new WorkerMsg_Quit);
405 base::RunLoop().Run(); 404 base::RunLoop().Run();
406 EXPECT_TRUE(WaitForClientShutdown()); 405 EXPECT_TRUE(WaitForClientShutdown());
407 } 406 }
408 407
409 bool DidListenerGetBadMessage() { 408 bool DidListenerGetBadMessage() {
410 return listener_->bad_message_received_; 409 return listener_->bad_message_received_;
411 } 410 }
412 411
413 private: 412 private:
414 std::unique_ptr<QuitListener> listener_; 413 std::unique_ptr<QuitListener> listener_;
415 }; 414 };
416 415
417 #if !defined(OS_WIN) 416 #if !defined(OS_WIN)
418 // TODO(jam): for some reason this is flaky on win buildbots. 417 // TODO(jam): for some reason this is flaky on win buildbots.
419 TEST_F(IPCChannelBadMessageTest, BadMessage) { 418 TEST_F(IPCChannelBadMessageTest, BadMessage) {
420 sender()->Send(new TestMsg_SendBadMessage()); 419 sender()->Send(new TestMsg_SendBadMessage());
421 SendQuitMessageAndWaitForIdle(); 420 SendQuitMessageAndWaitForIdle();
422 EXPECT_TRUE(DidListenerGetBadMessage()); 421 EXPECT_TRUE(DidListenerGetBadMessage());
423 } 422 }
424 #endif 423 #endif
425 424
426 #endif 425 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT(ChannelProxyClient) {
427
428 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(ChannelProxyClient) {
429 base::MessageLoopForIO main_message_loop;
430 ChannelReflectorListener listener; 426 ChannelReflectorListener listener;
431 std::unique_ptr<IPC::Channel> channel(IPC::Channel::CreateClient( 427 Connect(&listener);
432 IPCTestBase::GetChannelName("ChannelProxyClient"), &listener, 428 listener.Init(channel());
433 main_message_loop.task_runner()));
434 CHECK(channel->Connect());
435 listener.Init(channel.get());
436 429
437 base::RunLoop().Run(); 430 base::RunLoop().Run();
438 return 0; 431 Close();
439 } 432 }
440 433
441 } // namespace 434 } // namespace
OLDNEW
« no previous file with comments | « ipc/ipc_channel_mojo_unittest.cc ('k') | ipc/ipc_fuzzing_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698