From e7aa37cce34f5fbe865dbd07786ffc68fb71d448 Mon Sep 17 00:00:00 2001 From: chaitalisg Date: Fri, 28 Jun 2024 16:33:16 -0700 Subject: [PATCH] test(general): ignore dir not found error during delete action in robustness tests (#3944) The robustness tests perform delete actions on random subdirectories and files. If the actions encounter `directory not found` error, the framework returns a `no-op` error. This change ignores the `no-op` errors specifically for "delete" actions. This change will reduce the failure frequency when a delete actions on the source directory result in a no-op. --- .../multiclient_test/multiclient_test.go | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/tests/robustness/multiclient_test/multiclient_test.go b/tests/robustness/multiclient_test/multiclient_test.go index 2153f3fb0..4a5de500f 100644 --- a/tests/robustness/multiclient_test/multiclient_test.go +++ b/tests/robustness/multiclient_test/multiclient_test.go @@ -51,11 +51,9 @@ func TestManySmallFiles(t *testing.T) { err := tryRestoreIntoDataDirectory(ctx, t) require.NoError(t, err) - _, err = eng.ExecAction(ctx, engine.DeleteRandomSubdirectoryActionKey, deleteDirOpts) - require.NoError(t, err) + tryDeleteAction(ctx, t, engine.DeleteRandomSubdirectoryActionKey, deleteDirOpts) - _, err = eng.ExecAction(ctx, engine.DeleteDirectoryContentsActionKey, deleteDirOpts) - require.NoError(t, err) + tryDeleteAction(ctx, t, engine.DeleteDirectoryContentsActionKey, deleteDirOpts) _, err = eng.ExecAction(ctx, engine.WriteRandomFilesActionKey, fileWriteOpts) require.NoError(t, err) @@ -132,11 +130,9 @@ func TestManySmallFilesAcrossDirecoryTree(t *testing.T) { err := tryRestoreIntoDataDirectory(ctx, t) require.NoError(t, err) - _, err = eng.ExecAction(ctx, engine.DeleteRandomSubdirectoryActionKey, deleteDirOpts) - require.NoError(t, err) + tryDeleteAction(ctx, t, engine.DeleteRandomSubdirectoryActionKey, deleteDirOpts) - _, err = eng.ExecAction(ctx, engine.DeleteDirectoryContentsActionKey, deleteDirOpts) - require.NoError(t, err) + tryDeleteAction(ctx, t, engine.DeleteDirectoryContentsActionKey, deleteDirOpts) _, err = eng.ExecAction(ctx, engine.WriteRandomFilesActionKey, fileWriteOpts) require.NoError(t, err) @@ -215,3 +211,23 @@ func tryRandomAction(ctx context.Context, t *testing.T, opts engine.ActionOpts) return err } + +// tryDeleteAction runs the given delete action, either delete-files or delete-random-subdirectory +// with options and masks no-op errors, and asserts when called for any other action. +func tryDeleteAction(ctx context.Context, t *testing.T, action engine.ActionKey, actionOpts map[string]string) { + t.Helper() + eligibleActionsList := []engine.ActionKey{ + engine.DeleteDirectoryContentsActionKey, + engine.DeleteRandomSubdirectoryActionKey, + } + require.Contains(t, eligibleActionsList, action) + + _, err := eng.ExecAction(ctx, action, actionOpts) + // Ignore the dir-not-found error, wrapped as no-op error. + if errors.Is(err, robustness.ErrNoOp) { + t.Log("Delete action resulted in no-op") + return + } + + require.NoError(t, err) +}