MCPcopy Create free account
hub / github.com/apache/arrow-rs / test_cache_sharing

Function test_cache_sharing

parquet/src/arrow/array_reader/cached_array_reader.rs:537–572  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

535
536 #[test]
537 fn test_cache_sharing() {
538 let metrics = ArrowReaderMetrics::disabled();
539 let cache = Arc::new(RwLock::new(RowGroupCache::new(5, usize::MAX))); // Batch size 5
540
541 // First reader - populate cache
542 let mock_reader1 = MockArrayReader::new(vec![1, 2, 3, 4, 5]);
543 let mut cached_reader1 = CachedArrayReader::new(
544 Box::new(mock_reader1),
545 cache.clone(),
546 0,
547 CacheRole::Producer,
548 metrics.clone(),
549 );
550
551 cached_reader1.read_records(3).unwrap();
552 let array1 = cached_reader1.consume_batch().unwrap();
553 assert_eq!(array1.len(), 3);
554
555 // Second reader with different column index should not interfere
556 let mock_reader2 = MockArrayReader::new(vec![10, 20, 30, 40, 50]);
557 let mut cached_reader2 = CachedArrayReader::new(
558 Box::new(mock_reader2),
559 cache.clone(),
560 1,
561 CacheRole::Consumer,
562 metrics.clone(),
563 );
564
565 cached_reader2.read_records(2).unwrap();
566 let array2 = cached_reader2.consume_batch().unwrap();
567 assert_eq!(array2.len(), 2);
568
569 // Verify the second reader got its own data, not from cache
570 let int32_array = array2.as_any().downcast_ref::<Int32Array>().unwrap();
571 assert_eq!(int32_array.values(), &[10, 20]);
572 }
573
574 #[test]
575 fn test_consumer_removes_batches() {

Callers

nothing calls this directly

Calls 4

cloneMethod · 0.45
read_recordsMethod · 0.45
consume_batchMethod · 0.45
as_anyMethod · 0.45

Tested by

no test coverage detected