From 22dfe085bfa4bc6f6650a26f8f25e34721ebc2de Mon Sep 17 00:00:00 2001 From: Abhishek Pandey Date: Tue, 20 Jun 2023 17:41:44 -0700 Subject: [PATCH] Add integration test for delta token usage --- src/internal/m365/onedrive/url_cache_test.go | 44 ++++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/src/internal/m365/onedrive/url_cache_test.go b/src/internal/m365/onedrive/url_cache_test.go index 78482f3e0..01f056c03 100644 --- a/src/internal/m365/onedrive/url_cache_test.go +++ b/src/internal/m365/onedrive/url_cache_test.go @@ -1,6 +1,7 @@ package onedrive import ( + "context" "errors" "math/rand" "net/http" @@ -89,10 +90,37 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() { nfid := ptr.Val(newFolder.GetId()) + collectorFunc := func( + ctx context.Context, + driveID, driveName string, + driveItems []models.DriveItemable, + oldPaths map[string]string, + newPaths map[string]string, + excluded map[string]struct{}, + itemCollection map[string]map[string]string, + doNotMergeItems bool, + errs *fault.Bus, + ) error { + return nil + } + + // Get the previous delta to feed into url cache + prevDelta, _, _, err := collectItems( + ctx, + suite.ac.Drives().NewItemPager(driveID, "", api.DriveItemSelectDefault()), + suite.driveID, + "drive-name", + collectorFunc, + map[string]string{}, + "", + fault.New(true)) + require.NoError(t, err, clues.ToCore(err)) + require.NotNil(t, prevDelta.URL) + // Create a bunch of files in the new folder var items []models.DriveItemable - for i := 0; i < 10; i++ { + for i := 0; i < 5; i++ { newItemName := "test_url_cache_basic_" + dttm.FormatNow(dttm.SafeForTesting) item, err := ac.Drives().PostItemInContainer( @@ -110,13 +138,12 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() { } // Create a new URL cache with a long TTL - cache, err := newURLCache( + uc, err := newURLCache( suite.driveID, - "", + prevDelta.URL, 1*time.Hour, driveItemPager, fault.New(true)) - require.NoError(t, err, clues.ToCore(err)) // Launch parallel requests to the cache, one per item @@ -128,11 +155,11 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() { defer wg.Done() // Read item from URL cache - props, err := cache.getItemProperties( + props, err := uc.getItemProperties( ctx, ptr.Val(items[i].GetId())) - require.NoError(t, err, clues.ToCore(err)) + require.NotNil(t, props) require.NotEmpty(t, props.downloadURL) require.Equal(t, false, props.isDeleted) @@ -146,15 +173,14 @@ func (suite *URLCacheIntegrationSuite) TestURLCacheBasic() { props.downloadURL, nil, nil) - require.NoError(t, err, clues.ToCore(err)) require.Equal(t, http.StatusOK, resp.StatusCode) }(i) } wg.Wait() - // Validate that <= 1 delta queries were made - require.LessOrEqual(t, cache.deltaQueryCount, 1) + // Validate that <= 1 delta queries were made by url cache + require.LessOrEqual(t, uc.deltaQueryCount, 1) } type URLCacheUnitSuite struct {