Skip to content

test(parquet): rfc 0028 slice 2b — 17 test binaries fold into one harness - #401

Merged
jensholdgaard merged 2 commits into
mainfrom
rfc0028-slice2b-parquet-harness
Jul 6, 2026
Merged

test(parquet): rfc 0028 slice 2b — 17 test binaries fold into one harness#401
jensholdgaard merged 2 commits into
mainfrom
rfc0028-slice2b-parquet-harness

Conversation

@jensholdgaard

@jensholdgaard jensholdgaard commented Jul 6, 2026

Copy link
Copy Markdown
Owner

What

RFC 0028 slice 2b — the parquet crate's 17 integration-test binaries fold into one tests/it/ harness (the #399/#400 recipe). Pure file moves plus the harness main.rs; the only companion move is rfc0024_properties.proptest-regressions, which proptest resolves relative to its source file. No shared test modules exist in this crate, so no import adjustments at all. No test body changed.

RFC0028.1 — inventory proof

cargo test -p ourios-parquet -- --list: 162 tests before, 162 after; leaf-name sets identical after stripping module-path prefixes (snapshots below). The 17 #[ignore]d tests (S3-integration + the RFC0005.6 sizing test) moved with their files and stay #[ignore]d.

RFC0028.2 — exemptions

None: no parquet test installs a process-global provider, mutates the environment, or needs its own process.

Indicative timing (not the RFC0028.3 gate)

Same machine, warm workspace: touch crates/ourios-parquet/src/lib.rs && cargo test -p ourios-parquet --no-run103.4 s before, 42.8 s after (2.4×).

Invariants / hazards

CLAUDE.md §6.2 (tests are specifications): nothing weakened or deleted — the inventory proof is this PR's shape.

