René's URL Explorer Experiment


Title: improve test latency · Issue #191 · googleapis/python-bigquery · GitHub

Open Graph Title: improve test latency · Issue #191 · googleapis/python-bigquery

X Title: improve test latency · Issue #191 · googleapis/python-bigquery

Description: recent runs of presubmit kokoro show we're taking something on the order of 37-48 minutes for typical runs, with a couple invocations significantly higher than that. It's a significant impediment to actually getting things done. We can d...

Open Graph Description: recent runs of presubmit kokoro show we're taking something on the order of 37-48 minutes for typical runs, with a couple invocations significantly higher than that. It's a significant impediment t...

X Description: recent runs of presubmit kokoro show we're taking something on the order of 37-48 minutes for typical runs, with a couple invocations significantly higher than that. It's a significant impe...

Opengraph URL: https://github.com/googleapis/python-bigquery/issues/191

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"improve test latency","articleBody":"recent runs of presubmit kokoro show we're taking something on the order of 37-48 minutes for typical runs, with a couple invocations significantly higher than that.  It's a significant impediment to actually getting things done.\r\n\r\nWe can definitely test much faster than this.\r\n\r\nSome things to look at:\r\n\r\n* Decompose the monolilthic kokoro job that runs all the nox sessions serially into parallel invocations, the same way we decompose the samples invocations.  Fan out to get better wall time.\r\n\r\n* Look for obvious slow tests and improve them, reducing the tail of the (to be) parallelized test runs.  Based on logging, system tests are unsuprisingly the longer session typically. \r\n\r\n* Look at coverage overlap between samples and library; we may be able to reduce redundancy in testing.\r\n\r\n\r\nHere's some quick info from running locally on 3.8:\r\n\r\n```\r\n$ nox -s system-3.8 -- --durations=0\r\n\r\n44.84s call     tests/system.py::TestBigQuery::test_dbapi_w_standard_sql_types\r\n29.28s call     tests/system.py::TestBigQuery::test_dbapi_w_query_parameters\r\n27.39s call     tests/system.py::TestBigQuery::test_query_many_columns\r\n15.91s call     tests/system.py::TestBigQuery::test_query_w_query_params\r\n15.04s call     tests/system.py::TestBigQuery::test_load_table_from_file_w_explicit_location\r\n13.98s call     tests/system.py::TestBigQuery::test_load_table_from_dataframe_w_automatic_schema\r\n13.79s call     tests/system.py::TestBigQuery::test_query_w_standard_sql_types\r\n13.19s call     tests/system.py::TestBigQuery::test_load_table_from_dataframe_w_nullable_int64_datatype\r\n11.90s call     tests/system.py::TestBigQuery::test_load_table_from_local_avro_file_then_dump_table\r\n11.19s call     tests/system.py::TestBigQuery::test_load_table_from_dataframe_w_required\r\n10.83s call     tests/system.py::TestBigQuery::test_nested_table_to_dataframe\r\n10.50s call     tests/system.py::TestBigQuery::test_load_table_from_dataframe_w_nulls\r\n10.30s call     tests/system.py::TestBigQuery::test_load_table_from_json_schema_autodetect\r\n10.11s call     tests/system.py::TestBigQuery::test_copy_table\r\n9.60s call     tests/system.py::TestBigQuery::test_load_table_from_dataframe_w_explicit_schema\r\n8.56s call     tests/system.py::TestBigQuery::test_dbapi_fetchall\r\n8.33s call     tests/system.py::TestBigQuery::test_extract_table\r\n7.61s call     tests/system.py::TestBigQuery::test_nested_table_to_arrow\r\n7.20s call     tests/system.py::TestBigQuery::test_load_table_from_dataframe_w_nullable_int64_datatype_automatic_schema\r\n7.09s call     tests/system.py::TestBigQuery::test_load_table_from_uri_then_dump_table\r\n7.03s call     tests/system.py::TestBigQuery::test_list_rows_page_size\r\n6.76s call     tests/system.py::TestBigQuery::test_query_w_legacy_sql_types\r\n6.67s call     tests/system.py::TestBigQuery::test_dbapi_connection_does_not_leak_sockets\r\n6.34s call     tests/system.py::TestBigQuery::test_query_w_dml\r\n6.23s call     tests/system.py::TestBigQuery::test_dbapi_w_dml\r\n5.71s call     tests/system.py::TestBigQuery::test_load_avro_from_uri_then_dump_table\r\n4.26s call     tests/system.py::TestBigQuery::test_load_table_from_json_basic_use\r\n3.32s call     tests/system.py::TestBigQuery::test_querying_data_w_timeout\r\n3.12s call     tests/system.py::test_bigquery_magic\r\n2.89s call     tests/system.py::TestBigQuery::test_list_tables\r\n2.87s call     tests/system.py::TestBigQuery::test_query_results_to_dataframe\r\n2.81s call     tests/system.py::TestBigQuery::test_list_datasets\r\n2.81s call     tests/system.py::TestBigQuery::test_job_cancel\r\n2.69s call     tests/system.py::TestBigQuery::test_update_table\r\n2.69s call     tests/system.py::TestBigQuery::test_insert_rows_from_dataframe\r\n2.50s call     tests/system.py::TestBigQuery::test_create_routine\r\n2.46s call     tests/system.py::TestBigQuery::test_query_w_page_size\r\n2.22s call     tests/system.py::TestBigQuery::test_query_results_to_dataframe_w_bqstorage_v1beta1\r\n2.19s call     tests/system.py::TestBigQuery::test_query_results_to_dataframe_w_bqstorage\r\n2.18s call     tests/system.py::TestBigQuery::test_large_query_w_public_data\r\n2.10s call     tests/system.py::TestBigQuery::test_create_table_rows_fetch_nested_schema\r\n2.00s call     tests/system.py::TestBigQuery::test_insert_rows_then_dump_table\r\n1.98s call     tests/system.py::TestBigQuery::test_dbapi_fetch_w_bqstorage_client_large_result_set\r\n1.90s call     tests/system.py::TestBigQuery::test_update_table_schema\r\n1.89s call     tests/system.py::TestBigQuery::test_create_table\r\n1.84s call     tests/system.py::TestBigQuery::test_dbapi_fetch_w_bqstorage_client_v1beta1_large_result_set\r\n1.60s call     tests/system.py::TestBigQuery::test_insert_rows_nested_nested_dictionary\r\n1.60s call     tests/system.py::TestBigQuery::test_create_table_w_time_partitioning_w_clustering_fields\r\n1.59s call     tests/system.py::TestBigQuery::test_insert_rows_nested_nested\r\n1.57s call     tests/system.py::TestBigQuery::test_query_statistics\r\n1.55s call     tests/system.py::TestBigQuery::test_update_dataset\r\n1.46s call     tests/system.py::TestBigQuery::test_query_w_timeout\r\n1.44s call     tests/system.py::TestBigQuery::test_list_rows_empty_table\r\n1.30s call     tests/system.py::TestBigQuery::test_get_dataset\r\n1.18s call     tests/system.py::TestBigQuery::test_delete_dataset_delete_contents_true\r\n1.11s call     tests/system.py::TestBigQuery::test_create_table_with_policy\r\n1.07s call     tests/system.py::TestBigQuery::test_delete_dataset_delete_contents_false\r\n1.00s call     tests/system.py::TestBigQuery::test_create_dataset\r\n0.99s call     tests/system.py::TestBigQuery::test_delete_dataset_with_string\r\n0.93s call     tests/system.py::TestBigQuery::test_query_w_wrong_config\r\n0.88s call     tests/system.py::TestBigQuery::test_list_datasets_w_project\r\n0.77s call     tests/system.py::TestBigQuery::test_close_releases_open_sockets\r\n0.75s call     tests/system.py::TestBigQuery::test_query_w_start_index\r\n0.75s call     tests/system.py::TestBigQuery::test_query_future\r\n0.73s call     tests/system.py::TestBigQuery::test_query_iter\r\n0.47s call     tests/system.py::TestBigQuery::test_list_partitions\r\n0.39s call     tests/system.py::TestBigQuery::test_dbapi_dry_run_query\r\n0.27s call     tests/system.py::TestBigQuery::test_get_failed_job\r\n0.26s call     tests/system.py::TestBigQuery::test_query_w_failed_query\r\n0.17s call     tests/system.py::TestBigQuery::test_get_table_w_public_dataset\r\n0.17s call     tests/system.py::TestBigQuery::test_list_rows_max_results_w_bqstorage\r\n0.16s call     tests/system.py::TestBigQuery::test_get_service_account_email\r\n0.06s setup    tests/system.py::test_bigquery_magic\r\n0.01s setup    tests/system.py::TestBigQuery::test_close_releases_open_sockets\r\n```\r\n\r\nHere's the slowest unit-3.8 timings (way more tests than included here):\r\n\r\n```\r\n1.73s call     tests/unit/test_job.py::TestQueryJob::test_result_invokes_begins\r\n1.45s call     tests/unit/test_client.py::TestClient::test_get_dataset\r\n1.00s call     tests/unit/test_client.py::TestClient::test_create_job_query_config_w_rateLimitExceeded_error\r\n1.00s call     tests/unit/test_client.py::TestClient::test_get_service_account_email_w_custom_retry\r\n0.44s call     tests/unit/test_table.py::TestRowIterator::test_to_dataframe_w_bqstorage_updates_progress_bar\r\n0.37s call     tests/unit/test_job.py::Test_AsyncJob::test_cancel_w_custom_retry\r\n0.31s call     tests/unit/test_table.py::TestRowIterator::test_to_dataframe_w_bqstorage_empty_streams\r\n0.28s call     tests/unit/test_table.py::TestRowIterator::test_to_dataframe_error_if_pandas_is_none\r\n0.27s call     tests/unit/test_dbapi_connection.py::TestConnection::test_does_not_keep_cursor_instances_alive\r\n0.26s call     tests/unit/test_table.py::TestRowIterator::test_to_dataframe_progress_bar_wo_pyarrow\r\n0.26s call     tests/unit/test_table.py::TestRowIterator::test_to_dataframe_progress_bar\r\n0.25s call     tests/unit/test_table.py::TestRowIterator::test_to_arrow_progress_bar\r\n0.25s call     tests/unit/test_dbapi_cursor.py::TestCursor::test_fetchmany_w_row\r\n0.25s call     tests/unit/test_dbapi_cursor.py::TestCursor::test_execute_w_query_dry_run\r\n0.25s call     tests/unit/test_table.py::TestRowIterator::test_to_dataframe_tqdm_error\r\n0.25s call     tests/unit/test_job.py::TestQueryJob::test_result_w_timeout\r\n0.24s call     tests/unit/test_table.py::TestRowIterator::test_to_dataframe_w_bqstorage_snapshot\r\n0.22s call     tests/unit/test_table.py::TestRowIterator::test_to_dataframe_tabledata_list_w_multiple_pages_return_unique_index\r\n0.21s call     tests/unit/test_table.py::TestRowIterator::test_to_arrow_max_results_w_create_bqstorage_warning\r\n0.21s call     tests/unit/test_magics.py::test_bigquery_magic_w_table_id_and_destination_var\r\n0.21s call     tests/unit/test_client.py::TestClient::test__call_api_applying_custom_retry_on_timeout\r\n0.20s call     tests/unit/test_dbapi_connection.py::TestConnection::test_connect_w_client\r\n```","author":{"url":"https://github.com/shollyman","@type":"Person","name":"shollyman"},"datePublished":"2020-07-24T22:16:24.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":9},"url":"https://github.com/191/python-bigquery/issues/191"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:4b2f6bf9-63b3-02a3-e4ee-2f5ee30761e1
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idCADE:32CF86:259F32:361272:6A4E68DC
html-safe-nonce12c795c1b7152c90aa550d2be781926b34427abcb8bf86a79c470e44e9d90a39
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQURFOjMyQ0Y4NjoyNTlGMzI6MzYxMjcyOjZBNEU2OERDIiwidmlzaXRvcl9pZCI6Ijc3ODYzODIyOTA0MjcyMDk5NDgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac952b35807d8f7c1c32934717bb22c0340539188fa49dae6c9f21c5adb4965c8c
hovercard-subject-tagissue:665446060
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/googleapis/python-bigquery/191/issue_layout
twitter:imagehttps://opengraph.githubassets.com/4a87aede8e5bd8c66b1fe48798c249c1e4d78b00ded6dafe13a439e737d322d3/googleapis/python-bigquery/issues/191
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/4a87aede8e5bd8c66b1fe48798c249c1e4d78b00ded6dafe13a439e737d322d3/googleapis/python-bigquery/issues/191
og:image:altrecent runs of presubmit kokoro show we're taking something on the order of 37-48 minutes for typical runs, with a couple invocations significantly higher than that. It's a significant impediment t...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameshollyman
hostnamegithub.com
expected-hostnamegithub.com
None41b6ab3ba6d20a71766ac245b5a4a94c6fc672a9cd4da7d44c1b33ab8bf6a21c
turbo-cache-controlno-preview
go-importgithub.com/googleapis/python-bigquery git https://github.com/googleapis/python-bigquery.git
octolytics-dimension-user_id16785467
octolytics-dimension-user_logingoogleapis
octolytics-dimension-repository_id226992475
octolytics-dimension-repository_nwogoogleapis/python-bigquery
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id226992475
octolytics-dimension-repository_network_root_nwogoogleapis/python-bigquery
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasee6a744804e8e70f97b4d5a18a94dcc63db22f97a
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/googleapis/python-bigquery/issues/191#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-bigquery%2Fissues%2F191
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgoogleapis%2Fpython-bigquery%2Fissues%2F191
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=googleapis%2Fpython-bigquery
Reloadhttps://github.com/googleapis/python-bigquery/issues/191
Reloadhttps://github.com/googleapis/python-bigquery/issues/191
Reloadhttps://github.com/googleapis/python-bigquery/issues/191
Please reload this pagehttps://github.com/googleapis/python-bigquery/issues/191
googleapis https://github.com/googleapis
python-bigqueryhttps://github.com/googleapis/python-bigquery
Notifications https://github.com/login?return_to=%2Fgoogleapis%2Fpython-bigquery
Fork 324 https://github.com/login?return_to=%2Fgoogleapis%2Fpython-bigquery
Star 799 https://github.com/login?return_to=%2Fgoogleapis%2Fpython-bigquery
Code https://github.com/googleapis/python-bigquery
Issues 0 https://github.com/googleapis/python-bigquery/issues
Pull requests 0 https://github.com/googleapis/python-bigquery/pulls
Actions https://github.com/googleapis/python-bigquery/actions
Projects https://github.com/googleapis/python-bigquery/projects
Security and quality 0 https://github.com/googleapis/python-bigquery/security
Insights https://github.com/googleapis/python-bigquery/pulse
Code https://github.com/googleapis/python-bigquery
Issues https://github.com/googleapis/python-bigquery/issues
Pull requests https://github.com/googleapis/python-bigquery/pulls
Actions https://github.com/googleapis/python-bigquery/actions
Projects https://github.com/googleapis/python-bigquery/projects
Security and quality https://github.com/googleapis/python-bigquery/security
Insights https://github.com/googleapis/python-bigquery/pulse
improve test latencyhttps://github.com/googleapis/python-bigquery/issues/191#top
https://github.com/shollyman
api: bigqueryIssues related to the googleapis/python-bigquery API.https://github.com/googleapis/python-bigquery/issues?q=state%3Aopen%20label%3A%22api%3A%20bigquery%22
type: feature request‘Nice-to-have’ improvement, new feature or different behavior or design.https://github.com/googleapis/python-bigquery/issues?q=state%3Aopen%20label%3A%22type%3A%20feature%20request%22
https://github.com/shollyman
shollymanhttps://github.com/shollyman
on Jul 24, 2020https://github.com/googleapis/python-bigquery/issues/191#issue-665446060
shollymanhttps://github.com/shollyman
api: bigqueryIssues related to the googleapis/python-bigquery API.https://github.com/googleapis/python-bigquery/issues?q=state%3Aopen%20label%3A%22api%3A%20bigquery%22
type: feature request‘Nice-to-have’ improvement, new feature or different behavior or design.https://github.com/googleapis/python-bigquery/issues?q=state%3Aopen%20label%3A%22type%3A%20feature%20request%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.