From 8482d3c1035095c89d112c75bfcc2e4095b486bf Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sat, 17 Dec 2022 11:59:24 +0100 Subject: pkg/image: factor out from prog Move image compression-related function to a separate package. In preperation for subsequent changes that make decompression more complex. Prog package is already large and complex. Also makes running compression tests/benchmarks much faster. --- pkg/image/compression_test.go | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 pkg/image/compression_test.go (limited to 'pkg/image/compression_test.go') diff --git a/pkg/image/compression_test.go b/pkg/image/compression_test.go new file mode 100644 index 000000000..cf18ed340 --- /dev/null +++ b/pkg/image/compression_test.go @@ -0,0 +1,44 @@ +// Copyright 2022 syzkaller project authors. All rights reserved. +// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +package image + +import ( + "bytes" + "fmt" + "math/rand" + "testing" + + "github.com/google/syzkaller/pkg/testutil" +) + +func TestCompress(t *testing.T) { + r := rand.New(testutil.RandSource(t)) + err := testRoundTrip(r, Compress, Decompress) + if err != nil { + t.Fatalf("compress/decompress %v", err) + } +} + +func TestEncode(t *testing.T) { + r := rand.New(testutil.RandSource(t)) + err := testRoundTrip(r, EncodeB64, DecodeB64) + if err != nil { + t.Fatalf("encode/decode Base64 %v", err) + } +} + +func testRoundTrip(r *rand.Rand, transform func([]byte) []byte, inverse func([]byte) ([]byte, error)) error { + for i := 0; i < testutil.IterCount(); i++ { + randBytes := testutil.RandMountImage(r) + resultBytes := transform(randBytes) + resultBytes, err := inverse(resultBytes) + if err != nil { + return err + } + if !bytes.Equal(randBytes, resultBytes) { + return fmt.Errorf("roundtrip changes data (original length %d)", len(randBytes)) + } + } + return nil +} -- cgit mrf-deployment