From ea6a57b2a5de41f54f40c7fd3788b78a79173624 Mon Sep 17 00:00:00 2001 From: Abhishek Pandey Date: Mon, 6 Nov 2023 22:41:11 -0800 Subject: [PATCH] Share count bus between graph clients and backup/restore operations (#4605) With #4497 changes, any counters that we log in graph middlewares ( e.g. `APICallTokensConsumed` or `ThrottledAPICalls`) will no longer show up in `BackupOperation.Results.Counts`. This is because graph adapters and backup operation will be initialized with different count busses. Since the backup result counts are captured from the operation bus, we will lose out on any graph metrics captured in middleware layers. This PR unifies the busses. Ill also add a regression check for graph metrics shortly --- #### Does this PR need a docs update or release note? - [ ] :white_check_mark: Yes, it's included - [ ] :clock1: Yes, but in a later PR - [x] :no_entry: No #### Type of change - [ ] :sunflower: Feature - [x] :bug: Bugfix - [ ] :world_map: Documentation - [ ] :robot: Supportability/Tests - [ ] :computer: CI/Deployment - [ ] :broom: Tech Debt/Cleanup #### Issue(s) * # #### Test Plan - [x] :muscle: Manual - [ ] :zap: Unit test - [ ] :green_heart: E2E --- src/internal/m365/graph/http_wrapper.go | 4 +- src/internal/m365/graph/service.go | 4 +- src/internal/operations/backup.go | 3 +- src/internal/operations/backup_test.go | 12 +- src/internal/operations/maintenance_test.go | 4 +- src/internal/operations/test/exchange_test.go | 50 +++++--- src/internal/operations/test/group_test.go | 26 ++-- src/internal/operations/test/helper_test.go | 14 ++- src/internal/operations/test/onedrive_test.go | 114 ++++++++++-------- .../operations/test/restore_helper_test.go | 11 +- .../operations/test/sharepoint_test.go | 43 ++++--- src/pkg/repository/backups.go | 3 +- src/pkg/repository/data_providers.go | 2 +- 13 files changed, 174 insertions(+), 116 deletions(-) diff --git a/src/internal/m365/graph/http_wrapper.go b/src/internal/m365/graph/http_wrapper.go index 0b5b17b5d..b03e8a3e9 100644 --- a/src/internal/m365/graph/http_wrapper.go +++ b/src/internal/m365/graph/http_wrapper.go @@ -204,7 +204,9 @@ func internalMiddleware( &LoggingMiddleware{}, throttler, &RateLimiterMiddleware{}, - &MetricsMiddleware{}, + &MetricsMiddleware{ + counter: counter, + }, } if len(cc.appendMiddleware) > 0 { diff --git a/src/internal/m365/graph/service.go b/src/internal/m365/graph/service.go index d48b1577a..3a0b6ce38 100644 --- a/src/internal/m365/graph/service.go +++ b/src/internal/m365/graph/service.go @@ -306,7 +306,9 @@ func kiotaMiddlewares( mw, throttler, &RateLimiterMiddleware{}, - &MetricsMiddleware{}) + &MetricsMiddleware{ + counter: counter, + }) if len(cc.appendMiddleware) > 0 { mw = append(mw, cc.appendMiddleware...) diff --git a/src/internal/operations/backup.go b/src/internal/operations/backup.go index 937e6733d..1eb6b0f7c 100644 --- a/src/internal/operations/backup.go +++ b/src/internal/operations/backup.go @@ -83,9 +83,10 @@ func NewBackupOperation( selector selectors.Selector, owner idname.Provider, bus events.Eventer, + counter *count.Bus, ) (BackupOperation, error) { op := BackupOperation{ - operation: newOperation(opts, bus, count.New(), kw, sw), + operation: newOperation(opts, bus, counter, kw, sw), ResourceOwner: owner, Selectors: selector, Version: "v0", diff --git a/src/internal/operations/backup_test.go b/src/internal/operations/backup_test.go index d8286c60e..ab24e33be 100644 --- a/src/internal/operations/backup_test.go +++ b/src/internal/operations/backup_test.go @@ -429,7 +429,8 @@ func (suite *BackupOpUnitSuite) TestBackupOperation_PersistResults() { acct, sel, sel, - evmock.NewBus()) + evmock.NewBus(), + count.New()) require.NoError(t, err, clues.ToCore(err)) op.Errors.Fail(test.fail) @@ -1487,7 +1488,8 @@ func (suite *BackupOpIntegrationSuite) TestNewBackupOperation() { test.acct, sel, sel, - evmock.NewBus()) + evmock.NewBus(), + count.New()) test.errCheck(t, err, clues.ToCore(err)) }) } @@ -1930,7 +1932,8 @@ func (suite *AssistBackupIntegrationSuite) TestBackupTypesForFailureModes() { acct, osel.Selector, selectors.Selector{DiscreteOwner: userID}, - evmock.NewBus()) + evmock.NewBus(), + count.New()) require.NoError(t, err, clues.ToCore(err)) err = bo.Run(ctx) @@ -2245,7 +2248,8 @@ func (suite *AssistBackupIntegrationSuite) TestExtensionsIncrementals() { acct, osel.Selector, selectors.Selector{DiscreteOwner: userID}, - evmock.NewBus()) + evmock.NewBus(), + count.New()) require.NoError(t, err, clues.ToCore(err)) err = bo.Run(ctx) diff --git a/src/internal/operations/maintenance_test.go b/src/internal/operations/maintenance_test.go index 9959e8fb6..26657e755 100644 --- a/src/internal/operations/maintenance_test.go +++ b/src/internal/operations/maintenance_test.go @@ -26,6 +26,7 @@ import ( "github.com/alcionai/corso/src/pkg/account" "github.com/alcionai/corso/src/pkg/control" "github.com/alcionai/corso/src/pkg/control/repository" + "github.com/alcionai/corso/src/pkg/count" "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/selectors" selTD "github.com/alcionai/corso/src/pkg/selectors/testdata" @@ -181,7 +182,8 @@ func (suite *MaintenanceOpNightlySuite) TestRepoMaintenance_GarbageCollection() acct, osel.Selector, selectors.Selector{DiscreteOwner: userID}, - evmock.NewBus()) + evmock.NewBus(), + count.New()) require.NoError(t, err, clues.ToCore(err)) err = bo.Run(ctx) diff --git a/src/internal/operations/test/exchange_test.go b/src/internal/operations/test/exchange_test.go index f9ca1d767..56ac8ac98 100644 --- a/src/internal/operations/test/exchange_test.go +++ b/src/internal/operations/test/exchange_test.go @@ -118,12 +118,13 @@ func (suite *ExchangeBackupIntgSuite) TestBackup_Run_exchange() { var ( mb = evmock.NewBus() + counter = count.New() sel = test.selector().Selector opts = control.DefaultOptions() whatSet = deeTD.CategoryFromRepoRef ) - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel, opts, version.Backup, counter) defer bod.close(t, ctx) sel = bod.sel @@ -185,7 +186,8 @@ func (suite *ExchangeBackupIntgSuite) TestBackup_Run_exchange() { ctx, bod, incMB, - opts) + opts, + counter) ) runAndCheckBackup(t, ctx, &incBO, incMB, true) @@ -238,10 +240,11 @@ func (suite *ExchangeBackupIntgSuite) TestBackup_Run_exchangeBasic_groups9Versio defer flush() var ( - mb = evmock.NewBus() - sel = selectors.NewExchangeBackup([]string{suite.its.user.ID}) - opts = control.DefaultOptions() - ws = deeTD.DriveIDFromRepoRef + mb = evmock.NewBus() + counter = count.New() + sel = selectors.NewExchangeBackup([]string{suite.its.user.ID}) + opts = control.DefaultOptions() + ws = deeTD.DriveIDFromRepoRef ) sel.Include( @@ -255,7 +258,8 @@ func (suite *ExchangeBackupIntgSuite) TestBackup_Run_exchangeBasic_groups9Versio mb, sel.Selector, opts, - version.All8MigrateUserPNToID) + version.All8MigrateUserPNToID, + counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -290,12 +294,14 @@ func (suite *ExchangeBackupIntgSuite) TestBackup_Run_exchangeBasic_groups9Versio false) mb = evmock.NewBus() + counter = count.New() notForcedFull := newTestBackupOp( t, ctx, bod, mb, - opts) + opts, + counter) notForcedFull.BackupVersion = version.Groups9Update runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) @@ -357,6 +363,7 @@ func testExchangeContinuousBackups(suite *ExchangeBackupIntgSuite, toggles contr var ( acct = tconfig.NewM365Account(t) mb = evmock.NewBus() + counter = count.New() now = dttm.Now() service = path.ExchangeService categories = map[path.CategoryType][][]string{ @@ -379,7 +386,7 @@ func testExchangeContinuousBackups(suite *ExchangeBackupIntgSuite, toggles contr ) opts.ToggleFeatures = toggles - ctrl, sels := ControllerWithSelector(t, ctx, acct, sel.Selector, nil, nil) + ctrl, sels := ControllerWithSelector(t, ctx, acct, sel.Selector, nil, nil, counter) sel.DiscreteOwner = sels.ID() sel.DiscreteOwnerName = sels.Name() @@ -578,7 +585,7 @@ func testExchangeContinuousBackups(suite *ExchangeBackupIntgSuite, toggles contr } } - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) // run the initial backup @@ -911,15 +918,16 @@ func testExchangeContinuousBackups(suite *ExchangeBackupIntgSuite, toggles contr for _, test := range table { suite.Run(test.name, func() { var ( - t = suite.T() - incMB = evmock.NewBus() - atid = creds.AzureTenantID + t = suite.T() + incMB = evmock.NewBus() + counter = count.New() + atid = creds.AzureTenantID ) ctx, flush := tester.WithContext(t, ctx) defer flush() - incBO := newTestBackupOp(t, ctx, bod, incMB, opts) + incBO := newTestBackupOp(t, ctx, bod, incMB, opts, counter) suite.Run("PreTestSetup", func() { t := suite.T() @@ -1043,11 +1051,12 @@ func (suite *ExchangeRestoreNightlyIntgSuite) TestRestore_Run_exchangeWithAdvanc baseSel.DiscreteOwner = suite.its.user.ID var ( - mb = evmock.NewBus() - opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() + opts = control.DefaultOptions() ) - bo, bod := prepNewTestBackupOp(t, ctx, mb, baseSel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, baseSel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -1353,11 +1362,12 @@ func (suite *ExchangeRestoreNightlyIntgSuite) TestRestore_Run_exchangeAlternateP baseSel.DiscreteOwner = suite.its.user.ID var ( - mb = evmock.NewBus() - opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() + opts = control.DefaultOptions() ) - bo, bod := prepNewTestBackupOp(t, ctx, mb, baseSel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, baseSel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) diff --git a/src/internal/operations/test/group_test.go b/src/internal/operations/test/group_test.go index 5c1b1dcd5..81c083882 100644 --- a/src/internal/operations/test/group_test.go +++ b/src/internal/operations/test/group_test.go @@ -88,6 +88,7 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsBasic_groups9VersionBum var ( mb = evmock.NewBus() + counter = count.New() sel = selectors.NewGroupsBackup([]string{suite.its.group.ID}) opts = control.DefaultOptions() whatSet = deeTD.CategoryFromRepoRef @@ -103,7 +104,8 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsBasic_groups9VersionBum mb, sel.Selector, opts, - version.All8MigrateUserPNToID) + version.All8MigrateUserPNToID, + counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -138,12 +140,14 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsBasic_groups9VersionBum false) mb = evmock.NewBus() + counter = count.New() forcedFull := newTestBackupOp( t, ctx, bod, mb, - opts) + opts, + counter) forcedFull.BackupVersion = version.Groups9Update runAndCheckBackup(t, ctx, &forcedFull, mb, false) @@ -203,6 +207,7 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsBasic() { var ( mb = evmock.NewBus() + counter = count.New() sel = selectors.NewGroupsBackup([]string{suite.its.group.ID}) opts = control.DefaultOptions() whatSet = deeTD.CategoryFromRepoRef @@ -212,7 +217,7 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsBasic() { selTD.GroupsBackupLibraryFolderScope(sel), selTD.GroupsBackupChannelScope(sel)) - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -254,12 +259,13 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsExtensions() { defer flush() var ( - mb = evmock.NewBus() - sel = selectors.NewGroupsBackup([]string{suite.its.group.ID}) - opts = control.DefaultOptions() - tenID = tconfig.M365TenantID(t) - svc = path.GroupsService - ws = deeTD.DriveIDFromRepoRef + mb = evmock.NewBus() + counter = count.New() + sel = selectors.NewGroupsBackup([]string{suite.its.group.ID}) + opts = control.DefaultOptions() + tenID = tconfig.M365TenantID(t) + svc = path.GroupsService + ws = deeTD.DriveIDFromRepoRef ) opts.ItemExtensionFactory = getTestExtensionFactories() @@ -267,7 +273,7 @@ func (suite *GroupsBackupIntgSuite) TestBackup_Run_groupsExtensions() { // does not apply to channel messages sel.Include(selTD.GroupsBackupLibraryFolderScope(sel)) - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) diff --git a/src/internal/operations/test/helper_test.go b/src/internal/operations/test/helper_test.go index 0d7ca3751..a36ef94c5 100644 --- a/src/internal/operations/test/helper_test.go +++ b/src/internal/operations/test/helper_test.go @@ -115,6 +115,7 @@ func prepNewTestBackupOp( sel selectors.Selector, opts control.Options, backupVersion int, + counter *count.Bus, ) ( operations.BackupOperation, *backupOpDependencies, @@ -161,14 +162,16 @@ func prepNewTestBackupOp( bod.acct, sel, nil, - bod.close) + bod.close, + counter) bo := newTestBackupOp( t, ctx, bod, bus, - opts) + opts, + counter) bo.BackupVersion = backupVersion bod.sss = streamstore.NewStreamer( @@ -189,6 +192,7 @@ func newTestBackupOp( bod *backupOpDependencies, bus events.Eventer, opts control.Options, + counter *count.Bus, ) operations.BackupOperation { bod.ctrl.IDNameLookup = idname.NewCache(map[string]string{bod.sel.ID(): bod.sel.Name()}) @@ -201,7 +205,8 @@ func newTestBackupOp( bod.acct, bod.sel, bod.sel, - bus) + bus, + counter) if !assert.NoError(t, err, clues.ToCore(err)) { bod.close(t, ctx) t.FailNow() @@ -561,13 +566,14 @@ func ControllerWithSelector( sel selectors.Selector, ins idname.Cacher, onFail func(*testing.T, context.Context), + counter *count.Bus, ) (*m365.Controller, selectors.Selector) { ctrl, err := m365.NewController( ctx, acct, sel.PathService(), control.DefaultOptions(), - count.New()) + counter) if !assert.NoError(t, err, clues.ToCore(err)) { if onFail != nil { onFail(t, ctx) diff --git a/src/internal/operations/test/onedrive_test.go b/src/internal/operations/test/onedrive_test.go index f3419661d..bccccec30 100644 --- a/src/internal/operations/test/onedrive_test.go +++ b/src/internal/operations/test/onedrive_test.go @@ -71,18 +71,19 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDrive() { defer flush() var ( - tenID = tconfig.M365TenantID(t) - mb = evmock.NewBus() - userID = tconfig.SecondaryM365UserID(t) - osel = selectors.NewOneDriveBackup([]string{userID}) - ws = deeTD.DriveIDFromRepoRef - svc = path.OneDriveService - opts = control.DefaultOptions() + tenID = tconfig.M365TenantID(t) + mb = evmock.NewBus() + counter = count.New() + userID = tconfig.SecondaryM365UserID(t) + osel = selectors.NewOneDriveBackup([]string{userID}) + ws = deeTD.DriveIDFromRepoRef + svc = path.OneDriveService + opts = control.DefaultOptions() ) osel.Include(selTD.OneDriveBackupFolderScope(osel)) - bo, bod := prepNewTestBackupOp(t, ctx, mb, osel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, osel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -117,11 +118,12 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveBasic_groups9Versio defer flush() var ( - mb = evmock.NewBus() - userID = tconfig.SecondaryM365UserID(t) - osel = selectors.NewOneDriveBackup([]string{userID}) - ws = deeTD.DriveIDFromRepoRef - opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() + userID = tconfig.SecondaryM365UserID(t) + osel = selectors.NewOneDriveBackup([]string{userID}) + ws = deeTD.DriveIDFromRepoRef + opts = control.DefaultOptions() ) osel.Include(selTD.OneDriveBackupFolderScope(osel)) @@ -132,7 +134,8 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveBasic_groups9Versio mb, osel.Selector, opts, - version.All8MigrateUserPNToID) + version.All8MigrateUserPNToID, + counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -167,12 +170,14 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveBasic_groups9Versio false) mb = evmock.NewBus() + counter = count.New() notForcedFull := newTestBackupOp( t, ctx, bod, mb, - opts) + opts, + counter) notForcedFull.BackupVersion = version.Groups9Update runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) @@ -282,10 +287,11 @@ func runDriveIncrementalTest( defer flush() var ( - acct = tconfig.NewM365Account(t) - opts = control.DefaultOptions() - mb = evmock.NewBus() - ws = deeTD.DriveIDFromRepoRef + acct = tconfig.NewM365Account(t) + opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() + ws = deeTD.DriveIDFromRepoRef // `now` has to be formatted with SimpleDateTimeTesting as // some drives cannot have `:` in file/folder names @@ -315,7 +321,7 @@ func runDriveIncrementalTest( creds, err := acct.M365Config() require.NoError(t, err, clues.ToCore(err)) - ctrl, sel := ControllerWithSelector(t, ctx, acct, sel, nil, nil) + ctrl, sel := ControllerWithSelector(t, ctx, acct, sel, nil, nil, counter) ac := ctrl.AC.Drives() rh := getRestoreHandler(ctrl.AC) @@ -436,7 +442,7 @@ func runDriveIncrementalTest( locRef) } - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel, opts, version.Backup, counter) defer bod.close(t, ctx) sel = bod.sel @@ -825,14 +831,16 @@ func runDriveIncrementalTest( bod.ctrl = cleanCtrl var ( - t = suite.T() - incMB = evmock.NewBus() - incBO = newTestBackupOp( + t = suite.T() + incMB = evmock.NewBus() + counter = count.New() + incBO = newTestBackupOp( t, ctx, bod, incMB, - opts) + opts, + counter) ) ctx, flush := tester.WithContext(t, ctx) @@ -986,6 +994,7 @@ func runDriveAssistBaseGroupsUpdate( var ( whatSet = deeTD.CategoryFromRepoRef mb = evmock.NewBus() + counter = count.New() opts = control.DefaultOptions() ) @@ -1001,7 +1010,8 @@ func runDriveAssistBaseGroupsUpdate( mb, sel, opts, - version.All8MigrateUserPNToID) + version.All8MigrateUserPNToID, + counter) defer bod.close(t, ctx) suite.Run("makeAssistBackup", func() { @@ -1035,8 +1045,9 @@ func runDriveAssistBaseGroupsUpdate( defer flush() var ( - mb = evmock.NewBus() - opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() + opts = control.DefaultOptions() ) forcedFull := newTestBackupOp( @@ -1044,7 +1055,8 @@ func runDriveAssistBaseGroupsUpdate( ctx, bod, mb, - opts) + opts, + counter) forcedFull.BackupVersion = version.Groups9Update runAndCheckBackup(t, ctx, &forcedFull, mb, false) @@ -1106,9 +1118,10 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveOwnerMigration() { defer flush() var ( - acct = tconfig.NewM365Account(t) - opts = control.DefaultOptions() - mb = evmock.NewBus() + acct = tconfig.NewM365Account(t) + opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() categories = map[path.CategoryType][][]string{ path.FilesCategory: {{bupMD.DeltaURLsFileName}, {bupMD.PreviousPathFileName}}, @@ -1123,7 +1136,7 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveOwnerMigration() { acct, path.OneDriveService, control.DefaultOptions(), - count.New()) + counter) require.NoError(t, err, clues.ToCore(err)) userable, err := ctrl.AC.Users().GetByID(ctx, suite.its.user.ID) @@ -1135,7 +1148,7 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveOwnerMigration() { oldsel := selectors.NewOneDriveBackup([]string{uname}) oldsel.Include(selTD.OneDriveBackupFolderScope(oldsel)) - bo, bod := prepNewTestBackupOp(t, ctx, mb, oldsel.Selector, opts, 0) + bo, bod := prepNewTestBackupOp(t, ctx, mb, oldsel.Selector, opts, 0, counter) defer bod.close(t, ctx) sel := bod.sel @@ -1163,7 +1176,7 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveOwnerMigration() { var ( incMB = evmock.NewBus() // the incremental backup op should have a proper user ID for the id. - incBO = newTestBackupOp(t, ctx, bod, incMB, opts) + incBO = newTestBackupOp(t, ctx, bod, incMB, opts, counter) ) require.NotEqualf( @@ -1234,20 +1247,21 @@ func (suite *OneDriveBackupIntgSuite) TestBackup_Run_oneDriveExtensions() { defer flush() var ( - tenID = tconfig.M365TenantID(t) - mb = evmock.NewBus() - userID = tconfig.SecondaryM365UserID(t) - osel = selectors.NewOneDriveBackup([]string{userID}) - ws = deeTD.DriveIDFromRepoRef - svc = path.OneDriveService - opts = control.DefaultOptions() + tenID = tconfig.M365TenantID(t) + mb = evmock.NewBus() + counter = count.New() + userID = tconfig.SecondaryM365UserID(t) + osel = selectors.NewOneDriveBackup([]string{userID}) + ws = deeTD.DriveIDFromRepoRef + svc = path.OneDriveService + opts = control.DefaultOptions() ) opts.ItemExtensionFactory = getTestExtensionFactories() osel.Include(selTD.OneDriveBackupFolderScope(osel)) - bo, bod := prepNewTestBackupOp(t, ctx, mb, osel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, osel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -1326,11 +1340,12 @@ func runDriveRestoreWithAdvancedOptions( // a backup is required to run restores var ( - mb = evmock.NewBus() - opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() + opts = control.DefaultOptions() ) - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -1598,11 +1613,12 @@ func runDriveRestoreToAlternateProtectedResource( // a backup is required to run restores var ( - mb = evmock.NewBus() - opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() + opts = control.DefaultOptions() ) - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) diff --git a/src/internal/operations/test/restore_helper_test.go b/src/internal/operations/test/restore_helper_test.go index b57ee3aa4..36356fdd2 100644 --- a/src/internal/operations/test/restore_helper_test.go +++ b/src/internal/operations/test/restore_helper_test.go @@ -68,7 +68,7 @@ func prepNewTestRestoreOp( backupStore storage.Storage, backupID model.StableID, bus events.Eventer, - ctr *count.Bus, + counter *count.Bus, sel selectors.Selector, opts control.Options, restoreCfg control.RestoreConfig, @@ -112,7 +112,8 @@ func prepNewTestRestoreOp( rod.acct, sel, nil, - rod.close) + rod.close, + counter) ro := newTestRestoreOp( t, @@ -120,7 +121,7 @@ func prepNewTestRestoreOp( rod, backupID, bus, - ctr, + counter, opts, restoreCfg) @@ -142,7 +143,7 @@ func newTestRestoreOp( rod *restoreOpDependencies, backupID model.StableID, bus events.Eventer, - ctr *count.Bus, + counter *count.Bus, opts control.Options, restoreCfg control.RestoreConfig, ) operations.RestoreOperation { @@ -159,7 +160,7 @@ func newTestRestoreOp( rod.sel, restoreCfg, bus, - ctr) + counter) if !assert.NoError(t, err, clues.ToCore(err)) { rod.close(t, ctx) t.FailNow() diff --git a/src/internal/operations/test/sharepoint_test.go b/src/internal/operations/test/sharepoint_test.go index 28306cd57..e6a7fc8cf 100644 --- a/src/internal/operations/test/sharepoint_test.go +++ b/src/internal/operations/test/sharepoint_test.go @@ -53,10 +53,11 @@ func (suite *SharePointBackupIntgSuite) TestBackup_Run_sharePointBasic_groups9Ve defer flush() var ( - mb = evmock.NewBus() - sel = selectors.NewSharePointBackup([]string{suite.its.site.ID}) - opts = control.DefaultOptions() - ws = deeTD.DriveIDFromRepoRef + mb = evmock.NewBus() + counter = count.New() + sel = selectors.NewSharePointBackup([]string{suite.its.site.ID}) + opts = control.DefaultOptions() + ws = deeTD.DriveIDFromRepoRef ) sel.Include(selTD.SharePointBackupFolderScope(sel)) @@ -67,7 +68,8 @@ func (suite *SharePointBackupIntgSuite) TestBackup_Run_sharePointBasic_groups9Ve mb, sel.Selector, opts, - version.All8MigrateUserPNToID) + version.All8MigrateUserPNToID, + counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -102,12 +104,14 @@ func (suite *SharePointBackupIntgSuite) TestBackup_Run_sharePointBasic_groups9Ve false) mb = evmock.NewBus() + counter = count.New() notForcedFull := newTestBackupOp( t, ctx, bod, mb, - opts) + opts, + counter) notForcedFull.BackupVersion = version.Groups9Update runAndCheckBackup(t, ctx, ¬ForcedFull, mb, false) @@ -207,14 +211,15 @@ func (suite *SharePointBackupIntgSuite) TestBackup_Run_sharePointBasic() { defer flush() var ( - mb = evmock.NewBus() - sel = selectors.NewSharePointBackup([]string{suite.its.site.ID}) - opts = control.DefaultOptions() + mb = evmock.NewBus() + counter = count.New() + sel = selectors.NewSharePointBackup([]string{suite.its.site.ID}) + opts = control.DefaultOptions() ) sel.Include(selTD.SharePointBackupFolderScope(sel)) - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -236,19 +241,20 @@ func (suite *SharePointBackupIntgSuite) TestBackup_Run_sharePointExtensions() { defer flush() var ( - mb = evmock.NewBus() - sel = selectors.NewSharePointBackup([]string{suite.its.site.ID}) - opts = control.DefaultOptions() - tenID = tconfig.M365TenantID(t) - svc = path.SharePointService - ws = deeTD.DriveIDFromRepoRef + mb = evmock.NewBus() + counter = count.New() + sel = selectors.NewSharePointBackup([]string{suite.its.site.ID}) + opts = control.DefaultOptions() + tenID = tconfig.M365TenantID(t) + svc = path.SharePointService + ws = deeTD.DriveIDFromRepoRef ) opts.ItemExtensionFactory = getTestExtensionFactories() sel.Include(selTD.SharePointBackupFolderScope(sel)) - bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, sel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) @@ -385,6 +391,7 @@ func (suite *SharePointRestoreNightlyIntgSuite) TestRestore_Run_sharepointDelete // run a backup var ( mb = evmock.NewBus() + counter = count.New() opts = control.DefaultOptions() graphClient = suite.its.ac.Stable.Client() ) @@ -394,7 +401,7 @@ func (suite *SharePointRestoreNightlyIntgSuite) TestRestore_Run_sharepointDelete bsel.Filter(bsel.Library(rc.Location)) bsel.DiscreteOwner = suite.its.site.ID - bo, bod := prepNewTestBackupOp(t, ctx, mb, bsel.Selector, opts, version.Backup) + bo, bod := prepNewTestBackupOp(t, ctx, mb, bsel.Selector, opts, version.Backup, counter) defer bod.close(t, ctx) runAndCheckBackup(t, ctx, &bo, mb, false) diff --git a/src/pkg/repository/backups.go b/src/pkg/repository/backups.go index 51a5dee34..cdb381f75 100644 --- a/src/pkg/repository/backups.go +++ b/src/pkg/repository/backups.go @@ -93,7 +93,8 @@ func (r repository) NewBackupWithLookup( r.Account, sel, sel, // the selector acts as an IDNamer for its discrete resource owner. - r.Bus) + r.Bus, + r.counter) } // Backup retrieves a backup by id. diff --git a/src/pkg/repository/data_providers.go b/src/pkg/repository/data_providers.go index f57b70235..93a141fed 100644 --- a/src/pkg/repository/data_providers.go +++ b/src/pkg/repository/data_providers.go @@ -85,7 +85,7 @@ func connectToM365( r.Account, pst, r.Opts, - r.counter.Local()) + r.counter) if err != nil { return nil, clues.Wrap(err, "creating m365 client controller") }