10ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET/* 20ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * Copyright (C) 2015 The Android Open Source Project 30ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * 40ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * Licensed under the Apache License, Version 2.0 (the "License"); 50ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * you may not use this file except in compliance with the License. 60ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * You may obtain a copy of the License at 70ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * 80ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * http://www.apache.org/licenses/LICENSE-2.0 90ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * 100ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * Unless required by applicable law or agreed to in writing, software 110ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * distributed under the License is distributed on an "AS IS" BASIS, 120ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * See the License for the specific language governing permissions and 140ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET * limitations under the License. 150ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET */ 160ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET 170ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET#include <gtest/gtest.h> 180ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET 190ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET#include "collectors/cpu_usage_collector.h" 200ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET#include "metrics/metrics_library_mock.h" 210ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET 220ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET 230ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNETTEST(CpuUsageTest, ParseProcStat) { 240ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET MetricsLibraryMock metrics_lib_mock; 250ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET CpuUsageCollector collector(&metrics_lib_mock); 260ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET std::vector<std::string> invalid_contents = { 270ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET "", 280ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET // First line does not start with cpu. 290ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET "spu 17191 11 36579 151118 289 0 2 0 0 0\n" 300ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET "cpu0 1564 2 866 48650 68 0 2 0 0 0\n" 310ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET "cpu1 14299 0 35116 1844 81 0 0 0 0 0\n", 320ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET // One of the field is not a number. 330ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET "cpu a17191 11 36579 151118 289 0 2 0 0 0", 340ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET // To many numbers in the first line. 350ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET "cpu 17191 11 36579 151118 289 0 2 0 0 0 102" 360ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET }; 370ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET 380ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET uint64_t user, nice, system; 390ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET for (int i = 0; i < invalid_contents.size(); i++) { 400ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET ASSERT_FALSE(collector.ParseProcStat(invalid_contents[i], &user, &nice, 410ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET &system)); 420ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET } 430ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET 440ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET ASSERT_TRUE(collector.ParseProcStat( 450ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET std::string("cpu 17191 11 36579 151118 289 0 2 0 0 0"), 460ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET &user, &nice, &system)); 470ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET ASSERT_EQ(17191, user); 480ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET ASSERT_EQ(11, nice); 490ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET ASSERT_EQ(36579, system); 500ada2ca1dc2b275318cb134cc9a02b42687ed19fBertrand SIMONNET} 51