diff --git a/internal/message/fixtures/test_must_gzip.golden b/internal/message/fixtures/test_must_gzip.golden index cbe8de5b..7e520d47 100644 Binary files a/internal/message/fixtures/test_must_gzip.golden and b/internal/message/fixtures/test_must_gzip.golden differ 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 00000000..28b043ea Binary files /dev/null and b/util/compression/fixtures/compression_deflate_test_1.golden differ 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 00000000..72a9f242 Binary files /dev/null and b/util/compression/fixtures/compression_deflate_test_2.golden differ 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 00000000..0207af4a Binary files /dev/null and b/util/compression/fixtures/compression_deflate_test_3.golden differ 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{}