mirror of
https://github.com/kopia/kopia.git
synced 2026-05-10 15:54:20 -04:00
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:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user