@@ -8,7 +8,6 @@ use crate::experiments::Experiment;
8
8
use crate :: prelude:: * ;
9
9
use crate :: report:: { compare, Comparison , ReportWriter } ;
10
10
use crate :: results:: { EncodedLog , EncodingType , ReadResults } ;
11
- use flate2:: { write:: GzEncoder , Compression } ;
12
11
use indexmap:: IndexMap ;
13
12
use tar:: { Builder as TarBuilder , Header as TarHeader } ;
14
13
use tempfile:: tempfile;
@@ -156,7 +155,7 @@ fn write_all_archive<DB: ReadResults, W: ReportWriter>(
156
155
// writes to S3 (requiring buffer management etc) while avoiding keeping the blob entirely
157
156
// in memory.
158
157
let backing = tempfile ( ) ?;
159
- let mut all = TarBuilder :: new ( GzEncoder :: new ( backing, Compression :: default ( ) ) ) ;
158
+ let mut all = TarBuilder :: new ( zstd :: stream :: Encoder :: new ( backing, 0 ) ? ) ;
160
159
for entry in iterate ( db, ex, crates, config) {
161
160
let entry = entry?;
162
161
let mut header = entry. header ( ) ;
@@ -180,9 +179,9 @@ fn write_all_archive<DB: ReadResults, W: ReportWriter>(
180
179
view = & buffer[ ..] ;
181
180
}
182
181
match dest. write_bytes (
183
- "logs-archives/all.tar.gz " ,
182
+ "logs-archives/all.tar.zst " ,
184
183
view,
185
- & "application/gzip " . parse ( ) . unwrap ( ) ,
184
+ & "application/zstd " . parse ( ) . unwrap ( ) ,
186
185
EncodingType :: Plain ,
187
186
) {
188
187
Ok ( ( ) ) => break ,
@@ -192,7 +191,7 @@ fn write_all_archive<DB: ReadResults, W: ReportWriter>(
192
191
} else {
193
192
std:: thread:: sleep ( std:: time:: Duration :: from_secs ( 2 ) ) ;
194
193
warn ! (
195
- "retry ({}/{}) writing logs-archives/all.tar.gz ({} bytes) (error: {:?})" ,
194
+ "retry ({}/{}) writing logs-archives/all.tar.zst ({} bytes) (error: {:?})" ,
196
195
i,
197
196
RETRIES ,
198
197
view. len( ) ,
@@ -206,7 +205,7 @@ fn write_all_archive<DB: ReadResults, W: ReportWriter>(
206
205
207
206
Ok ( Archive {
208
207
name : "All the crates" . to_string ( ) ,
209
- path : "logs-archives/all.tar.gz " . to_string ( ) ,
208
+ path : "logs-archives/all.tar.zst " . to_string ( ) ,
210
209
} )
211
210
}
212
211
@@ -229,22 +228,22 @@ pub fn write_logs_archives<DB: ReadResults, W: ReportWriter>(
229
228
230
229
by_comparison
231
230
. entry ( entry. comparison )
232
- . or_insert_with ( || TarBuilder :: new ( GzEncoder :: new ( Vec :: new ( ) , Compression :: default ( ) ) ) )
231
+ . or_insert_with ( || TarBuilder :: new ( zstd :: stream :: Encoder :: new ( Vec :: new ( ) , 3 ) . unwrap ( ) ) )
233
232
. append_data ( & mut entry. header ( ) , & entry. path , & entry. log_bytes [ ..] ) ?;
234
233
}
235
234
236
235
for ( comparison, archive) in by_comparison. drain ( ..) {
237
236
let data = archive. into_inner ( ) ?. finish ( ) ?;
238
237
dest. write_bytes (
239
- format ! ( "logs-archives/{comparison}.tar.gz " ) ,
238
+ format ! ( "logs-archives/{comparison}.tar.zst " ) ,
240
239
& data,
241
- & "application/gzip " . parse ( ) . unwrap ( ) ,
240
+ & "application/zstd " . parse ( ) . unwrap ( ) ,
242
241
EncodingType :: Plain ,
243
242
) ?;
244
243
245
244
archives. push ( Archive {
246
245
name : format ! ( "{comparison} crates" ) ,
247
- path : format ! ( "logs-archives/{comparison}.tar.gz " ) ,
246
+ path : format ! ( "logs-archives/{comparison}.tar.zst " ) ,
248
247
} ) ;
249
248
}
250
249
@@ -261,11 +260,11 @@ mod tests {
261
260
use crate :: prelude:: * ;
262
261
use crate :: report:: DummyWriter ;
263
262
use crate :: results:: { DatabaseDB , EncodingType , FailureReason , TestResult , WriteResults } ;
264
- use flate2:: read:: GzDecoder ;
265
263
use mime:: Mime ;
266
264
use rustwide:: logging:: LogStorage ;
267
265
use std:: io:: Read ;
268
266
use tar:: Archive ;
267
+ use zstd:: stream:: Decoder ;
269
268
270
269
#[ test]
271
270
fn test_logs_archives_generation ( ) {
@@ -355,20 +354,20 @@ mod tests {
355
354
assert_eq ! (
356
355
& archives_paths,
357
356
& [
358
- "logs-archives/all.tar.gz " ,
359
- "logs-archives/regressed.tar.gz " ,
360
- "logs-archives/test-pass.tar.gz " ,
357
+ "logs-archives/all.tar.zst " ,
358
+ "logs-archives/regressed.tar.zst " ,
359
+ "logs-archives/test-pass.tar.zst " ,
361
360
]
362
361
) ;
363
362
364
363
// Load the content of all the archives
365
- let mime: Mime = "application/gzip " . parse ( ) . unwrap ( ) ;
366
- let all_content = writer. get ( "logs-archives/all.tar.gz " , & mime) ;
367
- let mut all = Archive :: new ( GzDecoder :: new ( all_content. as_slice ( ) ) ) ;
368
- let regressed_content = writer. get ( "logs-archives/regressed.tar.gz " , & mime) ;
369
- let mut regressed = Archive :: new ( GzDecoder :: new ( regressed_content. as_slice ( ) ) ) ;
370
- let test_pass_content = writer. get ( "logs-archives/test-pass.tar.gz " , & mime) ;
371
- let mut test_pass = Archive :: new ( GzDecoder :: new ( test_pass_content. as_slice ( ) ) ) ;
364
+ let mime: Mime = "application/zstd " . parse ( ) . unwrap ( ) ;
365
+ let all_content = writer. get ( "logs-archives/all.tar.zst " , & mime) ;
366
+ let mut all = Archive :: new ( Decoder :: new ( all_content. as_slice ( ) ) . unwrap ( ) ) ;
367
+ let regressed_content = writer. get ( "logs-archives/regressed.tar.zst " , & mime) ;
368
+ let mut regressed = Archive :: new ( Decoder :: new ( regressed_content. as_slice ( ) ) . unwrap ( ) ) ;
369
+ let test_pass_content = writer. get ( "logs-archives/test-pass.tar.zst " , & mime) ;
370
+ let mut test_pass = Archive :: new ( Decoder :: new ( test_pass_content. as_slice ( ) ) . unwrap ( ) ) ;
372
371
373
372
macro_rules! check_content {
374
373
( $archive: ident: { $( $file: expr => $match: expr, ) * } ) => { {
@@ -401,21 +400,21 @@ mod tests {
401
400
} }
402
401
}
403
402
404
- // Check all.tar.gz
403
+ // Check all.tar.zst
405
404
check_content ! ( all: {
406
405
format!( "regressed/{}/{}.txt" , crate1. id( ) , ex. toolchains[ 0 ] ) => "tc1 crate1" ,
407
406
format!( "regressed/{}/{}.txt" , crate1. id( ) , ex. toolchains[ 1 ] ) => "tc2 crate1" ,
408
407
format!( "test-pass/{}/{}.txt" , crate2. id( ) , ex. toolchains[ 0 ] ) => "tc1 crate2" ,
409
408
format!( "test-pass/{}/{}.txt" , crate2. id( ) , ex. toolchains[ 1 ] ) => "tc2 crate2" ,
410
409
} ) ;
411
410
412
- // Check regressed.tar.gz
411
+ // Check regressed.tar.zst
413
412
check_content ! ( regressed: {
414
413
format!( "regressed/{}/{}.txt" , crate1. id( ) , ex. toolchains[ 0 ] ) => "tc1 crate1" ,
415
414
format!( "regressed/{}/{}.txt" , crate1. id( ) , ex. toolchains[ 1 ] ) => "tc2 crate1" ,
416
415
} ) ;
417
416
418
- // Check test-pass.tar.gz
417
+ // Check test-pass.tar.zst
419
418
check_content ! ( test_pass: {
420
419
format!( "test-pass/{}/{}.txt" , crate2. id( ) , ex. toolchains[ 0 ] ) => "tc1 crate2" ,
421
420
format!( "test-pass/{}/{}.txt" , crate2. id( ) , ex. toolchains[ 1 ] ) => "tc2 crate2" ,
0 commit comments