Skip to content

Commit

Permalink
tests: Recreate cluster for every failpoint trigger
Browse files Browse the repository at this point in the history
This shortens operation history and avoids having to many failed requests.
Failed requests are problematic as too many of them can cause linearizability
verification complexity to become exponential.
  • Loading branch information
serathius committed Dec 2, 2022
1 parent 0d2778b commit 60a930c
Showing 1 changed file with 18 additions and 20 deletions.
38 changes: 18 additions & 20 deletions tests/linearizability/linearizability_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,6 @@ const (
minimalQPS = 100.0
// maximalQPS limits number of requests send to etcd to avoid linearizability analysis taking too long.
maximalQPS = 200.0
// failpointTriggersCount
failpointTriggersCount = 60
// waitBetweenFailpointTriggers
waitBetweenFailpointTriggers = time.Second
)

func TestLinearizability(t *testing.T) {
Expand Down Expand Up @@ -74,26 +70,28 @@ func TestLinearizability(t *testing.T) {
},
}
for _, tc := range tcs {
t.Run(tc.name, func(t *testing.T) {
failpoint := FailpointConfig{
failpoint: tc.failpoint,
count: failpointTriggersCount,
waitBetweenTriggers: waitBetweenFailpointTriggers,
}
traffic := trafficConfig{
minimalQPS: minimalQPS,
maximalQPS: maximalQPS,
clientCount: 8,
traffic: DefaultTraffic,
}
clientId.Store(0)
requestId.Store(0)
testLinearizability(context.Background(), t, tc.config, failpoint, traffic)
})
for i := 0; i < 60; i++ {
t.Run(tc.name, func(t *testing.T) {
failpoint := FailpointConfig{
failpoint: tc.failpoint,
count: 1,
waitBetweenTriggers: time.Second,
}
traffic := trafficConfig{
minimalQPS: minimalQPS,
maximalQPS: maximalQPS,
clientCount: 8,
traffic: DefaultTraffic,
}
testLinearizability(context.Background(), t, tc.config, failpoint, traffic)
})
}
}
}

func testLinearizability(ctx context.Context, t *testing.T, config e2e.EtcdProcessClusterConfig, failpoint FailpointConfig, traffic trafficConfig) {
clientId.Store(0)
requestId.Store(0)
clus, err := e2e.NewEtcdProcessCluster(ctx, t, e2e.WithConfig(&config))
if err != nil {
t.Fatal(err)
Expand Down

0 comments on commit 60a930c

Please sign in to comment.