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.
This commit is contained in:
chaitalisg
2024-06-28 16:33:16 -07:00
committed by GitHub
parent 4c1101f378
commit e7aa37cce3

View File

@@ -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)
}