blob: 800388ff69497547e1bddd9de0b3f7f7b94cc66e [file] [log] [blame]
// Copyright 2020 The Fuchsia 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 "src/developer/debug/zxdb/debug_adapter/context_test.h"
#include <memory>
#include <gmock/gmock.h>
#include "src/developer/debug/zxdb/console/mock_console.h"
namespace zxdb {
constexpr uint64_t DebugAdapterContextTest::kProcessKoid;
constexpr uint64_t DebugAdapterContextTest::kThreadKoid;
class MockWriter : public debug::StreamBuffer::Writer {
public:
MOCK_METHOD(size_t, ConsumeStreamBufferData, (const char* data, size_t len));
};
void DebugAdapterContextTest::SetUp() {
RemoteAPITest::SetUp();
console_ = std::make_unique<MockConsole>(&session());
console_->EnableOutput();
context_ = std::make_unique<DebugAdapterContext>(console_.get(), pipe_.end1());
client_ = dap::Session::create();
client_->connect(std::make_shared<DebugAdapterReader>(pipe_.end2()),
std::make_shared<DebugAdapterWriter>(pipe_.end2()));
// Eat the output from process attaching (this is asynchronously appended).
loop().RunUntilNoTasks();
}
void DebugAdapterContextTest::TearDown() {
client_.reset();
context_.reset();
console_.reset();
RemoteAPITest::TearDown();
}
void DebugAdapterContextTest::SetUpConnectedContext() {
debug::StreamBuffer stream;
MockWriter writer;
stream.set_writer(&writer);
session().set_stream(&stream);
}
void DebugAdapterContextTest::InitializeDebugging() {
// Send initialize request from the client.
auto response = client().send(dap::InitializeRequest{});
// Run server to process request
context().OnStreamReadable();
// Run client twice to receive initialize response and event.
RunClient();
RunClient();
response.get();
}
} // namespace zxdb