From e2bb8c698f899a8db7225c059f27d833ed551775 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Fri, 13 Oct 2023 19:44:24 +0200 Subject: [PATCH] Limit a timeout in testing robustness validation Signed-off-by: Marek Siarkowicz --- tests/robustness/main_test.go | 2 +- tests/robustness/validate/operations.go | 10 +++++----- tests/robustness/validate/validate.go | 5 +++-- tests/robustness/validate/validate_test.go | 3 ++- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index f72e1694eff..ccd853b7c24 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -94,7 +94,7 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s testSce watchProgressNotifyEnabled := report.Cluster.Cfg.ServerConfig.ExperimentalWatchProgressNotifyInterval != 0 validateGotAtLeastOneProgressNotify(t, report.Client, s.watch.requestProgress || watchProgressNotifyEnabled) validateConfig := validate.Config{ExpectRevisionUnique: s.traffic.ExpectUniqueRevision()} - report.Visualize = validate.ValidateAndReturnVisualize(t, lg, validateConfig, report.Client) + report.Visualize = validate.ValidateAndReturnVisualize(t, lg, validateConfig, report.Client, 5*time.Minute) panicked = false } diff --git a/tests/robustness/validate/operations.go b/tests/robustness/validate/operations.go index 9f63182d9ab..9f0baeeae7c 100644 --- a/tests/robustness/validate/operations.go +++ b/tests/robustness/validate/operations.go @@ -28,17 +28,17 @@ import ( "go.etcd.io/etcd/tests/v3/robustness/model" ) -func validateLinearizableOperationsAndVisualize(lg *zap.Logger, operations []porcupine.Operation) (result porcupine.CheckResult, visualize func(basepath string) error) { - const timeout = 5 * time.Minute +func validateLinearizableOperationsAndVisualize(lg *zap.Logger, operations []porcupine.Operation, timeout time.Duration) (result porcupine.CheckResult, visualize func(basepath string) error) { lg.Info("Validating linearizable operations", zap.Duration("timeout", timeout)) + start := time.Now() result, info := porcupine.CheckOperationsVerbose(model.NonDeterministicModel, operations, timeout) switch result { case porcupine.Illegal: - lg.Error("Linearization failed") + lg.Error("Linearization failed", zap.Duration("duration", time.Since(start))) case porcupine.Unknown: - lg.Error("Linearization has timed out") + lg.Error("Linearization has timed out", zap.Duration("duration", time.Since(start))) case porcupine.Ok: - lg.Info("Linearization success") + lg.Info("Linearization success", zap.Duration("duration", time.Since(start))) default: panic(fmt.Sprintf("Unknown Linearization result %s", result)) } diff --git a/tests/robustness/validate/validate.go b/tests/robustness/validate/validate.go index 73ec719fdf8..3e27ba49164 100644 --- a/tests/robustness/validate/validate.go +++ b/tests/robustness/validate/validate.go @@ -18,6 +18,7 @@ import ( "fmt" "sort" "testing" + "time" "github.com/anishathalye/porcupine" "github.com/google/go-cmp/cmp" @@ -28,9 +29,9 @@ import ( ) // ValidateAndReturnVisualize returns visualize as porcupine.linearizationInfo used to generate visualization is private. -func ValidateAndReturnVisualize(t *testing.T, lg *zap.Logger, cfg Config, reports []report.ClientReport) (visualize func(basepath string) error) { +func ValidateAndReturnVisualize(t *testing.T, lg *zap.Logger, cfg Config, reports []report.ClientReport, timeout time.Duration) (visualize func(basepath string) error) { patchedOperations := patchedOperationHistory(reports) - linearizable, visualize := validateLinearizableOperationsAndVisualize(lg, patchedOperations) + linearizable, visualize := validateLinearizableOperationsAndVisualize(lg, patchedOperations, timeout) if linearizable != porcupine.Ok { t.Error("Failed linearization, skipping further validation") return visualize diff --git a/tests/robustness/validate/validate_test.go b/tests/robustness/validate/validate_test.go index 71c471b4705..8bb3bd7231f 100644 --- a/tests/robustness/validate/validate_test.go +++ b/tests/robustness/validate/validate_test.go @@ -18,6 +18,7 @@ import ( "os" "path/filepath" "testing" + "time" "github.com/stretchr/testify/assert" "go.uber.org/zap/zaptest" @@ -37,7 +38,7 @@ func TestValidate(t *testing.T) { path := filepath.Join(testdataPath, file.Name()) reports, err := report.LoadClientReports(path) assert.NoError(t, err) - visualize := ValidateAndReturnVisualize(t, zaptest.NewLogger(t), Config{}, reports) + visualize := ValidateAndReturnVisualize(t, zaptest.NewLogger(t), Config{}, reports, 5*time.Minute) if t.Failed() { err := visualize(filepath.Join(path, "history.html"))