//===-- stats_test.cpp ------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "tests/scudo_unit_test.h" #include "stats.h" TEST(ScudoStatsTest, LocalStats) { scudo::LocalStats LStats; LStats.init(); for (scudo::uptr I = 0; I < scudo::StatCount; I++) EXPECT_EQ(LStats.get(static_cast(I)), 0U); LStats.add(scudo::StatAllocated, 4096U); EXPECT_EQ(LStats.get(scudo::StatAllocated), 4096U); LStats.sub(scudo::StatAllocated, 4096U); EXPECT_EQ(LStats.get(scudo::StatAllocated), 0U); LStats.set(scudo::StatAllocated, 4096U); EXPECT_EQ(LStats.get(scudo::StatAllocated), 4096U); } TEST(ScudoStatsTest, GlobalStats) { scudo::GlobalStats GStats; GStats.init(); scudo::uptr Counters[scudo::StatCount] = {}; GStats.get(Counters); for (scudo::uptr I = 0; I < scudo::StatCount; I++) EXPECT_EQ(Counters[I], 0U); scudo::LocalStats LStats; LStats.init(); GStats.link(&LStats); for (scudo::uptr I = 0; I < scudo::StatCount; I++) LStats.add(static_cast(I), 4096U); GStats.get(Counters); for (scudo::uptr I = 0; I < scudo::StatCount; I++) EXPECT_EQ(Counters[I], 4096U); // Unlinking the local stats move numbers to the global stats. GStats.unlink(&LStats); GStats.get(Counters); for (scudo::uptr I = 0; I < scudo::StatCount; I++) EXPECT_EQ(Counters[I], 4096U); }