1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/tpcd_heuristics/opener_heuristic_metrics.h"
#include "base/functional/bind.h"
#include "base/functional/callback_forward.h"
#include "base/functional/callback_helpers.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "testing/gtest/include/gtest/gtest.h"
using base::TimeDelta;
namespace content {
TEST(OpenerHeuristicsMetricsTest, BucketizeHoursSinceLastInteraction) {
constexpr int kMaximum = base::Days(30).InHours();
// The input value is clamped to be between 0 and 30 days.
for (int time : {base::TimeDelta::Min().InHours(), 0}) {
EXPECT_EQ(Bucketize3PCDHeuristicSample(time, kMaximum), 0);
}
for (int time : {kMaximum, base::TimeDelta::Max().InHours()}) {
EXPECT_EQ(Bucketize3PCDHeuristicSample(time, kMaximum), kMaximum);
}
std::set<int32_t> seen_values;
int32_t last_value = 0;
for (int time = 0; time <= kMaximum; ++time) {
int32_t value = Bucketize3PCDHeuristicSample(time, kMaximum);
// Values get placed in increasing buckets
ASSERT_GE(value, last_value);
seen_values.insert(value);
last_value = value;
}
// Exactly 50 buckets
ASSERT_EQ(seen_values.size(), 50u);
}
// TODO(crbug.com/40281179): The test is flaky across platforms.
TEST(OpenerHeuristicsMetricsTest, DISABLED_BucketizeSecondsSinceCommitted) {
constexpr int64_t kMaximum = base::Minutes(3).InSeconds();
// The input value is clamped to be between 0 and 3 minutes.
for (int64_t time : {base::TimeDelta::Min().InSeconds(), int64_t{0}}) {
EXPECT_EQ(Bucketize3PCDHeuristicSample(time, kMaximum), 0);
}
for (int64_t time : {kMaximum, base::TimeDelta::Max().InSeconds()}) {
EXPECT_EQ(Bucketize3PCDHeuristicSample(time, kMaximum), kMaximum);
}
std::set<int32_t> seen_values;
int32_t last_value = 0;
for (int64_t time = 0; time <= kMaximum; ++time) {
int32_t value = Bucketize3PCDHeuristicSample(time, kMaximum);
// Values get placed in increasing buckets
ASSERT_GE(value, last_value);
seen_values.insert(value);
last_value = value;
}
// Exactly 50 buckets
ASSERT_EQ(seen_values.size(), 50u);
}
} // namespace content
|