Skip to content

Commit 0bd6448

Browse files
chensheng0陆丹峰
authored and
陆丹峰
committed
add kv in context (#28)
1 parent 3eec6ef commit 0bd6448

File tree

13 files changed

+2129
-0
lines changed

13 files changed

+2129
-0
lines changed

api/api_test.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package api
2+
3+
import (
4+
"context"
5+
"github.com/baetyl/baetyl-go/utils"
6+
"testing"
7+
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func Test_APIServer(t *testing.T) {
12+
port := "51600"
13+
svr := FakeServer(t, port, nil)
14+
defer svr.GracefulStop()
15+
16+
cliConf := ClientConfig{
17+
Address: "localhost:" + port,
18+
}
19+
utils.SetDefaults(&cliConf)
20+
cli, err := NewClient(cliConf)
21+
assert.NoError(t, err)
22+
assert.NotEmpty(t, cli)
23+
defer cli.Close()
24+
25+
ctx := context.Background()
26+
_, err = cli.KV.Get(ctx, &KV{Key: []byte("aa")})
27+
assert.NoError(t, err)
28+
29+
_, err = cli.KV.Set(ctx, &KV{Key: []byte("aa")})
30+
assert.NoError(t, err)
31+
32+
_, err = cli.KV.Set(ctx, &KV{Key: []byte("aa"), Value: []byte("")})
33+
assert.NoError(t, err)
34+
35+
_, err = cli.KV.Set(ctx, &KV{Key: []byte("aa"), Value: []byte("aadata")})
36+
assert.NoError(t, err)
37+
38+
resp, err := cli.KV.Get(ctx, &KV{Key: []byte("aa")})
39+
assert.NoError(t, err)
40+
assert.Equal(t, resp.Key, []byte("aa"))
41+
assert.Equal(t, resp.Value, []byte("aadata"))
42+
43+
_, err = cli.KV.Del(ctx, &KV{Key: []byte("aa")})
44+
assert.NoError(t, err)
45+
46+
_, err = cli.KV.Del(ctx, &KV{Key: []byte("")})
47+
assert.NoError(t, err)
48+
49+
resp, err = cli.KV.Get(ctx, &KV{Key: []byte("aa")})
50+
assert.NoError(t, err)
51+
assert.Equal(t, resp.Key, []byte("aa"))
52+
assert.Empty(t, resp.Value)
53+
54+
_, err = cli.KV.Set(ctx, &KV{Key: []byte("/a"), Value: []byte("/root/a")})
55+
assert.NoError(t, err)
56+
57+
_, err = cli.KV.Set(ctx, &KV{Key: []byte("/b"), Value: []byte("/root/b")})
58+
assert.NoError(t, err)
59+
60+
_, err = cli.KV.Set(ctx, &KV{Key: []byte("/c"), Value: []byte("/root/c")})
61+
assert.NoError(t, err)
62+
63+
respa, err := cli.KV.List(ctx, &KV{Key: []byte("/")})
64+
assert.NoError(t, err)
65+
assert.Len(t, respa.Kvs, 3)
66+
}

api/client.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package api
2+
3+
import (
4+
"github.com/baetyl/baetyl-go/link"
5+
)
6+
7+
// NewClient creates a new client
8+
func NewClient(conf ClientConfig) (*Client, error) {
9+
conn, err := link.NewClientConn(link.ClientConfig(conf))
10+
if err != nil {
11+
return nil, err
12+
}
13+
kv := NewKVServiceClient(conn)
14+
return &Client{
15+
conf: conf,
16+
conn: conn,
17+
KV: kv,
18+
}, nil
19+
}
20+
21+
// Close closes the client
22+
func (c *Client) Close() error {
23+
if c.conn != nil {
24+
return c.conn.Close()
25+
}
26+
return nil
27+
}

api/config.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package api
2+
3+
import (
4+
"github.com/baetyl/baetyl-go/link"
5+
"google.golang.org/grpc"
6+
)
7+
8+
type ClientConfig link.ClientConfig
9+
10+
// Client server to handle grpc message
11+
type Client struct {
12+
conf ClientConfig
13+
conn *grpc.ClientConn
14+
KV KVServiceClient
15+
}

0 commit comments

Comments
 (0)