diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2022-12-17 11:59:24 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2022-12-22 10:11:08 +0100 |
| commit | 8482d3c1035095c89d112c75bfcc2e4095b486bf (patch) | |
| tree | f2cc2b32e55fd61cbcd03d1b27693fe7c972f07b /pkg/image/compression_test.go | |
| parent | 412eecf40d514f89060844dc8631f60b80d7bfd2 (diff) | |
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.
Diffstat (limited to 'pkg/image/compression_test.go')
| -rw-r--r-- | pkg/image/compression_test.go | 44 |
1 files changed, 44 insertions, 0 deletions
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 +} |
