blob: 895615f266d249c9f7b95a2d56b3d74562332ef3 [file] [log] [blame]
// Copyright 2019 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/console/commands/verb_sym_stat.h"
#include <gtest/gtest.h>
#include "src/developer/debug/shared/platform_message_loop.h"
#include "src/developer/debug/zxdb/client/mock_remote_api.h"
#include "src/developer/debug/zxdb/client/process.h"
#include "src/developer/debug/zxdb/console/console_test.h"
#include "src/developer/debug/zxdb/symbols/loaded_module_symbols.h"
#include "src/developer/debug/zxdb/symbols/mock_source_file_provider.h"
#include "src/developer/debug/zxdb/symbols/process_symbols.h"
namespace zxdb {
namespace {
class VerbSymStat : public ConsoleTest {};
} // namespace
TEST_F(VerbSymStat, SymStat) {
console().ProcessInputLine("attach 1234");
auto event = console().GetOutputEvent();
ASSERT_EQ(MockConsole::OutputEvent::Type::kOutput, event.type);
ASSERT_EQ("Attached Process 2 state=Running koid=1234 name=<mock>", event.output.AsString());
auto target = console().context().GetActiveTarget();
ASSERT_NE(nullptr, target);
ASSERT_NE(nullptr, target->GetProcess());
target->GetProcess()->GetSymbols()->InjectModuleForTesting(
"fakelib", "abc123", std::make_unique<LoadedModuleSymbols>(nullptr, "abc123", 0, 0));
loop().RunUntilNoTasks();
console().FlushOutputEvents();
auto download = session().system().InjectDownloadForTesting("abc123");
event = console().GetOutputEvent();
EXPECT_EQ("Downloading symbols...", event.output.AsString());
console().ProcessInputLine("sym-stat");
event = console().GetOutputEvent();
ASSERT_EQ(MockConsole::OutputEvent::Type::kOutput, event.type);
auto text = event.output.AsString();
EXPECT_NE(text.find("Process 2 symbol status"), std::string::npos);
EXPECT_NE(text.find("Build ID: abc123 (Downloading...)"), std::string::npos);
// Releasing the download will cause it to register a failure.
download = nullptr;
event = console().GetOutputEvent();
EXPECT_EQ("Symbol downloading complete. 0 succeeded, 1 failed.", event.output.AsString());
}
} // namespace zxdb