123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- package hbase
- import (
- "context"
- "fmt"
- "io"
- "os"
- "strings"
- "testing"
- "time"
- "github.com/tsuna/gohbase/hrpc"
- xtime "go-common/library/time"
- )
- var addrs []string
- var client *Client
- func TestMain(m *testing.M) {
- addrsStr := os.Getenv("HBASE_TEST_ADDRS")
- if addrsStr == "" {
- println("HBASE_TEST_ADDRS not set skip test !!")
- return
- }
- addrs = strings.Split(addrsStr, ",")
- config := &Config{
- Zookeeper: &ZKConfig{Root: "", Addrs: addrs, Timeout: xtime.Duration(time.Second)},
- }
- client = NewClient(config)
- os.Exit(m.Run())
- }
- func TestPing(t *testing.T) {
- if err := client.Ping(context.Background()); err != nil {
- t.Errorf("ping meet err: %v", err)
- }
- }
- func TestPutGetDelete(t *testing.T) {
- ctx := context.Background()
- values := map[string]map[string][]byte{"name": {"firstname": []byte("hello"), "lastname": []byte("world")}}
- result, err := client.PutStr(ctx, "user", "user1", values)
- if err != nil {
- t.Fatal(err)
- }
- t.Logf("%v", result)
- result, err = client.GetStr(ctx, "user", "user1")
- if err != nil {
- t.Fatal(err)
- }
- if len(result.Cells) != 2 {
- t.Errorf("unexpect result, expect 2 cell, get %d", len(result.Cells))
- }
- _, err = client.Delete(ctx, "user", "user1", values)
- if err != nil {
- t.Fatal(err)
- }
- result, err = client.GetStr(ctx, "user", "user1")
- if err != nil {
- t.Fatal(err)
- }
- if len(result.Cells) > 0 {
- t.Errorf("unexpect result, found cells")
- }
- }
- func TestScan(t *testing.T) {
- N := 10
- ctx := context.Background()
- values := map[string]map[string][]byte{"name": {"firstname": []byte("hello"), "lastname": []byte("world")}}
- for i := 0; i < N; i++ {
- _, err := client.PutStr(ctx, "user", fmt.Sprintf("scan_%d", i), values)
- if err != nil {
- t.Error(err)
- }
- }
- results, err := client.ScanStrAll(ctx, "user")
- if err != nil {
- t.Fatal(err)
- }
- if len(results) != N {
- t.Errorf("unexpect result expect %d result get %d", N, len(results))
- }
- iter, err := client.ScanStr(ctx, "user")
- if err != nil {
- t.Fatal(err)
- }
- defer iter.Close()
- GN := 0
- for {
- _, err := iter.Next()
- if err != nil {
- if err == io.EOF {
- break
- }
- t.Error(err)
- }
- GN++
- }
- if GN != N {
- t.Errorf("unexpect result expect %d result get %d", N, GN)
- }
- for i := 0; i < N; i++ {
- _, err := client.Delete(ctx, "user", fmt.Sprintf("scan_%d", i), nil)
- if err != nil {
- t.Errorf("delete error %s", err)
- }
- }
- }
- func TestScanRange(t *testing.T) {
- N := 10
- ctx := context.Background()
- values := map[string]map[string][]byte{"name": {"firstname": []byte("hello"), "lastname": []byte("world")}}
- for i := 0; i < N; i++ {
- _, err := client.PutStr(ctx, "user", fmt.Sprintf("scan_%d", i), values)
- if err != nil {
- t.Error(err)
- }
- }
- scanner, err := client.ScanRangeStr(ctx, "user", "scan_0", "scan_3")
- if err != nil {
- t.Fatal(err)
- }
- var results []*hrpc.Result
- for {
- result, err := scanner.Next()
- if err != nil {
- if err == io.EOF {
- break
- }
- t.Fatal(err)
- }
- results = append(results, result)
- }
- if len(results) != 3 {
- t.Errorf("unexpect result expect %d result get %d", N, len(results))
- }
- for i := 0; i < N; i++ {
- _, err := client.Delete(ctx, "user", fmt.Sprintf("scan_%d", i), nil)
- if err != nil {
- t.Errorf("delete error %s", err)
- }
- }
- }
- func TestClose(t *testing.T) {
- if err := client.Close(); err != nil {
- t.Logf("Close meet error: %v", err)
- }
- if err := client.Ping(context.Background()); err == nil {
- t.Errorf("ping return nil error after being closed")
- }
- }
|