| 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 #include <gtest/gtest.h> | 5 #include <gtest/gtest.h> |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 for (size_t i = 0; i < output.length(); i++) { | 72 for (size_t i = 0; i < output.length(); i++) { |
| 73 // The character output[i] should be next in at least one of the lines we | 73 // The character output[i] should be next in at least one of the lines we |
| 74 // are testing. | 74 // are testing. |
| 75 valid = (ProcessReceivedCharacter(output[i], 0) || | 75 valid = (ProcessReceivedCharacter(output[i], 0) || |
| 76 ProcessReceivedCharacter(output[i], 1)); | 76 ProcessReceivedCharacter(output[i], 1)); |
| 77 EXPECT_TRUE(valid) << "Received: " << output; | 77 EXPECT_TRUE(valid) << "Received: " << output; |
| 78 } | 78 } |
| 79 | 79 |
| 80 if (!valid || TestSucceeded()) { | 80 if (!valid || TestSucceeded()) { |
| 81 base::ThreadTaskRunnerHandle::Get()->PostTask( | 81 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 82 FROM_HERE, base::MessageLoop::QuitClosure()); | 82 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); |
| 83 } | 83 } |
| 84 } | 84 } |
| 85 | 85 |
| 86 void StartRegistryTest(ProcessProxyRegistry* registry) override { | 86 void StartRegistryTest(ProcessProxyRegistry* registry) override { |
| 87 for (int i = 0; i < kTestLineNum; i++) { | 87 for (int i = 0; i < kTestLineNum; i++) { |
| 88 EXPECT_TRUE(registry->SendInput(pid_, kTestLineToSend)); | 88 EXPECT_TRUE(registry->SendInput(pid_, kTestLineToSend)); |
| 89 } | 89 } |
| 90 } | 90 } |
| 91 | 91 |
| 92 private: | 92 private: |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 output_received_ = true; | 135 output_received_ = true; |
| 136 EXPECT_EQ(type, "stdout"); | 136 EXPECT_EQ(type, "stdout"); |
| 137 EXPECT_EQ(output, "p"); | 137 EXPECT_EQ(output, "p"); |
| 138 base::Process process = | 138 base::Process process = |
| 139 base::Process::DeprecatedGetProcessFromHandle(pid_); | 139 base::Process::DeprecatedGetProcessFromHandle(pid_); |
| 140 process.Terminate(0, true); | 140 process.Terminate(0, true); |
| 141 return; | 141 return; |
| 142 } | 142 } |
| 143 EXPECT_EQ("exit", type); | 143 EXPECT_EQ("exit", type); |
| 144 base::ThreadTaskRunnerHandle::Get()->PostTask( | 144 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 145 FROM_HERE, base::MessageLoop::QuitClosure()); | 145 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); |
| 146 } | 146 } |
| 147 | 147 |
| 148 void StartRegistryTest(ProcessProxyRegistry* registry) override { | 148 void StartRegistryTest(ProcessProxyRegistry* registry) override { |
| 149 EXPECT_TRUE(registry->SendInput(pid_, "p")); | 149 EXPECT_TRUE(registry->SendInput(pid_, "p")); |
| 150 } | 150 } |
| 151 | 151 |
| 152 private: | 152 private: |
| 153 bool output_received_; | 153 bool output_received_; |
| 154 }; | 154 }; |
| 155 | 155 |
| 156 class SigIntTestRunner : public TestRunner { | 156 class SigIntTestRunner : public TestRunner { |
| 157 public: | 157 public: |
| 158 ~SigIntTestRunner() override {} | 158 ~SigIntTestRunner() override {} |
| 159 | 159 |
| 160 void SetupExpectations(pid_t pid) override { pid_ = pid; } | 160 void SetupExpectations(pid_t pid) override { pid_ = pid; } |
| 161 | 161 |
| 162 void OnSomeRead(pid_t pid, | 162 void OnSomeRead(pid_t pid, |
| 163 const std::string& type, | 163 const std::string& type, |
| 164 const std::string& output) override { | 164 const std::string& output) override { |
| 165 EXPECT_EQ(pid_, pid); | 165 EXPECT_EQ(pid_, pid); |
| 166 // We may receive ^C on stdout, but we don't care about that, as long as we | 166 // We may receive ^C on stdout, but we don't care about that, as long as we |
| 167 // eventually received exit event. | 167 // eventually received exit event. |
| 168 if (type == "exit") { | 168 if (type == "exit") { |
| 169 base::ThreadTaskRunnerHandle::Get()->PostTask( | 169 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 170 FROM_HERE, base::MessageLoop::QuitClosure()); | 170 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); |
| 171 } | 171 } |
| 172 } | 172 } |
| 173 | 173 |
| 174 void StartRegistryTest(ProcessProxyRegistry* registry) override { | 174 void StartRegistryTest(ProcessProxyRegistry* registry) override { |
| 175 // Send SingInt and verify the process exited. | 175 // Send SingInt and verify the process exited. |
| 176 EXPECT_TRUE(registry->SendInput(pid_, "\003")); | 176 EXPECT_TRUE(registry->SendInput(pid_, "\003")); |
| 177 } | 177 } |
| 178 }; | 178 }; |
| 179 | 179 |
| 180 } // namespace | 180 } // namespace |
| (...skipping 23 matching lines...) Expand all Loading... |
| 204 EXPECT_NE(base::TERMINATION_STATUS_STILL_RUNNING, status); | 204 EXPECT_NE(base::TERMINATION_STATUS_STILL_RUNNING, status); |
| 205 if (status == base::TERMINATION_STATUS_STILL_RUNNING) { | 205 if (status == base::TERMINATION_STATUS_STILL_RUNNING) { |
| 206 base::Process process = | 206 base::Process process = |
| 207 base::Process::DeprecatedGetProcessFromHandle(pid_); | 207 base::Process::DeprecatedGetProcessFromHandle(pid_); |
| 208 process.Terminate(0, true); | 208 process.Terminate(0, true); |
| 209 } | 209 } |
| 210 | 210 |
| 211 registry_->ShutDown(); | 211 registry_->ShutDown(); |
| 212 | 212 |
| 213 base::ThreadTaskRunnerHandle::Get()->PostTask( | 213 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 214 FROM_HERE, base::MessageLoop::QuitClosure()); | 214 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); |
| 215 } | 215 } |
| 216 | 216 |
| 217 void RunTest() { | 217 void RunTest() { |
| 218 base::ThreadTaskRunnerHandle::Get()->PostTask( | 218 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 219 FROM_HERE, base::Bind(&ProcessProxyTest::InitRegistryTest, | 219 FROM_HERE, base::Bind(&ProcessProxyTest::InitRegistryTest, |
| 220 base::Unretained(this))); | 220 base::Unretained(this))); |
| 221 | 221 |
| 222 // Wait until all data from output watcher is received (QuitTask will be | 222 // Wait until all data from output watcher is received (QuitTask will be |
| 223 // fired on watcher thread). | 223 // fired on watcher thread). |
| 224 base::MessageLoop::current()->Run(); | 224 base::MessageLoop::current()->Run(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 254 } | 254 } |
| 255 | 255 |
| 256 // Test verifies that \003 message send to process is processed as SigInt. | 256 // Test verifies that \003 message send to process is processed as SigInt. |
| 257 // Timing out on the waterfall: http://crbug.com/115064 | 257 // Timing out on the waterfall: http://crbug.com/115064 |
| 258 TEST_F(ProcessProxyTest, DISABLED_SigInt) { | 258 TEST_F(ProcessProxyTest, DISABLED_SigInt) { |
| 259 test_runner_.reset(new SigIntTestRunner()); | 259 test_runner_.reset(new SigIntTestRunner()); |
| 260 RunTest(); | 260 RunTest(); |
| 261 } | 261 } |
| 262 | 262 |
| 263 } // namespace chromeos | 263 } // namespace chromeos |
| OLD | NEW |