From b44e6d38fb051ff228629e7703f16fa194ea383c Mon Sep 17 00:00:00 2001 From: Danilo Luvizotto Date: Mon, 23 Apr 2018 17:35:06 -0300 Subject: [PATCH] Compression tests --- .../message/fixtures/test_must_gzip.golden | Bin 31 -> 19 bytes util/compression/compression.go | 28 ++----- util/compression/compression_test.go | 72 ++++++++++++++++++ .../compression_deflate_test_1.golden | Bin 0 -> 16 bytes .../compression_deflate_test_2.golden | Bin 0 -> 21 bytes .../compression_deflate_test_3.golden | Bin 0 -> 82 bytes util/util_test.go | 1 - 7 files changed, 79 insertions(+), 22 deletions(-) create mode 100644 util/compression/compression_test.go create mode 100644 util/compression/fixtures/compression_deflate_test_1.golden create mode 100644 util/compression/fixtures/compression_deflate_test_2.golden create mode 100644 util/compression/fixtures/compression_deflate_test_3.golden diff --git a/internal/message/fixtures/test_must_gzip.golden b/internal/message/fixtures/test_must_gzip.golden index cbe8de5bacf3db499107c9f4db1b1198fa0532b1..7e520d474c6917a53781a9d99b55183bfbc2846f 100644 GIT binary patch literal 19 acmXqEsF>q*%2S1nk%@uf|9|8E{3!rB3IdTh diff --git a/util/compression/compression.go b/util/compression/compression.go index 37faf031..c05f3a93 100644 --- a/util/compression/compression.go +++ b/util/compression/compression.go @@ -2,42 +2,28 @@ package compression import ( "bytes" - "compress/gzip" - "io" + "compress/zlib" "io/ioutil" ) func DeflateData(data []byte) ([]byte, error) { var bb bytes.Buffer - gz := gzip.NewWriter(&bb) - _, err := gz.Write(data) + z := zlib.NewWriter(&bb) + _, err := z.Write(data) if err != nil { return nil, err } - gz.Close() + z.Close() return bb.Bytes(), nil } -// Write gunzipped data to a Writer -func GunzipWrite(w io.Writer, data []byte) error { - // Write gzipped data to the client - gr, err := gzip.NewReader(bytes.NewBuffer(data)) - defer gr.Close() - data, err = ioutil.ReadAll(gr) - if err != nil { - return err - } - w.Write(data) - return nil -} - func InflateData(data []byte) ([]byte, error) { - gr, err := gzip.NewReader(bytes.NewBuffer(data)) + zr, err := zlib.NewReader(bytes.NewBuffer(data)) if err != nil { return nil, err } - defer gr.Close() + defer zr.Close() - return ioutil.ReadAll(gr) + return ioutil.ReadAll(zr) } diff --git a/util/compression/compression_test.go b/util/compression/compression_test.go new file mode 100644 index 00000000..ae897c15 --- /dev/null +++ b/util/compression/compression_test.go @@ -0,0 +1,72 @@ +package compression + +import ( + "flag" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/topfreegames/pitaya/helpers" +) + +var update = flag.Bool("update", false, "update .golden files") + +func TestCompressionDeflate(t *testing.T) { + ins := []struct { + name string + data string + }{ + {"compression_deflate_test_1", "test"}, + {"compression_deflate_test_2", "{a:1,b:2}"}, + {"compression_deflate_test_3", "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit"}, + } + + for _, in := range ins { + t.Run(in.name, func(t *testing.T) { + b, err := DeflateData([]byte(in.data)) + require.NoError(t, err) + gp := filepath.Join("fixtures", in.name+".golden") + if *update { + t.Log("updating golden file") + helpers.WriteFile(t, gp, b) + } + expected := helpers.ReadFile(t, gp) + + assert.Equal(t, expected, b) + }) + } +} + +func TestCompressionInflate(t *testing.T) { + ins := []struct { + name string + data string + }{ + {"compression_deflate_test_1", "test"}, + {"compression_deflate_test_2", "{a:1,b:2}"}, + {"compression_deflate_test_3", "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit"}, + } + + for _, in := range ins { + t.Run(in.name, func(t *testing.T) { + inputFile := filepath.Join("fixtures", in.name+".golden") + input := helpers.ReadFile(t, inputFile) + + result, err := InflateData(input) + require.NoError(t, err) + + assert.Equal(t, string(result), in.data) + }) + } +} + +func TestCompressionInflateIncorrectData(t *testing.T) { + t.Run("compression_deflate_incorrect_data", func(t *testing.T) { + input := "arbitrary data" + + result, err := InflateData([]byte(input)) + require.Error(t, err) + assert.Nil(t, result) + }) +} diff --git a/util/compression/fixtures/compression_deflate_test_1.golden b/util/compression/fixtures/compression_deflate_test_1.golden new file mode 100644 index 0000000000000000000000000000000000000000..28b043eacfd01ca1a7ac4d4f4c01236c41c7538d GIT binary patch literal 16 Xcmb=Jqvffq$H>CK@c%zcEaO1{C)foE literal 0 HcmV?d00001 diff --git a/util/compression/fixtures/compression_deflate_test_2.golden b/util/compression/fixtures/compression_deflate_test_2.golden new file mode 100644 index 0000000000000000000000000000000000000000..72a9f2421a07c7b4c17e3f8d0c70c1324f7b65f1 GIT binary patch literal 21 dcmb=Jv&wIa(G|~4Myps^7#RNl=M!ey4*+K52!{Xw literal 0 HcmV?d00001 diff --git a/util/compression/fixtures/compression_deflate_test_3.golden b/util/compression/fixtures/compression_deflate_test_3.golden new file mode 100644 index 0000000000000000000000000000000000000000..0207af4a941ca9e419bfb882f228dfc6c08e124c GIT binary patch literal 82 zcmV-Y0ImOcoFvH04Fe$z1khHdfUPAxSTF}mI0k=Ge}wk<-iN1&?GcXCny1CUtP4zE o9yI9Awmb3`QVU|N2gAR~QLK&!GIeVX#g9wt9{>RV|0+)+I@Nb1N&o-= literal 0 HcmV?d00001 diff --git a/util/util_test.go b/util/util_test.go index ca0b153e..565de084 100644 --- a/util/util_test.go +++ b/util/util_test.go @@ -167,7 +167,6 @@ func TestSerializeOrRaw(t *testing.T) { } func TestGobEncode(t *testing.T) { - ins := []struct { name string data []interface{}