diff options
Diffstat (limited to 'lib/scudo/standalone/tests')
-rw-r--r-- | lib/scudo/standalone/tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lib/scudo/standalone/tests/stats_test.cc | 45 |
2 files changed, 46 insertions, 0 deletions
diff --git a/lib/scudo/standalone/tests/CMakeLists.txt b/lib/scudo/standalone/tests/CMakeLists.txt index 82fc923c5..908e51089 100644 --- a/lib/scudo/standalone/tests/CMakeLists.txt +++ b/lib/scudo/standalone/tests/CMakeLists.txt @@ -54,6 +54,7 @@ set(SCUDO_UNIT_TEST_SOURCES list_test.cc map_test.cc mutex_test.cc + stats_test.cc vector_test.cc scudo_unit_test_main.cc) diff --git a/lib/scudo/standalone/tests/stats_test.cc b/lib/scudo/standalone/tests/stats_test.cc new file mode 100644 index 000000000..9ed105d3d --- /dev/null +++ b/lib/scudo/standalone/tests/stats_test.cc @@ -0,0 +1,45 @@ +//===-- stats_test.cc -------------------------------------------*- 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 "scudo/standalone/stats.h" +#include "gtest/gtest.h" + +TEST(ScudoStatsTest, LocalStats) { + scudo::LocalStats LStats; + LStats.init(); + for (scudo::uptr I = 0; I < scudo::StatCount; I++) + EXPECT_EQ(LStats.get(static_cast<scudo::StatType>(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<scudo::StatType>(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); +} |