Pre inventory (162)
audit_open_file_skips_partition_validation: test
audit_reader::tests::batch_to_audit_events_surfaces_unknown_event_kind_as_opaque_event: test
audit_reader::tests::decode_timestamp_accepts_post_epoch_nanos: test
audit_reader::tests::decode_timestamp_rejects_negative_i64: test
audit_reader::tests::unknown_event_round_trips_envelope_only: test
audit_reader_open_bytes_round_trips: test
audit_record_batch::tests::alias_events_build_a_batch_with_kinds_4_and_5: test
audit_record_batch::tests::builds_batch_for_one_of_each_variant: test
audit_record_batch::tests::pre_epoch_timestamp_rejected: test
audit_record_batch::tests::rejection_reason_is_json_with_would_be_fields: test
audit_sink::tests::persists_an_event_to_the_audit_stream: test
audit_writer::tests::drop_without_close_publishes_nothing: test
audit_writer::tests::open_in_publishes_on_close_and_round_trips: test
compact_partition_consolidates_on_s3_via_cas: test
compaction::tests::atomic_publish_is_never_torn_across_the_swap: test
compaction::tests::bumps_generation_from_an_existing_manifest: test
compaction::tests::compaction_conserves_every_row: test
compaction::tests::compaction_reprojects_under_the_given_promoted_set: test
compaction::tests::compacts_two_files_into_one_preserving_rows: test
compaction::tests::no_op_reports_zero_byte_volumes: test
compaction::tests::plan_for_a_tenant_with_no_data_is_empty: test
compaction::tests::plan_returns_partitions_in_chronological_order: test
compaction::tests::plan_selects_a_sealed_many_file_partition_via_count: test
compaction::tests::plan_selects_a_sealed_small_file_partition: test
compaction::tests::plan_skips_a_single_file_partition: test
compaction::tests::plan_skips_an_unsealed_partition: test
compaction::tests::plan_skips_non_canonical_partition_dir_names: test
compaction::tests::plan_skips_when_files_are_large_and_few: test
compaction::tests::reports_byte_volumes_for_io_and_file_size_metrics: test
compaction::tests::rfc0009_1_many_small_files_collapse_to_one: test
compaction::tests::rfc0009_4_post_commit_orphan_inputs_are_reclaimable: test
compaction::tests::rfc0009_4_pre_commit_orphan_consolidated_is_reclaimable: test
compaction::tests::rfc0009_4_stray_tmp_reclaimed_under_glob_fallback: test
compaction::tests::rfc0009_5_mis_partitioned_input_aborts_rather_than_merging: test
compaction::tests::rfc0009_6_merges_inputs_spanning_a_schema_amendment: test
compaction::tests::single_file_partition_is_a_no_op: test
default_zstd_level_is_three: test
manifest::tests::absent_manifest_is_none: test
manifest::tests::accepts_plain_parquet_names: test
manifest::tests::malformed_manifest_is_a_parse_error: test
manifest::tests::read_rejects_a_path_escaping_entry: test
manifest::tests::reads_a_written_manifest: test
manifest::tests::rejects_path_escaping_or_non_parquet_names: test
manifest::tests::round_trips_through_json: test
manifest::tests::validate_rejects_a_duplicate_file_name: test
manifest::tests::write_atomic_rejects_an_invalid_entry_before_writing: test
manifest::tests::write_atomic_round_trips_and_overwrites: test
non_default_zstd_level_round_trips: test
open_file_skips_partition_validation: test
out_of_range_zstd_level_is_rejected: test
parquet_audit_sink_persists_to_s3: test
partition::tests::audit_path_stops_at_day: test
partition::tests::data_path_layout_matches_section_3_4: test
partition::tests::derive_falls_back_to_observed_time_when_time_is_zero: test
partition::tests::derive_lands_on_epoch_when_both_zero: test
partition::tests::derive_rejects_time_unix_nano_overflow: test
partition::tests::derive_uses_time_unix_nano_when_set: test
partition::tests::hour_partition_in_window_is_conservative_on_unparseable_paths: test
partition::tests::hour_partition_in_window_overlap_cases: test
partition::tests::percent_decode_rejects_malformed_escapes: test
partition::tests::percent_decode_rejects_non_canonical_escapes: test
partition::tests::percent_decode_rejects_non_canonical_unescaped_bytes: test
partition::tests::percent_decode_round_trips_encode: test
partition::tests::percent_encode_escapes_non_ascii_utf8_bytes: test
partition::tests::percent_encode_escapes_path_delimiters: test
partition::tests::percent_encode_passes_unreserved_through: test
promoted::tests::default_set_is_service_name_only: test
promoted::tests::fields_are_optional_utf8: test
promoted::tests::projection_is_string_only_first_match: test
promoted::tests::service_name_is_implicit_first_and_deduplicated: test
promoted_projection_is_first_occurrence_per_record: test
promoted_schema_is_base_plus_ordered_optional_utf8: test
reader::tests::reader_rejects_clean_string_with_too_few_separators: test
reader::tests::reader_rejects_lossy_string_without_body: test
reader::tests::rfc0005_2_missing_optional_column_surfaces_as_none: test
reader::tests::rfc0005_3_unknown_column_is_silently_ignored: test
reader::tests::rfc0005_4_missing_required_column_returns_hard_error: test
reader::tests::rfc0005_9_unknown_param_type_round_trips_as_unknown_variant: test
reader::tests::shape_violation_reports_stream_global_row_index: test
record_batch::tests::absent_body_kind_with_bytes_is_rejected: test
record_batch::tests::absent_body_kind_writes_ordinal_two_with_null_body: test
record_batch::tests::empty_attributes_serialise_to_open_bracket_close_bracket: test
record_batch::tests::empty_separators_on_lossy_string_is_allowed: test
record_batch::tests::invalid_separators_on_clean_string_returns_error: test
record_batch::tests::lossy_string_without_body_returns_missing_body_error: test
record_batch::tests::non_empty_attributes_encode_to_canonical_json_round_trip: test
record_batch::tests::non_empty_resource_attributes_round_trip: test
record_batch::tests::structured_body_kind_appends_producer_bytes_verbatim: test
records_round_trip_through_store_buffer_and_put: test
rfc0005_10_audit_schema_matches_pinned_field_list: test
rfc0005_10_data_schema_matches_pinned_field_list: test
rfc0005_11_audit_day_mismatch_returns_partition_mismatch_error: test
rfc0005_11_audit_different_hour_same_day_validates_cleanly: test
rfc0005_11_audit_tenant_mismatch_returns_partition_mismatch_error: test
rfc0005_11_hour_mismatch_returns_partition_mismatch_error: test
rfc0005_11_tenant_mismatch_returns_partition_mismatch_error: test
rfc0005_11_time_fallback_validates_cleanly: test
rfc0005_12_compaction_audit_event_round_trips: test
rfc0005_13_observed_only_record_stores_effective_and_keeps_wire_zero: test
rfc0005_14_alias_audit_events_round_trip: test
rfc0005_1_body_raw_bytes_round_trip: test
rfc0005_1_round_trip_preserves_every_row_level_column: test
rfc0005_5_files_land_at_expected_partition_paths: test
rfc0005_5_non_ascii_tenant_id_percent_encodes: test
rfc0005_6_row_group_size_lands_inside_h4_target: test
rfc0005_7_audit_file_path_stops_at_day_segment: test
rfc0005_7_audit_round_trip_one_of_each_variant: test
rfc0005_7_rejection_variant_round_trips_via_reason_column: test
rfc0005_8_body_column_has_no_dictionary_encoding: test
rfc0005_8_params_list_leaves_have_no_dictionary_encoding: test
rfc0013_1_round_trip_through_s3_backend: test
rfc0013_2_local_backend_regresses_nothing: test
rfc0013_3_atomic_publish_under_contention: test
rfc0013_4_manifest_swap_via_conditional_put: test
rfc0013_5_tenant_isolation_across_prefix: test
rfc0013_7_s3_compatible_endpoint_via_override: test
rfc0013_8_reader_forward_compat_over_store: test
rfc0017_1_template_created_round_trips: test
rfc0018_1_scope_fields_round_trip: test
rfc0018_2_new_columns_back_compatible: test
rfc0021_1_one_arrow_major_and_datafusion_54: test
rfc0021_2_pre_upgrade_fixture_reads_identically: test
rfc0021_3_reconstruction_property_and_corpus_green: test
rfc0021_4_shared_decoder_reads_view_and_plain_representations: test
rfc0021_5_pruning_gates_hold: test
rfc0021_6_full_gate_green: test
rfc0021_fixture_writes_the_pre_upgrade_file: test
rfc0022_1_service_name_always_projected: test
rfc0022_2_configured_keys_project: test
rfc0024_3_round_trip_fidelity_over_generated_batches: test
rfc0025_1_absent_bodies_round_trip: test
rfc0025_2_old_files_unaffected: test
rfc0025_fixture: test
rfc0025_record_quarantined_audit_event_round_trips: test
store::tests::blocking_bridge_is_safe_inside_a_runtime: test
store::tests::blocking_bridge_put_get_round_trip: test
store::tests::delete_blocking_removes_and_local_missing_is_not_found: test
store::tests::get_blocking_opt_maps_missing_to_none: test
store::tests::list_blocking_enumerates_keys_under_a_prefix: test
store::tests::list_common_prefixes_rolls_up_immediate_children: test
store::tests::list_with_sizes_reports_byte_lengths_in_key_order: test
store::tests::local_store_put_get_delete_round_trip: test
store::tests::put_if_absent_refuses_to_clobber: test
store::tests::s3_accepts_a_valid_credential_pair: test
store::tests::s3_constructs_from_a_valid_config: test
store::tests::s3_rejects_a_partial_credential_set: test
store::tests::s3_rejects_an_empty_bucket: test
store::tests::s3_treats_blank_credentials_as_unset: test
store::tests::s3config_debug_redacts_credentials: test
store_delete_blocking_removes_on_s3: test
store_list_common_prefixes_rolls_up_on_s3: test
store_list_enumerates_keys_on_s3: test
store_list_with_sizes_reports_byte_lengths_on_s3: test
stored_effective_always_matches_the_partition_derivation: test
writer::tests::encode_empty_yields_readable_zero_rows: test
writer::tests::encode_rejects_invalid_zstd_level: test
writer::tests::encode_round_trip_preserves_rows: test
writer::tests::encode_round_trips_through_open_bytes: test
writer::tests::open_in_writes_through_a_store_and_reports_key_and_size: test
writer::tests::open_partition_bytes_rejects_a_mismatched_partition: test
writer_publishes_only_on_close_and_drop_publishes_nothing: test
writer_rejects_records_outside_its_partition: test
Post inventory (162)
audit_reader::tests::batch_to_audit_events_surfaces_unknown_event_kind_as_opaque_event: test
audit_reader::tests::decode_timestamp_accepts_post_epoch_nanos: test
audit_reader::tests::decode_timestamp_rejects_negative_i64: test
audit_reader::tests::unknown_event_round_trips_envelope_only: test
audit_record_batch::tests::alias_events_build_a_batch_with_kinds_4_and_5: test
audit_record_batch::tests::builds_batch_for_one_of_each_variant: test
audit_record_batch::tests::pre_epoch_timestamp_rejected: test
audit_record_batch::tests::rejection_reason_is_json_with_would_be_fields: test
audit_round_trip::audit_reader_open_bytes_round_trips: test
audit_round_trip::rfc0005_12_compaction_audit_event_round_trips: test
audit_round_trip::rfc0005_14_alias_audit_events_round_trip: test
audit_round_trip::rfc0005_7_audit_file_path_stops_at_day_segment: test
audit_round_trip::rfc0005_7_audit_round_trip_one_of_each_variant: test
audit_round_trip::rfc0005_7_rejection_variant_round_trips_via_reason_column: test
audit_round_trip::rfc0017_1_template_created_round_trips: test
audit_round_trip::rfc0025_record_quarantined_audit_event_round_trips: test
audit_row_vs_path_validation::audit_open_file_skips_partition_validation: test
audit_row_vs_path_validation::rfc0005_11_audit_day_mismatch_returns_partition_mismatch_error: test
audit_row_vs_path_validation::rfc0005_11_audit_different_hour_same_day_validates_cleanly: test
audit_row_vs_path_validation::rfc0005_11_audit_tenant_mismatch_returns_partition_mismatch_error: test
audit_sink::tests::persists_an_event_to_the_audit_stream: test
audit_writer::tests::drop_without_close_publishes_nothing: test
audit_writer::tests::open_in_publishes_on_close_and_round_trips: test
buffer_and_put::records_round_trip_through_store_buffer_and_put: test
compaction::tests::atomic_publish_is_never_torn_across_the_swap: test
compaction::tests::bumps_generation_from_an_existing_manifest: test
compaction::tests::compaction_conserves_every_row: test
compaction::tests::compaction_reprojects_under_the_given_promoted_set: test
compaction::tests::compacts_two_files_into_one_preserving_rows: test
compaction::tests::no_op_reports_zero_byte_volumes: test
compaction::tests::plan_for_a_tenant_with_no_data_is_empty: test
compaction::tests::plan_returns_partitions_in_chronological_order: test
compaction::tests::plan_selects_a_sealed_many_file_partition_via_count: test
compaction::tests::plan_selects_a_sealed_small_file_partition: test
compaction::tests::plan_skips_a_single_file_partition: test
compaction::tests::plan_skips_an_unsealed_partition: test
compaction::tests::plan_skips_non_canonical_partition_dir_names: test
compaction::tests::plan_skips_when_files_are_large_and_few: test
compaction::tests::reports_byte_volumes_for_io_and_file_size_metrics: test
compaction::tests::rfc0009_1_many_small_files_collapse_to_one: test
compaction::tests::rfc0009_4_post_commit_orphan_inputs_are_reclaimable: test
compaction::tests::rfc0009_4_pre_commit_orphan_consolidated_is_reclaimable: test
compaction::tests::rfc0009_4_stray_tmp_reclaimed_under_glob_fallback: test
compaction::tests::rfc0009_5_mis_partitioned_input_aborts_rather_than_merging: test
compaction::tests::rfc0009_6_merges_inputs_spanning_a_schema_amendment: test
compaction::tests::single_file_partition_is_a_no_op: test
effective_timestamp::rfc0005_13_observed_only_record_stores_effective_and_keeps_wire_zero: test
effective_timestamp::stored_effective_always_matches_the_partition_derivation: test
manifest::tests::absent_manifest_is_none: test
manifest::tests::accepts_plain_parquet_names: test
manifest::tests::malformed_manifest_is_a_parse_error: test
manifest::tests::read_rejects_a_path_escaping_entry: test
manifest::tests::reads_a_written_manifest: test
manifest::tests::rejects_path_escaping_or_non_parquet_names: test
manifest::tests::round_trips_through_json: test
manifest::tests::validate_rejects_a_duplicate_file_name: test
manifest::tests::write_atomic_rejects_an_invalid_entry_before_writing: test
manifest::tests::write_atomic_round_trips_and_overwrites: test
no_body_dict::rfc0005_8_body_column_has_no_dictionary_encoding: test
no_body_dict::rfc0005_8_params_list_leaves_have_no_dictionary_encoding: test
partition::tests::audit_path_stops_at_day: test
partition::tests::data_path_layout_matches_section_3_4: test
partition::tests::derive_falls_back_to_observed_time_when_time_is_zero: test
partition::tests::derive_lands_on_epoch_when_both_zero: test
partition::tests::derive_rejects_time_unix_nano_overflow: test
partition::tests::derive_uses_time_unix_nano_when_set: test
partition::tests::hour_partition_in_window_is_conservative_on_unparseable_paths: test
partition::tests::hour_partition_in_window_overlap_cases: test
partition::tests::percent_decode_rejects_malformed_escapes: test
partition::tests::percent_decode_rejects_non_canonical_escapes: test
partition::tests::percent_decode_rejects_non_canonical_unescaped_bytes: test
partition::tests::percent_decode_round_trips_encode: test
partition::tests::percent_encode_escapes_non_ascii_utf8_bytes: test
partition::tests::percent_encode_escapes_path_delimiters: test
partition::tests::percent_encode_passes_unreserved_through: test
partition_layout::rfc0005_5_files_land_at_expected_partition_paths: test
partition_layout::rfc0005_5_non_ascii_tenant_id_percent_encodes: test
partition_layout::writer_publishes_only_on_close_and_drop_publishes_nothing: test
partition_layout::writer_rejects_records_outside_its_partition: test
promoted::tests::default_set_is_service_name_only: test
promoted::tests::fields_are_optional_utf8: test
promoted::tests::projection_is_string_only_first_match: test
promoted::tests::service_name_is_implicit_first_and_deduplicated: test
reader::tests::reader_rejects_clean_string_with_too_few_separators: test
reader::tests::reader_rejects_lossy_string_without_body: test
reader::tests::rfc0005_2_missing_optional_column_surfaces_as_none: test
reader::tests::rfc0005_3_unknown_column_is_silently_ignored: test
reader::tests::rfc0005_4_missing_required_column_returns_hard_error: test
reader::tests::rfc0005_9_unknown_param_type_round_trips_as_unknown_variant: test
reader::tests::shape_violation_reports_stream_global_row_index: test
record_batch::tests::absent_body_kind_with_bytes_is_rejected: test
record_batch::tests::absent_body_kind_writes_ordinal_two_with_null_body: test
record_batch::tests::empty_attributes_serialise_to_open_bracket_close_bracket: test
record_batch::tests::empty_separators_on_lossy_string_is_allowed: test
record_batch::tests::invalid_separators_on_clean_string_returns_error: test
record_batch::tests::lossy_string_without_body_returns_missing_body_error: test
record_batch::tests::non_empty_attributes_encode_to_canonical_json_round_trip: test
record_batch::tests::non_empty_resource_attributes_round_trip: test
record_batch::tests::structured_body_kind_appends_producer_bytes_verbatim: test
rfc0013_object_store::compact_partition_consolidates_on_s3_via_cas: test
rfc0013_object_store::parquet_audit_sink_persists_to_s3: test
rfc0013_object_store::rfc0013_1_round_trip_through_s3_backend: test
rfc0013_object_store::rfc0013_2_local_backend_regresses_nothing: test
rfc0013_object_store::rfc0013_3_atomic_publish_under_contention: test
rfc0013_object_store::rfc0013_4_manifest_swap_via_conditional_put: test
rfc0013_object_store::rfc0013_5_tenant_isolation_across_prefix: test
rfc0013_object_store::rfc0013_7_s3_compatible_endpoint_via_override: test
rfc0013_object_store::rfc0013_8_reader_forward_compat_over_store: test
rfc0013_object_store::store_delete_blocking_removes_on_s3: test
rfc0013_object_store::store_list_common_prefixes_rolls_up_on_s3: test
rfc0013_object_store::store_list_enumerates_keys_on_s3: test
rfc0013_object_store::store_list_with_sizes_reports_byte_lengths_on_s3: test
rfc0018_otlp_compliance::rfc0018_1_scope_fields_round_trip: test
rfc0018_otlp_compliance::rfc0018_2_new_columns_back_compatible: test
rfc0021_arrow_upgrade::rfc0021_1_one_arrow_major_and_datafusion_54: test
rfc0021_arrow_upgrade::rfc0021_2_pre_upgrade_fixture_reads_identically: test
rfc0021_arrow_upgrade::rfc0021_3_reconstruction_property_and_corpus_green: test
rfc0021_arrow_upgrade::rfc0021_4_shared_decoder_reads_view_and_plain_representations: test
rfc0021_arrow_upgrade::rfc0021_5_pruning_gates_hold: test
rfc0021_arrow_upgrade::rfc0021_6_full_gate_green: test
rfc0021_arrow_upgrade::rfc0021_fixture_writes_the_pre_upgrade_file: test
rfc0022_promoted_columns::promoted_projection_is_first_occurrence_per_record: test
rfc0022_promoted_columns::rfc0022_1_service_name_always_projected: test
rfc0022_promoted_columns::rfc0022_2_configured_keys_project: test
rfc0024_properties::rfc0024_3_round_trip_fidelity_over_generated_batches: test
rfc0025_absent_body::rfc0025_1_absent_bodies_round_trip: test
rfc0025_absent_body::rfc0025_2_old_files_unaffected: test
rfc0025_absent_body::rfc0025_fixture: test
round_trip::rfc0005_1_body_raw_bytes_round_trip: test
round_trip::rfc0005_1_round_trip_preserves_every_row_level_column: test
row_vs_path_validation::open_file_skips_partition_validation: test
row_vs_path_validation::rfc0005_11_hour_mismatch_returns_partition_mismatch_error: test
row_vs_path_validation::rfc0005_11_tenant_mismatch_returns_partition_mismatch_error: test
row_vs_path_validation::rfc0005_11_time_fallback_validates_cleanly: test
schema_pin::promoted_schema_is_base_plus_ordered_optional_utf8: test
schema_pin::rfc0005_10_audit_schema_matches_pinned_field_list: test
schema_pin::rfc0005_10_data_schema_matches_pinned_field_list: test
sizing::rfc0005_6_row_group_size_lands_inside_h4_target: test
store::tests::blocking_bridge_is_safe_inside_a_runtime: test
store::tests::blocking_bridge_put_get_round_trip: test
store::tests::delete_blocking_removes_and_local_missing_is_not_found: test
store::tests::get_blocking_opt_maps_missing_to_none: test
store::tests::list_blocking_enumerates_keys_under_a_prefix: test
store::tests::list_common_prefixes_rolls_up_immediate_children: test
store::tests::list_with_sizes_reports_byte_lengths_in_key_order: test
store::tests::local_store_put_get_delete_round_trip: test
store::tests::put_if_absent_refuses_to_clobber: test
store::tests::s3_accepts_a_valid_credential_pair: test
store::tests::s3_constructs_from_a_valid_config: test
store::tests::s3_rejects_a_partial_credential_set: test
store::tests::s3_rejects_an_empty_bucket: test
store::tests::s3_treats_blank_credentials_as_unset: test
store::tests::s3config_debug_redacts_credentials: test
writer::tests::encode_empty_yields_readable_zero_rows: test
writer::tests::encode_rejects_invalid_zstd_level: test
writer::tests::encode_round_trip_preserves_rows: test
writer::tests::encode_round_trips_through_open_bytes: test
writer::tests::open_in_writes_through_a_store_and_reports_key_and_size: test
writer::tests::open_partition_bytes_rejects_a_mismatched_partition: test
zstd_level::default_zstd_level_is_three: test
zstd_level::non_default_zstd_level_round_trips: test
zstd_level::out_of_range_zstd_level_is_rejected: test

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Tests
    • Consolidated parquet integration tests under a single shared test harness, reducing the number of separate test binaries.
    • Organized integration test modules to run together with a common path structure.

…ness

Pure moves (incl. the proptest-regressions sidecar, which resolves
source-relative) + the harness main.rs: no test body changed
(RFC0028.1); nothing needs process isolation (RFC0028.2).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jensholdgaard
jensholdgaard requested a review from Copilot July 6, 2026 09:28
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jensholdgaard, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 57 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 6e556691-147c-408a-9b0f-b6fa142f2d3c

📥 Commits

Reviewing files that changed from the base of the PR and between 6302aee and f2cc220.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • .github/workflows/rfc0024-deep-run.yml
📝 Walkthrough

Walkthrough

Adds a new integration-test harness file at crates/ourios-parquet/tests/it/main.rs containing module documentation and mod declarations to consolidate parquet integration test modules into a single compiled binary, per RFC 0028 slice 2.

Changes

Test Harness Consolidation

Layer / File(s) Summary
New consolidated test harness
crates/ourios-parquet/tests/it/main.rs
New file adds module docs and mod declarations to compile parquet integration test submodules into one binary instead of separate binaries.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related PRs

  • jensholdgaard/ourios#217: Adds a row-group sizing test module intended to be compiled under this new consolidated harness.
  • jensholdgaard/ourios#346: Adds RFC0022 attribute query test modules that would be wired into this consolidated test harness.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly states the main change: consolidating 17 parquet integration-test binaries into one harness.
Description check ✅ Passed The description is detailed and covers the change, RFC context, inventory proof, and hazards, though the template checklist is not filled out.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rfc0028-slice2b-parquet-harness

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

The s3-integration job names the old rfc0013_object_store binary (now
the it harness, module-prefixed names under --exact), and the weekly
deep-run's parquet + querier lines target rfc0024_properties binaries
consolidated by this PR and #400 — the querier line broke silently at
#400 (schedule-only job).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR implements RFC 0028 slice 2b for ourios-parquet by consolidating the crate’s integration tests into a single tests/it/ harness, reducing redundant link work while keeping test coverage and behavior the same.

Changes:

  • Introduces a consolidated integration-test harness at crates/ourios-parquet/tests/it/main.rs that mods all former integration-test modules.
  • Relocates the parquet integration tests into tests/it/ modules without changing test logic, preserving the inventory/leaf-name set.
  • Moves accompanying test assets needed for correct relative resolution (per PR description; not shown in the provided hunks).

Reviewed changes

Copilot reviewed 3 out of 21 changed files in this pull request and generated no comments.

Show a summary per file
File Description
crates/ourios-parquet/tests/it/main.rs New single integration-test harness that includes all parquet integration test modules.
crates/ourios-parquet/tests/it/audit_round_trip.rs Audit stream round-trip + layout/variant assertions (RFC0005.7/.12/.14, RFC0025).
crates/ourios-parquet/tests/it/audit_row_vs_path_validation.rs Audit row-vs-path partition-mismatch validation scenarios (RFC0005.11, audit axis).
crates/ourios-parquet/tests/it/buffer_and_put.rs Store buffer-and-put round-trip test (RFC0013 seam).
crates/ourios-parquet/tests/it/effective_timestamp.rs Effective timestamp storage behavior tests (RFC0005.13 storage half).
crates/ourios-parquet/tests/it/no_body_dict.rs Parquet metadata assertions for dictionary encoding rules (RFC0005.8).
crates/ourios-parquet/tests/it/partition_layout.rs Data partition path layout + UUIDv7 + writer validation tests (RFC0005.5/§3.4, §3.9).
crates/ourios-parquet/tests/it/round_trip.rs Core data-file round-trip tests for row-level columns (RFC0005.1).
crates/ourios-parquet/tests/it/row_vs_path_validation.rs Data row-vs-path partition-mismatch validation scenarios (RFC0005.11, data axis).
crates/ourios-parquet/tests/it/schema_pin.rs Schema pinning fixtures and promoted-schema ordering tests (RFC0005.10, RFC0022).
crates/ourios-parquet/tests/it/sizing.rs Ignored heavyweight row-group sizing test (RFC0005.6).
crates/ourios-parquet/tests/it/zstd_level.rs ZSTD level behavior tests (default, non-default round-trip, invalid rejected).
crates/ourios-parquet/tests/it/rfc0013_object_store.rs Object store (local + ignored S3) scenario tests and store API invariants (RFC0013/RFC0019).
crates/ourios-parquet/tests/it/rfc0018_otlp_compliance.rs RFC0018 storage-side column persistence and backward compatibility tests.
crates/ourios-parquet/tests/it/rfc0021_arrow_upgrade.rs RFC0021 acceptance scenarios + fixture/readback guard for Arrow/DataFusion upgrade.
crates/ourios-parquet/tests/it/rfc0022_promoted_columns.rs Writer-side promoted attribute projection and encoding assertions (RFC0022).
crates/ourios-parquet/tests/it/rfc0024_properties.rs Proptest-driven round-trip fidelity property over generated batches (RFC0024).
crates/ourios-parquet/tests/it/rfc0025_absent_body.rs Absent-body storage scenarios + committed pre-amendment fixture handling (RFC0025).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 21 changed files in this pull request and generated no new comments.

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