123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- // Copyright 2022 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "services/device/compute_pressure/core_times.h"
- #include <vector>
- #include "testing/gtest/include/gtest/gtest.h"
- namespace device {
- using CoreTimesTest = testing::Test;
- TEST_F(CoreTimesTest, TimeUtilization_Balanced) {
- CoreTimes baseline({105, 205, 305, 405, 505, 605, 705, 805, 905, 1005});
- std::vector<CoreTimes> test_cases = {
- // Individual components get summed up correctly.
- CoreTimes({115, 205, 305, 415, 505, 605, 705, 805, 905, 1005}),
- CoreTimes({105, 215, 305, 415, 505, 605, 705, 805, 905, 1005}),
- CoreTimes({105, 205, 315, 415, 505, 605, 705, 805, 905, 1005}),
- CoreTimes({105, 205, 305, 415, 505, 615, 705, 805, 905, 1005}),
- CoreTimes({105, 205, 305, 415, 505, 605, 715, 805, 905, 1005}),
- CoreTimes({105, 205, 305, 415, 505, 605, 705, 815, 905, 1005}),
- // Ignored components are not added to the sum.
- CoreTimes({115, 205, 305, 415, 595, 605, 705, 805, 905, 1005}),
- CoreTimes({115, 205, 305, 415, 505, 605, 705, 805, 995, 1005}),
- CoreTimes({115, 205, 305, 415, 505, 605, 705, 805, 905, 1095}),
- // Negative changes in ignored components are not flagged.
- CoreTimes({115, 205, 305, 415, 500, 605, 705, 805, 905, 1005}),
- CoreTimes({115, 205, 305, 415, 505, 605, 705, 805, 900, 1005}),
- CoreTimes({115, 205, 305, 415, 505, 605, 705, 805, 905, 1000}),
- };
- for (const CoreTimes& times : test_cases) {
- SCOPED_TRACE(times.times_);
- EXPECT_EQ(0.5, times.TimeUtilization(baseline));
- }
- }
- TEST_F(CoreTimesTest, TimeUtilization_EmptyRange) {
- CoreTimes baseline({105, 205, 305, 405, 505, 605, 705, 805, 905, 1005});
- std::vector<CoreTimes> test_cases = {
- // Identical times.
- CoreTimes({105, 205, 305, 405, 505, 605, 705, 805, 905, 1005}),
- // Changes in ignored components.
- CoreTimes({105, 205, 305, 405, 515, 605, 705, 805, 905, 1005}),
- CoreTimes({105, 205, 305, 405, 505, 605, 705, 805, 915, 1005}),
- CoreTimes({105, 205, 305, 405, 505, 605, 705, 805, 905, 1015}),
- };
- for (const CoreTimes& times : test_cases) {
- SCOPED_TRACE(times.times_);
- EXPECT_EQ(-1, times.TimeUtilization(baseline));
- }
- }
- TEST_F(CoreTimesTest, TimeUtilization_NegativeRange) {
- CoreTimes baseline({105, 205, 305, 405, 505, 605, 705, 805, 905, 1005});
- std::vector<CoreTimes> test_cases = {
- CoreTimes({100, 205, 305, 415, 505, 605, 705, 805, 905, 1005}),
- CoreTimes({105, 200, 305, 415, 505, 605, 705, 805, 905, 1005}),
- CoreTimes({105, 205, 300, 415, 505, 605, 705, 805, 905, 1005}),
- CoreTimes({115, 205, 305, 400, 505, 605, 705, 805, 905, 1005}),
- CoreTimes({105, 205, 305, 415, 505, 600, 705, 805, 905, 1005}),
- CoreTimes({105, 205, 305, 415, 505, 605, 700, 805, 905, 1005}),
- CoreTimes({105, 205, 305, 415, 505, 605, 705, 800, 905, 1005}),
- };
- for (const CoreTimes& times : test_cases) {
- SCOPED_TRACE(times.times_);
- EXPECT_EQ(-1, times.TimeUtilization(baseline));
- }
- }
- TEST_F(CoreTimesTest, TimeUtilization_Computation) {
- CoreTimes baseline({105, 205, 305, 405, 505, 605, 705, 805, 905, 1005});
- struct TestCase {
- CoreTimes times;
- double utilization;
- };
- std::vector<TestCase> test_cases = {
- // No idling.
- {CoreTimes({115, 205, 305, 405, 505, 605, 705, 805, 905, 1005}), 1.0},
- {CoreTimes({115, 215, 305, 405, 505, 605, 705, 805, 905, 1005}), 1.0},
- {CoreTimes({115, 215, 315, 405, 505, 605, 705, 805, 905, 1005}), 1.0},
- {CoreTimes({115, 215, 315, 405, 505, 615, 705, 805, 905, 1005}), 1.0},
- {CoreTimes({115, 215, 315, 405, 505, 615, 715, 805, 905, 1005}), 1.0},
- {CoreTimes({115, 215, 315, 405, 505, 615, 715, 815, 905, 1005}), 1.0},
- // All idling.
- {CoreTimes({105, 205, 305, 415, 505, 605, 705, 805, 905, 1005}), 0.0},
- // Fractions
- {CoreTimes({115, 225, 305, 415, 505, 605, 705, 805, 905, 1005}), 0.75},
- {CoreTimes({115, 225, 345, 415, 505, 605, 705, 805, 905, 1005}), 0.875},
- {CoreTimes({115, 205, 305, 435, 505, 605, 705, 805, 905, 1005}), 0.25},
- {CoreTimes({115, 205, 305, 475, 505, 605, 705, 805, 905, 1005}), 0.125},
- };
- for (const TestCase& test_case : test_cases) {
- SCOPED_TRACE(test_case.times.times_);
- EXPECT_EQ(test_case.utilization, test_case.times.TimeUtilization(baseline));
- }
- }
- } // namespace device
|