github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/pingcap/tidb/store/localstore/goleveldb/goleveldb_test.go (about) 1 // Copyright 2015 PingCAP, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package goleveldb 15 16 import ( 17 "testing" 18 19 . "github.com/insionng/yougam/libraries/pingcap/check" 20 "github.com/insionng/yougam/libraries/pingcap/tidb/store/localstore/engine" 21 "github.com/insionng/yougam/libraries/pingcap/tidb/util/testleak" 22 ) 23 24 func TestT(t *testing.T) { 25 TestingT(t) 26 } 27 28 var _ = Suite(&testSuite{}) 29 30 type testSuite struct { 31 db engine.DB 32 } 33 34 func (s *testSuite) SetUpTest(c *C) { 35 var ( 36 d MemoryDriver 37 err error 38 ) 39 s.db, err = d.Open("memory") 40 c.Assert(err, IsNil) 41 } 42 43 func (s *testSuite) TearDownTest(c *C) { 44 s.db.Close() 45 } 46 47 func (s *testSuite) TestGetSet(c *C) { 48 defer testleak.AfterTest(c)() 49 db := s.db 50 51 b := db.NewBatch() 52 b.Put([]byte("a"), []byte("1")) 53 b.Put([]byte("b"), []byte("2")) 54 b.Delete([]byte("c")) 55 56 err := db.Commit(b) 57 c.Assert(err, IsNil) 58 59 v, err := db.Get([]byte("a")) 60 c.Assert(err, IsNil) 61 c.Assert(v, DeepEquals, []byte("1")) 62 63 v, err = db.Get([]byte("c")) 64 c.Assert(err, NotNil) 65 c.Assert(v, IsNil) 66 67 b = db.NewBatch() 68 b.Put([]byte("a"), []byte("2")) 69 err = db.Commit(b) 70 c.Assert(err, IsNil) 71 72 v, err = db.Get([]byte("a")) 73 c.Assert(err, IsNil) 74 c.Assert(v, DeepEquals, []byte("2")) 75 } 76 77 func (s *testSuite) TestSeek(c *C) { 78 defer testleak.AfterTest(c)() 79 b := s.db.NewBatch() 80 b.Put([]byte("a"), []byte("1")) 81 b.Put([]byte("b"), []byte("2")) 82 err := s.db.Commit(b) 83 c.Assert(err, IsNil) 84 85 k, v, err := s.db.Seek(nil) 86 c.Assert(err, IsNil) 87 c.Assert(k, BytesEquals, []byte("a")) 88 c.Assert(v, BytesEquals, []byte("1")) 89 90 k, v, err = s.db.Seek([]byte("a")) 91 c.Assert(err, IsNil) 92 c.Assert(k, BytesEquals, []byte("a")) 93 c.Assert(v, BytesEquals, []byte("1")) 94 95 k, v, err = s.db.Seek([]byte("b")) 96 c.Assert(err, IsNil) 97 c.Assert(k, BytesEquals, []byte("b")) 98 c.Assert(v, BytesEquals, []byte("2")) 99 100 k, v, err = s.db.Seek([]byte("a1")) 101 c.Assert(err, IsNil) 102 c.Assert(k, BytesEquals, []byte("b")) 103 c.Assert(v, BytesEquals, []byte("2")) 104 105 k, v, err = s.db.Seek([]byte("c1")) 106 c.Assert(err, NotNil) 107 c.Assert(k, IsNil) 108 c.Assert(v, IsNil) 109 } 110 111 func (s *testSuite) TestPrevSeek(c *C) { 112 defer testleak.AfterTest(c)() 113 b := s.db.NewBatch() 114 b.Put([]byte("b"), []byte("1")) 115 b.Put([]byte("c"), []byte("2")) 116 err := s.db.Commit(b) 117 c.Assert(err, IsNil) 118 119 k, v, err := s.db.SeekReverse(nil) 120 c.Assert(err, IsNil) 121 c.Assert(k, BytesEquals, []byte("c")) 122 c.Assert(v, BytesEquals, []byte("2")) 123 124 k, v, err = s.db.SeekReverse([]byte("d")) 125 c.Assert(err, IsNil) 126 c.Assert(k, BytesEquals, []byte("c")) 127 c.Assert(v, BytesEquals, []byte("2")) 128 129 k, v, err = s.db.SeekReverse([]byte("c")) 130 c.Assert(err, IsNil) 131 c.Assert(k, BytesEquals, []byte("b")) 132 c.Assert(v, BytesEquals, []byte("1")) 133 134 k, v, err = s.db.SeekReverse([]byte("bb")) 135 c.Assert(err, IsNil) 136 c.Assert(k, BytesEquals, []byte("b")) 137 c.Assert(v, BytesEquals, []byte("1")) 138 139 k, v, err = s.db.SeekReverse([]byte("b")) 140 c.Assert(err, NotNil) 141 c.Assert(string(k), Equals, "") 142 c.Assert(string(v), Equals, "") 143 144 k, v, err = s.db.SeekReverse([]byte("a")) 145 c.Assert(err, NotNil) 146 c.Assert(k, IsNil) 147 c.Assert(v, IsNil) 148 }