aboutsummaryrefslogtreecommitdiffstats
path: root/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table
diff options
context:
space:
mode:
Diffstat (limited to 'Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table')
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/block_test.go139
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go12
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_suite_test.go11
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_test.go122
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go8
5 files changed, 8 insertions, 284 deletions
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/block_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/block_test.go
deleted file mode 100644
index 00e6f9eea..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/block_test.go
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package table
-
-import (
- "encoding/binary"
- "fmt"
-
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
- "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/testutil"
- "github.com/syndtr/goleveldb/leveldb/util"
-)
-
-type blockTesting struct {
- tr *Reader
- b *block
-}
-
-func (t *blockTesting) TestNewIterator(slice *util.Range) iterator.Iterator {
- return t.tr.newBlockIter(t.b, nil, slice, false)
-}
-
-var _ = testutil.Defer(func() {
- Describe("Block", func() {
- Build := func(kv *testutil.KeyValue, restartInterval int) *blockTesting {
- // Building the block.
- bw := &blockWriter{
- restartInterval: restartInterval,
- scratch: make([]byte, 30),
- }
- kv.Iterate(func(i int, key, value []byte) {
- bw.append(key, value)
- })
- bw.finish()
-
- // Opening the block.
- data := bw.buf.Bytes()
- restartsLen := int(binary.LittleEndian.Uint32(data[len(data)-4:]))
- return &blockTesting{
- tr: &Reader{cmp: comparer.DefaultComparer},
- b: &block{
- data: data,
- restartsLen: restartsLen,
- restartsOffset: len(data) - (restartsLen+1)*4,
- },
- }
- }
-
- Describe("read test", func() {
- for restartInterval := 1; restartInterval <= 5; restartInterval++ {
- Describe(fmt.Sprintf("with restart interval of %d", restartInterval), func() {
- kv := &testutil.KeyValue{}
- Text := func() string {
- return fmt.Sprintf("and %d keys", kv.Len())
- }
-
- Test := func() {
- // Make block.
- br := Build(kv, restartInterval)
- // Do testing.
- testutil.KeyValueTesting(nil, kv.Clone(), br, nil, nil)
- }
-
- Describe(Text(), Test)
-
- kv.PutString("", "empty")
- Describe(Text(), Test)
-
- kv.PutString("a1", "foo")
- Describe(Text(), Test)
-
- kv.PutString("a2", "v")
- Describe(Text(), Test)
-
- kv.PutString("a3qqwrkks", "hello")
- Describe(Text(), Test)
-
- kv.PutString("a4", "bar")
- Describe(Text(), Test)
-
- kv.PutString("a5111111", "v5")
- kv.PutString("a6", "")
- kv.PutString("a7", "v7")
- kv.PutString("a8", "vvvvvvvvvvvvvvvvvvvvvv8")
- kv.PutString("b", "v9")
- kv.PutString("c9", "v9")
- kv.PutString("c91", "v9")
- kv.PutString("d0", "v9")
- Describe(Text(), Test)
- })
- }
- })
-
- Describe("out-of-bound slice test", func() {
- kv := &testutil.KeyValue{}
- kv.PutString("k1", "v1")
- kv.PutString("k2", "v2")
- kv.PutString("k3abcdefgg", "v3")
- kv.PutString("k4", "v4")
- kv.PutString("k5", "v5")
- for restartInterval := 1; restartInterval <= 5; restartInterval++ {
- Describe(fmt.Sprintf("with restart interval of %d", restartInterval), func() {
- // Make block.
- bt := Build(kv, restartInterval)
-
- Test := func(r *util.Range) func(done Done) {
- return func(done Done) {
- iter := bt.TestNewIterator(r)
- Expect(iter.Error()).ShouldNot(HaveOccurred())
-
- t := testutil.IteratorTesting{
- KeyValue: kv.Clone(),
- Iter: iter,
- }
-
- testutil.DoIteratorTesting(&t)
- iter.Release()
- done <- true
- }
- }
-
- It("Should do iterations and seeks correctly #0",
- Test(&util.Range{Start: []byte("k0"), Limit: []byte("k6")}), 2.0)
-
- It("Should do iterations and seeks correctly #1",
- Test(&util.Range{Start: []byte(""), Limit: []byte("zzzzzzz")}), 2.0)
- })
- }
- })
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go
index 6f38e84b3..caeac96b5 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go
@@ -14,7 +14,7 @@ import (
"strings"
"sync"
- "github.com/syndtr/gosnappy/snappy"
+ "github.com/golang/snappy"
"github.com/syndtr/goleveldb/leveldb/cache"
"github.com/syndtr/goleveldb/leveldb/comparer"
@@ -507,7 +507,7 @@ func (i *indexIter) Get() iterator.Iterator {
// Reader is a table reader.
type Reader struct {
mu sync.RWMutex
- fi *storage.FileInfo
+ fd storage.FileDesc
reader io.ReaderAt
cache *cache.CacheGetter
err error
@@ -539,7 +539,7 @@ func (r *Reader) blockKind(bh blockHandle) string {
}
func (r *Reader) newErrCorrupted(pos, size int64, kind, reason string) error {
- return &errors.ErrCorrupted{File: r.fi, Err: &ErrCorrupted{Pos: pos, Size: size, Kind: kind, Reason: reason}}
+ return &errors.ErrCorrupted{Fd: r.fd, Err: &ErrCorrupted{Pos: pos, Size: size, Kind: kind, Reason: reason}}
}
func (r *Reader) newErrCorruptedBH(bh blockHandle, reason string) error {
@@ -551,7 +551,7 @@ func (r *Reader) fixErrCorruptedBH(bh blockHandle, err error) error {
cerr.Pos = int64(bh.offset)
cerr.Size = int64(bh.length)
cerr.Kind = r.blockKind(bh)
- return &errors.ErrCorrupted{File: r.fi, Err: cerr}
+ return &errors.ErrCorrupted{Fd: r.fd, Err: cerr}
}
return err
}
@@ -988,13 +988,13 @@ func (r *Reader) Release() {
// The fi, cache and bpool is optional and can be nil.
//
// The returned table reader instance is goroutine-safe.
-func NewReader(f io.ReaderAt, size int64, fi *storage.FileInfo, cache *cache.CacheGetter, bpool *util.BufferPool, o *opt.Options) (*Reader, error) {
+func NewReader(f io.ReaderAt, size int64, fd storage.FileDesc, cache *cache.CacheGetter, bpool *util.BufferPool, o *opt.Options) (*Reader, error) {
if f == nil {
return nil, errors.New("leveldb/table: nil file")
}
r := &Reader{
- fi: fi,
+ fd: fd,
reader: f,
cache: cache,
bpool: bpool,
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_suite_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_suite_test.go
deleted file mode 100644
index 6465da6e3..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_suite_test.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package table
-
-import (
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-func TestTable(t *testing.T) {
- testutil.RunSuite(t, "Table Suite")
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_test.go
deleted file mode 100644
index 4b59b31f5..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_test.go
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package table
-
-import (
- "bytes"
-
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-
- "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/opt"
- "github.com/syndtr/goleveldb/leveldb/testutil"
- "github.com/syndtr/goleveldb/leveldb/util"
-)
-
-type tableWrapper struct {
- *Reader
-}
-
-func (t tableWrapper) TestFind(key []byte) (rkey, rvalue []byte, err error) {
- return t.Reader.Find(key, false, nil)
-}
-
-func (t tableWrapper) TestGet(key []byte) (value []byte, err error) {
- return t.Reader.Get(key, nil)
-}
-
-func (t tableWrapper) TestNewIterator(slice *util.Range) iterator.Iterator {
- return t.Reader.NewIterator(slice, nil)
-}
-
-var _ = testutil.Defer(func() {
- Describe("Table", func() {
- Describe("approximate offset test", func() {
- var (
- buf = &bytes.Buffer{}
- o = &opt.Options{
- BlockSize: 1024,
- Compression: opt.NoCompression,
- }
- )
-
- // Building the table.
- tw := NewWriter(buf, o)
- tw.Append([]byte("k01"), []byte("hello"))
- tw.Append([]byte("k02"), []byte("hello2"))
- tw.Append([]byte("k03"), bytes.Repeat([]byte{'x'}, 10000))
- tw.Append([]byte("k04"), bytes.Repeat([]byte{'x'}, 200000))
- tw.Append([]byte("k05"), bytes.Repeat([]byte{'x'}, 300000))
- tw.Append([]byte("k06"), []byte("hello3"))
- tw.Append([]byte("k07"), bytes.Repeat([]byte{'x'}, 100000))
- err := tw.Close()
-
- It("Should be able to approximate offset of a key correctly", func() {
- Expect(err).ShouldNot(HaveOccurred())
-
- tr, err := NewReader(bytes.NewReader(buf.Bytes()), int64(buf.Len()), nil, nil, nil, o)
- Expect(err).ShouldNot(HaveOccurred())
- CheckOffset := func(key string, expect, threshold int) {
- offset, err := tr.OffsetOf([]byte(key))
- Expect(err).ShouldNot(HaveOccurred())
- Expect(offset).Should(BeNumerically("~", expect, threshold), "Offset of key %q", key)
- }
-
- CheckOffset("k0", 0, 0)
- CheckOffset("k01a", 0, 0)
- CheckOffset("k02", 0, 0)
- CheckOffset("k03", 0, 0)
- CheckOffset("k04", 10000, 1000)
- CheckOffset("k04a", 210000, 1000)
- CheckOffset("k05", 210000, 1000)
- CheckOffset("k06", 510000, 1000)
- CheckOffset("k07", 510000, 1000)
- CheckOffset("xyz", 610000, 2000)
- })
- })
-
- Describe("read test", func() {
- Build := func(kv testutil.KeyValue) testutil.DB {
- o := &opt.Options{
- BlockSize: 512,
- BlockRestartInterval: 3,
- }
- buf := &bytes.Buffer{}
-
- // Building the table.
- tw := NewWriter(buf, o)
- kv.Iterate(func(i int, key, value []byte) {
- tw.Append(key, value)
- })
- tw.Close()
-
- // Opening the table.
- tr, _ := NewReader(bytes.NewReader(buf.Bytes()), int64(buf.Len()), nil, nil, nil, o)
- return tableWrapper{tr}
- }
- Test := func(kv *testutil.KeyValue, body func(r *Reader)) func() {
- return func() {
- db := Build(*kv)
- if body != nil {
- body(db.(tableWrapper).Reader)
- }
- testutil.KeyValueTesting(nil, *kv, db, nil, nil)
- }
- }
-
- testutil.AllKeyValueTesting(nil, Build, nil, nil)
- Describe("with one key per block", Test(testutil.KeyValue_Generate(nil, 9, 1, 10, 512, 512), func(r *Reader) {
- It("should have correct blocks number", func() {
- indexBlock, err := r.readBlock(r.indexBH, true)
- Expect(err).To(BeNil())
- Expect(indexBlock.restartsLen).Should(Equal(9))
- })
- }))
- })
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go
index 274c95fad..274dee6da 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go
@@ -12,7 +12,7 @@ import (
"fmt"
"io"
- "github.com/syndtr/gosnappy/snappy"
+ "github.com/golang/snappy"
"github.com/syndtr/goleveldb/leveldb/comparer"
"github.com/syndtr/goleveldb/leveldb/filter"
@@ -167,11 +167,7 @@ func (w *Writer) writeBlock(buf *util.Buffer, compression opt.Compression) (bh b
if n := snappy.MaxEncodedLen(buf.Len()) + blockTrailerLen; len(w.compressionScratch) < n {
w.compressionScratch = make([]byte, n)
}
- var compressed []byte
- compressed, err = snappy.Encode(w.compressionScratch, buf.Bytes())
- if err != nil {
- return
- }
+ compressed := snappy.Encode(w.compressionScratch, buf.Bytes())
n := len(compressed)
b = compressed[:n+blockTrailerLen]
b[n] = blockTypeSnappyCompression