Skip to content

Commit c2bfbe8

Browse files
authored
Merge pull request #18782 from mmorel-35/tests/testifier/require-error
fix: use require instead of t.Fatal(err) in tests/robustness package
2 parents 8ec90c6 + 4017eba commit c2bfbe8

File tree

7 files changed

+25
-45
lines changed

7 files changed

+25
-45
lines changed

tests/robustness/client/watch.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"testing"
2121
"time"
2222

23+
"github.com/stretchr/testify/require"
24+
2325
"go.etcd.io/etcd/tests/v3/framework/e2e"
2426
"go.etcd.io/etcd/tests/v3/robustness/identity"
2527
"go.etcd.io/etcd/tests/v3/robustness/report"
@@ -32,9 +34,7 @@ func CollectClusterWatchEvents(ctx context.Context, t *testing.T, clus *e2e.Etcd
3234
memberMaxRevisionChans := make([]chan int64, len(clus.Procs))
3335
for i, member := range clus.Procs {
3436
c, err := NewRecordingClient(member.EndpointsGRPC(), ids, baseTime)
35-
if err != nil {
36-
t.Fatal(err)
37-
}
37+
require.NoError(t, err)
3838
memberMaxRevisionChan := make(chan int64, 1)
3939
memberMaxRevisionChans[i] = memberMaxRevisionChan
4040
wg.Add(1)

tests/robustness/failpoint/cluster.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"testing"
2424
"time"
2525

26+
"github.com/stretchr/testify/require"
2627
"go.uber.org/zap"
2728

2829
clientv3 "go.etcd.io/etcd/client/v3"
@@ -56,9 +57,8 @@ func (f memberReplace) Inject(ctx context.Context, t *testing.T, lg *zap.Logger,
5657
if err != nil {
5758
return nil, err
5859
}
59-
if !found {
60-
t.Fatal("Member not found")
61-
}
60+
require.Truef(t, found, "Member not found")
61+
6262
// Need to wait health interval for cluster to accept member changes
6363
time.Sleep(etcdserver.HealthInterval)
6464
lg.Info("Removing member", zap.String("member", member.Config().Name))
@@ -70,9 +70,7 @@ func (f memberReplace) Inject(ctx context.Context, t *testing.T, lg *zap.Logger,
7070
if err != nil {
7171
return nil, err
7272
}
73-
if found {
74-
t.Fatal("Expected member to be removed")
75-
}
73+
require.Falsef(t, found, "Expected member to be removed")
7674

7775
for member.IsRunning() {
7876
err = member.Kill()

tests/robustness/report/client.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"testing"
2626

2727
"github.com/anishathalye/porcupine"
28+
"github.com/stretchr/testify/require"
2829
"go.uber.org/zap"
2930

3031
"go.etcd.io/etcd/tests/v3/robustness/model"
@@ -53,9 +54,7 @@ func persistClientReports(t *testing.T, lg *zap.Logger, path string, reports []C
5354
for _, r := range reports {
5455
clientDir := filepath.Join(path, fmt.Sprintf("client-%d", r.ClientID))
5556
err := os.MkdirAll(clientDir, 0700)
56-
if err != nil {
57-
t.Fatal(err)
58-
}
57+
require.NoError(t, err)
5958
if len(r.Watch) != 0 {
6059
persistWatchOperations(t, lg, filepath.Join(clientDir, "watch.json"), r.Watch)
6160
} else {

tests/robustness/report/report.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"testing"
2323
"time"
2424

25+
"github.com/stretchr/testify/require"
2526
"go.uber.org/zap"
2627

2728
"go.etcd.io/etcd/tests/v3/framework/e2e"
@@ -45,17 +46,11 @@ func testResultsDirectory(t *testing.T) string {
4546
}
4647
path, err := filepath.Abs(filepath.Join(
4748
resultsDirectory, strings.ReplaceAll(t.Name(), "/", "_"), fmt.Sprintf("%v", time.Now().UnixNano())))
48-
if err != nil {
49-
t.Fatal(err)
50-
}
49+
require.NoError(t, err)
5150
err = os.RemoveAll(path)
52-
if err != nil {
53-
t.Fatal(err)
54-
}
51+
require.NoError(t, err)
5552
err = os.MkdirAll(path, 0700)
56-
if err != nil {
57-
t.Fatal(err)
58-
}
53+
require.NoError(t, err)
5954
return path
6055
}
6156

@@ -84,9 +79,7 @@ func (r *TestReport) Report(t *testing.T, force bool) {
8479
func persistMemberDataDir(t *testing.T, lg *zap.Logger, member e2e.EtcdProcess, path string) {
8580
lg.Info("Saving member data dir", zap.String("member", member.Config().Name), zap.String("path", path))
8681
err := os.Rename(memberDataDir(member), path)
87-
if err != nil {
88-
t.Fatal(err)
89-
}
82+
require.NoError(t, err)
9083
}
9184

9285
func memberDataDir(member e2e.EtcdProcess) string {

tests/robustness/scenarios/scenarios.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import (
1919
"testing"
2020
"time"
2121

22+
"github.com/stretchr/testify/require"
23+
2224
"go.etcd.io/etcd/api/v3/version"
2325
"go.etcd.io/etcd/client/pkg/v3/fileutil"
2426
"go.etcd.io/etcd/tests/v3/framework/e2e"
@@ -153,9 +155,7 @@ func Exploratory(_ *testing.T) []TestScenario {
153155

154156
func Regression(t *testing.T) []TestScenario {
155157
v, err := e2e.GetVersionFromBinary(e2e.BinPath.Etcd)
156-
if err != nil {
157-
t.Fatalf("Failed checking etcd version binary, binary: %q, err: %v", e2e.BinPath.Etcd, err)
158-
}
158+
require.NoErrorf(t, err, "Failed checking etcd version binary, binary: %q", e2e.BinPath.Etcd)
159159

160160
scenarios := []TestScenario{}
161161
scenarios = append(scenarios, TestScenario{

tests/robustness/traffic/traffic.go

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"testing"
2121
"time"
2222

23+
"github.com/stretchr/testify/require"
2324
"go.uber.org/zap"
2425
"golang.org/x/time/rate"
2526

@@ -62,15 +63,11 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2
6263
limiter := rate.NewLimiter(rate.Limit(profile.MaximalQPS), 200)
6364

6465
cc, err := client.NewRecordingClient(endpoints, ids, baseTime)
65-
if err != nil {
66-
t.Fatal(err)
67-
}
66+
require.NoError(t, err)
6867
defer cc.Close()
6968
// Ensure that first operation succeeds
7069
_, err = cc.Put(ctx, "start", "true")
71-
if err != nil {
72-
t.Fatalf("First operation failed, validation requires first operation to succeed, err: %s", err)
73-
}
70+
require.NoErrorf(t, err, "First operation failed, validation requires first operation to succeed")
7471
wg := sync.WaitGroup{}
7572
nonUniqueWriteLimiter := NewConcurrencyLimiter(profile.MaxNonUniqueRequestConcurrency)
7673
finish := make(chan struct{})
@@ -79,9 +76,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2
7976
for i := 0; i < profile.ClientCount; i++ {
8077
wg.Add(1)
8178
c, nerr := client.NewRecordingClient([]string{endpoints[i%len(endpoints)]}, ids, baseTime)
82-
if nerr != nil {
83-
t.Fatal(nerr)
84-
}
79+
require.NoError(t, nerr)
8580
go func(c *client.RecordingClient) {
8681
defer wg.Done()
8782
defer c.Close()
@@ -111,9 +106,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2
111106
var fr *report.FailpointInjection
112107
select {
113108
case frp, ok := <-failpointInjected:
114-
if !ok {
115-
t.Fatalf("Failed to collect failpoint report")
116-
}
109+
require.Truef(t, ok, "Failed to collect failpoint report")
117110
fr = &frp
118111
case <-ctx.Done():
119112
t.Fatalf("Traffic finished before failure was injected: %s", ctx.Err())
@@ -126,9 +119,7 @@ func SimulateTraffic(ctx context.Context, t *testing.T, lg *zap.Logger, clus *e2
126119
time.Sleep(time.Second)
127120
// Ensure that last operation succeeds
128121
_, err = cc.Put(ctx, "tombstone", "true")
129-
if err != nil {
130-
t.Fatalf("Last operation failed, validation requires last operation to succeed, err: %s", err)
131-
}
122+
require.NoErrorf(t, err, "Last operation failed, validation requires last operation to succeed")
132123
reports = append(reports, cc.Report())
133124

134125
totalStats := calculateStats(reports, startTime, endTime)

tests/robustness/validate/validate.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"time"
2222

2323
"github.com/anishathalye/porcupine"
24+
"github.com/stretchr/testify/require"
2425
"go.uber.org/zap"
2526

2627
"go.etcd.io/etcd/tests/v3/robustness/model"
@@ -30,9 +31,7 @@ import (
3031
// ValidateAndReturnVisualize returns visualize as porcupine.linearizationInfo used to generate visualization is private.
3132
func ValidateAndReturnVisualize(t *testing.T, lg *zap.Logger, cfg Config, reports []report.ClientReport, persistedRequests []model.EtcdRequest, timeout time.Duration) (visualize func(basepath string) error) {
3233
err := checkValidationAssumptions(reports, persistedRequests)
33-
if err != nil {
34-
t.Fatalf("Broken validation assumptions: %s", err)
35-
}
34+
require.NoErrorf(t, err, "Broken validation assumptions")
3635
linearizableOperations := patchLinearizableOperations(reports, persistedRequests)
3736
serializableOperations := filterSerializableOperations(reports)
3837

0 commit comments

Comments
 (0)