MCPcopy Create free account
hub / github.com/apache/avro-rs / test_folder

Function test_folder

avro/tests/shared.rs:99–155  ·  view source on GitHub ↗
(folder: &Path)

Source from the content-addressed store, hash-verified

97}
98
99fn test_folder(folder: &Path) -> Result<(), ErrorsDesc> {
100 let file_name = folder.join("schema.json");
101 let content = std::fs::read_to_string(file_name).expect("Unable to find schema.json file");
102
103 let schema: Schema = Schema::parse_str(content.as_str()).expect("Can't read schema");
104
105 let data_path = folder.join("data.avro");
106 let mut result = Ok(());
107 if !data_path.exists() {
108 log::error!("folder {folder:?} does not exist");
109 return Err(ErrorsDesc::new(
110 format!("folder {folder:?} does not exist").as_str(),
111 ));
112 } else {
113 let file: File = File::open(data_path).expect("Can't open data.avro");
114 let reader = Reader::builder(BufReader::new(&file))
115 .reader_schema(&schema)
116 .build()
117 .expect("Can't read data.avro");
118
119 let mut writer = Writer::with_codec(&schema, Vec::new(), Codec::Null).unwrap();
120
121 let mut records: Vec<Value> = vec![];
122
123 for r in reader {
124 let record: Value = r.expect("Error on reading");
125 writer
126 .append_value(record.clone())
127 .expect("Error on write item");
128 records.push(record);
129 }
130
131 writer.flush().expect("Error on flush");
132 let bytes: Vec<u8> = writer.into_inner().unwrap();
133 let reader_bis = Reader::builder(&bytes[..])
134 .reader_schema(&schema)
135 .build()
136 .expect("Can't read flushed vector");
137
138 let mut records_iter: Iter<Value> = records.iter();
139 for r2 in reader_bis {
140 let record: Value = r2.expect("Error on reading");
141 let original = records_iter.next().expect("Error, no next");
142 if original != &record {
143 result = match result {
144 Ok(_) => Result::Err(ErrorsDesc::new(
145 format!("Records are not equals for folder : {folder:?}").as_str(),
146 )),
147 Err(e) => Err(
148 e.add(format!("Records are not equals for folder : {folder:?}").as_str())
149 ),
150 }
151 }
152 }
153 }
154 result
155}

Callers 1

test_schemaFunction · 0.85

Calls 8

buildMethod · 0.80
reader_schemaMethod · 0.80
append_valueMethod · 0.80
into_innerMethod · 0.80
nextMethod · 0.80
addMethod · 0.80
cloneMethod · 0.45
flushMethod · 0.45

Tested by

no test coverage detected