feat: support breaker with sql statements (#3936)

This commit is contained in:
Kevin Wan
2024-02-25 11:24:44 +08:00
committed by GitHub
parent 914bcdcf2b
commit 0dfaf135dd
8 changed files with 177 additions and 114 deletions

View File

@@ -7,7 +7,10 @@ import (
"testing"
"time"
"github.com/DATA-DOG/go-sqlmock"
"github.com/stretchr/testify/assert"
"github.com/zeromicro/go-zero/core/breaker"
"github.com/zeromicro/go-zero/core/stores/dbtest"
)
var errMockedPlaceholder = errors.New("placeholder")
@@ -219,6 +222,28 @@ func TestNilGuard(t *testing.T) {
assert.Equal(t, nilGuard{}, guard)
}
func TestStmtScanFailed(t *testing.T) {
dbtest.RunTest(t, func(db *sql.DB, mock sqlmock.Sqlmock) {
mock.ExpectPrepare("any")
conn := NewSqlConnFromDB(db)
stmt, err := conn.Prepare("any")
assert.NoError(t, err)
var val struct {
Foo int
Bar string
}
for i := 0; i < 1000; i++ {
row := sqlmock.NewRows([]string{"foo"}).AddRow("bar")
mock.ExpectQuery("any").WillReturnRows(row)
err := stmt.QueryRow(&val)
assert.Error(t, err)
assert.NotErrorIs(t, err, breaker.ErrServiceUnavailable)
}
})
}
type mockedSessionConn struct {
lastInsertId int64
rowsAffected int64