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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/viz/common/resources/peak_gpu_memory_tracker_util.h"
#include "base/rand_util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace viz {
class PeakGpuMemoryUtilTest
: public ::testing::TestWithParam<SequenceLocation> {
public:
PeakGpuMemoryUtilTest() = default;
~PeakGpuMemoryUtilTest() override = default;
void SetUp() override {}
void TearDown() override {
// Resets counters.
SetSequenceNumberGeneratorForTesting(0, GetParam());
}
};
// Tests that sequence numbers are generated according to SequenceLocation.
// Extreme values are tested below in separate tests.
TEST_P(PeakGpuMemoryUtilTest, NextSequenceNumber) {
uint32_t sequence_num_generator = base::RandInt(1, INT_MAX - 1);
SequenceLocation sequence_location = GetParam();
SetSequenceNumberGeneratorForTesting(sequence_num_generator,
sequence_location);
uint32_t sequence_num_1 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_1),
sequence_location);
uint32_t sequence_num_2 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_2),
sequence_location);
uint32_t sequence_num_3 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_3),
sequence_location);
EXPECT_TRUE(sequence_num_1 != sequence_num_2 &&
sequence_num_1 != sequence_num_3 &&
sequence_num_2 != sequence_num_3);
}
// Tests that sequence numbers are generated according to SequenceLocation with
// sequence_num_generator as zero (extreme value).
TEST_P(PeakGpuMemoryUtilTest, SequenceNumberGeneratorZero) {
uint32_t sequence_num_generator = 0;
SequenceLocation sequence_location = GetParam();
SetSequenceNumberGeneratorForTesting(sequence_num_generator,
sequence_location);
uint32_t sequence_num_1 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_1),
sequence_location);
uint32_t sequence_num_2 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_2),
sequence_location);
uint32_t sequence_num_3 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_3),
sequence_location);
EXPECT_TRUE(sequence_num_1 != sequence_num_2 &&
sequence_num_1 != sequence_num_3 &&
sequence_num_2 != sequence_num_3);
}
// Tests that sequence numbers are generated according to SequenceLocation with
// sequence_num_generator as INT_MAX (extreme value).
TEST_P(PeakGpuMemoryUtilTest, SequenceNumberGeneratorIntMax) {
uint32_t sequence_num_generator = INT_MAX;
SequenceLocation sequence_location = GetParam();
SetSequenceNumberGeneratorForTesting(sequence_num_generator,
sequence_location);
uint32_t sequence_num_1 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_1),
sequence_location);
uint32_t sequence_num_2 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_2),
sequence_location);
uint32_t sequence_num_3 = GetNextSequenceNumber(sequence_location);
EXPECT_EQ(GetPeakMemoryUsageRequestLocation(sequence_num_3),
sequence_location);
EXPECT_TRUE(sequence_num_1 != sequence_num_2 &&
sequence_num_1 != sequence_num_3 &&
sequence_num_2 != sequence_num_3);
}
INSTANTIATE_TEST_SUITE_P(All,
PeakGpuMemoryUtilTest,
::testing::Values(SequenceLocation::kBrowserProcess,
SequenceLocation::kGpuProcess));
} // namespace viz
|