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 1618a7d0dac10816cd6bb38abf3e273e0dbe6291..30fb076072deb6af7764914fdd458c7d8c7bdf36 100644 |
| --- a/content/browser/tracing/background_tracing_manager_browsertest.cc |
| +++ b/content/browser/tracing/background_tracing_manager_browsertest.cc |
| @@ -576,6 +576,110 @@ IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| } |
| } |
| +// This tests that no preemptive trace is triggered with 0 chance set. |
| +IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| + PreemptiveNotTriggerWithZeroChance) { |
| + { |
| + SetupBackgroundTracingManager(); |
| + |
| + base::RunLoop run_loop; |
| + BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( |
| + (base::Closure())); |
| + |
| + base::DictionaryValue dict; |
| + |
| + dict.SetString("mode", "PREEMPTIVE_TRACING_MODE"); |
| + dict.SetString("category", "BENCHMARK"); |
| + |
| + scoped_ptr<base::ListValue> rules_list(new base::ListValue()); |
| + { |
| + scoped_ptr<base::DictionaryValue> rules_dict(new base::DictionaryValue()); |
| + rules_dict->SetString("rule", "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED"); |
| + rules_dict->SetString("trigger_name", "preemptive_test"); |
| + rules_dict->SetDouble("trigger_chance", 0.0); |
| + rules_list->Append(rules_dict.Pass()); |
| + } |
| + dict.Set("configs", rules_list.Pass()); |
| + |
| + scoped_ptr<BackgroundTracingConfig> config( |
| + BackgroundTracingConfigImpl::FromDict(&dict)); |
| + |
| + EXPECT_TRUE(config); |
| + |
| + content::BackgroundTracingManager::TriggerHandle handle = |
| + content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( |
| + "preemptive_test"); |
| + |
| + BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + BackgroundTracingManager::NO_DATA_FILTERING); |
| + |
| + BackgroundTracingManager::GetInstance()->WhenIdle( |
| + base::Bind(&DisableScenarioWhenIdle)); |
| + |
| + BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
| + handle, |
| + base::Bind(&StartedFinalizingCallback, run_loop.QuitClosure(), false)); |
| + |
| + run_loop.Run(); |
| + |
| + EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 0); |
| + } |
| +} |
| + |
| +// This tests that no preemptive trace is triggered with 0 chance set. |
|
shatch
2015/10/30 15:50:28
nit: reactive
oystein (OOO til 10th of July)
2015/10/30 19:11:43
Done.
|
| +IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| + ReactiveNotTriggerWithZeroChance) { |
| + { |
| + SetupBackgroundTracingManager(); |
| + |
| + base::RunLoop run_loop; |
| + BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( |
| + (base::Closure())); |
| + |
| + base::DictionaryValue dict; |
| + |
| + dict.SetString("mode", "REACTIVE_TRACING_MODE"); |
| + |
| + scoped_ptr<base::ListValue> rules_list(new base::ListValue()); |
| + { |
| + scoped_ptr<base::DictionaryValue> rules_dict(new base::DictionaryValue()); |
| + rules_dict->SetString("rule", |
| + "TRACE_ON_NAVIGATION_UNTIL_TRIGGER_OR_FULL"); |
| + rules_dict->SetString("trigger_name", "reactive_test1"); |
| + rules_dict->SetString("category", "BENCHMARK"); |
| + rules_dict->SetDouble("trigger_chance", 0.0); |
| + |
| + rules_list->Append(rules_dict.Pass()); |
| + } |
| + dict.Set("configs", rules_list.Pass()); |
| + |
| + scoped_ptr<BackgroundTracingConfig> config( |
| + BackgroundTracingConfigImpl::FromDict(&dict)); |
| + |
| + EXPECT_TRUE(config); |
| + |
| + content::BackgroundTracingManager::TriggerHandle handle = |
| + content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( |
| + "preemptive_test"); |
| + |
| + BackgroundTracingManager::GetInstance()->SetActiveScenario( |
| + config.Pass(), upload_config_wrapper.get_receive_callback(), |
| + BackgroundTracingManager::NO_DATA_FILTERING); |
| + |
| + BackgroundTracingManager::GetInstance()->WhenIdle( |
| + base::Bind(&DisableScenarioWhenIdle)); |
| + |
| + BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
| + handle, |
| + base::Bind(&StartedFinalizingCallback, run_loop.QuitClosure(), false)); |
| + |
| + run_loop.Run(); |
| + |
| + EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 0); |
| + } |
| +} |
| + |
| // This tests that histogram triggers for preemptive mode configs. |
| IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
| ReceiveTraceSucceedsOnHigherHistogramSample) { |