(folder: &Path)
| 97 | } |
| 98 | |
| 99 | fn 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 | } |
no test coverage detected