| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stdint.h> | 5 #include <stdint.h> |
| 6 #include <stdio.h> | 6 #include <stdio.h> |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 | 159 |
| 160 static const size_t kNumMessages = 1001; | 160 static const size_t kNumMessages = 1001; |
| 161 for (size_t i = 0; i < kNumMessages; i++) { | 161 for (size_t i = 0; i < kNumMessages; i++) { |
| 162 std::string write_buffer(i, 'A' + (i % 26)); | 162 std::string write_buffer(i, 'A' + (i % 26)); |
| 163 ASSERT_EQ(MOJO_RESULT_OK, | 163 ASSERT_EQ(MOJO_RESULT_OK, |
| 164 MojoWriteMessage(mp.get().value(), write_buffer.data(), | 164 MojoWriteMessage(mp.get().value(), write_buffer.data(), |
| 165 static_cast<uint32_t>(write_buffer.size()), | 165 static_cast<uint32_t>(write_buffer.size()), |
| 166 nullptr, 0u, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 166 nullptr, 0u, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 167 } | 167 } |
| 168 | 168 |
| 169 const std::string quitquitquit("quitquitquit"); | |
| 170 ASSERT_EQ(MOJO_RESULT_OK, | |
| 171 MojoWriteMessage(mp.get().value(), quitquitquit.data(), | |
| 172 static_cast<uint32_t>(quitquitquit.size()), | |
| 173 nullptr, 0u, MOJO_WRITE_MESSAGE_FLAG_NONE)); | |
| 174 | |
| 175 for (size_t i = 0; i < kNumMessages; i++) { | 169 for (size_t i = 0; i < kNumMessages; i++) { |
| 176 HandleSignalsState hss; | 170 HandleSignalsState hss; |
| 177 ASSERT_EQ(MOJO_RESULT_OK, | 171 ASSERT_EQ(MOJO_RESULT_OK, |
| 178 MojoWait(mp.get().value(), MOJO_HANDLE_SIGNAL_READABLE, | 172 MojoWait(mp.get().value(), MOJO_HANDLE_SIGNAL_READABLE, |
| 179 MOJO_DEADLINE_INDEFINITE, &hss)); | 173 MOJO_DEADLINE_INDEFINITE, &hss)); |
| 180 // The child may or may not have closed its end of the message pipe and died | 174 // The child may or may not have closed its end of the message pipe and died |
| 181 // (and we may or may not know it yet), so our end may or may not appear as | 175 // (and we may or may not know it yet), so our end may or may not appear as |
| 182 // writable. | 176 // writable. |
| 183 ASSERT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); | 177 ASSERT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); |
| 184 ASSERT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); | 178 ASSERT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); |
| 185 | 179 |
| 186 std::string read_buffer(kNumMessages * 2, '\0'); | 180 std::string read_buffer(kNumMessages * 2, '\0'); |
| 187 uint32_t read_buffer_size = static_cast<uint32_t>(read_buffer.size()); | 181 uint32_t read_buffer_size = static_cast<uint32_t>(read_buffer.size()); |
| 188 ASSERT_EQ(MojoReadMessage(mp.get().value(), &read_buffer[0], | 182 ASSERT_EQ(MojoReadMessage(mp.get().value(), &read_buffer[0], |
| 189 &read_buffer_size, nullptr, 0, | 183 &read_buffer_size, nullptr, 0, |
| 190 MOJO_READ_MESSAGE_FLAG_NONE), | 184 MOJO_READ_MESSAGE_FLAG_NONE), |
| 191 MOJO_RESULT_OK); | 185 MOJO_RESULT_OK); |
| 192 read_buffer.resize(read_buffer_size); | 186 read_buffer.resize(read_buffer_size); |
| 193 | 187 |
| 194 ASSERT_EQ(std::string(i * 2, 'A' + (i % 26)), read_buffer); | 188 ASSERT_EQ(std::string(i * 2, 'A' + (i % 26)), read_buffer); |
| 195 } | 189 } |
| 196 | 190 |
| 191 const std::string quitquitquit("quitquitquit"); |
| 192 ASSERT_EQ(MOJO_RESULT_OK, |
| 193 MojoWriteMessage(mp.get().value(), quitquitquit.data(), |
| 194 static_cast<uint32_t>(quitquitquit.size()), |
| 195 nullptr, 0u, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 196 |
| 197 // Wait for it to become readable, which should fail (since we sent | 197 // Wait for it to become readable, which should fail (since we sent |
| 198 // "quitquitquit"). | 198 // "quitquitquit"). |
| 199 HandleSignalsState hss; | 199 HandleSignalsState hss; |
| 200 ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 200 ASSERT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 201 MojoWait(mp.get().value(), MOJO_HANDLE_SIGNAL_READABLE, | 201 MojoWait(mp.get().value(), MOJO_HANDLE_SIGNAL_READABLE, |
| 202 MOJO_DEADLINE_INDEFINITE, &hss)); | 202 MOJO_DEADLINE_INDEFINITE, &hss)); |
| 203 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); | 203 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); |
| 204 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); | 204 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); |
| 205 | 205 |
| 206 ASSERT_EQ(static_cast<int>(kNumMessages % 100), | 206 ASSERT_EQ(static_cast<int>(kNumMessages % 100), |
| (...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 777 | 777 |
| 778 MojoClose(mp1); | 778 MojoClose(mp1); |
| 779 MojoClose(mp.release().value()); | 779 MojoClose(mp.release().value()); |
| 780 | 780 |
| 781 ASSERT_EQ(0, helper()->WaitForChildShutdown()); | 781 ASSERT_EQ(0, helper()->WaitForChildShutdown()); |
| 782 } | 782 } |
| 783 | 783 |
| 784 } // namespace | 784 } // namespace |
| 785 } // namespace edk | 785 } // namespace edk |
| 786 } // namespace mojo | 786 } // namespace mojo |
| OLD | NEW |