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

Side by Side Diff: ipc/ipc_channel_posix_unittest.cc

Issue 310293002: Make IPC::Channel polymorphic (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Another attempt to fix build breakage Created 6 years, 6 months 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 | Annotate | Revision Log
« no previous file with comments | « ipc/ipc_channel_posix.cc ('k') | ipc/ipc_channel_proxy.h » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // These tests are POSIX only. 5 // These tests are POSIX only.
6 6
7 #include "ipc/ipc_channel_posix.h" 7 #include "ipc/ipc_channel_posix.h"
8 8
9 #include <fcntl.h> 9 #include <fcntl.h>
10 #include <sys/socket.h> 10 #include <sys/socket.h>
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 238
239 // If a connection closes right before a Send() call, we may end up closing 239 // If a connection closes right before a Send() call, we may end up closing
240 // the connection without notifying the listener, which can cause hangs in 240 // the connection without notifying the listener, which can cause hangs in
241 // sync_message_filter and others. Make sure the listener is notified. 241 // sync_message_filter and others. Make sure the listener is notified.
242 TEST_F(IPCChannelPosixTest, SendHangTest) { 242 TEST_F(IPCChannelPosixTest, SendHangTest) {
243 IPCChannelPosixTestListener out_listener(true); 243 IPCChannelPosixTestListener out_listener(true);
244 IPCChannelPosixTestListener in_listener(true); 244 IPCChannelPosixTestListener in_listener(true);
245 IPC::ChannelHandle in_handle("IN"); 245 IPC::ChannelHandle in_handle("IN");
246 scoped_ptr<IPC::Channel> in_chan( 246 scoped_ptr<IPC::Channel> in_chan(
247 IPC::Channel::CreateServer(in_handle, &in_listener)); 247 IPC::Channel::CreateServer(in_handle, &in_listener));
248 base::FileDescriptor out_fd(in_chan->TakeClientFileDescriptor(), false); 248 base::FileDescriptor out_fd(
249 in_chan->TakeClientFileDescriptor(), false);
249 IPC::ChannelHandle out_handle("OUT", out_fd); 250 IPC::ChannelHandle out_handle("OUT", out_fd);
250 scoped_ptr<IPC::Channel> out_chan( 251 scoped_ptr<IPC::Channel> out_chan(
251 IPC::Channel::CreateClient(out_handle, &out_listener)); 252 IPC::Channel::CreateClient(out_handle, &out_listener));
252 ASSERT_TRUE(in_chan->Connect()); 253 ASSERT_TRUE(in_chan->Connect());
253 ASSERT_TRUE(out_chan->Connect()); 254 ASSERT_TRUE(out_chan->Connect());
254 in_chan->Close(); // simulate remote process dying at an unfortunate time. 255 in_chan->Close(); // simulate remote process dying at an unfortunate time.
255 // Send will fail, because it cannot write the message. 256 // Send will fail, because it cannot write the message.
256 ASSERT_FALSE(out_chan->Send(new IPC::Message( 257 ASSERT_FALSE(out_chan->Send(new IPC::Message(
257 0, // routing_id 258 0, // routing_id
258 kQuitMessage, // message type 259 kQuitMessage, // message type
259 IPC::Message::PRIORITY_NORMAL))); 260 IPC::Message::PRIORITY_NORMAL)));
260 SpinRunLoop(TestTimeouts::action_max_timeout()); 261 SpinRunLoop(TestTimeouts::action_max_timeout());
261 ASSERT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, out_listener.status()); 262 ASSERT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, out_listener.status());
262 } 263 }
263 264
264 // If a connection closes right before a Connect() call, we may end up closing 265 // If a connection closes right before a Connect() call, we may end up closing
265 // the connection without notifying the listener, which can cause hangs in 266 // the connection without notifying the listener, which can cause hangs in
266 // sync_message_filter and others. Make sure the listener is notified. 267 // sync_message_filter and others. Make sure the listener is notified.
267 TEST_F(IPCChannelPosixTest, AcceptHangTest) { 268 TEST_F(IPCChannelPosixTest, AcceptHangTest) {
268 IPCChannelPosixTestListener out_listener(true); 269 IPCChannelPosixTestListener out_listener(true);
269 IPCChannelPosixTestListener in_listener(true); 270 IPCChannelPosixTestListener in_listener(true);
270 IPC::ChannelHandle in_handle("IN"); 271 IPC::ChannelHandle in_handle("IN");
271 scoped_ptr<IPC::Channel> in_chan( 272 scoped_ptr<IPC::Channel> in_chan(
272 IPC::Channel::CreateServer(in_handle, &in_listener)); 273 IPC::Channel::CreateServer(in_handle, &in_listener));
273 base::FileDescriptor out_fd(in_chan->TakeClientFileDescriptor(), false); 274 base::FileDescriptor out_fd(
275 in_chan->TakeClientFileDescriptor(), false);
274 IPC::ChannelHandle out_handle("OUT", out_fd); 276 IPC::ChannelHandle out_handle("OUT", out_fd);
275 scoped_ptr<IPC::Channel> out_chan( 277 scoped_ptr<IPC::Channel> out_chan(
276 IPC::Channel::CreateClient(out_handle, &out_listener)); 278 IPC::Channel::CreateClient(out_handle, &out_listener));
277 ASSERT_TRUE(in_chan->Connect()); 279 ASSERT_TRUE(in_chan->Connect());
278 in_chan->Close(); // simulate remote process dying at an unfortunate time. 280 in_chan->Close(); // simulate remote process dying at an unfortunate time.
279 ASSERT_FALSE(out_chan->Connect()); 281 ASSERT_FALSE(out_chan->Connect());
280 SpinRunLoop(TestTimeouts::action_max_timeout()); 282 SpinRunLoop(TestTimeouts::action_max_timeout());
281 ASSERT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, out_listener.status()); 283 ASSERT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, out_listener.status());
282 } 284 }
283 285
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 scoped_ptr<IPC::Channel> channel2( 418 scoped_ptr<IPC::Channel> channel2(
417 IPC::Channel::CreateServer(chan_handle, &listener2)); 419 IPC::Channel::CreateServer(chan_handle, &listener2));
418 ASSERT_TRUE(channel->Connect()); 420 ASSERT_TRUE(channel->Connect());
419 ASSERT_FALSE(channel2->Connect()); 421 ASSERT_FALSE(channel2->Connect());
420 } 422 }
421 423
422 TEST_F(IPCChannelPosixTest, BadMode) { 424 TEST_F(IPCChannelPosixTest, BadMode) {
423 // Test setting up two servers with a bad mode. 425 // Test setting up two servers with a bad mode.
424 IPCChannelPosixTestListener listener(false); 426 IPCChannelPosixTestListener listener(false);
425 IPC::ChannelHandle chan_handle(GetConnectionSocketName()); 427 IPC::ChannelHandle chan_handle(GetConnectionSocketName());
426 scoped_ptr<IPC::Channel> channel(IPC::Channel::CreateByModeForProxy( 428 scoped_ptr<IPC::Channel> channel(IPC::Channel::Create(
427 chan_handle, IPC::Channel::MODE_NONE, &listener)); 429 chan_handle, IPC::Channel::MODE_NONE, &listener));
428 ASSERT_FALSE(channel->Connect()); 430 ASSERT_FALSE(channel->Connect());
429 } 431 }
430 432
431 TEST_F(IPCChannelPosixTest, IsNamedServerInitialized) { 433 TEST_F(IPCChannelPosixTest, IsNamedServerInitialized) {
432 const std::string& connection_socket_name = GetConnectionSocketName(); 434 const std::string& connection_socket_name = GetConnectionSocketName();
433 IPCChannelPosixTestListener listener(false); 435 IPCChannelPosixTestListener listener(false);
434 IPC::ChannelHandle chan_handle(connection_socket_name); 436 IPC::ChannelHandle chan_handle(connection_socket_name);
435 ASSERT_TRUE(base::DeleteFile(base::FilePath(connection_socket_name), false)); 437 ASSERT_TRUE(base::DeleteFile(base::FilePath(connection_socket_name), false));
436 ASSERT_FALSE(IPC::Channel::IsNamedServerInitialized( 438 ASSERT_FALSE(IPC::Channel::IsNamedServerInitialized(
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 if (connected) { 478 if (connected) {
477 IPCChannelPosixTest::SpinRunLoop(TestTimeouts::action_max_timeout()); 479 IPCChannelPosixTest::SpinRunLoop(TestTimeouts::action_max_timeout());
478 EXPECT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, listener.status()); 480 EXPECT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, listener.status());
479 } else { 481 } else {
480 EXPECT_EQ(IPCChannelPosixTestListener::DISCONNECTED, listener.status()); 482 EXPECT_EQ(IPCChannelPosixTestListener::DISCONNECTED, listener.status());
481 } 483 }
482 return 0; 484 return 0;
483 } 485 }
484 486
485 } // namespace 487 } // namespace
OLDNEW
« no previous file with comments | « ipc/ipc_channel_posix.cc ('k') | ipc/ipc_channel_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698