| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "mojo/edk/system/channel_endpoint.h" | 5 #include "mojo/edk/system/channel_endpoint.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/synchronization/waitable_event.h" | 10 #include "base/synchronization/waitable_event.h" |
| 11 #include "base/test/test_timeouts.h" | 11 #include "base/time/time.h" |
| 12 #include "mojo/edk/system/channel_test_base.h" | 12 #include "mojo/edk/system/channel_test_base.h" |
| 13 #include "mojo/edk/system/message_in_transit_queue.h" | 13 #include "mojo/edk/system/message_in_transit_queue.h" |
| 14 #include "mojo/edk/system/message_in_transit_test_utils.h" | 14 #include "mojo/edk/system/message_in_transit_test_utils.h" |
| 15 #include "mojo/edk/system/ref_ptr.h" | 15 #include "mojo/edk/system/ref_ptr.h" |
| 16 #include "mojo/edk/system/test/timeouts.h" |
| 16 #include "mojo/edk/system/test_channel_endpoint_client.h" | 17 #include "mojo/edk/system/test_channel_endpoint_client.h" |
| 17 #include "mojo/public/cpp/system/macros.h" | 18 #include "mojo/public/cpp/system/macros.h" |
| 18 | 19 |
| 19 namespace mojo { | 20 namespace mojo { |
| 20 namespace system { | 21 namespace system { |
| 21 namespace { | 22 namespace { |
| 22 | 23 |
| 23 class ChannelEndpointTest : public test::ChannelTestBase { | 24 class ChannelEndpointTest : public test::ChannelTestBase { |
| 24 public: | 25 public: |
| 25 ChannelEndpointTest() {} | 26 ChannelEndpointTest() {} |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 // Check that our test utility works (at least in one direction). | 70 // Check that our test utility works (at least in one direction). |
| 70 test::VerifyTestMessage(send_message.get(), message_id); | 71 test::VerifyTestMessage(send_message.get(), message_id); |
| 71 | 72 |
| 72 // Event shouldn't be signalled yet. | 73 // Event shouldn't be signalled yet. |
| 73 EXPECT_FALSE(read_event.IsSignaled()); | 74 EXPECT_FALSE(read_event.IsSignaled()); |
| 74 | 75 |
| 75 // Send it through channel/endpoint 1. | 76 // Send it through channel/endpoint 1. |
| 76 EXPECT_TRUE(endpoint1->EnqueueMessage(std::move(send_message))); | 77 EXPECT_TRUE(endpoint1->EnqueueMessage(std::move(send_message))); |
| 77 | 78 |
| 78 // Wait to receive it. | 79 // Wait to receive it. |
| 79 EXPECT_TRUE(read_event.TimedWait(TestTimeouts::tiny_timeout())); | 80 EXPECT_TRUE(read_event.TimedWait(base::TimeDelta::FromMicroseconds( |
| 81 static_cast<int64_t>(test::TinyTimeout())))); |
| 80 client0->SetReadEvent(nullptr); | 82 client0->SetReadEvent(nullptr); |
| 81 | 83 |
| 82 // Check the received message. | 84 // Check the received message. |
| 83 ASSERT_EQ(1u, client0->NumMessages()); | 85 ASSERT_EQ(1u, client0->NumMessages()); |
| 84 std::unique_ptr<MessageInTransit> read_message = client0->PopMessage(); | 86 std::unique_ptr<MessageInTransit> read_message = client0->PopMessage(); |
| 85 ASSERT_TRUE(read_message); | 87 ASSERT_TRUE(read_message); |
| 86 test::VerifyTestMessage(read_message.get(), message_id); | 88 test::VerifyTestMessage(read_message.get(), message_id); |
| 87 } | 89 } |
| 88 | 90 |
| 89 // Checks that prequeued messages and messages sent at various stages later on | 91 // Checks that prequeued messages and messages sent at various stages later on |
| (...skipping 19 matching lines...) Expand all Loading... |
| 109 | 111 |
| 110 channel(1)->SetBootstrapEndpoint(endpoint1.Clone()); | 112 channel(1)->SetBootstrapEndpoint(endpoint1.Clone()); |
| 111 | 113 |
| 112 EXPECT_TRUE(endpoint1->EnqueueMessage(test::MakeTestMessage(5))); | 114 EXPECT_TRUE(endpoint1->EnqueueMessage(test::MakeTestMessage(5))); |
| 113 EXPECT_TRUE(endpoint1->EnqueueMessage(test::MakeTestMessage(6))); | 115 EXPECT_TRUE(endpoint1->EnqueueMessage(test::MakeTestMessage(6))); |
| 114 | 116 |
| 115 // Wait for the messages. | 117 // Wait for the messages. |
| 116 base::WaitableEvent read_event(true, false); | 118 base::WaitableEvent read_event(true, false); |
| 117 client0->SetReadEvent(&read_event); | 119 client0->SetReadEvent(&read_event); |
| 118 for (size_t i = 0; client0->NumMessages() < 6 && i < 6; i++) { | 120 for (size_t i = 0; client0->NumMessages() < 6 && i < 6; i++) { |
| 119 EXPECT_TRUE(read_event.TimedWait(TestTimeouts::tiny_timeout())); | 121 EXPECT_TRUE(read_event.TimedWait(base::TimeDelta::FromMicroseconds( |
| 122 static_cast<int64_t>(test::TinyTimeout())))); |
| 120 read_event.Reset(); | 123 read_event.Reset(); |
| 121 } | 124 } |
| 122 client0->SetReadEvent(nullptr); | 125 client0->SetReadEvent(nullptr); |
| 123 | 126 |
| 124 // Check the received messages. | 127 // Check the received messages. |
| 125 ASSERT_EQ(6u, client0->NumMessages()); | 128 ASSERT_EQ(6u, client0->NumMessages()); |
| 126 for (unsigned message_id = 1; message_id <= 6; message_id++) { | 129 for (unsigned message_id = 1; message_id <= 6; message_id++) { |
| 127 std::unique_ptr<MessageInTransit> read_message = client0->PopMessage(); | 130 std::unique_ptr<MessageInTransit> read_message = client0->PopMessage(); |
| 128 ASSERT_TRUE(read_message); | 131 ASSERT_TRUE(read_message); |
| 129 test::VerifyTestMessage(read_message.get(), message_id); | 132 test::VerifyTestMessage(read_message.get(), message_id); |
| 130 } | 133 } |
| 131 } | 134 } |
| 132 | 135 |
| 133 } // namespace | 136 } // namespace |
| 134 } // namespace system | 137 } // namespace system |
| 135 } // namespace mojo | 138 } // namespace mojo |
| OLD | NEW |