Add test runtime analyzer
What is this?
This is a ruby tool to analyzing pipelines and their test reports spit out from the GitLab API.
How to run
$ bundle install
$ bundle exec bin/test_runtime_analyzer
./qa/specs/features/api/1_manage/rate_limits_spec.rb (924.64s)
./qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb (110.96s)
./qa/specs/features/browser_ui/5_package/package_registry/maven_repository_spec.rb (98.49s)
./qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb (86.26s)
./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb (80.06s)
./qa/specs/features/browser_ui/5_package/package_registry/nuget_repository_spec.rb (78.03s)
./qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb (77.44s)
./qa/specs/features/browser_ui/5_package/container_registry/container_registry_omnibus_spec.rb (77.22s)
./qa/specs/features/ee/api/9_enablement/elasticsearch/index_tests/merge_request_index/merge_request_index_spec.rb (75.93s)
./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb (74.35s)
See tmp/longest_runtimes.json for more information
tmp/pipelines.json
This file will be generated after the binary is run, giving an aggregated GitLab Test Report API based on the last 10 pipelines.
tmp/longest_runtimes.json
Flat JSON file to show three things:
- Runtimes
{ "<test_file>": [runX...runY] }
- Computed Averages
{ "<test_file>": aggregate_averaged_runtime }
(before sorting) - Longest Running
[ [ "<test_file>", aggregated_average_runtime ] ]
sorted by longest running
The output shows the top 10 longest running tests and their average runtimes.
Show me...
The latest run of this analyzer identified these tests are the longest running:
./qa/specs/features/api/1_manage/rate_limits_spec.rb (924.64s) | ./qa/specs/features/api/1_manage/rate_limits_spec.rb (922.69s) |
./qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb (110.96s) | ./qa/specs/features/ee/browser_ui/5_package/dependency_proxy_sso_spec.rb (127.26s) |
./qa/specs/features/browser_ui/5_package/package_registry/maven_repository_spec.rb (98.49s) | ./qa/specs/features/ee/api/9_enablement/elasticsearch/elasticsearch_api_spec.rb (115.50s) |
./qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb (86.26s) | ./qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb (106.61s) |
./qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb (80.06s) | ./qa/specs/features/api/3_create/gitaly/backend_node_recovery_spec.rb (98.59s) |
./qa/specs/features/browser_ui/5_package/package_registry/nuget_repository_spec.rb (78.03s) | ./qa/specs/features/ee/api/9_enablement/elasticsearch/index_tests/merge_request_index/merge_request_index_spec.rb (97.28s) |
./qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb (77.44s) | ./qa/specs/features/ee/browser_ui/1_manage/ldap/admin_ldap_sync_spec.rb (95.06s) |
./qa/specs/features/browser_ui/5_package/container_registry/container_registry_omnibus_spec.rb (77.22s) | ./qa/specs/features/ee/api/9_enablement/elasticsearch/advanced_global_advanced_syntax_search_spec.rb (94.73s) |
./qa/specs/features/ee/api/9_enablement/elasticsearch/index_tests/merge_request_index/merge_request_index_spec.rb (75.93s) | ./qa/specs/features/browser_ui/5_package/package_registry/maven_repository_spec.rb (94.47s) |
./qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb (74.35s) | ./qa/specs/features/ee/api/9_enablement/elasticsearch/index_tests/notes_index/note_index_spec.rb (89.79s) |
Edited by Dan Davison