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  }