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
59 lines
1.8 KiB
C++
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\""));
|
|
}
|