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

Unified Diff: content/browser/tracing/background_tracing_manager_browsertest.cc

Issue 1148393003: Implement Reactive Configuration in Background Tracing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase files depending on reactive config Created 5 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: content/browser/tracing/background_tracing_manager_browsertest.cc
diff --git a/content/browser/tracing/background_tracing_manager_browsertest.cc b/content/browser/tracing/background_tracing_manager_browsertest.cc
index f353264f911aa59fb7b36d62422afce812058982..54a1127c230b13497f9c09c2e25a40bb29988342 100644
--- a/content/browser/tracing/background_tracing_manager_browsertest.cc
+++ b/content/browser/tracing/background_tracing_manager_browsertest.cc
@@ -67,7 +67,23 @@ scoped_ptr<BackgroundTracingPreemptiveConfig> CreatePreemptiveConfig() {
BackgroundTracingPreemptiveConfig::MonitoringRule rule;
rule.type =
BackgroundTracingPreemptiveConfig::MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED;
- rule.named_trigger_info.trigger_name = "test";
+ rule.named_trigger_info.trigger_name = "preemptive_test";
+
+ config->configs.push_back(rule);
+
+ return config.Pass();
+}
+
+scoped_ptr<BackgroundTracingReactiveConfig> CreateReactiveConfig() {
+ scoped_ptr<BackgroundTracingReactiveConfig> config(
+ new BackgroundTracingReactiveConfig());
+
+ BackgroundTracingReactiveConfig::TracingRule rule;
+ rule.type =
+ BackgroundTracingReactiveConfig::TRACE_FOR_10S_OR_TRIGGER_OR_FULL;
+ rule.trigger_name = "reactive_test";
+ rule.category_preset =
+ BackgroundTracingConfig::CategoryPreset::BENCHMARK_DEEP;
config->configs.push_back(rule);
@@ -98,7 +114,8 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
CreatePreemptiveConfig();
BackgroundTracingManager::TriggerHandle handle =
- BackgroundTracingManager::GetInstance()->RegisterTriggerType("test");
+ BackgroundTracingManager::
+ GetInstance()->RegisterTriggerType("preemptive_test");
BackgroundTracingManager::GetInstance()->SetActiveScenario(
config.Pass(), upload_config_wrapper.get_receive_callback(), true);
@@ -130,7 +147,7 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
content::BackgroundTracingManager::TriggerHandle handle =
content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
- "test");
+ "preemptive_test");
BackgroundTracingManager::GetInstance()->SetActiveScenario(
config.Pass(), upload_config_wrapper.get_receive_callback(), true);
@@ -208,7 +225,7 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
content::BackgroundTracingManager::TriggerHandle handle =
content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
- "test");
+ "preemptive_test");
BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
handle,
@@ -269,7 +286,7 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
content::BackgroundTracingManager::TriggerHandle handle =
content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
- "test");
+ "preemptive_test");
content::BackgroundTracingManager::GetInstance()
->InvalidateTriggerHandlesForTesting();
@@ -290,7 +307,7 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
}
}
-// This tests that reactive mode configs will fail.
+// This tests that preemptive mode configs will fail.
IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
DoesNotAllowPreemptiveConfigThatsNotManual) {
{
@@ -316,22 +333,110 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
}
}
-// This tests that reactive mode configs will fail.
+// This tests that reactive mode records and terminates with timeout.
IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
- DoesNotAllowReactiveConfig) {
+ ReactiveTimeoutTermination) {
{
SetupBackgroundTracingManager();
+ base::RunLoop run_loop;
BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
- (base::Closure()));
+ run_loop.QuitClosure());
- scoped_ptr<BackgroundTracingConfig> config(
- new BackgroundTracingReactiveConfig());
+ scoped_ptr<BackgroundTracingReactiveConfig> config =
+ CreateReactiveConfig();
- bool result = BackgroundTracingManager::GetInstance()->SetActiveScenario(
+ BackgroundTracingManager::TriggerHandle handle =
+ BackgroundTracingManager::
+ GetInstance()->RegisterTriggerType("reactive_test");
+
+ BackgroundTracingManager::GetInstance()->SetActiveScenario(
config.Pass(), upload_config_wrapper.get_receive_callback(), true);
- EXPECT_FALSE(result);
+ BackgroundTracingManager::GetInstance()->WhenIdle(
+ base::Bind(&DisableScenarioWhenIdle));
+
+ BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
+ handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true));
+
+ BackgroundTracingManager::GetInstance()->FireTimerForTesting();
+
+ run_loop.Run();
+
+ EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1);
+ }
+}
+
+// This tests that reactive mode records and terminates with a second trigger.
+IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
+ ReactiveSecondTriggerTermination) {
+ {
+ SetupBackgroundTracingManager();
+
+ base::RunLoop run_loop;
+ BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
+ run_loop.QuitClosure());
+
+ scoped_ptr<BackgroundTracingReactiveConfig> config =
+ CreateReactiveConfig();
+
+ BackgroundTracingManager::TriggerHandle handle =
+ BackgroundTracingManager::
+ GetInstance()->RegisterTriggerType("reactive_test");
+
+ BackgroundTracingManager::GetInstance()->SetActiveScenario(
+ config.Pass(), upload_config_wrapper.get_receive_callback(), true);
+
+ BackgroundTracingManager::GetInstance()->WhenIdle(
+ base::Bind(&DisableScenarioWhenIdle));
+
+ BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
+ handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true));
+ // second trigger to terminate.
+ BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
+ handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true));
+
+ run_loop.Run();
+
+ EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1);
+ }
+}
+
+// This tests a third trigger in reactive more does not start another trace.
+IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
+ ReactiveThirdTriggerTimeout) {
+ {
+ SetupBackgroundTracingManager();
+
+ base::RunLoop run_loop;
+ BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
+ run_loop.QuitClosure());
+
+ scoped_ptr<BackgroundTracingReactiveConfig> config =
+ CreateReactiveConfig();
+
+ BackgroundTracingManager::TriggerHandle handle =
+ BackgroundTracingManager::
+ GetInstance()->RegisterTriggerType("reactive_test");
+
+ BackgroundTracingManager::GetInstance()->SetActiveScenario(
+ config.Pass(), upload_config_wrapper.get_receive_callback(), true);
+
+ BackgroundTracingManager::GetInstance()->WhenIdle(
+ base::Bind(&DisableScenarioWhenIdle));
+
+ BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
+ handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true));
+ // second trigger to terminate.
+ BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
+ handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true));
+ // third trigger to trigger again, fails as it is still gathering.
+ BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
+ handle, base::Bind(&StartedFinalizingCallback, base::Closure(), false));
+
+ run_loop.Run();
+
+ EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1);
}
}

Powered by Google App Engine
This is Rietveld 408576698