@@ -2,13 +2,63 @@ package meta
2
2
3
3
import (
4
4
"context"
5
+ "fmt"
5
6
"testing"
6
7
7
- "github.com/projecteru2/core/types "
8
+ "github.com/stretchr/testify/mock "
8
9
"github.com/stretchr/testify/require"
9
10
"go.etcd.io/etcd/clientv3"
11
+
12
+ "github.com/projecteru2/core/store/etcdv3/meta/mocks"
13
+ "github.com/projecteru2/core/types"
10
14
)
11
15
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
+
12
62
func NewEmbeddedETCD (t * testing.T ) * ETCD {
13
63
config := types.EtcdConfig {
14
64
Machines : []string {"127.0.0.1:2379" },
0 commit comments