|
@@ -79,9 +79,29 @@ func TestCachedConn_QueryRowIndex_NoCache(t *testing.T) {
|
|
}
|
|
}
|
|
|
|
|
|
r := redis.NewRedis(s.Addr(), redis.NodeType)
|
|
r := redis.NewRedis(s.Addr(), redis.NodeType)
|
|
- c := NewNodeConn(dummySqlConn{}, r, cache.WithExpiry(time.Second*10))
|
|
|
|
|
|
+ c := NewConn(dummySqlConn{}, cache.CacheConf{
|
|
|
|
+ {
|
|
|
|
+ RedisConf: redis.RedisConf{
|
|
|
|
+ Host: s.Addr(),
|
|
|
|
+ Type: redis.NodeType,
|
|
|
|
+ },
|
|
|
|
+ Weight: 100,
|
|
|
|
+ },
|
|
|
|
+ }, cache.WithExpiry(time.Second*10))
|
|
|
|
|
|
var str string
|
|
var str string
|
|
|
|
+ err = c.QueryRowIndex(&str, "index", func(s interface{}) string {
|
|
|
|
+ return fmt.Sprintf("%s/1234", s)
|
|
|
|
+ }, func(conn sqlx.SqlConn, v interface{}) (interface{}, error) {
|
|
|
|
+ *v.(*string) = "zero"
|
|
|
|
+ return "primary", errors.New("foo")
|
|
|
|
+ }, func(conn sqlx.SqlConn, v, pri interface{}) error {
|
|
|
|
+ assert.Equal(t, "primary", pri)
|
|
|
|
+ *v.(*string) = "xin"
|
|
|
|
+ return nil
|
|
|
|
+ })
|
|
|
|
+ assert.NotNil(t, err)
|
|
|
|
+
|
|
err = c.QueryRowIndex(&str, "index", func(s interface{}) string {
|
|
err = c.QueryRowIndex(&str, "index", func(s interface{}) string {
|
|
return fmt.Sprintf("%s/1234", s)
|
|
return fmt.Sprintf("%s/1234", s)
|
|
}, func(conn sqlx.SqlConn, v interface{}) (interface{}, error) {
|
|
}, func(conn sqlx.SqlConn, v interface{}) (interface{}, error) {
|
|
@@ -500,6 +520,10 @@ func TestCachedConnExecDropCache(t *testing.T) {
|
|
assert.True(t, conn.execValue)
|
|
assert.True(t, conn.execValue)
|
|
_, err = s.Get(key)
|
|
_, err = s.Get(key)
|
|
assert.Exactly(t, miniredis.ErrKeyNotFound, err)
|
|
assert.Exactly(t, miniredis.ErrKeyNotFound, err)
|
|
|
|
+ _, err = c.Exec(func(conn sqlx.SqlConn) (result sql.Result, e error) {
|
|
|
|
+ return nil, errors.New("foo")
|
|
|
|
+ }, key)
|
|
|
|
+ assert.NotNil(t, err)
|
|
}
|
|
}
|
|
|
|
|
|
func TestCachedConnExecDropCacheFailed(t *testing.T) {
|
|
func TestCachedConnExecDropCacheFailed(t *testing.T) {
|