Skip to content

Commit c11d68d

Browse files
hamidgh09ion-elgrecoroykim98Nordalfrtyler
authored
HOPSFS-264: Update main from upstream to v1.0.2 (#13)
* chore: remove cdf feature Signed-off-by: Ion Koutsouris <[email protected]> * Correct Python docs for incremental compaction on OPTIMIZE * fix: added restored metadata as action to the next committed version Signed-off-by: Alexander Falk <[email protected]> * chore: add a regression test to ensure restore respects metadata actions Fixes delta-io#3352 Signed-off-by: R. Tyler Croy <[email protected]> * chore: fix some minor build warnings Signed-off-by: R. Tyler Croy <[email protected]> * fix: handle unknown features Signed-off-by: Robert Pack <[email protected]> * fix: update to latest kernel state Signed-off-by: Robert Pack <[email protected]> * test: update or disable tests with unsupported features Signed-off-by: Robert Pack <[email protected]> * refactor: move transaction module to kernel Signed-off-by: Robert Pack <[email protected]> * chore: clippy Signed-off-by: Robert Pack <[email protected]> * chore: move proofs into dedicated folder Signed-off-by: Robert Pack <[email protected]> * refactor: move storage module into logstore Signed-off-by: Robert Pack <[email protected]> * feat: harmonize storage config parsing Signed-off-by: Robert Pack <[email protected]> * refactor: remove RetryConfigParse trait Signed-off-by: Robert Pack <[email protected]> * feat!: formalize parsing of storage options Signed-off-by: Robert Pack <[email protected]> * feat: centrally apply object store layers Signed-off-by: Robert Pack <[email protected]> * refactor: isolate factories for storage / log store integrations Signed-off-by: Robert Pack <[email protected]> * fix: url parsing inconsistencies Signed-off-by: Robert Pack <[email protected]> * fix: PR feedback Signed-off-by: Robert Pack <[email protected]> * fix: PR feedback Signed-off-by: Robert Pack <[email protected]> * fix: clippy warnings Signed-off-by: Andrew Lamb <[email protected]> * feat: derive macro for config implementations Signed-off-by: Robert Pack <[email protected]> * feat: error handling in derive macro Signed-off-by: Robert Pack <[email protected]> * refactor: move str_ist_truthy to config Signed-off-by: Robert Pack <[email protected]> * chore: clippy Signed-off-by: Robert Pack <[email protected]> * Chore: put a couple symbols behind the right feature gate Signed-off-by: R. Tyler Croy <[email protected]> * update for kernel 0.10.0 Signed-off-by: Zach Schuermann <[email protected]> * fix daft docs Signed-off-by: Zach Schuermann <[email protected]> * Fix the default target size Signed-off-by: Hiromu Hota <[email protected]> * gate RetryConfig usage on 'cloud' feature Signed-off-by: Ze'ev Maor <[email protected]> * add compile_error if neither 'rustls' not 'native-tls' are enabled Signed-off-by: Ze'ev Maor <[email protected]> * feat: Update to Datafusion 47.0.0 Signed-off-by: Andrew Lamb <[email protected]> * feat: Update to Datafusion 47.0.0 Signed-off-by: Andrew Lamb <[email protected]> * chore: re-enable hdfs support and add a teensy tiny unit test Signed-off-by: R. Tyler Croy <[email protected]> * chore: tighten up the checking on the predicate comparison Signed-off-by: R. Tyler Croy <[email protected]> * chore: bump versions of rust crates for another release party Signed-off-by: R. Tyler Croy <[email protected]> * chore: remove unused dependencies Signed-off-by: R. Tyler Croy <[email protected]> * chore: ensure derive is ready for publishing too Signed-off-by: R. Tyler Croy <[email protected]> * chore: the mount crate reqiores the cloud feature now Signed-off-by: R. Tyler Croy <[email protected]> * chore: hdfs requires the cloud feature Signed-off-by: R. Tyler Croy <[email protected]> * chore: modify the publish script to take the required crate ordering into consideration Signed-off-by: R. Tyler Croy <[email protected]> * chore: remove unnecessary datafusion dependency for mount Signed-off-by: R. Tyler Croy <[email protected]> * chore: reduce feature/dependency footprint for subcrates The object_store crate does not require its cloud feature in order to use RetryConfig, so most of the subcrates can shed a cloud and datafusion feature. Cleaning this up allows for avoiding the ObjectStoreFactory trait's ambiguous implementation which can cause problem if a subcrate is implemented using the "non-cloud" arm but then is included in a dependency tree where the "cloud" feature is enabled by another dependency. This was sort of only theoretically possible but did manifest during `cargo publish` operations. Additionally the removal of a datafusion feature when it iis not necessary results in ~100 fewer crates at compile and link time for those (hi!) working within subcrates Signed-off-by: R. Tyler Croy <[email protected]> * feat: introduce VacuumMode::Full for cleaning up orphaned files This allows an optional but not-on-by-default mode of removing untracked files in the delta table directory. Delta/Spark supports a "lite" and "full" mode for [vacuum]. This change is intentionally not making "full" the default as it is for Delta/Spark since that may have unintended consequences for our users who have become accustomed to "lite" being the default. Fixes delta-io#2349 [vacuum]: https://docs.delta.io/latest/delta-utility.html#remove-files-no-longer-referenced-by-a-delta-table Signed-off-by: R. Tyler Croy <[email protected]> * fix: if field contains space in constraint expression, the check will fail Signed-off-by: Alexander Falk <[email protected]> * chore: add test for handling fields with spaces in constraints Signed-off-by: R. Tyler Croy <[email protected]> * chore(deps): Update sqlparser requirement from 0.53.0 to 0.56.0 Updates the requirements on [sqlparser](https://github.com/apache/datafusion-sqlparser-rs) to permit the latest version. - [Changelog](https://github.com/apache/datafusion-sqlparser-rs/blob/main/CHANGELOG.md) - [Commits](apache/datafusion-sqlparser-rs@v0.53.0...v0.56.0) --- updated-dependencies: - dependency-name: sqlparser dependency-version: 0.56.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> * chore(deps): Update foyer requirement from 0.16.1 to 0.17.0 Updates the requirements on [foyer](https://github.com/foyer-rs/foyer) to permit the latest version. - [Release notes](https://github.com/foyer-rs/foyer/releases) - [Changelog](https://github.com/foyer-rs/foyer/blob/main/CHANGELOG.md) - [Commits](foyer-rs/foyer@v0.16.1...v0.17.0) --- updated-dependencies: - dependency-name: foyer dependency-version: 0.17.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> * chore: setup dat test scaffolding This commit was modified from delta-io#3137 to enable an independent merge to bring some of these structural changes needed for delta-kernel-rs integration in piecemeal Signed-off-by: Robert Pack <[email protected]> Signed-off-by: R. Tyler Croy <[email protected]> * chore: bring dat test loading into the root Signed-off-by: R. Tyler Croy <[email protected]> * chore: enable dat testing with the existing code prior to bringing kernel replay in, I would like "classic" delta-rs parsing Closes delta-io#863 Signed-off-by: R. Tyler Croy <[email protected]> * chore: missed a version bump for core Signed-off-by: R. Tyler Croy <[email protected]> * fix: build Unity Catalog crate without DataFusion Signed-off-by: Heran Lin <[email protected]> * fix: drop column earlier Signed-off-by: Ion Koutsouris <[email protected]> * chore: add a regression test for delta-io#3413 Signed-off-by: R. Tyler Croy <[email protected]> * chore: include license file in deltalake-derive crate Signed-off-by: Andrew Kane <[email protected]> * chore(deps): bump foyer to v0.17.2 to prevent from wrong result Signed-off-by: MrCroxx <[email protected]> * fix: pin arrow to 55.0.0 Signed-off-by: Ion Koutsouris <[email protected]> * feat: during LakeFS file operations, skip merge when 0 changes Signed-off-by: Sam Meyer-Reed <[email protected]> * Fix broken test Signed-off-by: Sam Meyer-Reed <[email protected]> * Fix lakefs diff API parameter order Signed-off-by: Sam Meyer-Reed <[email protected]> * Fix formatting Signed-off-by: Sam Meyer-Reed <[email protected]> * added gc valid check Signed-off-by: JustinRush80 <[email protected]> * chore: bump crate versions which are due for release Signed-off-by: R. Tyler Croy <[email protected]> * feat: spawn io with spawn service Signed-off-by: Ion Koutsouris <[email protected]> * fix: pin arrow to 55.0.0 Signed-off-by: Ion Koutsouris <[email protected]> * chore: rely on the testing during coverage generation to speed up tests Signed-off-by: R. Tyler Croy <[email protected]> * chore: make codecov more vigorously enforced to help ensure quality Signed-off-by: R. Tyler Croy <[email protected]> * chore: prepare py-1.0 release Signed-off-by: Ion Koutsouris <[email protected]> * Upgrade load_with_datetime to ignore any uncommited deltas in any subdirectory of delta_log. Signed-off-by: Corwin Joy <[email protected]> Co-authored-by: Adam Reeve <[email protected]> * feat(datafusion): file pruning based on pushdown limit for partition cols filters Signed-off-by: Adrian Tanase <[email protected]> * feat(datafusion): optmize partition pruning, pushdown full predicates for DF integration Signed-off-by: Adrian Tanase <[email protected]> * chore: experiment with using sccache in GitHub Actions Signed-off-by: R. Tyler Croy <[email protected]> * chore: cleanup the CODEOWNERS a bit for more accurate review assignments Signed-off-by: R. Tyler Croy <[email protected]> * chore: only check our documentation, not dependencies Signed-off-by: R. Tyler Croy <[email protected]> * chore: refactor the Rust build to use as much as possible of sccache Signed-off-by: R. Tyler Croy <[email protected]> * chore: remove unused code and deps Signed-off-by: Robert Pack <[email protected]> * chore: remove peek_next_commit on DeltaTable which has been deprecated since 0.22.4 Signed-off-by: R. Tyler Croy <[email protected]> * chore: refactor some symbols out of table/mod.rs into their own files This makes things a little cleaner when reviewing this code and preparing for refactors Signed-off-by: R. Tyler Croy <[email protected]> * docs: add 1.0.0 migration guide Signed-off-by: Ion Koutsouris <[email protected]> * refactor: more specific factory parameter names Signed-off-by: Robert Pack <[email protected]> * feat: expose kernel Engine on LogStore Signed-off-by: Robert Pack <[email protected]> * chore: pr feedback and test fixes Signed-off-by: Robert Pack <[email protected]> * test: avoid circular dependency with core/test crates Signed-off-by: Robert Pack <[email protected]> * refactor: use LogStore in Snapshot / LogSegment APIs Signed-off-by: Robert Pack <[email protected]> * chore: build default tests with the crate in CI Signed-off-by: R. Tyler Croy <[email protected]> * chore: enable the datafusion feature for integration tests which need it Signed-off-by: R. Tyler Croy <[email protected]> * chore: annotate tests which require datafusion appropriately Signed-off-by: R. Tyler Croy <[email protected]> * ci: add spellchecker to pr tests Signed-off-by: Robert Pack <[email protected]> * chore: mark more tests which require datafusion Signed-off-by: R. Tyler Croy <[email protected]> * refactor: move from pyarrow to arro3 Signed-off-by: Ion Koutsouris <[email protected]> * chore: pr feedback Signed-off-by: Ion Koutsouris <[email protected]> * refactor: use root store in log processing Signed-off-by: Robert Pack <[email protected]> * fix: use more accurate log path parsing Signed-off-by: Robert Pack <[email protected]> * chore: set correct markers Signed-off-by: Ion Koutsouris <[email protected]> * chore: update kernel Signed-off-by: Robert Pack <[email protected]> * chore: update kernel Signed-off-by: Robert Pack <[email protected]> * fix: remove problematic typos configuration and fix Spellcheck issues Signed-off-by: Florian VALEYE <[email protected]> * feat: use kernel checkpoint writer Signed-off-by: Robert Pack <[email protected]> * refactor: use kernel log segment for some log inspection Signed-off-by: Robert Pack <[email protected]> * chore: remove unused time_utils Signed-off-by: Robert Pack <[email protected]> * chore: more typos Signed-off-by: Robert Pack <[email protected]> * refactor: remove protocol error Signed-off-by: Robert Pack <[email protected]> * feat: add table description and name API for Python Add convenient methods to set table description and name through the Python API. Signed-off-by: Florian VALEYE <[email protected]> * feat: add validator crate and use to have update table metadata validation in Rust Signed-off-by: Florian VALEYE <[email protected]> * chore: remove unused stats parsed field Signed-off-by: Robert Pack <[email protected]> * fix: arro3 schema conversion logic Signed-off-by: Ion Koutsouris <[email protected]> * chore: update migration docs Signed-off-by: Ion Koutsouris <[email protected]> * chore: improve wording Signed-off-by: Ion Koutsouris <[email protected]> * chore: update kernel to 0.11 Signed-off-by: Robert Pack <[email protected]> * fix: set casting safe param to False Signed-off-by: Ion Koutsouris <[email protected]> * chore: add xfail to flaky test Signed-off-by: Ion Koutsouris <[email protected]> * fix bullet list formatting Signed-off-by: Avril Aysha <[email protected]> * refactor!: get transaction versions for specific applications Signed-off-by: Robert Pack <[email protected]> * test: improve storage config testing Signed-off-by: Robert Pack <[email protected]> * chore: exclude Invariants from the default writer v2 feature set Invariants cannot be supported without datafusion present, the code should not pretend they exist. This also helps ensure a number of non-invariant related test can run without datafusion present Signed-off-by: R. Tyler Croy <[email protected]> * refactor!: remove and deprecate some python methods Signed-off-by: Robert Pack <[email protected]> * fix: ensure projecting only columns that exist in new files afte schema update Signed-off-by: Alex Wilcoxson <[email protected]> * docs: update link to df Signed-off-by: Raz Luvaton <[email protected]> * chore: update runner Signed-off-by: Ion Koutsouris <[email protected]> * ci: improve coverage collection Signed-off-by: Robert Pack <[email protected]> * chore: prepare for the next python release Signed-off-by: R. Tyler Croy <[email protected]> * chore!: remove get_earliest_version Signed-off-by: Robert Pack <[email protected]> * refactor!: have DeltaTable::version return an Option Signed-off-by: Robert Pack <[email protected]> * Revert "chore: add test for handling fields with spaces in constraints" This reverts commit 89ddf07. * Revert "fix: if field contains space in constraint expression, the check will fail" This reverts commit 6babfb6. * fix: spaced columns parsing Signed-off-by: Ion Koutsouris <[email protected]> * chore: update tests Signed-off-by: Ion Koutsouris <[email protected]> * chore: fmt Signed-off-by: Ion Koutsouris <[email protected]> * fix: wrong schema set in table provider Signed-off-by: Ion Koutsouris <[email protected]> * chore: bump version Signed-off-by: Ion Koutsouris <[email protected]> * refactor: move LazyTableProvider into python crate Signed-off-by: Robert Pack <[email protected]> * feat: add convenience extensions for kernel engine types Signed-off-by: Robert Pack <[email protected]> --------- Signed-off-by: Ion Koutsouris <[email protected]> Signed-off-by: Alexander Falk <[email protected]> Signed-off-by: R. Tyler Croy <[email protected]> Signed-off-by: Robert Pack <[email protected]> Signed-off-by: Andrew Lamb <[email protected]> Signed-off-by: Zach Schuermann <[email protected]> Signed-off-by: Hiromu Hota <[email protected]> Signed-off-by: Ze'ev Maor <[email protected]> Signed-off-by: dependabot[bot] <[email protected]> Signed-off-by: Heran Lin <[email protected]> Signed-off-by: Andrew Kane <[email protected]> Signed-off-by: MrCroxx <[email protected]> Signed-off-by: Sam Meyer-Reed <[email protected]> Signed-off-by: JustinRush80 <[email protected]> Signed-off-by: Corwin Joy <[email protected]> Signed-off-by: Adrian Tanase <[email protected]> Signed-off-by: Florian VALEYE <[email protected]> Signed-off-by: Avril Aysha <[email protected]> Signed-off-by: Alex Wilcoxson <[email protected]> Signed-off-by: Raz Luvaton <[email protected]> Co-authored-by: Ion Koutsouris <[email protected]> Co-authored-by: Roy Kim <[email protected]> Co-authored-by: Alexander Falk <[email protected]> Co-authored-by: R. Tyler Croy <[email protected]> Co-authored-by: Robert Pack <[email protected]> Co-authored-by: Andrew Lamb <[email protected]> Co-authored-by: Zach Schuermann <[email protected]> Co-authored-by: Hiromu Hota <[email protected]> Co-authored-by: Ze'ev Maor <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Heran Lin <[email protected]> Co-authored-by: Andrew Kane <[email protected]> Co-authored-by: MrCroxx <[email protected]> Co-authored-by: Sam Meyer-Reed <[email protected]> Co-authored-by: JustinRush80 <[email protected]> Co-authored-by: Corwin Joy <[email protected]> Co-authored-by: Adam Reeve <[email protected]> Co-authored-by: Adrian Tanase <[email protected]> Co-authored-by: Florian VALEYE <[email protected]> Co-authored-by: Avril Aysha <[email protected]> Co-authored-by: Alex Wilcoxson <[email protected]> Co-authored-by: Raz Luvaton <[email protected]>
1 parent 64f4729 commit c11d68d

File tree

377 files changed

+13583
-10182
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

377 files changed

+13583
-10182
lines changed

.github/CODEOWNERS

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
crates/ @wjones127 @roeap @rtyler @hntd187 @ion-elgreco
2-
delta-inspect/ @wjones127 @rtyler
1+
crates/core @roeap @rtyler @hntd187 @ion-elgreco
2+
crates/deltalake @roeap @rtyler @hntd187 @ion-elgreco
3+
crates/aws @rtyler
4+
crates/lakefs @ion-elgreco
5+
crates/catalog-unity @roeap @hntd187
6+
7+
delta-inspect/ @rtyler
8+
39
proofs/ @houqp
4-
python/ @wjones127 @fvaleye @roeap @ion-elgreco
10+
python/ @wjones127 @roeap @ion-elgreco
11+
512
tlaplus/ @houqp
6-
.github/ @wjones127 @rtyler
7-
docs/ @MrPowers
13+
14+
.github/ @rtyler

.github/actions/setup-env/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ description: "Set up Python, virtual environment, and Rust toolchain"
44
inputs:
55
python-version:
66
description: "The Python version to set up"
7-
required: true
7+
required: false
88
default: "3.10"
99

1010
rust-toolchain:
1111
description: "The Rust toolchain to set up"
12-
required: true
12+
required: false
1313
default: "stable"
1414

1515
runs:

.github/codecov.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
21
coverage:
32
status:
43
project:
54
default:
65
# allow some leniency on the deviation of pull requests
7-
threshold: '1%'
8-
informational: true
6+
threshold: 1
7+
if_ci_failed: error
8+
informational: false
99
patch:
1010
default:
11-
informational: true
12-
11+
if_ci_failed: error
12+
informational: false
1313

1414
ignore:
1515
- "delta-inspect/"
1616
- "proofs/"
1717
- "**/*.toml"
18+
- "crates/benchmarks/"

.github/scripts/retry_integration_test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ MAX_RETRIES=$2
55
RETRY_DELAY=$3
66
ATTEMPT=1
77
run_command() {
8-
uv run --no-sync pytest -m "($TEST_NAME and integration)" --doctest-modules 2>&1
8+
uv run --no-sync pytest -m "($TEST_NAME and integration and pyarrow)" --doctest-modules 2>&1
99
}
1010
until [ $ATTEMPT -gt $MAX_RETRIES ]
1111
do

.github/workflows/build.yml

Lines changed: 167 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -14,89 +14,80 @@ env:
1414
# Disable incremental builds by cargo for CI which should save disk space
1515
# and hopefully avoid final link "No space left on device"
1616
CARGO_INCREMENTAL: 0
17+
SCCACHE_GHA_ENABLED: "true"
18+
RUSTC_WRAPPER: "sccache"
1719

1820
jobs:
19-
default_build:
20-
runs-on: ubuntu-latest
21-
steps:
22-
- uses: actions/checkout@v3
23-
24-
- name: Install minimal stable with clippy and rustfmt
25-
uses: actions-rs/toolchain@v1
26-
with:
27-
profile: default
28-
toolchain: '1.82'
29-
override: true
30-
31-
- name: Build
32-
run: (cd crates/deltalake && cargo build)
33-
34-
format:
35-
runs-on: ubuntu-latest
36-
steps:
37-
- uses: actions/checkout@v3
38-
39-
- name: Install minimal stable with clippy and rustfmt
40-
uses: actions-rs/toolchain@v1
41-
with:
42-
profile: default
43-
toolchain: '1.82'
44-
override: true
45-
46-
- name: Format
47-
run: cargo fmt -- --check
48-
21+
# run various build comnfigurations, fmt, and clippy.
4922
build:
5023
strategy:
51-
fail-fast: false
24+
fail-fast: true
5225
matrix:
5326
os:
5427
- ubuntu-latest
5528
- windows-latest
29+
- macos-latest
5630
runs-on: ${{ matrix.os }}
5731

5832
steps:
59-
- uses: actions/checkout@v3
33+
- uses: actions/checkout@v4
34+
35+
- name: Run sccache-cache
36+
uses: mozilla-actions/[email protected]
6037

6138
- name: Install minimal stable with clippy and rustfmt
6239
uses: actions-rs/toolchain@v1
6340
with:
6441
profile: default
65-
toolchain: '1.82'
42+
toolchain: "1.82"
6643
override: true
6744

45+
- name: Format
46+
run: cargo fmt -- --check
47+
48+
- name: Default build
49+
run: (cd crates/deltalake && cargo build --tests)
50+
6851
- name: build and lint with clippy
6952
run: cargo clippy --features ${{ env.DEFAULT_FEATURES }} --tests
7053

7154
- name: Spot-check build for native-tls features
7255
run: cargo clippy --no-default-features --features azure,datafusion,s3-native-tls,gcs,glue --tests
7356

74-
- name: Check docs
75-
run: cargo doc --features ${{ env.DEFAULT_FEATURES }}
76-
7757
- name: Check no default features (except rustls)
7858
run: cargo check --no-default-features --features rustls
7959

80-
test:
60+
- name: Check docs
61+
run: cargo doc --no-deps --features ${{ env.DEFAULT_FEATURES }}
62+
63+
unit_test:
64+
name: Unit Tests
8165
strategy:
82-
fail-fast: false
66+
fail-fast: true
8367
matrix:
8468
os:
8569
- ubuntu-latest
8670
- windows-latest
71+
- macos-latest
8772
runs-on: ${{ matrix.os }}
73+
8874
steps:
89-
- uses: actions/checkout@v3
75+
- uses: actions/checkout@v4
76+
77+
- name: Run sccache-cache
78+
uses: mozilla-actions/[email protected]
9079

9180
- name: Install minimal stable with clippy and rustfmt
9281
uses: actions-rs/toolchain@v1
9382
with:
9483
profile: default
95-
toolchain: '1.82'
84+
toolchain: "1.82"
9685
override: true
9786

9887
- name: Run tests
99-
run: cargo test --verbose --features ${{ env.DEFAULT_FEATURES }}
88+
run: |
89+
make setup-dat
90+
cargo test --features ${{ env.DEFAULT_FEATURES }}
10091
10192
integration_test:
10293
name: Integration Tests
@@ -115,13 +106,71 @@ jobs:
115106
AZURE_STORAGE_CONNECTION_STRING: "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://localhost:10000/devstoreaccount1;QueueEndpoint=http://localhost:10001/devstoreaccount1;"
116107

117108
steps:
118-
- uses: actions/checkout@v3
109+
- uses: actions/checkout@v4
110+
111+
- name: Run sccache-cache
112+
uses: mozilla-actions/[email protected]
113+
114+
- name: Install minimal stable with clippy and rustfmt
115+
uses: actions-rs/toolchain@v1
116+
with:
117+
profile: default
118+
toolchain: "1.82"
119+
override: true
120+
121+
- name: Install cargo-llvm-cov
122+
uses: taiki-e/install-action@cargo-llvm-cov
123+
124+
- name: Start emulated services
125+
run: docker compose up -d
126+
127+
- name: Run tests with rustls (default)
128+
run: |
129+
gmake setup-dat
130+
cargo llvm-cov \
131+
--features integration_test,${{ env.DEFAULT_FEATURES }} \
132+
--workspace \
133+
--exclude delta-inspect \
134+
--exclude deltalake-hdfs \
135+
--exclude deltalake-lakefs \
136+
--codecov \
137+
--output-path codecov.json
138+
139+
- name: Upload coverage to Codecov
140+
uses: codecov/codecov-action@v4
141+
with:
142+
files: codecov.json
143+
fail_ci_if_error: true
144+
env:
145+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
146+
147+
integration_test_native_tls:
148+
name: Integration Tests (Native TLS)
149+
runs-on: ubuntu-latest
150+
env:
151+
# https://github.com/rust-lang/cargo/issues/10280
152+
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
153+
AWS_DEFAULT_REGION: "us-east-1"
154+
AWS_ACCESS_KEY_ID: deltalake
155+
AWS_SECRET_ACCESS_KEY: weloverust
156+
AWS_ENDPOINT_URL: http://localhost:4566
157+
AWS_ALLOW_HTTP: "1"
158+
AZURE_USE_EMULATOR: "1"
159+
AZURE_STORAGE_ALLOW_HTTP: "1"
160+
AZURITE_BLOB_STORAGE_URL: "http://localhost:10000"
161+
AZURE_STORAGE_CONNECTION_STRING: "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://localhost:10000/devstoreaccount1;QueueEndpoint=http://localhost:10001/devstoreaccount1;"
162+
163+
steps:
164+
- uses: actions/checkout@v4
165+
166+
- name: Run sccache-cache
167+
uses: mozilla-actions/[email protected]
119168

120169
- name: Install minimal stable with clippy and rustfmt
121170
uses: actions-rs/toolchain@v1
122171
with:
123172
profile: default
124-
toolchain: '1.82'
173+
toolchain: "1.82"
125174
override: true
126175

127176
# Install Java and Hadoop for HDFS integration tests
@@ -139,15 +188,63 @@ jobs:
139188
- name: Start emulated services
140189
run: docker compose up -d
141190

142-
- name: Run tests with rustls (default)
143-
run: |
144-
cargo test --features integration_test,${{ env.DEFAULT_FEATURES }}
145-
146191
- name: Run tests with native-tls
147192
run: |
148-
cargo clean
193+
gmake setup-dat
149194
cargo test --no-default-features --features integration_test,s3-native-tls,datafusion
150195
196+
integration_test_hdfs:
197+
name: Integration Tests (HDFS)
198+
runs-on: ubuntu-latest
199+
env:
200+
# https://github.com/rust-lang/cargo/issues/10280
201+
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
202+
203+
steps:
204+
- uses: actions/checkout@v4
205+
206+
- name: Run sccache-cache
207+
uses: mozilla-actions/[email protected]
208+
209+
- name: Install minimal stable with clippy and rustfmt
210+
uses: actions-rs/toolchain@v1
211+
with:
212+
profile: default
213+
toolchain: "1.82"
214+
override: true
215+
216+
- name: Install cargo-llvm-cov
217+
uses: taiki-e/install-action@cargo-llvm-cov
218+
219+
# Install Java and Hadoop for HDFS integration tests
220+
- uses: actions/setup-java@v4
221+
with:
222+
distribution: "temurin"
223+
java-version: "17"
224+
225+
- name: Download Hadoop
226+
run: |
227+
wget -q https://dlcdn.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz
228+
tar -xf hadoop-3.4.0.tar.gz -C $GITHUB_WORKSPACE
229+
echo "$GITHUB_WORKSPACE/hadoop-3.4.0/bin" >> $GITHUB_PATH
230+
231+
- name: Run tests with rustls (default)
232+
run: |
233+
gmake setup-dat
234+
cargo llvm-cov \
235+
--features integration_test \
236+
--package deltalake-hdfs \
237+
--codecov \
238+
--output-path codecov.json
239+
240+
- name: Upload coverage to Codecov
241+
uses: codecov/codecov-action@v4
242+
with:
243+
files: codecov.json
244+
fail_ci_if_error: true
245+
env:
246+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
247+
151248
integration_test_lakefs:
152249
name: Integration Tests (LakeFS v1.48)
153250
runs-on: ubuntu-latest
@@ -156,15 +253,21 @@ jobs:
156253
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
157254

158255
steps:
159-
- uses: actions/checkout@v3
256+
- uses: actions/checkout@v4
257+
258+
- name: Run sccache-cache
259+
uses: mozilla-actions/[email protected]
160260

161261
- name: Install minimal stable with clippy and rustfmt
162262
uses: actions-rs/toolchain@v1
163263
with:
164264
profile: default
165-
toolchain: '1.82'
265+
toolchain: "1.82"
166266
override: true
167267

268+
- name: Install cargo-llvm-cov
269+
uses: taiki-e/install-action@cargo-llvm-cov
270+
168271
- name: Download Lakectl
169272
run: |
170273
wget -q https://github.com/treeverse/lakeFS/releases/download/v1.48.1/lakeFS_1.48.1_Linux_x86_64.tar.gz
@@ -176,5 +279,17 @@ jobs:
176279

177280
- name: Run tests with rustls (default)
178281
run: |
179-
cargo test --features integration_test_lakefs,lakefs,datafusion
180-
282+
gmake setup-dat
283+
cargo llvm-cov \
284+
--package deltalake-lakefs \
285+
--features integration_test_lakefs \
286+
--codecov \
287+
--output-path codecov.json
288+
289+
- name: Upload coverage to Codecov
290+
uses: codecov/codecov-action@v4
291+
with:
292+
files: codecov.json
293+
fail_ci_if_error: true
294+
env:
295+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

0 commit comments

Comments
 (0)