#!/usr/bin/env python3 # Copyright 2023 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. from python.generators.diff_tests.testing import Path, DataPath, Metric from python.generators.diff_tests.testing import Csv, Json, TextProto from python.generators.diff_tests.testing import DiffTestBlueprint from python.generators.diff_tests.testing import TestSuite class ChromeStdlib(TestSuite): # Chrome tasks. def test_chrome_tasks(self): return DiffTestBlueprint( trace=DataPath( 'chrome_page_load_all_categories_not_extended.pftrace.gz'), query=""" INCLUDE PERFETTO MODULE chrome.tasks; SELECT full_name as name, task_type, count() AS count FROM chrome_tasks GROUP BY full_name, task_type HAVING count >= 5 ORDER BY count DESC, name; """, out=Path('chrome_tasks.out')) def test_top_level_java_choreographer_slices_top_level_java_chrome_tasks( self): return DiffTestBlueprint( trace=DataPath('top_level_java_choreographer_slices'), query=""" INCLUDE PERFETTO MODULE chrome.tasks; SELECT full_name, task_type FROM chrome_tasks WHERE category = "toplevel,Java" AND ts < 263904000000000 GROUP BY full_name, task_type; """, out=Path( 'top_level_java_choreographer_slices_top_level_java_chrome_tasks_test.out' )) # Chrome custom navigation event names def test_chrome_custom_navigation_tasks(self): return DiffTestBlueprint( trace=DataPath('chrome_custom_navigation_trace.gz'), query=""" INCLUDE PERFETTO MODULE chrome.tasks; SELECT full_name, task_type, count() AS count FROM chrome_tasks WHERE full_name GLOB 'FrameHost::BeginNavigation*' OR full_name GLOB 'FrameHost::DidCommitProvisionalLoad*' OR full_name GLOB 'FrameHost::DidCommitSameDocumentNavigation*' OR full_name GLOB 'FrameHost::DidStopLoading*' GROUP BY full_name, task_type ORDER BY count DESC LIMIT 50; """, out=Csv(""" "full_name","task_type","count" "FrameHost::BeginNavigation (SUBFRAME)","navigation_task",5 "FrameHost::DidStopLoading (SUBFRAME)","navigation_task",3 "FrameHost::BeginNavigation (PRIMARY_MAIN_FRAME)","navigation_task",1 "FrameHost::DidCommitProvisionalLoad (SUBFRAME)","navigation_task",1 """)) # Chrome custom navigation event names def test_chrome_histograms(self): return DiffTestBlueprint( trace=DataPath('chrome_5672_histograms.pftrace.gz'), query=""" INCLUDE PERFETTO MODULE chrome.histograms; SELECT name, count() as count FROM chrome_histograms GROUP BY name ORDER BY count DESC, name LIMIT 20; """, out=Csv(""" "name","count" "Net.QuicSession.AsyncRead",19207 "Net.QuicSession.NumQueuedPacketsBeforeWrite",19193 "RendererScheduler.QueueingDuration.NormalPriority",9110 "Net.OnTransferSizeUpdated.Experimental.OverridenBy",8525 "Compositing.Renderer.AnimationUpdateOnMissingPropertyNode",3489 "Net.QuicConnection.WritePacketStatus",3099 "Net.QuicSession.PacketWriteTime.Synchronous",3082 "Net.QuicSession.SendPacketSize.ForwardSecure",3012 "Net.URLLoaderThrottleExecutionTime.WillStartRequest",1789 "Net.URLLoaderThrottleExecutionTime.BeforeWillProcessResponse",1773 "Net.URLLoaderThrottleExecutionTime.WillProcessResponse",1773 "UMA.StackProfiler.SampleInOrder",1534 "GPU.SharedImage.ContentConsumed",1037 "Gpu.Rasterization.Raster.MSAASampleCountLog2",825 "Scheduling.Renderer.DeadlineMode",637 "Blink.CullRect.UpdateTime",622 "Scheduling.Renderer.BeginImplFrameLatency2",591 "Net.QuicSession.CoalesceStreamFrameStatus",551 "API.StorageAccess.AllowedRequests2",541 "Net.HttpResponseCode",541 """)) def test_speedometer(self): return DiffTestBlueprint( trace=DataPath('speedometer.perfetto_trace.gz'), query=""" INCLUDE PERFETTO MODULE chrome.speedometer; SELECT iteration, ts, dur, total, format('%.1f', mean) AS mean, format('%.1f', geomean) AS geomean, format('%.1f', score) AS score, num_measurements FROM chrome_speedometer_iteration, ( SELECT iteration, COUNT(*) AS num_measurements FROM chrome_speedometer_measure GROUP BY iteration ) USING (iteration) ORDER BY iteration; """, out=Path('chrome_speedometer.out')) # CPU power ups def test_cpu_powerups(self): return DiffTestBlueprint( trace=DataPath('cpu_powerups_1.pb'), query=""" INCLUDE PERFETTO MODULE chrome.cpu_powerups; SELECT * FROM chrome_cpu_power_first_toplevel_slice_after_powerup; """, out=Csv(""" "slice_id","previous_power_state" 424,2 703,2 708,2 """))