Commit 6c46059f authored by Joe Downing's avatar Joe Downing Committed by Commit Bot

[RELAND] Hooking up buffer_size in EtwTraceController::StartRealtimeSession

I am working on some ETW stuff for Chrome Remote Desktop and I
noticed that this parameter is unused and a default value of 16KB
is always used.  This isn't a big deal as the only caller appears
to be its unit tests but it seemed like the value passed in
should do something.  The other approach would be to remove the
param but adjusting the buffer size seems like a reasonable thing
to expose (assuming the param is actually used).

The issue in the previous CL was that the unittests requested a
buffer size of 100MB but the max size is 1MB for realtime logging.
The try-bots didn't detect the failure so I'll make sure this
passes on the ASAN bots before submitting.

This is an updated reland of:
https://chromium-review.googlesource.com/c/chromium/src/+/2511290

Change-Id: I73bff2493f2ffcee6195faed7b4ab82d119259b2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2516886
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Auto-Submit: Joe Downing <joedow@chromium.org>
Reviewed-by: default avatarBruce Dawson <brucedawson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#823707}
parent a2c417fa
...@@ -200,7 +200,7 @@ class EtwTraceConsumerRealtimeTest : public EtwTraceConsumerBaseTest { ...@@ -200,7 +200,7 @@ class EtwTraceConsumerRealtimeTest : public EtwTraceConsumerBaseTest {
TEST_F(EtwTraceConsumerRealtimeTest, ConsumerReturnsWhenSessionClosed) { TEST_F(EtwTraceConsumerRealtimeTest, ConsumerReturnsWhenSessionClosed) {
EtwTraceController controller; EtwTraceController controller;
if (controller.StartRealtimeSession(session_name_.c_str(), 100 * 1024) == if (controller.StartRealtimeSession(session_name_.c_str(), 1024) ==
E_ACCESSDENIED) { E_ACCESSDENIED) {
VLOG(1) << "You must be an administrator to run this test on Vista"; VLOG(1) << "You must be an administrator to run this test on Vista";
return; return;
...@@ -231,7 +231,7 @@ DEFINE_GUID( ...@@ -231,7 +231,7 @@ DEFINE_GUID(
TEST_F(EtwTraceConsumerRealtimeTest, ConsumeEvent) { TEST_F(EtwTraceConsumerRealtimeTest, ConsumeEvent) {
EtwTraceController controller; EtwTraceController controller;
if (controller.StartRealtimeSession(session_name_.c_str(), 100 * 1024) == if (controller.StartRealtimeSession(session_name_.c_str(), 1024) ==
E_ACCESSDENIED) { E_ACCESSDENIED) {
VLOG(1) << "You must be an administrator to run this test on Vista"; VLOG(1) << "You must be an administrator to run this test on Vista";
return; return;
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
#include "base/win/event_trace_controller.h" #include "base/win/event_trace_controller.h"
#include "base/check.h" #include "base/check.h"
constexpr size_t kDefaultRealtimeBufferSizeKb = 16;
namespace base { namespace base {
namespace win { namespace win {
...@@ -81,11 +83,12 @@ HRESULT EtwTraceController::StartFileSession(const wchar_t* session_name, ...@@ -81,11 +83,12 @@ HRESULT EtwTraceController::StartFileSession(const wchar_t* session_name,
HRESULT EtwTraceController::StartRealtimeSession(const wchar_t* session_name, HRESULT EtwTraceController::StartRealtimeSession(const wchar_t* session_name,
size_t buffer_size) { size_t buffer_size) {
DCHECK(NULL == session_ && session_name_.empty()); DCHECK(NULL == session_ && session_name_.empty());
EtwTraceProperties prop; EtwTraceProperties prop;
EVENT_TRACE_PROPERTIES& p = *prop.get(); EVENT_TRACE_PROPERTIES& p = *prop.get();
p.LogFileMode = EVENT_TRACE_REAL_TIME_MODE | EVENT_TRACE_USE_PAGED_MEMORY; p.LogFileMode = EVENT_TRACE_REAL_TIME_MODE | EVENT_TRACE_USE_PAGED_MEMORY;
p.FlushTimer = 1; // flush every second. p.FlushTimer = 1; // flush every second.
p.BufferSize = 16; // 16 K buffers. p.BufferSize = buffer_size ? buffer_size : kDefaultRealtimeBufferSizeKb;
p.LogFileNameOffset = 0; p.LogFileNameOffset = 0;
return Start(session_name, &prop); return Start(session_name, &prop);
} }
......
...@@ -98,7 +98,8 @@ class BASE_EXPORT EtwTraceController { ...@@ -98,7 +98,8 @@ class BASE_EXPORT EtwTraceController {
const wchar_t* logfile_path, const wchar_t* logfile_path,
bool realtime = false); bool realtime = false);
// Starts a realtime session with some default properties. // Starts a realtime session with some default properties. |buffer_size| is
// in KB. A default value for |buffer_size| is used if 0 is passed in.
HRESULT StartRealtimeSession(const wchar_t* session_name, size_t buffer_size); HRESULT StartRealtimeSession(const wchar_t* session_name, size_t buffer_size);
// Enables "provider" at "level" for this session. // Enables "provider" at "level" for this session.
......
...@@ -139,8 +139,7 @@ TEST_F(EtwTraceControllerTest, Initialize) { ...@@ -139,8 +139,7 @@ TEST_F(EtwTraceControllerTest, Initialize) {
TEST_F(EtwTraceControllerTest, StartRealTimeSession) { TEST_F(EtwTraceControllerTest, StartRealTimeSession) {
EtwTraceController controller; EtwTraceController controller;
HRESULT hr = HRESULT hr = controller.StartRealtimeSession(session_name_.c_str(), 1024);
controller.StartRealtimeSession(session_name_.c_str(), 100 * 1024);
if (hr == E_ACCESSDENIED) { if (hr == E_ACCESSDENIED) {
VLOG(1) << "You must be an administrator to run this test on Vista"; VLOG(1) << "You must be an administrator to run this test on Vista";
return; return;
...@@ -186,8 +185,7 @@ TEST_F(EtwTraceControllerTest, DISABLED_EnableDisable) { ...@@ -186,8 +185,7 @@ TEST_F(EtwTraceControllerTest, DISABLED_EnableDisable) {
EXPECT_EQ(0u, provider.session_handle()); EXPECT_EQ(0u, provider.session_handle());
EtwTraceController controller; EtwTraceController controller;
HRESULT hr = HRESULT hr = controller.StartRealtimeSession(session_name_.c_str(), 1024);
controller.StartRealtimeSession(session_name_.c_str(), 100 * 1024);
if (hr == E_ACCESSDENIED) { if (hr == E_ACCESSDENIED) {
VLOG(1) << "You must be an administrator to run this test on Vista"; VLOG(1) << "You must be an administrator to run this test on Vista";
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment