mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
tests: Fix linearizability nightly
Signed-off-by: Marek Siarkowicz <siarkowicz@google.com>
This commit is contained in:
parent
397e3fb77a
commit
a581062c7a
@ -1,4 +1,5 @@
|
|||||||
name: Linearizability Nightly
|
name: Linearizability Nightly
|
||||||
|
permissions: read-all
|
||||||
on:
|
on:
|
||||||
# schedules always run against the main branch, hence we have to create separate jobs
|
# schedules always run against the main branch, hence we have to create separate jobs
|
||||||
# with individual checkout actions for each of the active release branches
|
# with individual checkout actions for each of the active release branches
|
||||||
|
@ -42,17 +42,17 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
DefaultTrafficConfig = trafficConfig{
|
LowTrafficAllRequests = trafficConfig{
|
||||||
minimalQPS: 100,
|
minimalQPS: 100,
|
||||||
maximalQPS: 200,
|
maximalQPS: 200,
|
||||||
clientCount: 8,
|
clientCount: 8,
|
||||||
traffic: DefaultTraffic,
|
traffic: readWriteSingleKey{keyCount: 4, leaseTTL: DefaultLeaseTTL, writes: []opChance{{operation: model.Put, chance: 50}, {operation: model.Delete, chance: 10}, {operation: model.PutWithLease, chance: 10}, {operation: model.LeaseRevoke, chance: 10}, {operation: model.Txn, chance: 20}}},
|
||||||
}
|
}
|
||||||
HighTrafficConfig = trafficConfig{
|
HighTrafficPut = trafficConfig{
|
||||||
minimalQPS: 200,
|
minimalQPS: 200,
|
||||||
maximalQPS: 1000,
|
maximalQPS: 1000,
|
||||||
clientCount: 12,
|
clientCount: 12,
|
||||||
traffic: DefaultTraffic,
|
traffic: readWriteSingleKey{keyCount: 4, leaseTTL: DefaultLeaseTTL, writes: []opChance{{operation: model.Put, chance: 100}}},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -67,7 +67,6 @@ func TestLinearizability(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "ClusterOfSize1",
|
name: "ClusterOfSize1",
|
||||||
failpoint: RandomFailpoint,
|
failpoint: RandomFailpoint,
|
||||||
traffic: &HighTrafficConfig,
|
|
||||||
config: *e2e.NewConfig(
|
config: *e2e.NewConfig(
|
||||||
e2e.WithClusterSize(1),
|
e2e.WithClusterSize(1),
|
||||||
e2e.WithSnapshotCount(100),
|
e2e.WithSnapshotCount(100),
|
||||||
@ -79,7 +78,29 @@ func TestLinearizability(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "ClusterOfSize3",
|
name: "ClusterOfSize3",
|
||||||
failpoint: RandomFailpoint,
|
failpoint: RandomFailpoint,
|
||||||
traffic: &HighTrafficConfig,
|
config: *e2e.NewConfig(
|
||||||
|
e2e.WithSnapshotCount(100),
|
||||||
|
e2e.WithPeerProxy(true),
|
||||||
|
e2e.WithGoFailEnabled(true),
|
||||||
|
e2e.WithCompactionBatchLimit(100), // required for compactBeforeCommitBatch and compactAfterCommitBatch failpoints
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "HighTrafficClusterOfSize1",
|
||||||
|
failpoint: RandomFailpoint,
|
||||||
|
traffic: &HighTrafficPut,
|
||||||
|
config: *e2e.NewConfig(
|
||||||
|
e2e.WithClusterSize(1),
|
||||||
|
e2e.WithSnapshotCount(100),
|
||||||
|
e2e.WithPeerProxy(true),
|
||||||
|
e2e.WithGoFailEnabled(true),
|
||||||
|
e2e.WithCompactionBatchLimit(100), // required for compactBeforeCommitBatch and compactAfterCommitBatch failpoints
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "HighTrafficClusterOfSize3",
|
||||||
|
failpoint: RandomFailpoint,
|
||||||
|
traffic: &HighTrafficPut,
|
||||||
config: *e2e.NewConfig(
|
config: *e2e.NewConfig(
|
||||||
e2e.WithSnapshotCount(100),
|
e2e.WithSnapshotCount(100),
|
||||||
e2e.WithPeerProxy(true),
|
e2e.WithPeerProxy(true),
|
||||||
@ -106,7 +127,7 @@ func TestLinearizability(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "Issue13766",
|
name: "Issue13766",
|
||||||
failpoint: KillFailpoint,
|
failpoint: KillFailpoint,
|
||||||
traffic: &HighTrafficConfig,
|
traffic: &HighTrafficPut,
|
||||||
config: *e2e.NewConfig(
|
config: *e2e.NewConfig(
|
||||||
e2e.WithSnapshotCount(100),
|
e2e.WithSnapshotCount(100),
|
||||||
),
|
),
|
||||||
@ -114,7 +135,7 @@ func TestLinearizability(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
if tc.traffic == nil {
|
if tc.traffic == nil {
|
||||||
tc.traffic = &DefaultTrafficConfig
|
tc.traffic = &LowTrafficAllRequests
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
@ -348,7 +369,7 @@ func checkOperationsAndPersistResults(t *testing.T, operations []porcupine.Opera
|
|||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
linearizable, info := porcupine.CheckOperationsVerbose(model.Etcd, operations, time.Minute)
|
linearizable, info := porcupine.CheckOperationsVerbose(model.Etcd, operations, 5*time.Minute)
|
||||||
if linearizable == porcupine.Illegal {
|
if linearizable == porcupine.Illegal {
|
||||||
t.Error("Model is not linearizable")
|
t.Error("Model is not linearizable")
|
||||||
}
|
}
|
||||||
|
@ -293,7 +293,7 @@ func (h History) Operations() []porcupine.Operation {
|
|||||||
// Failed requests don't have a known return time.
|
// Failed requests don't have a known return time.
|
||||||
// Simulate Infinity by using last observed time.
|
// Simulate Infinity by using last observed time.
|
||||||
for _, op := range h.failed {
|
for _, op := range h.failed {
|
||||||
op.Return = maxTime + 1
|
op.Return = maxTime + time.Second.Nanoseconds()
|
||||||
operations = append(operations, op)
|
operations = append(operations, op)
|
||||||
}
|
}
|
||||||
return operations
|
return operations
|
||||||
|
@ -28,9 +28,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
DefaultLeaseTTL int64 = 7200
|
DefaultLeaseTTL int64 = 7200
|
||||||
RequestTimeout = 40 * time.Millisecond
|
RequestTimeout = 40 * time.Millisecond
|
||||||
DefaultTraffic Traffic = readWriteSingleKey{keyCount: 4, leaseTTL: DefaultLeaseTTL, writes: []opChance{{operation: model.Put, chance: 50}, {operation: model.Delete, chance: 10}, {operation: model.PutWithLease, chance: 10}, {operation: model.LeaseRevoke, chance: 10}, {operation: model.Txn, chance: 20}}}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Traffic interface {
|
type Traffic interface {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user