Update snappy to the canonical new path
https://github.com/golang/snappy/pull/14
This commit is contained in:
parent
f58f46c243
commit
fd296c5911
4
Godeps/Godeps.json
generated
4
Godeps/Godeps.json
generated
|
@ -86,8 +86,8 @@
|
||||||
"Rev": "604ed5785183e59ae2789449d89e73f3a2a77987"
|
"Rev": "604ed5785183e59ae2789449d89e73f3a2a77987"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/golang/snappy/snappy",
|
"ImportPath": "github.com/golang/snappy",
|
||||||
"Rev": "eaa750b9bf4dcb7cb20454be850613b66cda3273"
|
"Rev": "723cc1e459b8eea2dea4583200fd60757d40097a"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/google/go-github/github",
|
"ImportPath": "github.com/google/go-github/github",
|
||||||
|
|
14
Godeps/_workspace/src/github.com/golang/snappy/AUTHORS
generated
vendored
Executable file
14
Godeps/_workspace/src/github.com/golang/snappy/AUTHORS
generated
vendored
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
# This is the official list of Snappy-Go authors for copyright purposes.
|
||||||
|
# This file is distinct from the CONTRIBUTORS files.
|
||||||
|
# See the latter for an explanation.
|
||||||
|
|
||||||
|
# Names should be added to this file as
|
||||||
|
# Name or Organization <email address>
|
||||||
|
# The email address is not required for organizations.
|
||||||
|
|
||||||
|
# Please keep the list sorted.
|
||||||
|
|
||||||
|
Damian Gryski <dgryski@gmail.com>
|
||||||
|
Google Inc.
|
||||||
|
Jan Mercl <0xjnml@gmail.com>
|
||||||
|
Sebastien Binet <seb.binet@gmail.com>
|
36
Godeps/_workspace/src/github.com/golang/snappy/CONTRIBUTORS
generated
vendored
Executable file
36
Godeps/_workspace/src/github.com/golang/snappy/CONTRIBUTORS
generated
vendored
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
# This is the official list of people who can contribute
|
||||||
|
# (and typically have contributed) code to the Snappy-Go repository.
|
||||||
|
# The AUTHORS file lists the copyright holders; this file
|
||||||
|
# lists people. For example, Google employees are listed here
|
||||||
|
# but not in AUTHORS, because Google holds the copyright.
|
||||||
|
#
|
||||||
|
# The submission process automatically checks to make sure
|
||||||
|
# that people submitting code are listed in this file (by email address).
|
||||||
|
#
|
||||||
|
# Names should be added to this file only after verifying that
|
||||||
|
# the individual or the individual's organization has agreed to
|
||||||
|
# the appropriate Contributor License Agreement, found here:
|
||||||
|
#
|
||||||
|
# http://code.google.com/legal/individual-cla-v1.0.html
|
||||||
|
# http://code.google.com/legal/corporate-cla-v1.0.html
|
||||||
|
#
|
||||||
|
# The agreement for individuals can be filled out on the web.
|
||||||
|
#
|
||||||
|
# When adding J Random Contributor's name to this file,
|
||||||
|
# either J's name or J's organization's name should be
|
||||||
|
# added to the AUTHORS file, depending on whether the
|
||||||
|
# individual or corporate CLA was used.
|
||||||
|
|
||||||
|
# Names should be added to this file like so:
|
||||||
|
# Name <email address>
|
||||||
|
|
||||||
|
# Please keep the list sorted.
|
||||||
|
|
||||||
|
Damian Gryski <dgryski@gmail.com>
|
||||||
|
Jan Mercl <0xjnml@gmail.com>
|
||||||
|
Kai Backman <kaib@golang.org>
|
||||||
|
Marc-Antoine Ruel <maruel@chromium.org>
|
||||||
|
Nigel Tao <nigeltao@golang.org>
|
||||||
|
Rob Pike <r@golang.org>
|
||||||
|
Russ Cox <rsc@golang.org>
|
||||||
|
Sebastien Binet <seb.binet@gmail.com>
|
27
Godeps/_workspace/src/github.com/golang/snappy/LICENSE
generated
vendored
Executable file
27
Godeps/_workspace/src/github.com/golang/snappy/LICENSE
generated
vendored
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following disclaimer
|
||||||
|
in the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
* Neither the name of Google Inc. nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
7
Godeps/_workspace/src/github.com/golang/snappy/README
generated
vendored
Executable file
7
Godeps/_workspace/src/github.com/golang/snappy/README
generated
vendored
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
The Snappy compression format in the Go programming language.
|
||||||
|
|
||||||
|
To download and install from source:
|
||||||
|
$ go get github.com/golang/snappy
|
||||||
|
|
||||||
|
Unless otherwise noted, the Snappy-Go source files are distributed
|
||||||
|
under the BSD-style license found in the LICENSE file.
|
28
Godeps/_workspace/src/github.com/golang/snappy/snappy/decode.go → Godeps/_workspace/src/github.com/golang/snappy/decode.go
generated
vendored
Normal file → Executable file
28
Godeps/_workspace/src/github.com/golang/snappy/snappy/decode.go → Godeps/_workspace/src/github.com/golang/snappy/decode.go
generated
vendored
Normal file → Executable file
|
@ -13,6 +13,8 @@ import (
|
||||||
var (
|
var (
|
||||||
// ErrCorrupt reports that the input is invalid.
|
// ErrCorrupt reports that the input is invalid.
|
||||||
ErrCorrupt = errors.New("snappy: corrupt input")
|
ErrCorrupt = errors.New("snappy: corrupt input")
|
||||||
|
// ErrTooLarge reports that the uncompressed length is too large.
|
||||||
|
ErrTooLarge = errors.New("snappy: decoded block is too large")
|
||||||
// ErrUnsupported reports that the input isn't supported.
|
// ErrUnsupported reports that the input isn't supported.
|
||||||
ErrUnsupported = errors.New("snappy: unsupported input")
|
ErrUnsupported = errors.New("snappy: unsupported input")
|
||||||
)
|
)
|
||||||
|
@ -27,11 +29,13 @@ func DecodedLen(src []byte) (int, error) {
|
||||||
// that the length header occupied.
|
// that the length header occupied.
|
||||||
func decodedLen(src []byte) (blockLen, headerLen int, err error) {
|
func decodedLen(src []byte) (blockLen, headerLen int, err error) {
|
||||||
v, n := binary.Uvarint(src)
|
v, n := binary.Uvarint(src)
|
||||||
if n == 0 {
|
if n <= 0 || v > 0xffffffff {
|
||||||
return 0, 0, ErrCorrupt
|
return 0, 0, ErrCorrupt
|
||||||
}
|
}
|
||||||
if uint64(int(v)) != v {
|
|
||||||
return 0, 0, errors.New("snappy: decoded block is too large")
|
const wordSize = 32 << (^uint(0) >> 32 & 1)
|
||||||
|
if wordSize == 32 && v > 0x7fffffff {
|
||||||
|
return 0, 0, ErrTooLarge
|
||||||
}
|
}
|
||||||
return int(v), n, nil
|
return int(v), n, nil
|
||||||
}
|
}
|
||||||
|
@ -56,7 +60,7 @@ func Decode(dst, src []byte) ([]byte, error) {
|
||||||
x := uint(src[s] >> 2)
|
x := uint(src[s] >> 2)
|
||||||
switch {
|
switch {
|
||||||
case x < 60:
|
case x < 60:
|
||||||
s += 1
|
s++
|
||||||
case x == 60:
|
case x == 60:
|
||||||
s += 2
|
s += 2
|
||||||
if s > len(src) {
|
if s > len(src) {
|
||||||
|
@ -130,7 +134,7 @@ func Decode(dst, src []byte) ([]byte, error) {
|
||||||
|
|
||||||
// NewReader returns a new Reader that decompresses from r, using the framing
|
// NewReader returns a new Reader that decompresses from r, using the framing
|
||||||
// format described at
|
// format described at
|
||||||
// https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
|
// https://github.com/google/snappy/blob/master/framing_format.txt
|
||||||
func NewReader(r io.Reader) *Reader {
|
func NewReader(r io.Reader) *Reader {
|
||||||
return &Reader{
|
return &Reader{
|
||||||
r: r,
|
r: r,
|
||||||
|
@ -200,7 +204,7 @@ func (r *Reader) Read(p []byte) (int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// The chunk types are specified at
|
// The chunk types are specified at
|
||||||
// https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
|
// https://github.com/google/snappy/blob/master/framing_format.txt
|
||||||
switch chunkType {
|
switch chunkType {
|
||||||
case chunkTypeCompressedData:
|
case chunkTypeCompressedData:
|
||||||
// Section 4.2. Compressed data (chunk type 0x00).
|
// Section 4.2. Compressed data (chunk type 0x00).
|
||||||
|
@ -280,13 +284,11 @@ func (r *Reader) Read(p []byte) (int, error) {
|
||||||
// Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f).
|
// Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f).
|
||||||
r.err = ErrUnsupported
|
r.err = ErrUnsupported
|
||||||
return 0, r.err
|
return 0, r.err
|
||||||
|
}
|
||||||
} else {
|
// Section 4.4 Padding (chunk type 0xfe).
|
||||||
// Section 4.4 Padding (chunk type 0xfe).
|
// Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd).
|
||||||
// Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd).
|
if !r.readFull(r.buf[:chunkLen]) {
|
||||||
if !r.readFull(r.buf[:chunkLen]) {
|
return 0, r.err
|
||||||
return 0, r.err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
18
Godeps/_workspace/src/github.com/golang/snappy/snappy/encode.go → Godeps/_workspace/src/github.com/golang/snappy/encode.go
generated
vendored
Normal file → Executable file
18
Godeps/_workspace/src/github.com/golang/snappy/snappy/encode.go → Godeps/_workspace/src/github.com/golang/snappy/encode.go
generated
vendored
Normal file → Executable file
|
@ -79,7 +79,7 @@ func emitCopy(dst []byte, offset, length int) int {
|
||||||
// slice of dst if dst was large enough to hold the entire encoded block.
|
// slice of dst if dst was large enough to hold the entire encoded block.
|
||||||
// Otherwise, a newly allocated slice will be returned.
|
// Otherwise, a newly allocated slice will be returned.
|
||||||
// It is valid to pass a nil dst.
|
// It is valid to pass a nil dst.
|
||||||
func Encode(dst, src []byte) ([]byte, error) {
|
func Encode(dst, src []byte) []byte {
|
||||||
if n := MaxEncodedLen(len(src)); len(dst) < n {
|
if n := MaxEncodedLen(len(src)); len(dst) < n {
|
||||||
dst = make([]byte, n)
|
dst = make([]byte, n)
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ func Encode(dst, src []byte) ([]byte, error) {
|
||||||
if len(src) != 0 {
|
if len(src) != 0 {
|
||||||
d += emitLiteral(dst[d:], src)
|
d += emitLiteral(dst[d:], src)
|
||||||
}
|
}
|
||||||
return dst[:d], nil
|
return dst[:d]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive.
|
// Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive.
|
||||||
|
@ -145,7 +145,7 @@ func Encode(dst, src []byte) ([]byte, error) {
|
||||||
if lit != len(src) {
|
if lit != len(src) {
|
||||||
d += emitLiteral(dst[d:], src[lit:])
|
d += emitLiteral(dst[d:], src[lit:])
|
||||||
}
|
}
|
||||||
return dst[:d], nil
|
return dst[:d]
|
||||||
}
|
}
|
||||||
|
|
||||||
// MaxEncodedLen returns the maximum length of a snappy block, given its
|
// MaxEncodedLen returns the maximum length of a snappy block, given its
|
||||||
|
@ -176,7 +176,7 @@ func MaxEncodedLen(srcLen int) int {
|
||||||
|
|
||||||
// NewWriter returns a new Writer that compresses to w, using the framing
|
// NewWriter returns a new Writer that compresses to w, using the framing
|
||||||
// format described at
|
// format described at
|
||||||
// https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
|
// https://github.com/google/snappy/blob/master/framing_format.txt
|
||||||
func NewWriter(w io.Writer) *Writer {
|
func NewWriter(w io.Writer) *Writer {
|
||||||
return &Writer{
|
return &Writer{
|
||||||
w: w,
|
w: w,
|
||||||
|
@ -226,11 +226,7 @@ func (w *Writer) Write(p []byte) (n int, errRet error) {
|
||||||
// Compress the buffer, discarding the result if the improvement
|
// Compress the buffer, discarding the result if the improvement
|
||||||
// isn't at least 12.5%.
|
// isn't at least 12.5%.
|
||||||
chunkType := uint8(chunkTypeCompressedData)
|
chunkType := uint8(chunkTypeCompressedData)
|
||||||
chunkBody, err := Encode(w.enc, uncompressed)
|
chunkBody := Encode(w.enc, uncompressed)
|
||||||
if err != nil {
|
|
||||||
w.err = err
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
if len(chunkBody) >= len(uncompressed)-len(uncompressed)/8 {
|
if len(chunkBody) >= len(uncompressed)-len(uncompressed)/8 {
|
||||||
chunkType, chunkBody = chunkTypeUncompressedData, uncompressed
|
chunkType, chunkBody = chunkTypeUncompressedData, uncompressed
|
||||||
}
|
}
|
||||||
|
@ -244,11 +240,11 @@ func (w *Writer) Write(p []byte) (n int, errRet error) {
|
||||||
w.buf[5] = uint8(checksum >> 8)
|
w.buf[5] = uint8(checksum >> 8)
|
||||||
w.buf[6] = uint8(checksum >> 16)
|
w.buf[6] = uint8(checksum >> 16)
|
||||||
w.buf[7] = uint8(checksum >> 24)
|
w.buf[7] = uint8(checksum >> 24)
|
||||||
if _, err = w.w.Write(w.buf[:]); err != nil {
|
if _, err := w.w.Write(w.buf[:]); err != nil {
|
||||||
w.err = err
|
w.err = err
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
if _, err = w.w.Write(chunkBody); err != nil {
|
if _, err := w.w.Write(chunkBody); err != nil {
|
||||||
w.err = err
|
w.err = err
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
8
Godeps/_workspace/src/github.com/golang/snappy/snappy/snappy.go → Godeps/_workspace/src/github.com/golang/snappy/snappy.go
generated
vendored
Normal file → Executable file
8
Godeps/_workspace/src/github.com/golang/snappy/snappy/snappy.go → Godeps/_workspace/src/github.com/golang/snappy/snappy.go
generated
vendored
Normal file → Executable file
|
@ -5,8 +5,8 @@
|
||||||
// Package snappy implements the snappy block-based compression format.
|
// Package snappy implements the snappy block-based compression format.
|
||||||
// It aims for very high speeds and reasonable compression.
|
// It aims for very high speeds and reasonable compression.
|
||||||
//
|
//
|
||||||
// The C++ snappy implementation is at http://code.google.com/p/snappy/
|
// The C++ snappy implementation is at https://github.com/google/snappy
|
||||||
package snappy
|
package snappy // import "github.com/golang/snappy"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"hash/crc32"
|
"hash/crc32"
|
||||||
|
@ -46,7 +46,7 @@ const (
|
||||||
chunkHeaderSize = 4
|
chunkHeaderSize = 4
|
||||||
magicChunk = "\xff\x06\x00\x00" + magicBody
|
magicChunk = "\xff\x06\x00\x00" + magicBody
|
||||||
magicBody = "sNaPpY"
|
magicBody = "sNaPpY"
|
||||||
// https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt says
|
// https://github.com/google/snappy/blob/master/framing_format.txt says
|
||||||
// that "the uncompressed data in a chunk must be no longer than 65536 bytes".
|
// that "the uncompressed data in a chunk must be no longer than 65536 bytes".
|
||||||
maxUncompressedChunkLen = 65536
|
maxUncompressedChunkLen = 65536
|
||||||
)
|
)
|
||||||
|
@ -61,7 +61,7 @@ const (
|
||||||
var crcTable = crc32.MakeTable(crc32.Castagnoli)
|
var crcTable = crc32.MakeTable(crc32.Castagnoli)
|
||||||
|
|
||||||
// crc implements the checksum specified in section 3 of
|
// crc implements the checksum specified in section 3 of
|
||||||
// https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
|
// https://github.com/google/snappy/blob/master/framing_format.txt
|
||||||
func crc(b []byte) uint32 {
|
func crc(b []byte) uint32 {
|
||||||
c := crc32.Update(0, crcTable, b)
|
c := crc32.Update(0, crcTable, b)
|
||||||
return uint32(c>>15|c<<17) + 0xa282ead8
|
return uint32(c>>15|c<<17) + 0xa282ead8
|
39
Godeps/_workspace/src/github.com/golang/snappy/snappy/snappy_test.go → Godeps/_workspace/src/github.com/golang/snappy/snappy_test.go
generated
vendored
Normal file → Executable file
39
Godeps/_workspace/src/github.com/golang/snappy/snappy/snappy_test.go → Godeps/_workspace/src/github.com/golang/snappy/snappy_test.go
generated
vendored
Normal file → Executable file
|
@ -24,11 +24,7 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func roundtrip(b, ebuf, dbuf []byte) error {
|
func roundtrip(b, ebuf, dbuf []byte) error {
|
||||||
e, err := Encode(ebuf, b)
|
d, err := Decode(dbuf, Encode(ebuf, b))
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("encoding error: %v", err)
|
|
||||||
}
|
|
||||||
d, err := Decode(dbuf, e)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("decoding error: %v", err)
|
return fmt.Errorf("decoding error: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -82,6 +78,26 @@ func TestSmallRegular(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInvalidVarint(t *testing.T) {
|
||||||
|
data := []byte("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00")
|
||||||
|
if _, err := DecodedLen(data); err != ErrCorrupt {
|
||||||
|
t.Errorf("DecodedLen: got %v, want ErrCorrupt", err)
|
||||||
|
}
|
||||||
|
if _, err := Decode(nil, data); err != ErrCorrupt {
|
||||||
|
t.Errorf("Decode: got %v, want ErrCorrupt", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// The encoded varint overflows 32 bits
|
||||||
|
data = []byte("\xff\xff\xff\xff\xff\x00")
|
||||||
|
|
||||||
|
if _, err := DecodedLen(data); err != ErrCorrupt {
|
||||||
|
t.Errorf("DecodedLen: got %v, want ErrCorrupt", err)
|
||||||
|
}
|
||||||
|
if _, err := Decode(nil, data); err != ErrCorrupt {
|
||||||
|
t.Errorf("Decode: got %v, want ErrCorrupt", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func cmp(a, b []byte) error {
|
func cmp(a, b []byte) error {
|
||||||
if len(a) != len(b) {
|
if len(a) != len(b) {
|
||||||
return fmt.Errorf("got %d bytes, want %d", len(a), len(b))
|
return fmt.Errorf("got %d bytes, want %d", len(a), len(b))
|
||||||
|
@ -197,10 +213,7 @@ func TestWriterReset(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func benchDecode(b *testing.B, src []byte) {
|
func benchDecode(b *testing.B, src []byte) {
|
||||||
encoded, err := Encode(nil, src)
|
encoded := Encode(nil, src)
|
||||||
if err != nil {
|
|
||||||
b.Fatal(err)
|
|
||||||
}
|
|
||||||
// Bandwidth is in amount of uncompressed data.
|
// Bandwidth is in amount of uncompressed data.
|
||||||
b.SetBytes(int64(len(src)))
|
b.SetBytes(int64(len(src)))
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
|
@ -222,7 +235,7 @@ func benchEncode(b *testing.B, src []byte) {
|
||||||
func readFile(b testing.TB, filename string) []byte {
|
func readFile(b testing.TB, filename string) []byte {
|
||||||
src, err := ioutil.ReadFile(filename)
|
src, err := ioutil.ReadFile(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatalf("failed reading %s: %s", filename, err)
|
b.Skipf("skipping benchmark: %v", err)
|
||||||
}
|
}
|
||||||
if len(src) == 0 {
|
if len(src) == 0 {
|
||||||
b.Fatalf("%s has zero length", filename)
|
b.Fatalf("%s has zero length", filename)
|
||||||
|
@ -284,14 +297,14 @@ var testFiles = []struct {
|
||||||
// The test data files are present at this canonical URL.
|
// The test data files are present at this canonical URL.
|
||||||
const baseURL = "https://raw.githubusercontent.com/google/snappy/master/testdata/"
|
const baseURL = "https://raw.githubusercontent.com/google/snappy/master/testdata/"
|
||||||
|
|
||||||
func downloadTestdata(basename string) (errRet error) {
|
func downloadTestdata(b *testing.B, basename string) (errRet error) {
|
||||||
filename := filepath.Join(*testdata, basename)
|
filename := filepath.Join(*testdata, basename)
|
||||||
if stat, err := os.Stat(filename); err == nil && stat.Size() != 0 {
|
if stat, err := os.Stat(filename); err == nil && stat.Size() != 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if !*download {
|
if !*download {
|
||||||
return fmt.Errorf("test data not found; skipping benchmark without the -download flag")
|
b.Skipf("test data not found; skipping benchmark without the -download flag")
|
||||||
}
|
}
|
||||||
// Download the official snappy C++ implementation reference test data
|
// Download the official snappy C++ implementation reference test data
|
||||||
// files for benchmarking.
|
// files for benchmarking.
|
||||||
|
@ -326,7 +339,7 @@ func downloadTestdata(basename string) (errRet error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func benchFile(b *testing.B, n int, decode bool) {
|
func benchFile(b *testing.B, n int, decode bool) {
|
||||||
if err := downloadTestdata(testFiles[n].filename); err != nil {
|
if err := downloadTestdata(b, testFiles[n].filename); err != nil {
|
||||||
b.Fatalf("failed to download testdata: %s", err)
|
b.Fatalf("failed to download testdata: %s", err)
|
||||||
}
|
}
|
||||||
data := readFile(b, filepath.Join(*testdata, testFiles[n].filename))
|
data := readFile(b, filepath.Join(*testdata, testFiles[n].filename))
|
Loading…
Reference in a new issue