Files
TheRock/compiler/amd-llvm/lldb/unittests/Target/SummaryStatisticsTest.cpp
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

59 lines
1.8 KiB
C++

#include "lldb/DataFormatters/TypeSummary.h"
#include "lldb/Target/Statistics.h"
#include "lldb/Utility/Stream.h"
#include "lldb/lldb-forward.h"
#include "lldb/lldb-private-enumerations.h"
#include "lldb/lldb-private.h"
#include "llvm/Testing/Support/Error.h"
#include "gtest/gtest.h"
#include <thread>
using namespace lldb_private;
using Duration = std::chrono::duration<double>;
class DummySummaryImpl : public lldb_private::TypeSummaryImpl {
public:
DummySummaryImpl()
: TypeSummaryImpl(TypeSummaryImpl::Kind::eSummaryString,
TypeSummaryImpl::Flags()) {}
std::string GetName() override { return "DummySummary"; }
std::string GetSummaryKindName() override { return "dummy"; }
std::string GetDescription() override { return ""; }
bool FormatObject(ValueObject *valobj, std::string &dest,
const TypeSummaryOptions &options) override {
return false;
}
};
TEST(MultithreadFormatting, Multithread) {
SummaryStatisticsCache statistics_cache;
DummySummaryImpl summary;
std::vector<std::thread> threads;
for (int i = 0; i < 10; ++i) {
threads.emplace_back(std::thread([&statistics_cache, &summary]() {
auto sp = statistics_cache.GetSummaryStatisticsForProvider(summary);
{
SummaryStatistics::SummaryInvocation invocation(sp);
std::this_thread::sleep_for(Duration(1));
}
}));
}
for (auto &thread : threads)
thread.join();
auto sp = statistics_cache.GetSummaryStatisticsForProvider(summary);
ASSERT_TRUE(sp->GetDurationReference().get().count() > 10);
ASSERT_TRUE(sp->GetSummaryCount() == 10);
std::string stats_as_json;
llvm::raw_string_ostream ss(stats_as_json);
ss << sp->ToJSON();
ASSERT_THAT(stats_as_json, ::testing::HasSubstr("\"name\":\"DummySummary\""));
ASSERT_THAT(stats_as_json, ::testing::HasSubstr("\"type\":\"dummy\""));
}