Skip to content

Commit

Permalink
Compression tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Danilo Luvizotto committed Apr 23, 2018
1 parent 978c3e2 commit b44e6d3
Show file tree
Hide file tree
Showing 7 changed files with 79 additions and 22 deletions.
Binary file modified internal/message/fixtures/test_must_gzip.golden
Binary file not shown.
28 changes: 7 additions & 21 deletions util/compression/compression.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

72 changes: 72 additions & 0 deletions util/compression/compression_test.go
Original file line number Diff line number Diff line change
@@ -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)
})
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 0 additions & 1 deletion util/util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,6 @@ func TestSerializeOrRaw(t *testing.T) {
}

func TestGobEncode(t *testing.T) {

ins := []struct {
name string
data []interface{}
Expand Down

0 comments on commit b44e6d3

Please sign in to comment.