Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CI] More CI reduction and clean-up #8052

Merged
merged 36 commits into from
Jun 23, 2023
Merged

Conversation

Mytherin
Copy link
Collaborator

Follow-up from #8046 (also includes that PR)

Nightly Test

Add a NightlyTest.yml that contains several tests that will not run on every PR, but only during the nightly build. This includes several tests that rarely fail, but where it is still a good idea that we run them semi-frequently.

The nightly tests contain the following tests:

  • Linux Memory Leaks
  • Release Assertions
  • Thread Sanitizer
  • Vector Size = 2
  • Clang 14
  • GCC 4.8
  • Python 3 Tarball
  • Python Address Sanitizer (Linux)
  • Sqllogic tests
  • Storage Initialization Verification
  • No String Inline / Destroy Unpinned Blocks
  • Forcing async Sinks/Sources
  • Regression Tests between safe and unsafe builds
  • R Package Windows (Warnings)
  • R UBSAN

The nightly tests are still run in the CI of the forks, so for bigger PRs/refactors it is still possible to verify that they pass by checking there.

Test All Types

By default test_all_types no longer emits a giant enum with 70K+ values for large_enum - as this ends up taking a long time in debug mode making tests that use the test_all_types function take a good amount of time (even if the enum is never used). Instead there is now a use_large_enum option that can be set to actually generate the large enum.

Note that the data that is generated is the same, only the underlying enum type changes based on this option (containing either enum_0, enum_69999 or enum_0, enum_1, ..., enum_69998, enum_69999).

Slow Tests

This PR also moves several tests to slow tests and removes some unnecessary/excessive loops in tests. We also add a profiling mode to run_tests_one_by_one, allowing the tests to be profiled so we can easily find slow tests in the future.

python3 scripts/run_tests_one_by_one.py build/debug/test/unittest --profile

R Extensions

Previously we had a special test for building and loading extensions in R. This was required/useful since we had special handling for dynamic loading of extensions in R. Ever since the static linking this is rather moot since the extension loading for R is not special anymore - yet the CI run still added a significant amount of time. This PR removes the CI run and the R extension loading tests.

Other Changes

  • Remove the Extended test. This test is not necessary since other tests (tidy check/windows) already build with DISABLE_UNITY.
  • Merge the Windows ODBC and Windows 64-bit tests. The Windows ODBC test took 50 minutes, of which 48 minutes are building. Moving the ODBC tests to Windows 64-bit speeds up the CI significantly.

@Mytherin Mytherin closed this Jun 23, 2023
@Mytherin Mytherin reopened this Jun 23, 2023
Copy link
Contributor

@carlopi carlopi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a comment I would like to see improved (potentially on a separate iteration), but apart from that LGTM!

I haven't had a real try at how the workflow feels on a fork, but any problem could be fixed up later in a second part together with Swift workflow (it's the only failure, I would be ok with merging AND temporarily disabling Swift.yml).

Of the in-flight PRs I believe #7735, that has all test passing, would be most likely be incompatible, so I would merge first either this or #7735, and then fixing up whoever goes in as second.

@@ -211,6 +212,7 @@ jobs:

linux-extensions-64-aarch64:
name: Linux Extensions (AARCH64)
if: startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/master'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if: startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/master'
if: startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/master' || github.repo != 'duckdb/duckdb'

(syntax is very much pseudo-code)
I think we basically want to restrict this (and a few other similar places) only for duckdb/duckdb, since it would be useful to have this run also from any branch on forks.

@Mytherin Mytherin marked this pull request as draft June 23, 2023 07:08
@Mytherin Mytherin marked this pull request as ready for review June 23, 2023 07:08
@Mytherin Mytherin marked this pull request as draft June 23, 2023 08:17
@Mytherin Mytherin marked this pull request as ready for review June 23, 2023 08:18
@Mytherin Mytherin merged commit 155b1b4 into duckdb:master Jun 23, 2023
@Mytherin Mytherin deleted the evenlessci branch July 5, 2023 03:39
krlmlr pushed a commit to krlmlr/duckdb-r that referenced this pull request Sep 2, 2023
Merge pull request duckdb/duckdb#8307 from Tishj/chunk_scan_state

[Arrow] Add ChunkScanState interface to preserve chunk-offset when scanning

Merge pull request duckdb/duckdb#8089 from pdet/basepython_tz

Python TIMESTAMPTZ support

Merge pull request duckdb/duckdb#8052 from Mytherin/evenlessci

[CI] More CI reduction and clean-up

Merge pull request duckdb/duckdb#7701 from Mause/bugfix/python-union-description

Add union to test_all_types, and arrow and json R/W
krlmlr pushed a commit to krlmlr/duckdb-r that referenced this pull request Sep 2, 2023
Merge pull request duckdb/duckdb#8307 from Tishj/chunk_scan_state

[Arrow] Add ChunkScanState interface to preserve chunk-offset when scanning

Merge pull request duckdb/duckdb#8089 from pdet/basepython_tz

Python TIMESTAMPTZ support

Merge pull request duckdb/duckdb#8052 from Mytherin/evenlessci

[CI] More CI reduction and clean-up

Merge pull request duckdb/duckdb#7701 from Mause/bugfix/python-union-description

Add union to test_all_types, and arrow and json R/W
krlmlr pushed a commit to krlmlr/duckdb-r that referenced this pull request Sep 2, 2023
Merge pull request duckdb/duckdb#8307 from Tishj/chunk_scan_state

[Arrow] Add ChunkScanState interface to preserve chunk-offset when scanning

Merge pull request duckdb/duckdb#8089 from pdet/basepython_tz

Python TIMESTAMPTZ support

Merge pull request duckdb/duckdb#8052 from Mytherin/evenlessci

[CI] More CI reduction and clean-up

Merge pull request duckdb/duckdb#7701 from Mause/bugfix/python-union-description

Add union to test_all_types, and arrow and json R/W
krlmlr pushed a commit to krlmlr/duckdb-r that referenced this pull request Sep 2, 2023
- Merge pull request duckdb/duckdb#8307 from Tishj/chunk_scan_state: [Arrow] Add ChunkScanState interface to preserve chunk-offset when scanning

- Merge pull request duckdb/duckdb#8089 from pdet/basepython_tz: Python TIMESTAMPTZ support

- Merge pull request duckdb/duckdb#8052 from Mytherin/evenlessci: [CI] More CI reduction and clean-up

- Merge pull request duckdb/duckdb#7701 from Mause/bugfix/python-union-description: Add union to test_all_types, and arrow and json R/W

- Merge pull request duckdb/duckdb#8497 from samansmink/pending-execute-result-api-change: Add PendingExecutionResult::ALL_TASKS_BLOCKED
krlmlr pushed a commit to duckdb/duckdb-r that referenced this pull request Sep 5, 2023
- Merge pull request duckdb/duckdb#8307 from Tishj/chunk_scan_state: [Arrow] Add ChunkScanState interface to preserve chunk-offset when scanning

- Merge pull request duckdb/duckdb#8089 from pdet/basepython_tz: Python TIMESTAMPTZ support

- Merge pull request duckdb/duckdb#8052 from Mytherin/evenlessci: [CI] More CI reduction and clean-up

- Merge pull request duckdb/duckdb#7701 from Mause/bugfix/python-union-description: Add union to test_all_types, and arrow and json R/W

- Merge pull request duckdb/duckdb#8497 from samansmink/pending-execute-result-api-change: Add PendingExecutionResult::ALL_TASKS_BLOCKED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants