use std::sync::Arc;
use buoyant_kernel as delta_kernel;
use delta_kernel::{DeltaResult, Engine, Snapshot};
use super::{measuring_engine, LogState, TestTableBuilder};
#[test]
fn scan_execute_contributes_parquet_data_file_reads() -> DeltaResult<()> {
let table = TestTableBuilder::new()
.with_log_state(LogState::with_commits(3))
.with_data(1, 1)
.build()?;
let (engine, reporter) = measuring_engine(table.store().clone());
let snap = Snapshot::builder_for(table.table_root()).build(&engine)?;
reporter.reset();
let engine: Arc<dyn Engine> = Arc::new(engine);
let mut batches_seen = 0usize;
for result in snap.scan_builder().build()?.execute(engine)? {
result?;
batches_seen += 1;
}
assert_eq!(
batches_seen, 2,
"scan should return one batch per data file"
);
assert_eq!(reporter.parquet_read_calls.get(), 2);
assert_eq!(reporter.parquet_files_read.get(), 2);
#[cfg(not(windows))]
assert!(reporter.parquet_bytes_read.get() > 0);
assert_eq!(reporter.json_read_calls.get(), 1);
Ok(())
}