github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/pingcap/go-hbase/get_test.go (about) 1 package hbase 2 3 import ( 4 "bytes" 5 "runtime" 6 "strconv" 7 "sync" 8 9 . "github.com/insionng/yougam/libraries/pingcap/check" 10 "github.com/insionng/yougam/libraries/pingcap/go-hbase/proto" 11 ) 12 13 type HBaseGetTestSuit struct { 14 cli HBaseClient 15 tableName string 16 } 17 18 var _ = Suite(&HBaseGetTestSuit{}) 19 20 func (s *HBaseGetTestSuit) SetUpTest(c *C) { 21 var err error 22 s.cli, err = NewClient(getTestZkHosts(), "/hbase") 23 c.Assert(err, IsNil) 24 25 s.tableName = "t1" 26 tblDesc := NewTableDesciptor(s.tableName) 27 cf := NewColumnFamilyDescriptor("cf") 28 tblDesc.AddColumnDesc(cf) 29 err = s.cli.CreateTable(tblDesc, nil) 30 c.Assert(err, IsNil) 31 } 32 33 func (s *HBaseGetTestSuit) TearDownTest(c *C) { 34 err := s.cli.DisableTable(s.tableName) 35 c.Assert(err, IsNil) 36 37 err = s.cli.DropTable(s.tableName) 38 c.Assert(err, IsNil) 39 } 40 41 func (s *HBaseGetTestSuit) TestGet(c *C) { 42 g := NewGet([]byte("row")) 43 g.AddFamily([]byte("cf")) 44 g.AddColumn([]byte("cf"), []byte("c")) 45 g.AddColumn([]byte("cf"), []byte("v")) 46 g.AddFamily([]byte("cf1")) 47 48 msg := g.ToProto() 49 p, _ := msg.(*proto.Get) 50 51 c.Assert(p.Column, HasLen, 2) 52 53 for _, col := range p.Column { 54 if bytes.Compare([]byte("cf"), col.Family) == 0 { 55 c.Assert(col.Qualifier, HasLen, 2) 56 } else { 57 c.Assert(col.Qualifier, HasLen, 0) 58 } 59 } 60 } 61 62 func (s *HBaseGetTestSuit) TestGetWithClient(c *C) { 63 // get item not exists 64 g := NewGet([]byte("nosuchrow")) 65 r, err := s.cli.Get("nosuchtable", g) 66 c.Assert(err, NotNil) 67 c.Assert(r, IsNil) 68 69 r, err = s.cli.Get("t1", g) 70 c.Assert(r, IsNil) 71 c.Assert(err, IsNil) 72 } 73 74 func (s *HBaseGetTestSuit) TestConcurrentGet(c *C) { 75 runtime.GOMAXPROCS(runtime.NumCPU()) 76 wg := sync.WaitGroup{} 77 for i := 0; i < 100; i++ { 78 wg.Add(1) 79 go func(id int) { 80 defer wg.Done() 81 p := NewPut([]byte("test")) 82 p.AddValue([]byte("cf"), []byte("q"), []byte(strconv.Itoa(i))) 83 b, err := s.cli.Put(s.tableName, p) 84 c.Assert(b, IsTrue) 85 c.Assert(err, IsNil) 86 }(i) 87 } 88 wg.Wait() 89 90 g := NewGet([]byte("test")) 91 _, err := s.cli.Get(s.tableName, g) 92 c.Assert(err, IsNil) 93 }