Commit 603716d7 authored by Stephen Nusko's avatar Stephen Nusko Committed by Commit Bot

Reland "Make the producer name include the host_package_name on Android."

This reverts commit e0f117f5.

Reason for revert: Fixed tests to use updated producer name format.

Original change's description:
> Revert "Make the producer name include the host_package_name on Android."
> 
> This reverts commit 9f0e99aa.
> 
> Reason for revert: Suspect of causing test failures in linux-chromeos-dbg
> 
> First failure:
> https://ci.chromium.org/p/chromium/builders/ci/linux-chromeos-dbg/18126
> 
> services_unittests failed because of:
> PerfettoIntegrationTest.PacketsEndToEndProducerFirst
> PerfettoIntegrationTest.ProducerDatasourceInitialized
> SystemPerfettoTest.MultipleSystemAndLocalSourcesLocalFirst
> PerfettoIntegrationTest.ClientEnabledAndDisabled
> ...
> 
> 
> Original change's description:
> > Make the producer name include the host_package_name on Android.
> > 
> > This allows you to trace with perfetto "producer_name_filter" to scope
> > your system traces to only particular apps (chrome stable/canary/etc).
> > 
> > Change-Id: I9a677a8d8edfdf6645eb50d9e77e9ffb025ca94d
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2144135
> > Commit-Queue: Daniel Cheng <dcheng@chromium.org>
> > Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> > Reviewed-by: Eric Seckler <eseckler@chromium.org>
> > Auto-Submit: Stephen Nusko <nuskos@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#759188}
> 
> TBR=dcheng@chromium.org,eseckler@chromium.org,nuskos@chromium.org
> 
> Change-Id: I3cf97d68304aee6fc4afc90b954d02cbb6ce700e
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2146906
> Reviewed-by: Guido Urdaneta <guidou@chromium.org>
> Commit-Queue: Guido Urdaneta <guidou@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#759214}

TBR=dcheng@chromium.org,guidou@chromium.org,eseckler@chromium.org,nuskos@chromium.org

