Skip to content

Conversation

@suni72
Copy link
Contributor

@suni72 suni72 commented Jan 4, 2026

  • Zonal Bucket Write Support in ExtendedGCSFileSystem:

    • Implemented asynchronous overrides for _put_file, _pipe_file, upload_chunk, initiate_upload, and simple_upload.
    • Modified _put_file, _pipe_file, and simple_upload to accept a finalize_on_close argument.
    • Updated upload_chunk to automatically finalize the file once the specified size is reached.
    • Refactored ExtendedGCSFileSystem to use lazy initialization for the gRPC client.
    • Updated _cat_file to ensure all logic (including MRD creation) is wrapped within the try...finally block for safer cleanup.
  • ZonalFile Improvements:

    • Updated ZonalFile to prevent double-closing the AsyncAppendableObjectWriter if the object is already finalized.
  • Testing Infrastructure:

    • Added logic to create fresh Zonal Buckets dynamically during tests on real GCS.
    • Updated fixture logic to populate bucket in real gcs as well.
    • Moved shared mocks to conftest.py for better accessibility across test files.
    • Updated zonal_write_mocks to return None when running against real GCS, ensuring tests adapt automatically.
    • Added a file_path fixture to generate unique random filenames for every test to avoid exceeding operations rate limit on a single file and ensure test isolation.
  • New & Updated Tests:

    • Added comprehensive async tests for put, pipe, ls, cat, and rm to verify ExtendedGCSFileSystem in async mode.
    • Added specific tests for the new asynchronous upload methods (upload_chunk, initiate_upload, etc.).
    • Deduplicated tests in test_zonal_file and updated existing tests to work with both Mock and Real GCS environments using the new isolation fixtures.
    • Added tests for synchronous put and pipe method for zonal buckets in real gcs

jasha26 and others added 15 commits December 15, 2025 18:36
* Fixing Block size and consistency options in Extended GCSFS Open (#34)

* Separate versioned and non-versioned tests to use different bucket

* Update cleanup logic in tests to empty the bucket instead of deleting the bucket

* Add consistency and blocksize for ext gcsfs

* Merge conflicts resolution

* bucket type paramet for fs test for block size and consistency

* removed unused mocks variables from some tests

* fixing lint errors

* fixed small issue with core tests so it can run with exp flag true

---------

Co-authored-by: Mahalaxmibejugam <60227368+Mahalaxmibejugam@users.noreply.github.com>

* pytest microbenchmarks for seq and random reads both single multi threaded

* multiprocess benchmarks

* script to run tests

* undo settings for bucket names and logs

* benchmark script updates

* file size and bucket type decorators

* file size configuration

* removed zonal config

* Added README

* Readme update

* Moving settings and fixture to tests root

* Readme update

* Readme update

* Ignore benchmark pytests in CI

* benchmark hook fix

* adding skip tests flag

* benchmark plugin conditional enablement

* Fixing PR Comments, simplifying the configuration by doing auto gen

* Fixing PR Comments

* default settings

---------

Co-authored-by: Mahalaxmibejugam <60227368+Mahalaxmibejugam@users.noreply.github.com>
* Fixing Block size and consistency options in Extended GCSFS Open (#34)

* Separate versioned and non-versioned tests to use different bucket

* Update cleanup logic in tests to empty the bucket instead of deleting the bucket

* Add consistency and blocksize for ext gcsfs

* Merge conflicts resolution

* bucket type paramet for fs test for block size and consistency

* removed unused mocks variables from some tests

* fixing lint errors

* fixed small issue with core tests so it can run with exp flag true

---------

Co-authored-by: Mahalaxmibejugam <60227368+Mahalaxmibejugam@users.noreply.github.com>

* pytest microbenchmarks for seq and random reads both single multi threaded

* multiprocess benchmarks

* script to run tests

* undo settings for bucket names and logs

* benchmark script updates

* file size and bucket type decorators

* file size configuration

* removed zonal config

* Added README

* Readme update

* Moving settings and fixture to tests root

* Readme update

* Readme update

* Ignore benchmark pytests in CI

* benchmark hook fix

* adding skip tests flag

* benchmark plugin conditional enablement

* Fixing PR Comments, simplifying the configuration by doing auto gen

* Fixing PR Comments

* default settings

* added resource monitoring for benchmarks

* minor refactoring

* moved config to yaml

* lint fixes

* config yaml update for full read suite

* undo zonal file logging changes

* simplify single threaded read

* bringing back requirements

* update readme

* csv generation fix when some tests fail

* psutil install in cloudbuild

* psutil install in cloudbuild

* Removing zonal conditional code and updating config

---------

Co-authored-by: Mahalaxmibejugam <60227368+Mahalaxmibejugam@users.noreply.github.com>
* Fixing Block size and consistency options in Extended GCSFS Open (#34)

* Separate versioned and non-versioned tests to use different bucket

* Update cleanup logic in tests to empty the bucket instead of deleting the bucket

* Add consistency and blocksize for ext gcsfs

* Merge conflicts resolution

* bucket type paramet for fs test for block size and consistency

* removed unused mocks variables from some tests

* fixing lint errors

* fixed small issue with core tests so it can run with exp flag true

---------

Co-authored-by: Mahalaxmibejugam <60227368+Mahalaxmibejugam@users.noreply.github.com>

* pytest microbenchmarks for seq and random reads both single multi threaded

* multiprocess benchmarks

* script to run tests

* undo settings for bucket names and logs

* benchmark script updates

* file size and bucket type decorators

* file size configuration

* removed zonal config

* Added README

* Readme update

* Moving settings and fixture to tests root

* Readme update

* Readme update

* Ignore benchmark pytests in CI

* benchmark hook fix

* adding skip tests flag

* benchmark plugin conditional enablement

* Fixing PR Comments, simplifying the configuration by doing auto gen

* Fixing PR Comments

* default settings

* added resource monitoring for benchmarks

* minor refactoring

* moved config to yaml

* lint fixes

* config yaml update for full read suite

* undo zonal file logging changes

* simplify single threaded read

* bringing back requirements

* update readme

* csv generation fix when some tests fail

* psutil install in cloudbuild

* psutil install in cloudbuild

* Removing zonal conditional code and updating config

* parallel file creation in setup

* merge conflicts

* merge conflicts - lint fixes

* lint issues

---------

Co-authored-by: Mahalaxmibejugam <60227368+Mahalaxmibejugam@users.noreply.github.com>
… to avoid hitting object mutation limit

fix test_upload_chunk_zonal_exception_cleanup getting skipped on mock gcs
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.

3 participants