Chromium Code Reviews| 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..4ff96ca77638bbdcc19b0913e7fa9a83c70b4502 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_UNTIL_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,111 @@ 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)); |
| + |
| + 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 that reactive mode multiple still triggers gathers once. |
| +IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| + ReactiveThridTriggerTimeout) { |
|
shatch
2015/06/01 15:33:33
nit: thrid->third
fmeawad
2015/06/01 18:15:26
Done.
|
| + { |
| + 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); |
| } |
| } |