Skip to content

Commit

Permalink
test: add checking snapshot be sent in mix_version_test.
Browse files Browse the repository at this point in the history
Signed-off-by: Siyuan Zhang <[email protected]>
  • Loading branch information
siyuanfoundation committed Apr 18, 2024
1 parent 464df4a commit c391d69
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion server/etcdmain/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ func newConfig() *config {
fs.BoolVar(&cfg.ec.ExperimentalMemoryMlock, "experimental-memory-mlock", cfg.ec.ExperimentalMemoryMlock, "Enable to enforce etcd pages (in particular bbolt) to stay in RAM.")
fs.BoolVar(&cfg.ec.ExperimentalTxnModeWriteWithSharedBuffer, "experimental-txn-mode-write-with-shared-buffer", true, "Enable the write transaction to use a shared buffer in its readonly check operations.")
fs.UintVar(&cfg.ec.ExperimentalBootstrapDefragThresholdMegabytes, "experimental-bootstrap-defrag-threshold-megabytes", 0, "Enable the defrag during etcd server bootstrap on condition that it will free at least the provided threshold of disk space. Needs to be set to non-zero value to take effect.")
fs.Uint64Var(&cfg.ec.SnapshotCatchUpEntries, "experimental-snapshot-catchup-entries", cfg.ec.SnapshotCatchUpEntries, "Number of entries for a slow follower to catch up after compacting the raft storage entries. (WARNING: only use this flag for tests.)")
fs.Uint64Var(&cfg.ec.SnapshotCatchUpEntries, "experimental-snapshot-catchup-entries", cfg.ec.SnapshotCatchUpEntries, "(WARNING: Use this flag with caution!) Number of entries for a slow follower to catch up after compacting the raft storage entries.")

// unsafe
fs.BoolVar(&cfg.ec.UnsafeNoFsync, "unsafe-no-fsync", false, "Disables fsync, unsafe, will cause data loss.")
Expand Down
8 changes: 8 additions & 0 deletions tests/e2e/etcd_mix_versions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ func mixVersionsSnapshotTestByAddingMember(t *testing.T, cfg e2e.EtcdProcessClus

t.Logf("Create an etcd cluster with %d member\n", cfg.ClusterSize)
cfg.SnapshotCount = 10
cfg.SnapshotCatchUpEntries = 10
cfg.BasePeerScheme = "unix" // to avoid port conflict

epc, err := e2e.NewEtcdProcessCluster(t, &cfg)
Expand Down Expand Up @@ -126,6 +127,7 @@ func mixVersionsSnapshotTestByMockPartition(t *testing.T, cfg e2e.EtcdProcessClu

t.Logf("Create an etcd cluster with %d member\n", cfg.ClusterSize)
cfg.SnapshotCount = 10
cfg.SnapshotCatchUpEntries = 10
cfg.BasePeerScheme = "unix" // to avoid port conflict

epc, err := e2e.NewEtcdProcessCluster(t, &cfg)
Expand Down Expand Up @@ -154,6 +156,12 @@ func mixVersionsSnapshotTestByMockPartition(t *testing.T, cfg e2e.EtcdProcessClu
require.NoError(t, err)

assertKVHash(t, epc)

leaderEPC = epc.Procs[epc.WaitLeader(t)]
if leaderEPC.Config().ExecPath == e2e.BinPath {
t.Log("Verify logs to check snapshot be sent from leader to follower")
e2e.AssertProcessLogs(t, leaderEPC, "sent database snapshot")
}
}

func writeKVs(t *testing.T, etcdctl *e2e.Etcdctl, startIdx, endIdx int) {
Expand Down
9 changes: 8 additions & 1 deletion tests/framework/e2e/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,8 @@ type EtcdProcessClusterConfig struct {

MetricsURLScheme string

SnapshotCount int // default is 10000
SnapshotCount int // default is 10000
SnapshotCatchUpEntries int // default is 5000

ClientTLS ClientConnType
ClientCertAuthEnabled bool
Expand Down Expand Up @@ -402,6 +403,12 @@ func (cfg *EtcdProcessClusterConfig) EtcdServerProcessConfig(tb testing.TB, i in
panic(fmt.Sprintf("Unknown cluster version %v", cfg.Version))
}

// the "--experimental-snapshot-catchup-entries" flag is not available in 3.4.
// so it should not be set if the process execPath is not BinPath.
if cfg.SnapshotCatchUpEntries > 0 && execPath == BinPath {
args = append(args, "--experimental-snapshot-catchup-entries", fmt.Sprintf("%d", cfg.SnapshotCatchUpEntries))
}

return &EtcdServerProcessConfig{
lg: cfg.Logger,
ExecPath: execPath,
Expand Down

0 comments on commit c391d69

Please sign in to comment.