| OLD | NEW |
| 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 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 TEST_F(IPCChannelPosixTest, AdvancedConnected) { | 278 TEST_F(IPCChannelPosixTest, AdvancedConnected) { |
| 279 // Test creating a connection to an external process. | 279 // Test creating a connection to an external process. |
| 280 IPCChannelPosixTestListener listener(false); | 280 IPCChannelPosixTestListener listener(false); |
| 281 IPC::ChannelHandle chan_handle(GetConnectionSocketName()); | 281 IPC::ChannelHandle chan_handle(GetConnectionSocketName()); |
| 282 SetUpSocket(&chan_handle, IPC::Channel::MODE_NAMED_SERVER); | 282 SetUpSocket(&chan_handle, IPC::Channel::MODE_NAMED_SERVER); |
| 283 IPC::Channel channel(chan_handle, IPC::Channel::MODE_NAMED_SERVER, &listener); | 283 IPC::Channel channel(chan_handle, IPC::Channel::MODE_NAMED_SERVER, &listener); |
| 284 ASSERT_TRUE(channel.Connect()); | 284 ASSERT_TRUE(channel.Connect()); |
| 285 ASSERT_TRUE(channel.AcceptsConnections()); | 285 ASSERT_TRUE(channel.AcceptsConnections()); |
| 286 ASSERT_FALSE(channel.HasAcceptedConnection()); | 286 ASSERT_FALSE(channel.HasAcceptedConnection()); |
| 287 | 287 |
| 288 base::ProcessHandle handle = SpawnChild("IPCChannelPosixTestConnectionProc", | 288 base::ProcessHandle handle = SpawnChild("IPCChannelPosixTestConnectionProc"); |
| 289 false); | |
| 290 ASSERT_TRUE(handle); | 289 ASSERT_TRUE(handle); |
| 291 SpinRunLoop(TestTimeouts::action_max_timeout()); | 290 SpinRunLoop(TestTimeouts::action_max_timeout()); |
| 292 ASSERT_EQ(IPCChannelPosixTestListener::CONNECTED, listener.status()); | 291 ASSERT_EQ(IPCChannelPosixTestListener::CONNECTED, listener.status()); |
| 293 ASSERT_TRUE(channel.HasAcceptedConnection()); | 292 ASSERT_TRUE(channel.HasAcceptedConnection()); |
| 294 IPC::Message* message = new IPC::Message(0, // routing_id | 293 IPC::Message* message = new IPC::Message(0, // routing_id |
| 295 kQuitMessage, // message type | 294 kQuitMessage, // message type |
| 296 IPC::Message::PRIORITY_NORMAL); | 295 IPC::Message::PRIORITY_NORMAL); |
| 297 channel.Send(message); | 296 channel.Send(message); |
| 298 SpinRunLoop(TestTimeouts::action_timeout()); | 297 SpinRunLoop(TestTimeouts::action_timeout()); |
| 299 int exit_code = 0; | 298 int exit_code = 0; |
| 300 EXPECT_TRUE(base::WaitForExitCode(handle, &exit_code)); | 299 EXPECT_TRUE(base::WaitForExitCode(handle, &exit_code)); |
| 301 EXPECT_EQ(0, exit_code); | 300 EXPECT_EQ(0, exit_code); |
| 302 ASSERT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, listener.status()); | 301 ASSERT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, listener.status()); |
| 303 ASSERT_FALSE(channel.HasAcceptedConnection()); | 302 ASSERT_FALSE(channel.HasAcceptedConnection()); |
| 304 } | 303 } |
| 305 | 304 |
| 306 TEST_F(IPCChannelPosixTest, ResetState) { | 305 TEST_F(IPCChannelPosixTest, ResetState) { |
| 307 // Test creating a connection to an external process. Close the connection, | 306 // Test creating a connection to an external process. Close the connection, |
| 308 // but continue to listen and make sure another external process can connect | 307 // but continue to listen and make sure another external process can connect |
| 309 // to us. | 308 // to us. |
| 310 IPCChannelPosixTestListener listener(false); | 309 IPCChannelPosixTestListener listener(false); |
| 311 IPC::ChannelHandle chan_handle(GetConnectionSocketName()); | 310 IPC::ChannelHandle chan_handle(GetConnectionSocketName()); |
| 312 SetUpSocket(&chan_handle, IPC::Channel::MODE_NAMED_SERVER); | 311 SetUpSocket(&chan_handle, IPC::Channel::MODE_NAMED_SERVER); |
| 313 IPC::Channel channel(chan_handle, IPC::Channel::MODE_NAMED_SERVER, &listener); | 312 IPC::Channel channel(chan_handle, IPC::Channel::MODE_NAMED_SERVER, &listener); |
| 314 ASSERT_TRUE(channel.Connect()); | 313 ASSERT_TRUE(channel.Connect()); |
| 315 ASSERT_TRUE(channel.AcceptsConnections()); | 314 ASSERT_TRUE(channel.AcceptsConnections()); |
| 316 ASSERT_FALSE(channel.HasAcceptedConnection()); | 315 ASSERT_FALSE(channel.HasAcceptedConnection()); |
| 317 | 316 |
| 318 base::ProcessHandle handle = SpawnChild("IPCChannelPosixTestConnectionProc", | 317 base::ProcessHandle handle = SpawnChild("IPCChannelPosixTestConnectionProc"); |
| 319 false); | |
| 320 ASSERT_TRUE(handle); | 318 ASSERT_TRUE(handle); |
| 321 SpinRunLoop(TestTimeouts::action_max_timeout()); | 319 SpinRunLoop(TestTimeouts::action_max_timeout()); |
| 322 ASSERT_EQ(IPCChannelPosixTestListener::CONNECTED, listener.status()); | 320 ASSERT_EQ(IPCChannelPosixTestListener::CONNECTED, listener.status()); |
| 323 ASSERT_TRUE(channel.HasAcceptedConnection()); | 321 ASSERT_TRUE(channel.HasAcceptedConnection()); |
| 324 channel.ResetToAcceptingConnectionState(); | 322 channel.ResetToAcceptingConnectionState(); |
| 325 ASSERT_FALSE(channel.HasAcceptedConnection()); | 323 ASSERT_FALSE(channel.HasAcceptedConnection()); |
| 326 | 324 |
| 327 base::ProcessHandle handle2 = SpawnChild("IPCChannelPosixTestConnectionProc", | 325 base::ProcessHandle handle2 = SpawnChild("IPCChannelPosixTestConnectionProc"); |
| 328 false); | |
| 329 ASSERT_TRUE(handle2); | 326 ASSERT_TRUE(handle2); |
| 330 SpinRunLoop(TestTimeouts::action_max_timeout()); | 327 SpinRunLoop(TestTimeouts::action_max_timeout()); |
| 331 ASSERT_EQ(IPCChannelPosixTestListener::CONNECTED, listener.status()); | 328 ASSERT_EQ(IPCChannelPosixTestListener::CONNECTED, listener.status()); |
| 332 ASSERT_TRUE(channel.HasAcceptedConnection()); | 329 ASSERT_TRUE(channel.HasAcceptedConnection()); |
| 333 IPC::Message* message = new IPC::Message(0, // routing_id | 330 IPC::Message* message = new IPC::Message(0, // routing_id |
| 334 kQuitMessage, // message type | 331 kQuitMessage, // message type |
| 335 IPC::Message::PRIORITY_NORMAL); | 332 IPC::Message::PRIORITY_NORMAL); |
| 336 channel.Send(message); | 333 channel.Send(message); |
| 337 SpinRunLoop(TestTimeouts::action_timeout()); | 334 SpinRunLoop(TestTimeouts::action_timeout()); |
| 338 EXPECT_TRUE(base::KillProcess(handle, 0, false)); | 335 EXPECT_TRUE(base::KillProcess(handle, 0, false)); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 367 // Test setting up a connection to an external process, and then have | 364 // Test setting up a connection to an external process, and then have |
| 368 // another external process attempt to connect to us. | 365 // another external process attempt to connect to us. |
| 369 IPCChannelPosixTestListener listener(false); | 366 IPCChannelPosixTestListener listener(false); |
| 370 IPC::ChannelHandle chan_handle(GetConnectionSocketName()); | 367 IPC::ChannelHandle chan_handle(GetConnectionSocketName()); |
| 371 SetUpSocket(&chan_handle, IPC::Channel::MODE_NAMED_SERVER); | 368 SetUpSocket(&chan_handle, IPC::Channel::MODE_NAMED_SERVER); |
| 372 IPC::Channel channel(chan_handle, IPC::Channel::MODE_NAMED_SERVER, &listener); | 369 IPC::Channel channel(chan_handle, IPC::Channel::MODE_NAMED_SERVER, &listener); |
| 373 ASSERT_TRUE(channel.Connect()); | 370 ASSERT_TRUE(channel.Connect()); |
| 374 ASSERT_TRUE(channel.AcceptsConnections()); | 371 ASSERT_TRUE(channel.AcceptsConnections()); |
| 375 ASSERT_FALSE(channel.HasAcceptedConnection()); | 372 ASSERT_FALSE(channel.HasAcceptedConnection()); |
| 376 | 373 |
| 377 base::ProcessHandle handle = SpawnChild("IPCChannelPosixTestConnectionProc", | 374 base::ProcessHandle handle = SpawnChild("IPCChannelPosixTestConnectionProc"); |
| 378 false); | |
| 379 ASSERT_TRUE(handle); | 375 ASSERT_TRUE(handle); |
| 380 SpinRunLoop(TestTimeouts::action_max_timeout()); | 376 SpinRunLoop(TestTimeouts::action_max_timeout()); |
| 381 ASSERT_EQ(IPCChannelPosixTestListener::CONNECTED, listener.status()); | 377 ASSERT_EQ(IPCChannelPosixTestListener::CONNECTED, listener.status()); |
| 382 ASSERT_TRUE(channel.HasAcceptedConnection()); | 378 ASSERT_TRUE(channel.HasAcceptedConnection()); |
| 383 base::ProcessHandle handle2 = SpawnChild("IPCChannelPosixFailConnectionProc", | 379 base::ProcessHandle handle2 = SpawnChild("IPCChannelPosixFailConnectionProc"); |
| 384 false); | |
| 385 ASSERT_TRUE(handle2); | 380 ASSERT_TRUE(handle2); |
| 386 SpinRunLoop(TestTimeouts::action_max_timeout()); | 381 SpinRunLoop(TestTimeouts::action_max_timeout()); |
| 387 int exit_code = 0; | 382 int exit_code = 0; |
| 388 EXPECT_TRUE(base::WaitForExitCode(handle2, &exit_code)); | 383 EXPECT_TRUE(base::WaitForExitCode(handle2, &exit_code)); |
| 389 EXPECT_EQ(exit_code, 0); | 384 EXPECT_EQ(exit_code, 0); |
| 390 ASSERT_EQ(IPCChannelPosixTestListener::DENIED, listener.status()); | 385 ASSERT_EQ(IPCChannelPosixTestListener::DENIED, listener.status()); |
| 391 ASSERT_TRUE(channel.HasAcceptedConnection()); | 386 ASSERT_TRUE(channel.HasAcceptedConnection()); |
| 392 IPC::Message* message = new IPC::Message(0, // routing_id | 387 IPC::Message* message = new IPC::Message(0, // routing_id |
| 393 kQuitMessage, // message type | 388 kQuitMessage, // message type |
| 394 IPC::Message::PRIORITY_NORMAL); | 389 IPC::Message::PRIORITY_NORMAL); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 if (connected) { | 459 if (connected) { |
| 465 IPCChannelPosixTest::SpinRunLoop(TestTimeouts::action_max_timeout()); | 460 IPCChannelPosixTest::SpinRunLoop(TestTimeouts::action_max_timeout()); |
| 466 EXPECT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, listener.status()); | 461 EXPECT_EQ(IPCChannelPosixTestListener::CHANNEL_ERROR, listener.status()); |
| 467 } else { | 462 } else { |
| 468 EXPECT_EQ(IPCChannelPosixTestListener::DISCONNECTED, listener.status()); | 463 EXPECT_EQ(IPCChannelPosixTestListener::DISCONNECTED, listener.status()); |
| 469 } | 464 } |
| 470 return 0; | 465 return 0; |
| 471 } | 466 } |
| 472 | 467 |
| 473 } // namespace | 468 } // namespace |
| OLD | NEW |