mirror of https://github.com/containers/podman.git
				
				
				
			Use faster gzip reader
Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
This commit is contained in:
		
							parent
							
								
									2245cf8dc4
								
							
						
					
					
						commit
						0b3f3f0ef1
					
				|  | @ -6,6 +6,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/containers/podman/v5/pkg/machine/define" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
| 
 | ||||
| func Test_compressionFromFile(t *testing.T) { | ||||
|  | @ -122,9 +123,9 @@ func Test_Decompress(t *testing.T) { | |||
| 			dstFilePath := tt.args.dst | ||||
| 			defer os.Remove(dstFilePath) | ||||
| 			err := Decompress(srcVMFile, dstFilePath) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			data, err := os.ReadFile(dstFilePath) | ||||
| 			assert.NoError(t, err) | ||||
| 			require.NoError(t, err) | ||||
| 			assert.Equal(t, string(tt.want), string(data)) | ||||
| 		}) | ||||
| 	} | ||||
|  |  | |||
|  | @ -25,7 +25,7 @@ type decompressor interface { | |||
| 	compressedFileSize() int64 | ||||
| 	compressedFileMode() os.FileMode | ||||
| 	compressedFileReader() (io.ReadCloser, error) | ||||
| 	decompress(w io.WriteSeeker, r io.Reader) error | ||||
| 	decompress(w WriteSeekCloser, r io.Reader) error | ||||
| 	close() | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -44,7 +44,7 @@ func (d *genericDecompressor) compressedFileReader() (io.ReadCloser, error) { | |||
| 	return compressedFile, nil | ||||
| } | ||||
| 
 | ||||
| func (d *genericDecompressor) decompress(w io.WriteSeeker, r io.Reader) error { | ||||
| func (d *genericDecompressor) decompress(w WriteSeekCloser, r io.Reader) error { | ||||
| 	decompressedFileReader, _, err := compression.AutoDecompress(r) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
|  |  | |||
|  | @ -1,10 +1,9 @@ | |||
| package compression | ||||
| 
 | ||||
| import ( | ||||
| 	"compress/gzip" | ||||
| 	"io" | ||||
| 
 | ||||
| 	crcOs "github.com/crc-org/crc/v2/pkg/os" | ||||
| 	image "github.com/containers/image/v5/pkg/compression" | ||||
| 	"github.com/sirupsen/logrus" | ||||
| ) | ||||
| 
 | ||||
|  | @ -18,13 +17,15 @@ func newGzipDecompressor(compressedFilePath string) (*gzipDecompressor, error) { | |||
| 	return &gzipDecompressor{*d, nil}, err | ||||
| } | ||||
| 
 | ||||
| func (d *gzipDecompressor) decompress(w io.WriteSeeker, r io.Reader) error { | ||||
| 	gzReader, err := gzip.NewReader(r) | ||||
| func (d *gzipDecompressor) decompress(w WriteSeekCloser, r io.Reader) error { | ||||
| 	gzReader, err := image.GzipDecompressor(r) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	d.gzReader = gzReader | ||||
| 	_, err = crcOs.CopySparse(w, gzReader) | ||||
| 
 | ||||
| 	sparseWriter := NewSparseWriter(w) | ||||
| 	_, err = io.Copy(sparseWriter, gzReader) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ func newUncompressedDecompressor(compressedFilePath string) (*uncompressedDecomp | |||
| 	return &uncompressedDecompressor{*d}, err | ||||
| } | ||||
| 
 | ||||
| func (*uncompressedDecompressor) decompress(w io.WriteSeeker, r io.Reader) error { | ||||
| func (*uncompressedDecompressor) decompress(w WriteSeekCloser, r io.Reader) error { | ||||
| 	_, err := crcOs.CopySparse(w, r) | ||||
| 	return err | ||||
| } | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ func newXzDecompressor(compressedFilePath string) (*xzDecompressor, error) { | |||
| // Will error out if file without .Xz already exists
 | ||||
| // Maybe extracting then renaming is a good idea here..
 | ||||
| // depends on Xz: not pre-installed on mac, so it becomes a brew dependency
 | ||||
| func (*xzDecompressor) decompress(w io.WriteSeeker, r io.Reader) error { | ||||
| func (*xzDecompressor) decompress(w WriteSeekCloser, r io.Reader) error { | ||||
| 	var cmd *exec.Cmd | ||||
| 	var read io.Reader | ||||
| 
 | ||||
|  |  | |||
|  | @ -40,7 +40,7 @@ func (d *zipDecompressor) compressedFileReader() (io.ReadCloser, error) { | |||
| 	return z, nil | ||||
| } | ||||
| 
 | ||||
| func (*zipDecompressor) decompress(w io.WriteSeeker, r io.Reader) error { | ||||
| func (*zipDecompressor) decompress(w WriteSeekCloser, r io.Reader) error { | ||||
| 	_, err := io.Copy(w, r) | ||||
| 	return err | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue