Skip to content

Commit

Permalink
test: added check received error test
Browse files Browse the repository at this point in the history
Signed-off-by: Harshit Gangal <harshit@planetscale.com>
  • Loading branch information
harshit-gangal committed Sep 19, 2024
1 parent c2eb9c8 commit cfde812
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions go/vt/vttablet/tabletserver/tx_engine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ import (
"testing"
"time"

"vitess.io/vitess/go/mysql/sqlerror"
vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc"
"vitess.io/vitess/go/vt/vtenv"
"vitess.io/vitess/go/vt/vterrors"
"vitess.io/vitess/go/vt/vttablet/tabletserver/tx"

"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -603,3 +606,58 @@ func TestTxEngineFailReserve(t *testing.T) {
require.Error(t, err)
assert.Zero(t, connID)
}

func TestCheckReceivedError(t *testing.T) {
db := setUpQueryExecutorTest(t)
defer db.Close()
db.AddQueryPattern(".*", &sqltypes.Result{})
cfg := tabletenv.NewDefaultConfig()
cfg.DB = newDBConfigs(db)
env := tabletenv.NewEnv(vtenv.NewTestEnv(), cfg, "TabletServerTest")
env.Config().TwoPCEnable = true
env.Config().TwoPCAbandonAge = 5
te := NewTxEngine(env, nil)
te.AcceptReadWrite()

tcases := []struct {
receivedErr error
nonRetryable bool
}{{
receivedErr: vterrors.New(vtrpcpb.Code_DEADLINE_EXCEEDED, "deadline exceeded"),
nonRetryable: false,
}, {
receivedErr: vterrors.New(vtrpcpb.Code_INVALID_ARGUMENT, "invalid argument"),
nonRetryable: true,
}, {
receivedErr: sqlerror.NewSQLError(sqlerror.ERLockDeadlock, sqlerror.SSLockDeadlock, "Deadlock found when trying to get lock; try restarting transaction"),
nonRetryable: true,
}, {
receivedErr: context.DeadlineExceeded,
nonRetryable: false,
}, {
receivedErr: context.Canceled,
nonRetryable: false,
}, {
receivedErr: sqlerror.NewSQLError(sqlerror.CRServerLost, sqlerror.SSUnknownSQLState, "Lost connection to MySQL server during query"),
nonRetryable: false,
}, {
receivedErr: sqlerror.NewSQLError(sqlerror.CRMalformedPacket, sqlerror.SSUnknownSQLState, "Malformed packet"),
nonRetryable: true,
}, {
receivedErr: sqlerror.NewSQLError(sqlerror.CRServerGone, sqlerror.SSUnknownSQLState, "Server has gone away"),
nonRetryable: false,
}, {
receivedErr: vterrors.New(vtrpcpb.Code_ABORTED, "Row count exceeded"),
nonRetryable: true,
}, {
receivedErr: errors.New("(errno 2013) (sqlstate HY000) lost connection"),
nonRetryable: false,
}}

for _, tc := range tcases {
t.Run(tc.receivedErr.Error(), func(t *testing.T) {
nonRetryable := te.checkErrorAndMarkFailed(context.Background(), "aa", tc.receivedErr)
require.Equal(t, tc.nonRetryable, nonRetryable)
})
}
}

0 comments on commit cfde812

Please sign in to comment.