Skip to content

Commit 072a04e

Browse files
tests
1 parent 92b4056 commit 072a04e

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

cassandra_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"context"
99
"errors"
1010
"fmt"
11+
"github.com/stretchr/testify/require"
1112
"io"
1213
"math"
1314
"math/big"
@@ -1042,6 +1043,55 @@ func matchSliceMap(t *testing.T, sliceMap []map[string]interface{}, testMap map[
10421043
}
10431044
}
10441045

1046+
type MyRetryPolicy struct {
1047+
}
1048+
1049+
func (*MyRetryPolicy) Attempt(q RetryableQuery) bool {
1050+
if q.Attempts() > 5 {
1051+
return false
1052+
}
1053+
return true
1054+
}
1055+
1056+
func (*MyRetryPolicy) GetRetryType(error) RetryType {
1057+
return Retry
1058+
}
1059+
1060+
func Test_RetryPolicyIdempotence(t *testing.T) {
1061+
session := createSession(t)
1062+
defer session.Close()
1063+
1064+
testCases := []struct {
1065+
name string
1066+
idempotency bool
1067+
expectedNumberOfTries int
1068+
}{
1069+
{
1070+
name: "with retry",
1071+
idempotency: true,
1072+
expectedNumberOfTries: 6,
1073+
},
1074+
{
1075+
name: "without retry",
1076+
idempotency: false,
1077+
expectedNumberOfTries: 1,
1078+
},
1079+
}
1080+
1081+
for _, tc := range testCases {
1082+
t.Run(tc.name, func(t *testing.T) {
1083+
q := session.Query("INSERT INTO gocql_test.not_existing_table(event_id, time, args) VALUES (?,?,?)", 4, UUIDFromTime(time.Now()), "test")
1084+
1085+
q.Idempotent(tc.idempotency)
1086+
q.RetryPolicy(&MyRetryPolicy{})
1087+
q.Consistency(All)
1088+
1089+
_ = q.Exec()
1090+
require.Equal(t, tc.expectedNumberOfTries, q.Attempts())
1091+
})
1092+
}
1093+
}
1094+
10451095
func TestSmallInt(t *testing.T) {
10461096
session := createSession(t)
10471097
defer session.Close()

conn_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ func TestQueryMultinodeWithMetrics(t *testing.T) {
411411
// 1 retry per host
412412
rt := &SimpleRetryPolicy{NumRetries: 3}
413413
observer := &testQueryObserver{metrics: make(map[string]*hostMetrics), verbose: false, logger: log}
414-
qry := db.Query("kill").RetryPolicy(rt).Observer(observer)
414+
qry := db.Query("kill").RetryPolicy(rt).Observer(observer).Idempotent(true)
415415
if err := qry.Exec(); err == nil {
416416
t.Fatalf("expected error")
417417
}

0 commit comments

Comments
 (0)