1- use bytes:: Bytes ;
21use bincode:: error:: DecodeError ;
2+ use bytes:: Bytes ;
33use futures:: { SinkExt , StreamExt } ;
44use oxcache:: request:: { GetRequest , GetResponse , Request } ;
55use std:: time:: Duration ;
@@ -29,7 +29,12 @@ impl TestClient {
2929 Ok ( Self { reader, writer } )
3030 }
3131
32- async fn get ( & mut self , key : String , offset : u64 , size : u64 ) -> Result < Bytes , Box < dyn std:: error:: Error > > {
32+ async fn get (
33+ & mut self ,
34+ key : String ,
35+ offset : u64 ,
36+ size : u64 ,
37+ ) -> Result < Bytes , Box < dyn std:: error:: Error > > {
3338 let request = Request :: Get ( GetRequest { key, offset, size } ) ;
3439
3540 let encoded = bincode:: serde:: encode_to_vec ( request, bincode:: config:: standard ( ) ) ?;
@@ -70,11 +75,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
7075 let chunk_size = 65536 ; // 64KB chunk size
7176 let lba_size = 4096 ; // 4KB logical block size
7277 let test_cases = vec ! [
73- ( 0 , lba_size) , // Read first 4KB (includes header)
74- ( lba_size, lba_size) , // Read second 4KB block
75- ( lba_size * 2 , lba_size) , // Read third 4KB block
78+ ( 0 , lba_size) , // Read first 4KB (includes header)
79+ ( lba_size, lba_size) , // Read second 4KB block
80+ ( lba_size * 2 , lba_size) , // Read third 4KB block
7681 ( lba_size * 4 , lba_size * 2 ) , // Read 8KB starting at 16KB offset
77- ( 0 , chunk_size) , // Read entire chunk
82+ ( 0 , chunk_size) , // Read entire chunk
7883 ] ;
7984
8085 for ( offset, size) in test_cases {
@@ -108,7 +113,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
108113
109114 // Test LBA-aligned edge cases
110115 let edge_cases = vec ! [
111- ( 0 , lba_size) , // Single LBA at start
116+ ( 0 , lba_size) , // Single LBA at start
112117 ( chunk_size - lba_size, lba_size) , // Single LBA at end
113118 ] ;
114119
@@ -144,7 +149,11 @@ fn validate_subset_data(data: &Bytes, key: &str, offset: u64, size: u64) -> bool
144149 println ! ( "Expected data length: {}" , size) ;
145150
146151 if data. len ( ) != size as usize {
147- println ! ( "ERROR: Data length mismatch: expected {}, got {}" , size, data. len( ) ) ;
152+ println ! (
153+ "ERROR: Data length mismatch: expected {}, got {}" ,
154+ size,
155+ data. len( )
156+ ) ;
148157 return false ;
149158 }
150159
@@ -154,19 +163,34 @@ fn validate_subset_data(data: &Bytes, key: &str, offset: u64, size: u64) -> bool
154163
155164 // Show more bytes for comparison
156165 let show_bytes = std:: cmp:: min ( 32 , std:: cmp:: min ( data. len ( ) , expected_data. len ( ) ) ) ;
157- println ! ( "Expected first {} bytes: {:02x?}" , show_bytes, & expected_data[ 0 ..show_bytes] ) ;
158- println ! ( "Actual first {} bytes: {:02x?}" , show_bytes, & data[ 0 ..show_bytes] ) ;
166+ println ! (
167+ "Expected first {} bytes: {:02x?}" ,
168+ show_bytes,
169+ & expected_data[ 0 ..show_bytes]
170+ ) ;
171+ println ! (
172+ "Actual first {} bytes: {:02x?}" ,
173+ show_bytes,
174+ & data[ 0 ..show_bytes]
175+ ) ;
159176
160177 // Find first mismatch
161178 for ( i, ( actual, expected) ) in data. iter ( ) . zip ( expected_data. iter ( ) ) . enumerate ( ) {
162179 if actual != expected {
163- println ! ( "ERROR: First mismatch at byte {}: expected 0x{:02x}, got 0x{:02x}" , i, expected, actual) ;
180+ println ! (
181+ "ERROR: First mismatch at byte {}: expected 0x{:02x}, got 0x{:02x}" ,
182+ i, expected, actual
183+ ) ;
164184 return false ;
165185 }
166186 }
167187
168188 if data. len ( ) != expected_data. len ( ) {
169- println ! ( "ERROR: Length mismatch after byte comparison: actual {}, expected {}" , data. len( ) , expected_data. len( ) ) ;
189+ println ! (
190+ "ERROR: Length mismatch after byte comparison: actual {}, expected {}" ,
191+ data. len( ) ,
192+ expected_data. len( )
193+ ) ;
170194 return false ;
171195 }
172196
@@ -179,7 +203,10 @@ fn generate_expected_subset_data(key: &str, offset: u64, size: u64) -> Vec<u8> {
179203 use std:: collections:: hash_map:: DefaultHasher ;
180204 use std:: hash:: { Hash , Hasher } ;
181205
182- println ! ( "=== DEBUG: Generating expected data for offset={}, size={} ===" , offset, size) ;
206+ println ! (
207+ "=== DEBUG: Generating expected data for offset={}, size={} ===" ,
208+ offset, size
209+ ) ;
183210
184211 const EMULATED_BUFFER_SEED : u64 = 1 ;
185212 const CHUNK_SIZE : u64 = 65536 ; // Match our test chunk size
@@ -194,8 +221,8 @@ fn generate_expected_subset_data(key: &str, offset: u64, size: u64) -> Vec<u8> {
194221 println ! ( "Key hash: 0x{:016x}" , key_hash) ;
195222
196223 let mut full_chunk = Vec :: new ( ) ;
197- full_chunk. extend_from_slice ( & key_hash. to_be_bytes ( ) ) ; // 8 bytes
198- full_chunk. extend_from_slice ( & 0u64 . to_be_bytes ( ) ) ; // 8 bytes - offset=0
224+ full_chunk. extend_from_slice ( & key_hash. to_be_bytes ( ) ) ; // 8 bytes
225+ full_chunk. extend_from_slice ( & 0u64 . to_be_bytes ( ) ) ; // 8 bytes - offset=0
199226 full_chunk. extend_from_slice ( & CHUNK_SIZE . to_be_bytes ( ) ) ; // 8 bytes - size=chunk_size
200227
201228 println ! ( "Header (24 bytes): {:02x?}" , & full_chunk[ 0 ..24 ] ) ;
@@ -217,7 +244,10 @@ fn generate_expected_subset_data(key: &str, offset: u64, size: u64) -> Vec<u8> {
217244
218245 let result = full_chunk[ start..end] . to_vec ( ) ;
219246 println ! ( "Extracted subset length: {}" , result. len( ) ) ;
220- println ! ( "Extracted first 32 bytes: {:02x?}" , & result[ 0 ..std:: cmp:: min( 32 , result. len( ) ) ] ) ;
247+ println ! (
248+ "Extracted first 32 bytes: {:02x?}" ,
249+ & result[ 0 ..std:: cmp:: min( 32 , result. len( ) ) ]
250+ ) ;
221251
222252 result
223- }
253+ }
0 commit comments