diff options
author | Abseil Team <absl-team@google.com> | 2021-05-06 20:08:01 -0700 |
---|---|---|
committer | Andy Getz <durandal@google.com> | 2021-05-07 13:51:04 -0400 |
commit | 079cf662544a14bd1cfaae6d6512645541ba10fb (patch) | |
tree | 99d164c0162508aa69ace6879d9a36f89e145065 /absl/strings/cordz_test.cc | |
parent | 70b29fe5a5c1752158830eabc9aa273718b477af (diff) | |
download | abseil-079cf662544a14bd1cfaae6d6512645541ba10fb.tar.gz abseil-079cf662544a14bd1cfaae6d6512645541ba10fb.tar.bz2 abseil-079cf662544a14bd1cfaae6d6512645541ba10fb.zip |
Export of internal Abseil changes
--
51e9291d9bc385082b4061fe760b236ba59c79c3 by Abseil Team <absl-team@google.com>:
Cast to uint64_t using braces instead of parentheses.
PiperOrigin-RevId: 372475909
--
939fc409855da2639dcaf2d1d4971ca0e0568d03 by Martijn Vels <mvels@google.com>:
Expand # flat nodes into size detailed counters.
PiperOrigin-RevId: 372474608
--
54b158c99b32f8a14821ce74fed0f9f836525ce7 by Martijn Vels <mvels@google.com>:
Make copies of sampled cords sampled as well
This applies to the following methods:
- Cord(const Cord&)
- operator=(const Cord&)
- Subcord(...)
PiperOrigin-RevId: 372468160
--
876c2581ce008871464e8b471efbb967d150f83b by Andy Getzendanner <durandal@google.com>:
Document the type of an ABSL_FLAGS.OnUpdate() callback.
PiperOrigin-RevId: 372406390
GitOrigin-RevId: 51e9291d9bc385082b4061fe760b236ba59c79c3
Change-Id: Ifb75122cae56b66c28128aee90a63bbb28d93817
Diffstat (limited to 'absl/strings/cordz_test.cc')
-rw-r--r-- | absl/strings/cordz_test.cc | 88 |
1 files changed, 78 insertions, 10 deletions
diff --git a/absl/strings/cordz_test.cc b/absl/strings/cordz_test.cc index aeb3d13f..0e11f5c8 100644 --- a/absl/strings/cordz_test.cc +++ b/absl/strings/cordz_test.cc @@ -67,6 +67,13 @@ absl::string_view MakeString(TestCordSize size) { return MakeString(Length(size)); } +// Returns a cord with a sampled method of kAppendString. +absl::Cord MakeAppendStringCord(TestCordSize size) { + absl::Cord cord; + cord.Append(MakeString(size)); + return cord; +} + std::string TestParamToString(::testing::TestParamInfo<TestCordSize> size) { return absl::StrCat("On", ToString(size.param), "Cord"); } @@ -136,6 +143,16 @@ TEST(CordzTest, CopyConstruct) { EXPECT_THAT(cord, HasValidCordzInfoOf(Method::kConstructorCord)); } +TEST(CordzTest, CopyConstructFromSampled) { + CordzSamplingIntervalHelper sample_every{1}; + Cord src(MakeString(TestCordSize::kLarge)); + Cord cord(src); + ASSERT_THAT(cord, HasValidCordzInfoOf(Method::kConstructorCord)); + CordzStatistics stats = GetCordzInfoForTesting(cord)->GetCordzStatistics(); + EXPECT_THAT(stats.parent_method, Eq(Method::kConstructorString)); + EXPECT_THAT(stats.update_tracker.Value(Method::kConstructorString), Eq(1)); +} + TEST(CordzTest, MoveConstruct) { CordzSamplingIntervalHelper sample_every{1}; Cord src(MakeString(TestCordSize::kLarge)); @@ -146,7 +163,43 @@ TEST(CordzTest, MoveConstruct) { TEST_P(CordzUpdateTest, AssignCord) { Cord src = UnsampledCord(MakeString(TestCordSize::kLarge)); cord() = src; - EXPECT_THAT(cord(), HasValidCordzInfoOf(InitialOr(Method::kAssignCord))); + EXPECT_THAT(cord(), HasValidCordzInfoOf(Method::kAssignCord)); + CordzStatistics stats = GetCordzInfoForTesting(cord())->GetCordzStatistics(); + EXPECT_THAT(stats.update_tracker.Value(Method::kConstructorString), Eq(0)); +} + +TEST_P(CordzUpdateTest, AssignSampledCord) { + Cord src = MakeAppendStringCord(TestCordSize::kLarge); + cord() = src; + ASSERT_THAT(cord(), HasValidCordzInfoOf(Method::kAssignCord)); + CordzStatistics stats = GetCordzInfoForTesting(cord())->GetCordzStatistics(); + EXPECT_THAT(stats.parent_method, Eq(Method::kAppendString)); + EXPECT_THAT(stats.update_tracker.Value(Method::kAppendString), Eq(1)); + EXPECT_THAT(stats.update_tracker.Value(Method::kConstructorString), Eq(0)); +} + +TEST(CordzUpdateTest, AssignSampledCordToUnsampledCord) { + CordzSamplingIntervalHelper sample_every{1}; + Cord src = MakeAppendStringCord(TestCordSize::kLarge); + Cord cord = UnsampledCord(MakeString(TestCordSize::kLarge)); + cord = src; + ASSERT_THAT(cord, HasValidCordzInfoOf(Method::kAssignCord)); + CordzStatistics stats = GetCordzInfoForTesting(cord)->GetCordzStatistics(); + EXPECT_THAT(stats.parent_method, Eq(Method::kAppendString)); + EXPECT_THAT(stats.update_tracker.Value(Method::kAppendString), Eq(1)); + EXPECT_THAT(stats.update_tracker.Value(Method::kConstructorString), Eq(0)); +} + +TEST(CordzUpdateTest, AssignSampledCordToSampledCord) { + CordzSamplingIntervalHelper sample_every{1}; + Cord src = MakeAppendStringCord(TestCordSize::kLarge); + Cord cord(MakeString(TestCordSize::kLarge)); + cord = src; + ASSERT_THAT(cord, HasValidCordzInfoOf(Method::kAssignCord)); + CordzStatistics stats = GetCordzInfoForTesting(cord)->GetCordzStatistics(); + EXPECT_THAT(stats.parent_method, Eq(Method::kAppendString)); + EXPECT_THAT(stats.update_tracker.Value(Method::kAppendString), Eq(1)); + EXPECT_THAT(stats.update_tracker.Value(Method::kConstructorString), Eq(0)); } TEST(CordzTest, AssignInlinedCord) { @@ -160,7 +213,7 @@ TEST(CordzTest, AssignInlinedCord) { EXPECT_FALSE(CordzInfoIsListed(info)); } -TEST(CordzTest, MoveAssignCord) { +TEST(CordzUpdateTest, MoveAssignCord) { CordzSamplingIntervalHelper sample_every{1}; Cord cord; Cord src(MakeString(TestCordSize::kLarge)); @@ -168,6 +221,11 @@ TEST(CordzTest, MoveAssignCord) { EXPECT_THAT(cord, HasValidCordzInfoOf(Method::kConstructorString)); } +TEST_P(CordzUpdateTest, AssignLargeArray) { + cord() = MakeString(TestCordSize::kSmall); + EXPECT_THAT(cord(), HasValidCordzInfoOf(Method::kAssignString)); +} + TEST_P(CordzUpdateTest, AssignSmallArray) { cord() = MakeString(TestCordSize::kSmall); EXPECT_THAT(cord(), HasValidCordzInfoOf(Method::kAssignString)); @@ -333,16 +391,26 @@ TEST(CordzTest, RemoveSuffix) { TEST(CordzTest, SubCord) { CordzSamplingIntervalHelper sample_every{1}; - Cord src(MakeString(TestCordSize::kLarge)); - - Cord cord1 = src.Subcord(10, src.size() / 2); - EXPECT_THAT(cord1, HasValidCordzInfoOf(Method::kSubCord)); + Cord src = UnsampledCord(MakeString(TestCordSize::kLarge)); + Cord cord = src.Subcord(10, src.size() / 2); + EXPECT_THAT(cord, HasValidCordzInfoOf(Method::kSubCord)); +} - Cord cord2 = src.Subcord(10, kMaxInline + 1); - EXPECT_THAT(cord2, HasValidCordzInfoOf(Method::kSubCord)); +TEST(CordzTest, SmallSubCord) { + CordzSamplingIntervalHelper sample_every{1}; + Cord src = UnsampledCord(MakeString(TestCordSize::kLarge)); + Cord cord = src.Subcord(10, kMaxInline + 1); + EXPECT_THAT(cord, HasValidCordzInfoOf(Method::kSubCord)); +} - Cord cord3 = src.Subcord(10, kMaxInline); - EXPECT_THAT(GetCordzInfoForTesting(cord3), Eq(nullptr)); +TEST(CordzTest, SubCordFromSampledCord) { + CordzSamplingIntervalHelper sample_every{1}; + Cord src(MakeString(TestCordSize::kLarge)); + Cord cord = src.Subcord(10, src.size() / 2); + EXPECT_THAT(cord, HasValidCordzInfoOf(Method::kSubCord)); + CordzStatistics stats = GetCordzInfoForTesting(cord)->GetCordzStatistics(); + EXPECT_THAT(stats.parent_method, Eq(Method::kConstructorString)); + EXPECT_THAT(stats.update_tracker.Value(Method::kConstructorString), Eq(1)); } } // namespace |