| // 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/forensics/exceptions/handler/report_builder.h" | |
| #include <gtest/gtest.h> | |
| #include "src/lib/fsl/vmo/strings.h" | |
| namespace forensics { | |
| namespace exceptions { | |
| namespace handler { | |
| namespace { | |
| class CrashReportBuilderTest : public testing::Test { | |
| protected: | |
| // Use an invalid process/thread becuase we don't care about the specific name and koid of each. | |
| void SetUp() { builder_.SetProcess(zx::process{}).SetThread(zx::thread{}); } | |
| CrashReportBuilder builder_; | |
| }; | |
| TEST_F(CrashReportBuilderTest, SetsMinidump) { | |
| fsl::SizedVmo minidump_vmo; | |
| ASSERT_TRUE(fsl::VmoFromString("minidump", &minidump_vmo)); | |
| builder_.SetMinidump(std::move(minidump_vmo.vmo())); | |
| auto crash_report = builder_.Consume(); | |
| ASSERT_TRUE(crash_report.has_specific_report()); | |
| ASSERT_TRUE(crash_report.specific_report().is_native()); | |
| std::string minidump_content; | |
| ASSERT_TRUE( | |
| fsl::StringFromVmo(crash_report.specific_report().native().minidump(), &minidump_content)); | |
| EXPECT_STREQ(minidump_content.c_str(), "minidump"); | |
| } | |
| TEST_F(CrashReportBuilderTest, ProcessTerminated) { | |
| builder_.SetProcessTerminated(); | |
| auto crash_report = builder_.Consume(); | |
| ASSERT_TRUE(crash_report.has_specific_report()); | |
| ASSERT_TRUE(crash_report.specific_report().is_generic()); | |
| ASSERT_TRUE(crash_report.specific_report().generic().has_crash_signature()); | |
| EXPECT_EQ(crash_report.specific_report().generic().crash_signature(), | |
| "fuchsia-no-minidump-process-terminated"); | |
| } | |
| TEST_F(CrashReportBuilderTest, ExpiredException) { | |
| builder_.SetExceptionExpired(); | |
| auto crash_report = builder_.Consume(); | |
| ASSERT_TRUE(crash_report.has_specific_report()); | |
| ASSERT_TRUE(crash_report.specific_report().is_generic()); | |
| ASSERT_TRUE(crash_report.specific_report().generic().has_crash_signature()); | |
| EXPECT_EQ(crash_report.specific_report().generic().crash_signature(), | |
| "fuchsia-no-minidump-exception-expired"); | |
| } | |
| } // namespace | |
| } // namespace handler | |
| } // namespace exceptions | |
| } // namespace forensics |