Skip to content

Commit bc557df

Browse files
anrsanrs
and
anrs
authored
improves ut coverage (#318)
Co-authored-by: anrs <anders.hu@shopee.com>
1 parent dee53e2 commit bc557df

File tree

3 files changed

+522
-1
lines changed

3 files changed

+522
-1
lines changed

store/etcdv3/meta/etcd_test.go

+51-1
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,63 @@ package meta
22

33
import (
44
"context"
5+
"fmt"
56
"testing"
67

7-
"github.com/projecteru2/core/types"
8+
"github.com/stretchr/testify/mock"
89
"github.com/stretchr/testify/require"
910
"go.etcd.io/etcd/clientv3"
11+
12+
"github.com/projecteru2/core/store/etcdv3/meta/mocks"
13+
"github.com/projecteru2/core/types"
1014
)
1115

16+
func TestGetOneError(t *testing.T) {
17+
e := NewMockedETCD(t)
18+
expErr := fmt.Errorf("exp")
19+
e.cliv3.(*mocks.ETCDClientV3).On("Get", mock.Anything, mock.Anything).Return(nil, expErr).Once()
20+
kv, err := e.GetOne(context.Background(), "foo")
21+
require.Equal(t, expErr, err)
22+
require.Nil(t, kv)
23+
}
24+
25+
func TestGetOneFailedAsRespondMore(t *testing.T) {
26+
e := NewMockedETCD(t)
27+
expResp := &clientv3.GetResponse{Count: 2}
28+
e.cliv3.(*mocks.ETCDClientV3).On("Get", mock.Anything, mock.Anything).Return(expResp, nil).Once()
29+
kv, err := e.GetOne(context.Background(), "foo")
30+
require.Error(t, err)
31+
require.Nil(t, kv)
32+
}
33+
34+
func TestGetMultiWithNoKeys(t *testing.T) {
35+
e := NewEmbeddedETCD(t)
36+
defer e.TerminateEmbededStorage()
37+
kvs, err := e.GetMulti(context.Background(), []string{})
38+
require.NoError(t, err)
39+
require.Equal(t, 0, len(kvs))
40+
}
41+
42+
func TestGetMultiFailedAsBatchGetError(t *testing.T) {
43+
e := NewMockedETCD(t)
44+
expErr := fmt.Errorf("exp")
45+
expTxn := &mocks.Txn{}
46+
expTxn.On("Then", mock.Anything).Return(expTxn).Once()
47+
expTxn.On("Else", mock.Anything).Return(expTxn).Once()
48+
expTxn.On("Commit").Return(nil, expErr).Once()
49+
e.cliv3.(*mocks.ETCDClientV3).On("Txn", mock.Anything).Return(expTxn)
50+
kvs, err := e.GetMulti(context.Background(), []string{"foo"})
51+
require.Equal(t, expErr, err)
52+
require.Nil(t, kvs)
53+
}
54+
55+
func NewMockedETCD(t *testing.T) *ETCD {
56+
e := NewEmbeddedETCD(t)
57+
e.cliv3 = &mocks.ETCDClientV3{}
58+
e.TerminateEmbededStorage()
59+
return e
60+
}
61+
1262
func NewEmbeddedETCD(t *testing.T) *ETCD {
1363
config := types.EtcdConfig{
1464
Machines: []string{"127.0.0.1:2379"},

0 commit comments

Comments
 (0)