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