/* * 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); }