/* * Copyright (c) 2021, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef CPP_WATCHDOG_SERVER_TESTS_UIDPROCSTATSCOLLECTORTESTUTILS_H_ #define CPP_WATCHDOG_SERVER_TESTS_UIDPROCSTATSCOLLECTORTESTUTILS_H_ #include "UidProcStatsCollector.h" #include namespace android { namespace automotive { namespace watchdog { MATCHER(CpuCyclesByTidEq, "") { const auto& actual = std::get<0>(arg); const auto& expected = std::get<1>(arg); return actual.first == expected.first && actual.second == expected.second; } MATCHER_P(ProcessStatsEq, expected, "") { const auto& actual = arg; return ::testing::Value(actual.comm, ::testing::Eq(expected.comm)) && ::testing::Value(actual.startTimeMillis, ::testing::Eq(expected.startTimeMillis)) && ::testing::Value(actual.cpuTimeMillis, ::testing::Eq(expected.cpuTimeMillis)) && ::testing::Value(actual.totalCpuCycles, ::testing::Eq(expected.totalCpuCycles)) && ::testing::Value(actual.totalMajorFaults, ::testing::Eq(expected.totalMajorFaults)) && ::testing::Value(actual.totalTasksCount, ::testing::Eq(expected.totalTasksCount)) && ::testing::Value(actual.ioBlockedTasksCount, ::testing::Eq(expected.ioBlockedTasksCount)) && ::testing::Value(actual.cpuCyclesByTid, ::testing::UnorderedPointwise(CpuCyclesByTidEq(), expected.cpuCyclesByTid)) && ::testing::Value(actual.rssKb, ::testing::Eq(expected.rssKb)) && ::testing::Value(actual.pssKb, ::testing::Eq(expected.pssKb)) && ::testing::Value(actual.ussKb, ::testing::Eq(expected.ussKb)) && ::testing::Value(actual.swapPssKb, ::testing::Eq(expected.swapPssKb)); } MATCHER(ProcessStatsByPidEq, "") { const auto& actual = std::get<0>(arg); const auto& expected = std::get<1>(arg); return actual.first == expected.first && ::testing::Value(actual.second, ProcessStatsEq(expected.second)); } MATCHER_P(UidProcStatsEq, expected, "") { const auto& actual = arg; return ::testing::Value(actual.cpuTimeMillis, ::testing::Eq(expected.cpuTimeMillis)) && ::testing::Value(actual.cpuCycles, ::testing::Eq(expected.cpuCycles)) && ::testing::Value(actual.totalMajorFaults, ::testing::Eq(expected.totalMajorFaults)) && ::testing::Value(actual.totalTasksCount, ::testing::Eq(expected.totalTasksCount)) && ::testing::Value(actual.ioBlockedTasksCount, ::testing::Eq(expected.ioBlockedTasksCount)) && ::testing::Value(actual.totalRssKb, ::testing::Eq(expected.totalRssKb)) && ::testing::Value(actual.totalPssKb, ::testing::Eq(expected.totalPssKb)) && ::testing::Value(actual.processStatsByPid, ::testing::UnorderedPointwise(ProcessStatsByPidEq(), expected.processStatsByPid)); } } // namespace watchdog } // namespace automotive } // namespace android #endif // CPP_WATCHDOG_SERVER_TESTS_UIDPROCSTATSCOLLECTORTESTUTILS_H_