Change-Id: I3f2a58f5c0daf71a7986eee22741dd689fc4e39d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2149652Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Reviewed-by: default avatarStephen Nusko <nuskos@chromium.org>
Reviewed-by: default avatarEric Seckler <eseckler@chromium.org>
Commit-Queue: Stephen Nusko <nuskos@chromium.org>
Auto-Submit: Stephen Nusko <nuskos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759315}
parent ae7a4d46
......@@ -9,6 +9,7 @@
#include "base/bind.h"
#include "base/run_loop.h"
#include "base/strings/strcat.h"
#include "base/test/task_environment.h"
#include "services/tracing/perfetto/perfetto_service.h"
#include "services/tracing/perfetto/producer_host.h"
......@@ -32,7 +33,10 @@ namespace {
const char kPerfettoTestDataSourceName[] =
"org.chromium.chrome_integration_unittest";
const char kPerfettoProducerName[] = "org.chromium.perfetto_producer.123";
std::string GetPerfettoProducerName() {
return base::StrCat({mojom::kPerfettoProducerNamePrefix, "123"});
}
class PerfettoIntegrationTest : public testing::Test {
public:
......@@ -62,7 +66,7 @@ TEST_F(PerfettoIntegrationTest, ProducerDatasourceInitialized) {
base::RunLoop producer_initialized_runloop;
auto new_producer = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, perfetto_service(),
**dummy_client, producer_initialized_runloop.QuitClosure());
producer_initialized_runloop.Run();
......@@ -85,7 +89,7 @@ TEST_F(PerfettoIntegrationTest, ClientEnabledAndDisabled) {
client_disabled_callback.QuitClosure());
auto producer = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, perfetto_service(),
**client);
client_enabled_callback.Run();
......@@ -112,7 +116,7 @@ TEST_F(PerfettoIntegrationTest, PacketsEndToEndProducerFirst) {
client_disabled_callback.QuitClosure());
auto producer = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, perfetto_service(),
**client);
base::RunLoop no_more_packets_runloop;
......@@ -155,7 +159,7 @@ TEST_F(PerfettoIntegrationTest, PacketsEndToEndConsumerFirst) {
/* num_data_sources = */ 1, client_enabled_callback.QuitClosure());
auto new_producer = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, perfetto_service(),
**client);
client_enabled_callback.Run();
......@@ -187,7 +191,7 @@ TEST_F(PerfettoIntegrationTest, CommitDataRequestIsMaybeComplete) {
MockProducerClient::Create(
/* num_data_sources = */ 1, client_enabled_callback.QuitClosure());
auto new_producer = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, perfetto_service(),
**client);
client_enabled_callback.Run();
......@@ -249,7 +253,7 @@ TEST_F(PerfettoIntegrationTest, TracingRestarted) {
client_disabled_callback.QuitClosure());
auto new_producer = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, perfetto_service(),
**client);
client_enabled_callback.Run();
......@@ -299,7 +303,7 @@ TEST_F(PerfettoIntegrationTest, NoPacketsReceivedOnWrongSourceName) {
base::RunLoop producer_initialized_runloop;
auto new_producer = std::make_unique<MockProducerHost>(
kPerfettoProducerName, "fake_data_source", perfetto_service(), **client);
GetPerfettoProducerName(), "fake_data_source", perfetto_service(), **client);
base::RunLoop no_more_packets_runloop;
MockConsumer consumer({"fake_data_source"}, perfetto_service()->GetService(),
......@@ -326,7 +330,7 @@ TEST_F(PerfettoIntegrationTest,
MockProducerClient::Create(
/* num_data_sources = */ 1, client1_enabled_callback.QuitClosure());
auto producer1 = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, perfetto_service(),
**client1);
// Start the trace here, this is because we need to send the EnableTracing
......@@ -348,7 +352,7 @@ TEST_F(PerfettoIntegrationTest,
/* num_data_sources = */ 1, client2_enabled_callback.QuitClosure());
auto producer2 = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, perfetto_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, perfetto_service(),
**client2);
client2_enabled_callback.Run();
......
......@@ -45,7 +45,10 @@ namespace {
const char kPerfettoTestDataSourceName[] =
"org.chromium.chrome_integration_unittest";
const char kPerfettoProducerName[] = "org.chromium.perfetto_producer.123";
std::string GetPerfettoProducerName() {
return base::StrCat({mojom::kPerfettoProducerNamePrefix, "123"});
}
std::string RandomASCII(size_t length) {
std::string tmp;
......@@ -322,7 +325,7 @@ TEST_F(SystemPerfettoTest, OneSystemSourceWithMultipleLocalSources) {
}
});
auto local_producer_host = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, local_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, local_service(),
**local_producer_client);
system_consumer.WaitForAllDataSourcesStopped();
......@@ -397,7 +400,7 @@ TEST_F(SystemPerfettoTest, MultipleSystemSourceWithOneLocalSourcesLocalFirst) {
local_data_source_enabled_runloop.QuitClosure(),
local_data_source_disabled_runloop.QuitClosure());
auto local_producer_host = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, local_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, local_service(),
**local_producer_client);
local_data_source_enabled_runloop.Run();
......@@ -528,7 +531,7 @@ TEST_F(SystemPerfettoTest, MultipleSystemAndLocalSources) {
local_data_source_enabled_runloop.QuitClosure(),
local_data_source_disabled_runloop.QuitClosure());
auto local_producer_host = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, local_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, local_service(),
**local_producer_client);
MockConsumer local_consumer(
{kPerfettoTestDataSourceName,
......@@ -623,7 +626,7 @@ TEST_F(SystemPerfettoTest, MultipleSystemAndLocalSourcesLocalFirst) {
local_data_source_enabled_runloop.QuitClosure(),
local_data_source_disabled_runloop.QuitClosure());
auto local_producer_host = std::make_unique<MockProducerHost>(
kPerfettoProducerName, kPerfettoTestDataSourceName, local_service(),
GetPerfettoProducerName(), kPerfettoTestDataSourceName, local_service(),
**local_producer_client);
MockConsumer local_consumer(
{kPerfettoTestDataSourceName,
......@@ -762,7 +765,7 @@ TEST_F(SystemPerfettoTest, SystemTraceWhileLocalStartupTracing) {
}
}));
auto local_producer_host = std::make_unique<MockProducerHost>(
kPerfettoProducerName, mojom::kTraceEventDataSourceName, local_service(),
GetPerfettoProducerName(), mojom::kTraceEventDataSourceName, local_service(),
**local_producer);
local_data_source_enabled_runloop.Run();
local_consumer->WaitForAllDataSourcesStarted();
......
......@@ -363,13 +363,30 @@ bool PosixSystemProducer::SetupSharedMemoryForStartupTracing() {
void PosixSystemProducer::ConnectSocket() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
state_ = State::kConnecting;
const char* host_package_name = nullptr;
#if defined(OS_ANDROID)
host_package_name =
base::android::BuildInfo::GetInstance()->host_package_name();
#endif // defined(OS_ANDROID)
// On android we want to include if this is webview inside of an app or
// Android Chrome. To aid this we add the host_package_name to differentiate
// the various apps and sources.
std::string producer_name;
if (host_package_name) {
producer_name = base::StrCat(
{mojom::kPerfettoProducerNamePrefix, host_package_name, "-",
base::NumberToString(
base::trace_event::TraceLog::GetInstance()->process_id())});
} else {
producer_name = base::StrCat(
{mojom::kPerfettoProducerNamePrefix,
base::NumberToString(
base::trace_event::TraceLog::GetInstance()->process_id())});
}
auto service = perfetto::ProducerIPCClient::Connect(
socket_name_.c_str(), this,
base::StrCat(
{mojom::kPerfettoProducerNamePrefix,
base::NumberToString(
base::trace_event::TraceLog::GetInstance()->process_id())}),
task_runner(),
socket_name_.c_str(), this, std::move(producer_name), task_runner(),
perfetto::TracingService::ProducerSMBScrapingMode::kEnabled);
base::AutoLock lock(lock_);
......
......@@ -4,7 +4,13 @@
module tracing.mojom;
const string kPerfettoProducerNamePrefix = "org.chromium.perfetto_producer.";
// Producer processes register with the format
// "kPerfettoProducerNamePrefix-PID" when connecting to Chrome's internal
// tracing service. Note that system producers use a different but similar
// naming scheme to disambiguate between different apps on the same system,
// see SystemProducer::ConnectToSystemService() implementations. Of
// particular interest is PosixSystemProducer::ConnectSocket().
const string kPerfettoProducerNamePrefix = "org.chromium-";
const string kTraceEventDataSourceName = "org.chromium.trace_event";
const string kMetaDataSourceName = "org.chromium.trace_metadata";
const string kSystemTraceDataSourceName = "org.chromium.trace_system";
......
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