/*
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "system_wrappers/interface/trace.h"
#include "gtest/gtest.h"
#include "system_wrappers/source/cpu_measurement_harness.h"
#include "testsupport/fileutils.h"
using webrtc::CpuMeasurementHarness;
using webrtc::Trace;
using webrtc::kTraceWarning;
using webrtc::kTraceUtility;
class Logger : public webrtc::CpuTarget {
public:
Logger() {
Trace::CreateTrace();
std::string trace_file = webrtc::test::OutputPath() +
"trace_unittest.txt";
Trace::SetTraceFile(trace_file.c_str());
Trace::SetLevelFilter(webrtc::kTraceAll);
}
virtual ~Logger() {
Trace::ReturnTrace();
}
virtual bool DoWork() {
// Use input paremeters to WEBRTC_TRACE that are not likely to be removed
// in future code. E.g. warnings will likely be kept and this file is in
// utility so it should use kTraceUtility.
WEBRTC_TRACE(kTraceWarning, kTraceUtility, 0, "Log line");
return true;
}
};
// This test is disabled because it measures CPU usage. This is flaky because
// the CPU usage for a machine may spike due to OS or other application.
TEST(TraceTest, DISABLED_CpuUsage) {
Logger logger;
const int periodicity_ms = 1;
const int iterations_per_period = 10;
const int duration_ms = 1000;
CpuMeasurementHarness* cpu_harness =
CpuMeasurementHarness::Create(&logger, periodicity_ms,
iterations_per_period, duration_ms);
cpu_harness->Run();
const int average_cpu = cpu_harness->AverageCpu();
EXPECT_GE(5, average_cpu);
}