Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1342)

Unified Diff: chrome/browser/extensions/api/system_info_cpu/cpu_info_provider_unittest.cc

Issue 15817008: Move systemInfo.cpu API out out experimental namespace. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/system_info_cpu/cpu_info_provider_unittest.cc
diff --git a/chrome/browser/extensions/api/system_info_cpu/cpu_info_provider_unittest.cc b/chrome/browser/extensions/api/system_info_cpu/cpu_info_provider_unittest.cc
index f2dd69222d2277ed1ea05965699d1e12ff44fe6e..8b8d630ddfec1691d566a8979b2d9ee995190a8d 100644
--- a/chrome/browser/extensions/api/system_info_cpu/cpu_info_provider_unittest.cc
+++ b/chrome/browser/extensions/api/system_info_cpu/cpu_info_provider_unittest.cc
@@ -14,8 +14,6 @@
namespace extensions {
using api::system_info_cpu::CpuInfo;
-using api::system_info_cpu::CpuUpdateInfo;
-using content::BrowserThread;
struct TestCpuInfo {
std::string arch_name;
@@ -23,86 +21,20 @@ struct TestCpuInfo {
int num_of_processors;
};
-struct TestCpuTimeInfo {
- int64 user;
- int64 kernel;
- int64 idle;
-};
-
-struct TestCpuUpdateInfo {
- double average_usage;
- std::vector<double> usage_per_processor;
-};
-
const struct TestCpuInfo kTestingCpuInfoData = {
"x86", "Intel Core", 2
};
-const struct TestCpuTimeInfo kTestingCpuTimeDataForOneProcessor[][3] = {
- {{2, 4, 5}, {5, 7, 9}, {5, 7, 9}}
-};
-
-const struct TestCpuTimeInfo kTestingCpuTimeDataForTwoProcessors[][3] = {
- {{2, 4, 5}, {2, 4, 5}, {3, 5, 6}}, // Processor1 cpu time data
- {{5, 7, 9}, {5, 7, 9}, {6, 8, 10}} // Processor2 cpu time data
-};
-
-// The cpu sampling interval in unittest is 1ms.
-const int kWatchingIntervalMs = 1;
-// The times of doing cpu sampling.
-const int kSamplingTimes = 2;
-// The size of cpu time data.
-const int kCpuTimeDataSize = 3;
-
class TestCpuInfoProvider : public CpuInfoProvider {
public:
- typedef const struct TestCpuTimeInfo (* TestingCpuTimeDataPointer)[3];
-
TestCpuInfoProvider();
- TestCpuInfoProvider(int num_of_processors,
- TestingCpuTimeDataPointer cpu_time_data,
- size_t sampling_interval);
virtual bool QueryInfo(CpuInfo* info) OVERRIDE;
- virtual bool QueryCpuTimePerProcessor(std::vector<CpuTime>* times) OVERRIDE;
-
- // Check whether finishing cpu sampling.
- bool is_complete_sampling() {
- return query_times_ >= kCpuTimeDataSize;
- }
-
- int num_of_processors() const {
- return num_of_processors_;
- }
-
- TestingCpuTimeDataPointer cpu_time_data() const {
- return cpu_time_data_;
- }
private:
virtual ~TestCpuInfoProvider();
-
- // Record the query times of cpu_time_data_.
- int query_times_;
- int num_of_processors_;
-
- // A Pointer to kTestingCpuTimeDataFor*Processors array.
- TestingCpuTimeDataPointer cpu_time_data_;
};
-TestCpuInfoProvider::TestCpuInfoProvider()
- : query_times_(0),
- num_of_processors_(1),
- cpu_time_data_(NULL) {
-}
-
-TestCpuInfoProvider::TestCpuInfoProvider(int num_of_processors,
- TestingCpuTimeDataPointer cpu_time_data,
- size_t sampling_interval)
- : query_times_(0),
- num_of_processors_(num_of_processors),
- cpu_time_data_(cpu_time_data) {
- sampling_interval_ = sampling_interval;
-}
+TestCpuInfoProvider::TestCpuInfoProvider() {}
TestCpuInfoProvider::~TestCpuInfoProvider() {}
@@ -115,127 +47,15 @@ bool TestCpuInfoProvider::QueryInfo(CpuInfo* info) {
return true;
}
-bool TestCpuInfoProvider::QueryCpuTimePerProcessor(
- std::vector<CpuTime>* times) {
- if (is_complete_sampling())
- return false;
-
- std::vector<CpuTime> results;
- for (int i = 0; i < num_of_processors_; ++i) {
- CpuTime cpu_time;
- cpu_time.user = cpu_time_data_[i][query_times_].user;
- cpu_time.kernel = cpu_time_data_[i][query_times_].kernel;
- cpu_time.idle = cpu_time_data_[i][query_times_].idle;
- results.push_back(cpu_time);
- }
- ++query_times_;
- times->swap(results);
-
- return true;
-}
-
class CpuInfoProviderTest : public testing::Test {
public:
CpuInfoProviderTest();
- // A callback function to be called when CpuInfoProvider completes to sample.
- // Called on FILE thread.
- void OnCheckCpuSamplingFinishedForTesting(scoped_ptr<CpuUpdateInfo> info);
- void CalculateExpectedResult();
- void VerifyResult();
-
protected:
- base::MessageLoop message_loop_;
- content::TestBrowserThread ui_thread_;
- content::TestBrowserThread file_thread_;
scoped_refptr<TestCpuInfoProvider> cpu_info_provider_;
-
- // Maintain the CpuUpdateInfo results returned by DoSample function.
- std::vector<TestCpuUpdateInfo> cpu_update_result_;
-
- // Maintain the expected CpuUpdateInfo.
- std::vector<TestCpuUpdateInfo> expected_cpu_update_result_;
};
-CpuInfoProviderTest::CpuInfoProviderTest()
- : message_loop_(base::MessageLoop::TYPE_UI),
- ui_thread_(BrowserThread::UI, &message_loop_),
- file_thread_(BrowserThread::FILE, &message_loop_) {
-}
-
-void CpuInfoProviderTest::OnCheckCpuSamplingFinishedForTesting(
- scoped_ptr<CpuUpdateInfo> info) {
- // The cpu sampling is doing in FILE thread, so the callback function
- // should be also called in FILE thread.
- ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::FILE));
-
- // Once the sampling completed, we need to quit the FILE thread to given
- // UI thread a chance to verify results.
- if (cpu_info_provider_->is_complete_sampling()) {
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::MessageLoop::QuitClosure());
- }
-
- TestCpuUpdateInfo result;
- result.average_usage = info->average_usage;
- result.usage_per_processor = info->usage_per_processor;
- cpu_update_result_.push_back(result);
-}
-
-void CpuInfoProviderTest::CalculateExpectedResult() {
- TestCpuInfoProvider::TestingCpuTimeDataPointer cpu_time_testing_data =
- cpu_info_provider_->cpu_time_data();
- DCHECK(cpu_time_testing_data != NULL);
-
- int test_data_index = 0;
- std::vector<TestCpuTimeInfo> baseline_cpu_time;
-
- for (int i = 0; i < cpu_info_provider_->num_of_processors(); ++i)
- baseline_cpu_time.push_back(cpu_time_testing_data[i][0]);
- ++test_data_index;
-
- for (int i = 0; i < kSamplingTimes; ++i) {
- TestCpuUpdateInfo info;
- double total_usage = 0;
- std::vector<TestCpuTimeInfo> next_cpu_time;
- for (int j = 0; j < cpu_info_provider_->num_of_processors(); ++j)
- next_cpu_time.push_back(cpu_time_testing_data[j][test_data_index]);
-
- for (int j = 0; j < cpu_info_provider_->num_of_processors(); ++j) {
- double toal_time =
- (next_cpu_time[j].user - baseline_cpu_time[j].user) +
- (next_cpu_time[j].idle - baseline_cpu_time[j].idle) +
- (next_cpu_time[j].kernel - baseline_cpu_time[j].kernel);
- double idle_time = next_cpu_time[j].idle - baseline_cpu_time[j].idle;
- double usage = 0;
- if (toal_time != 0)
- usage = 100 - idle_time * 100 / toal_time;
- info.usage_per_processor.push_back(usage);
- total_usage += usage;
- }
- info.average_usage =
- total_usage / cpu_info_provider_->num_of_processors();
- expected_cpu_update_result_.push_back(info);
-
- ++test_data_index;
- baseline_cpu_time.swap(next_cpu_time);
- }
-}
-
-void CpuInfoProviderTest::VerifyResult() {
- EXPECT_EQ(expected_cpu_update_result_.size(), cpu_update_result_.size());
- for (size_t i = 0; i < expected_cpu_update_result_.size(); ++i) {
- EXPECT_DOUBLE_EQ(expected_cpu_update_result_[i].average_usage,
- cpu_update_result_[i].average_usage);
- EXPECT_EQ(expected_cpu_update_result_[i].usage_per_processor.size(),
- cpu_update_result_[i].usage_per_processor.size());
- for (size_t j = 0;
- j < expected_cpu_update_result_[i].usage_per_processor.size(); ++j) {
- EXPECT_DOUBLE_EQ(expected_cpu_update_result_[i].usage_per_processor[j],
- cpu_update_result_[i].usage_per_processor[j]);
- }
- }
-}
+CpuInfoProviderTest::CpuInfoProviderTest() {}
TEST_F(CpuInfoProviderTest, QueryCpuInfo) {
cpu_info_provider_ = new TestCpuInfoProvider();
@@ -246,37 +66,4 @@ TEST_F(CpuInfoProviderTest, QueryCpuInfo) {
EXPECT_EQ(kTestingCpuInfoData.num_of_processors, cpu_info->num_of_processors);
}
-TEST_F(CpuInfoProviderTest, DoOnlyOneProcessorCpuSampling) {
- cpu_info_provider_ =
- new TestCpuInfoProvider(1, // number of processors
- kTestingCpuTimeDataForOneProcessor,
- kWatchingIntervalMs);
- CalculateExpectedResult();
- cpu_info_provider_->StartSampling(
- base::Bind(&CpuInfoProviderTest::OnCheckCpuSamplingFinishedForTesting,
- base::Unretained(this)));
- content::RunAllPendingInMessageLoop(content::BrowserThread::FILE);
- content::RunMessageLoop();
- cpu_info_provider_->StopSampling();
- content::RunAllPendingInMessageLoop(content::BrowserThread::FILE);
- VerifyResult();
-}
-
-TEST_F(CpuInfoProviderTest, DoTwoProcessorsCpuSampling) {
- cpu_info_provider_ =
- new TestCpuInfoProvider(2, // number of processors
- kTestingCpuTimeDataForTwoProcessors,
- kWatchingIntervalMs);
- CalculateExpectedResult();
-
- cpu_info_provider_->StartSampling(
- base::Bind(&CpuInfoProviderTest::OnCheckCpuSamplingFinishedForTesting,
- base::Unretained(this)));
- content::RunAllPendingInMessageLoop(content::BrowserThread::FILE);
- content::RunMessageLoop();
- cpu_info_provider_->StopSampling();
- content::RunAllPendingInMessageLoop(content::BrowserThread::FILE);
- VerifyResult();
-}
-
}

Powered by Google App Engine
This is Rietveld 408576698