| Index: experimental/windows_debugger/debugger/core/debug_execution_engine_test.cc
|
| diff --git a/experimental/windows_debugger/debugger/core/debug_execution_engine_test.cc b/experimental/windows_debugger/debugger/core/debug_execution_engine_test.cc
|
| deleted file mode 100644
|
| index 58d9a9b7e25e23dafc407afedf01b19959f7d902..0000000000000000000000000000000000000000
|
| --- a/experimental/windows_debugger/debugger/core/debug_execution_engine_test.cc
|
| +++ /dev/null
|
| @@ -1,193 +0,0 @@
|
| -// Copyright (c) 2011 The Native Client Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -#include "debugger/core/debug_api_mock2.h"
|
| -#include "debugger/core/debug_breakpoint.h"
|
| -#include "debugger/core/debug_event.h"
|
| -#include "debugger/core/debug_execution_engine.h"
|
| -#include "debugger/core/debuggee_process.h"
|
| -
|
| -#include "gtest/gtest.h"
|
| -
|
| -namespace {
|
| -const debug::IDebuggeeProcess* kNullProcess =
|
| - reinterpret_cast<debug::IDebuggeeProcess*>(NULL);
|
| -
|
| -class TestableDebuggeeProcess : public debug::DebuggeeProcess {
|
| - public:
|
| - TestableDebuggeeProcess(int id,
|
| - HANDLE handle,
|
| - HANDLE file_handle,
|
| - debug::DebugAPI* debug_api)
|
| - : debug::DebuggeeProcess(id,
|
| - handle,
|
| - file_handle,
|
| - debug_api),
|
| - killed_(false) {
|
| - }
|
| -
|
| - bool Kill() {
|
| - killed_ = true;
|
| - state_ = kDead;
|
| - return true;
|
| - }
|
| -
|
| - void OnDebugEvent(debug::DebugEvent* debug_event) {
|
| - debug::DebuggeeProcess::OnDebugEvent(debug_event);
|
| - if (killed_)
|
| - state_ = kDead;
|
| - }
|
| -
|
| - bool killed_;
|
| -};
|
| -
|
| -class TestExecutionEngine : public debug::ExecutionEngine {
|
| - public:
|
| - explicit TestExecutionEngine(debug::DebugAPI* debug_api)
|
| - : debug::ExecutionEngine(debug_api) {
|
| - }
|
| -
|
| - debug::IDebuggeeProcess* CreateDebuggeeProcess(int id,
|
| - HANDLE handle,
|
| - HANDLE file_handle) {
|
| - return new TestableDebuggeeProcess(id,
|
| - handle,
|
| - file_handle,
|
| - &debug_api());
|
| - }
|
| - size_t GetProcessesNum() const {
|
| - std::deque<int> processes;
|
| - GetProcessIds(&processes);
|
| - return processes.size();
|
| - }
|
| -};
|
| -
|
| -class ExecutionEngineTest : public ::testing::Test {
|
| - public:
|
| - ExecutionEngineTest() {
|
| - exec_eng_ = new TestExecutionEngine(&fake_debug_api_);
|
| - }
|
| -
|
| - ~ExecutionEngineTest() {
|
| - delete exec_eng_;
|
| - }
|
| -
|
| - TestExecutionEngine* exec_eng_;
|
| - debug::DebugAPIMock2 fake_debug_api_;
|
| -};
|
| -
|
| -TEST_F(ExecutionEngineTest, SimpleAccessors) {
|
| - int halted_pid = 0;
|
| - EXPECT_FALSE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| - EXPECT_EQ(0, halted_pid);
|
| - EXPECT_EQ(NULL, exec_eng_->GetProcess(1));
|
| -
|
| - std::deque<int> pids;
|
| - exec_eng_->GetProcessIds(&pids);
|
| - EXPECT_EQ(0, pids.size());
|
| -}
|
| -
|
| -TEST_F(ExecutionEngineTest, StartProcess) {
|
| - EXPECT_TRUE(exec_eng_->StartProcess("a.exe", NULL));
|
| -
|
| - std::deque<debug::DebugAPIMock::FunctionId> call_list;
|
| - call_list.push_back(debug::DebugAPIMock::kCreateProcess);
|
| - call_list.push_back(debug::DebugAPIMock::kCloseHandle);
|
| - call_list.push_back(debug::DebugAPIMock::kCloseHandle);
|
| - EXPECT_TRUE(fake_debug_api_.CompareCallSequence(call_list));
|
| -}
|
| -
|
| -TEST_F(ExecutionEngineTest, AttachToProcess) {
|
| - EXPECT_TRUE(exec_eng_->AttachToProcess(0));
|
| - std::deque<debug::DebugAPIMock::FunctionId> call_list;
|
| - call_list.push_back(debug::DebugAPIMock::kDebugActiveProcess);
|
| - EXPECT_TRUE(fake_debug_api_.CompareCallSequence(call_list));
|
| -}
|
| -
|
| -TEST_F(ExecutionEngineTest, WaitForDebugEventAndDispatchIt) {
|
| - int halted_pid = 0;
|
| - EXPECT_FALSE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| - EXPECT_EQ(0, halted_pid);
|
| -}
|
| -
|
| -TEST_F(ExecutionEngineTest, CreateAndExit) {
|
| - DEBUG_EVENT de;
|
| - memset(&de, 0, sizeof(de));
|
| - de.dwDebugEventCode = CREATE_PROCESS_DEBUG_EVENT;
|
| - de.dwProcessId = 1;
|
| - de.dwThreadId = 2;
|
| - fake_debug_api_.events_.push_back(de);
|
| -
|
| - DEBUG_EVENT de2;
|
| - memset(&de2, 0, sizeof(de2));
|
| - de2.dwProcessId = 1;
|
| - de2.dwThreadId = 2;
|
| - de2.dwDebugEventCode = EXIT_PROCESS_DEBUG_EVENT;
|
| - fake_debug_api_.events_.push_back(de2);
|
| -
|
| - int halted_pid = 0;
|
| - EXPECT_TRUE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| - EXPECT_EQ(1, halted_pid);
|
| - DEBUG_EVENT* de3 = &exec_eng_->debug_event().windows_debug_event();
|
| - EXPECT_EQ(0, memcmp(&de, de3, sizeof(de)));
|
| - EXPECT_NE(kNullProcess, exec_eng_->GetProcess(1));
|
| -
|
| - EXPECT_TRUE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| - EXPECT_EQ(1, halted_pid);
|
| -
|
| - EXPECT_EQ(1, exec_eng_->GetProcessesNum());
|
| - exec_eng_->GetProcess(1)->Continue();
|
| - EXPECT_EQ(1, exec_eng_->GetProcessesNum());
|
| - EXPECT_FALSE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| - EXPECT_EQ(0, exec_eng_->GetProcessesNum());
|
| -}
|
| -
|
| -TEST_F(ExecutionEngineTest, GetProcesses) {
|
| - DEBUG_EVENT de;
|
| - memset(&de, 0, sizeof(de));
|
| - de.dwDebugEventCode = CREATE_PROCESS_DEBUG_EVENT;
|
| - de.dwProcessId = 1;
|
| - de.dwThreadId = 2;
|
| - fake_debug_api_.events_.push_back(de);
|
| -
|
| - de.dwProcessId = 3;
|
| - de.dwThreadId = 4;
|
| - fake_debug_api_.events_.push_back(de);
|
| -
|
| - DEBUG_EVENT de2;
|
| - memset(&de2, 0, sizeof(de2));
|
| - de2.dwProcessId = 1;
|
| - de2.dwThreadId = 2;
|
| - de2.dwDebugEventCode = EXIT_PROCESS_DEBUG_EVENT;
|
| - fake_debug_api_.events_.push_back(de2);
|
| -
|
| - int halted_pid = NULL;
|
| - EXPECT_TRUE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| - EXPECT_EQ(1, halted_pid);
|
| -
|
| - EXPECT_TRUE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| - EXPECT_EQ(3, halted_pid);
|
| -
|
| - std::deque<int> processes;
|
| - exec_eng_->GetProcessIds(&processes);
|
| - ASSERT_EQ(2, processes.size());
|
| - EXPECT_EQ(1, exec_eng_->GetProcess(processes[0])->id());
|
| - EXPECT_EQ(3, exec_eng_->GetProcess(processes[1])->id());
|
| -
|
| - // exit process pid=1
|
| - EXPECT_TRUE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| - EXPECT_EQ(1, halted_pid);
|
| -
|
| - debug::IDebuggeeProcess* proc1 = exec_eng_->GetProcess(1);
|
| - debug::IDebuggeeProcess* proc2 = exec_eng_->GetProcess(3);
|
| -
|
| - EXPECT_EQ(2, exec_eng_->GetProcessesNum());
|
| - exec_eng_->GetProcess(1)->Continue();
|
| - EXPECT_EQ(2, exec_eng_->GetProcessesNum());
|
| -
|
| - EXPECT_FALSE(exec_eng_->WaitForDebugEventAndDispatchIt(20, &halted_pid));
|
| -// exec_eng_->RemoveDeadProcesses();
|
| - EXPECT_EQ(1, exec_eng_->GetProcessesNum());
|
| -}
|
| -} // namespace
|
| -
|
|
|