@fluidframework/driver-utils 2.0.0-dev-rc.1.0.0.232845 → 2.0.0-dev-rc.2.0.0.246488
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +5 -2
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +32 -0
- package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/driver-utils.api.md +7 -10
- package/dist/adapters/compression/documentServiceCompressionAdapter.d.ts +2 -2
- package/dist/adapters/compression/documentServiceCompressionAdapter.d.ts.map +1 -1
- package/dist/adapters/compression/documentServiceCompressionAdapter.js +4 -4
- package/dist/adapters/compression/documentServiceCompressionAdapter.js.map +1 -1
- package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts +2 -2
- package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts.map +1 -1
- package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.js +7 -7
- package/dist/adapters/compression/documentServiceFactoryCompressionAdapter.js.map +1 -1
- package/dist/adapters/compression/index.d.ts +3 -3
- package/dist/adapters/compression/index.d.ts.map +1 -1
- package/dist/adapters/compression/index.js +7 -7
- package/dist/adapters/compression/index.js.map +1 -1
- package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts +2 -2
- package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts.map +1 -1
- package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.js +11 -11
- package/dist/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.js.map +1 -1
- package/dist/adapters/compression/summaryblob/index.d.ts +1 -1
- package/dist/adapters/compression/summaryblob/index.d.ts.map +1 -1
- package/dist/adapters/compression/summaryblob/index.js +3 -3
- package/dist/adapters/compression/summaryblob/index.js.map +1 -1
- package/dist/adapters/index.d.ts +2 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +6 -6
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/predefinedAdapters.d.ts +1 -1
- package/dist/adapters/predefinedAdapters.d.ts.map +1 -1
- package/dist/adapters/predefinedAdapters.js +4 -4
- package/dist/adapters/predefinedAdapters.js.map +1 -1
- package/dist/documentStorageServiceProxy.d.ts +0 -1
- package/dist/documentStorageServiceProxy.d.ts.map +1 -1
- package/dist/documentStorageServiceProxy.js +0 -3
- package/dist/documentStorageServiceProxy.js.map +1 -1
- package/dist/driver-utils-alpha.d.ts +2 -2
- package/dist/driver-utils-beta.d.ts +2 -2
- package/dist/driver-utils-public.d.ts +2 -2
- package/dist/driver-utils-untrimmed.d.ts +9 -9
- package/dist/index.d.ts +17 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -63
- package/dist/index.js.map +1 -1
- package/dist/insecureUrlResolver.d.ts +3 -2
- package/dist/insecureUrlResolver.d.ts.map +1 -1
- package/dist/insecureUrlResolver.js +8 -6
- package/dist/insecureUrlResolver.js.map +1 -1
- package/dist/messageRecognition.d.ts.map +1 -1
- package/dist/messageRecognition.js +2 -2
- package/dist/messageRecognition.js.map +1 -1
- package/dist/network.d.ts +2 -2
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js.map +1 -1
- package/dist/networkUtils.d.ts +2 -3
- package/dist/networkUtils.d.ts.map +1 -1
- package/dist/networkUtils.js +3 -3
- package/dist/networkUtils.js.map +1 -1
- package/dist/package.json +3 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/parallelRequests.d.ts +7 -3
- package/dist/parallelRequests.d.ts.map +1 -1
- package/dist/parallelRequests.js +12 -12
- package/dist/parallelRequests.js.map +1 -1
- package/dist/prefetchDocumentStorageService.d.ts +1 -1
- package/dist/prefetchDocumentStorageService.d.ts.map +1 -1
- package/dist/prefetchDocumentStorageService.js +6 -6
- package/dist/prefetchDocumentStorageService.js.map +1 -1
- package/dist/runWithRetry.js +6 -6
- package/dist/runWithRetry.js.map +1 -1
- package/dist/treeConversions.d.ts.map +1 -1
- package/dist/treeConversions.js +7 -6
- package/dist/treeConversions.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/adapters/compression/{compressionTypes.d.mts → compressionTypes.d.ts} +1 -1
- package/lib/adapters/compression/compressionTypes.d.ts.map +1 -0
- package/lib/adapters/compression/{compressionTypes.mjs → compressionTypes.js} +1 -1
- package/lib/adapters/compression/compressionTypes.js.map +1 -0
- package/lib/adapters/compression/{documentServiceCompressionAdapter.d.mts → documentServiceCompressionAdapter.d.ts} +3 -3
- package/lib/adapters/compression/documentServiceCompressionAdapter.d.ts.map +1 -0
- package/lib/adapters/compression/{documentServiceCompressionAdapter.mjs → documentServiceCompressionAdapter.js} +3 -3
- package/lib/adapters/compression/documentServiceCompressionAdapter.js.map +1 -0
- package/lib/adapters/compression/{documentServiceFactoryCompressionAdapter.d.mts → documentServiceFactoryCompressionAdapter.d.ts} +3 -3
- package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.d.ts.map +1 -0
- package/lib/adapters/compression/{documentServiceFactoryCompressionAdapter.mjs → documentServiceFactoryCompressionAdapter.js} +4 -4
- package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.js.map +1 -0
- package/lib/adapters/compression/{index.d.mts → index.d.ts} +4 -4
- package/lib/adapters/compression/index.d.ts.map +1 -0
- package/lib/adapters/compression/{index.mjs → index.js} +4 -4
- package/lib/adapters/compression/index.js.map +1 -0
- package/lib/adapters/compression/summaryblob/{documentStorageServiceSummaryBlobCompressionAdapter.d.mts → documentStorageServiceSummaryBlobCompressionAdapter.d.ts} +3 -3
- package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.ts.map +1 -0
- package/lib/adapters/compression/summaryblob/{documentStorageServiceSummaryBlobCompressionAdapter.mjs → documentStorageServiceSummaryBlobCompressionAdapter.js} +3 -3
- package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.js.map +1 -0
- package/lib/adapters/compression/summaryblob/{index.mjs → index.d.ts} +2 -2
- package/lib/adapters/compression/summaryblob/index.d.ts.map +1 -0
- package/lib/adapters/compression/summaryblob/{index.d.mts → index.js} +2 -2
- package/lib/adapters/compression/summaryblob/index.js.map +1 -0
- package/lib/adapters/{index.d.mts → index.d.ts} +3 -3
- package/lib/adapters/index.d.ts.map +1 -0
- package/lib/adapters/{index.mjs → index.js} +3 -3
- package/lib/adapters/index.js.map +1 -0
- package/lib/adapters/{predefinedAdapters.d.mts → predefinedAdapters.d.ts} +2 -2
- package/lib/adapters/predefinedAdapters.d.ts.map +1 -0
- package/lib/adapters/{predefinedAdapters.mjs → predefinedAdapters.js} +2 -2
- package/lib/adapters/predefinedAdapters.js.map +1 -0
- package/lib/{blob.d.mts → blob.d.ts} +1 -1
- package/lib/blob.d.ts.map +1 -0
- package/lib/{blob.mjs → blob.js} +1 -1
- package/lib/blob.js.map +1 -0
- package/lib/{buildSnapshotTree.d.mts → buildSnapshotTree.d.ts} +1 -1
- package/lib/buildSnapshotTree.d.ts.map +1 -0
- package/lib/{buildSnapshotTree.mjs → buildSnapshotTree.js} +1 -1
- package/lib/buildSnapshotTree.js.map +1 -0
- package/lib/{documentServiceFactoryProxy.d.mts → documentServiceFactoryProxy.d.ts} +1 -1
- package/lib/documentServiceFactoryProxy.d.ts.map +1 -0
- package/lib/{documentServiceFactoryProxy.mjs → documentServiceFactoryProxy.js} +1 -1
- package/lib/documentServiceFactoryProxy.js.map +1 -0
- package/lib/{documentServiceProxy.d.mts → documentServiceProxy.d.ts} +1 -1
- package/lib/documentServiceProxy.d.ts.map +1 -0
- package/lib/{documentServiceProxy.mjs → documentServiceProxy.js} +1 -1
- package/lib/documentServiceProxy.js.map +1 -0
- package/lib/{documentStorageServiceProxy.d.mts → documentStorageServiceProxy.d.ts} +1 -2
- package/lib/documentStorageServiceProxy.d.ts.map +1 -0
- package/lib/{documentStorageServiceProxy.mjs → documentStorageServiceProxy.js} +1 -4
- package/lib/documentStorageServiceProxy.js.map +1 -0
- package/lib/{driver-utils-alpha.d.mts → driver-utils-alpha.d.ts} +2 -2
- package/lib/{driver-utils-public.d.mts → driver-utils-beta.d.ts} +2 -2
- package/lib/{driver-utils-beta.d.mts → driver-utils-public.d.ts} +2 -2
- package/lib/{driver-utils-untrimmed.d.mts → driver-utils-untrimmed.d.ts} +9 -9
- package/lib/{error.d.mts → error.d.ts} +1 -1
- package/lib/error.d.ts.map +1 -0
- package/lib/{error.mjs → error.js} +1 -1
- package/lib/error.js.map +1 -0
- package/lib/{index.d.mts → index.d.ts} +18 -18
- package/lib/index.d.ts.map +1 -0
- package/lib/{index.mjs → index.js} +18 -18
- package/lib/index.js.map +1 -0
- package/lib/{insecureUrlResolver.d.mts → insecureUrlResolver.d.ts} +4 -3
- package/lib/insecureUrlResolver.d.ts.map +1 -0
- package/lib/{insecureUrlResolver.mjs → insecureUrlResolver.js} +9 -7
- package/lib/insecureUrlResolver.js.map +1 -0
- package/lib/{messageRecognition.d.mts → messageRecognition.d.ts} +5 -1
- package/lib/messageRecognition.d.ts.map +1 -0
- package/lib/{messageRecognition.mjs → messageRecognition.js} +5 -1
- package/lib/messageRecognition.js.map +1 -0
- package/lib/{network.d.mts → network.d.ts} +3 -3
- package/lib/network.d.ts.map +1 -0
- package/lib/{network.mjs → network.js} +1 -1
- package/lib/network.js.map +1 -0
- package/lib/networkUtils.d.ts +10 -0
- package/lib/networkUtils.d.ts.map +1 -0
- package/lib/{networkUtils.mjs → networkUtils.js} +2 -2
- package/lib/networkUtils.js.map +1 -0
- package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
- package/lib/packageVersion.d.ts.map +1 -0
- package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
- package/lib/packageVersion.js.map +1 -0
- package/lib/{parallelRequests.d.mts → parallelRequests.d.ts} +8 -4
- package/lib/parallelRequests.d.ts.map +1 -0
- package/lib/{parallelRequests.mjs → parallelRequests.js} +10 -5
- package/lib/parallelRequests.js.map +1 -0
- package/lib/{prefetchDocumentStorageService.d.mts → prefetchDocumentStorageService.d.ts} +6 -2
- package/lib/prefetchDocumentStorageService.d.ts.map +1 -0
- package/lib/{prefetchDocumentStorageService.mjs → prefetchDocumentStorageService.js} +7 -3
- package/lib/prefetchDocumentStorageService.js.map +1 -0
- package/lib/{rateLimiter.d.mts → rateLimiter.d.ts} +1 -1
- package/lib/rateLimiter.d.ts.map +1 -0
- package/lib/{rateLimiter.mjs → rateLimiter.js} +1 -1
- package/lib/rateLimiter.js.map +1 -0
- package/lib/{readAndParse.d.mts → readAndParse.d.ts} +1 -1
- package/lib/readAndParse.d.ts.map +1 -0
- package/lib/{readAndParse.mjs → readAndParse.js} +1 -1
- package/lib/readAndParse.js.map +1 -0
- package/lib/{runWithRetry.d.mts → runWithRetry.d.ts} +1 -1
- package/lib/runWithRetry.d.ts.map +1 -0
- package/lib/{runWithRetry.mjs → runWithRetry.js} +3 -3
- package/lib/runWithRetry.js.map +1 -0
- package/lib/{storageUtils.d.mts → storageUtils.d.ts} +1 -1
- package/lib/storageUtils.d.ts.map +1 -0
- package/lib/{storageUtils.mjs → storageUtils.js} +1 -1
- package/lib/storageUtils.js.map +1 -0
- package/lib/{summaryForCreateNew.d.mts → summaryForCreateNew.d.ts} +1 -1
- package/lib/summaryForCreateNew.d.ts.map +1 -0
- package/lib/{summaryForCreateNew.mjs → summaryForCreateNew.js} +1 -1
- package/lib/summaryForCreateNew.js.map +1 -0
- package/lib/test/insecureUrlResolverTest.spec.js +101 -0
- package/lib/test/insecureUrlResolverTest.spec.js.map +1 -0
- package/lib/test/parallelRequests.spec.js +186 -0
- package/lib/test/parallelRequests.spec.js.map +1 -0
- package/lib/test/rateLimiter.spec.js +85 -0
- package/lib/test/rateLimiter.spec.js.map +1 -0
- package/lib/test/runWithRetry.spec.js +180 -0
- package/lib/test/runWithRetry.spec.js.map +1 -0
- package/lib/test/summaryCompressionData.js +170 -0
- package/lib/test/summaryCompressionData.js.map +1 -0
- package/lib/test/summaryCompresssionTester.spec.js +429 -0
- package/lib/test/summaryCompresssionTester.spec.js.map +1 -0
- package/lib/test/types/validateDriverUtilsPrevious.generated.js +108 -0
- package/lib/test/types/validateDriverUtilsPrevious.generated.js.map +1 -0
- package/lib/{treeConversions.d.mts → treeConversions.d.ts} +1 -1
- package/lib/treeConversions.d.ts.map +1 -0
- package/lib/{treeConversions.mjs → treeConversions.js} +4 -3
- package/lib/treeConversions.js.map +1 -0
- package/package.json +74 -27
- package/src/adapters/compression/documentServiceCompressionAdapter.ts +3 -3
- package/src/adapters/compression/documentServiceFactoryCompressionAdapter.ts +4 -4
- package/src/adapters/compression/index.ts +3 -3
- package/src/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.ts +2 -2
- package/src/adapters/compression/summaryblob/index.ts +1 -1
- package/src/adapters/index.ts +2 -2
- package/src/adapters/predefinedAdapters.ts +1 -1
- package/src/documentStorageServiceProxy.ts +0 -4
- package/src/index.ts +17 -17
- package/src/insecureUrlResolver.ts +7 -5
- package/src/messageRecognition.ts +1 -0
- package/src/network.ts +2 -2
- package/src/networkUtils.ts +3 -4
- package/src/packageVersion.ts +1 -1
- package/src/parallelRequests.ts +12 -11
- package/src/prefetchDocumentStorageService.ts +3 -2
- package/src/runWithRetry.ts +2 -2
- package/src/treeConversions.ts +3 -2
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -5
- package/lib/adapters/compression/compressionTypes.d.mts.map +0 -1
- package/lib/adapters/compression/compressionTypes.mjs.map +0 -1
- package/lib/adapters/compression/documentServiceCompressionAdapter.d.mts.map +0 -1
- package/lib/adapters/compression/documentServiceCompressionAdapter.mjs.map +0 -1
- package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.d.mts.map +0 -1
- package/lib/adapters/compression/documentServiceFactoryCompressionAdapter.mjs.map +0 -1
- package/lib/adapters/compression/index.d.mts.map +0 -1
- package/lib/adapters/compression/index.mjs.map +0 -1
- package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.d.mts.map +0 -1
- package/lib/adapters/compression/summaryblob/documentStorageServiceSummaryBlobCompressionAdapter.mjs.map +0 -1
- package/lib/adapters/compression/summaryblob/index.d.mts.map +0 -1
- package/lib/adapters/compression/summaryblob/index.mjs.map +0 -1
- package/lib/adapters/index.d.mts.map +0 -1
- package/lib/adapters/index.mjs.map +0 -1
- package/lib/adapters/predefinedAdapters.d.mts.map +0 -1
- package/lib/adapters/predefinedAdapters.mjs.map +0 -1
- package/lib/blob.d.mts.map +0 -1
- package/lib/blob.mjs.map +0 -1
- package/lib/buildSnapshotTree.d.mts.map +0 -1
- package/lib/buildSnapshotTree.mjs.map +0 -1
- package/lib/documentServiceFactoryProxy.d.mts.map +0 -1
- package/lib/documentServiceFactoryProxy.mjs.map +0 -1
- package/lib/documentServiceProxy.d.mts.map +0 -1
- package/lib/documentServiceProxy.mjs.map +0 -1
- package/lib/documentStorageServiceProxy.d.mts.map +0 -1
- package/lib/documentStorageServiceProxy.mjs.map +0 -1
- package/lib/error.d.mts.map +0 -1
- package/lib/error.mjs.map +0 -1
- package/lib/index.d.mts.map +0 -1
- package/lib/index.mjs.map +0 -1
- package/lib/insecureUrlResolver.d.mts.map +0 -1
- package/lib/insecureUrlResolver.mjs.map +0 -1
- package/lib/messageRecognition.d.mts.map +0 -1
- package/lib/messageRecognition.mjs.map +0 -1
- package/lib/network.d.mts.map +0 -1
- package/lib/network.mjs.map +0 -1
- package/lib/networkUtils.d.mts +0 -11
- package/lib/networkUtils.d.mts.map +0 -1
- package/lib/networkUtils.mjs.map +0 -1
- package/lib/packageVersion.d.mts.map +0 -1
- package/lib/packageVersion.mjs.map +0 -1
- package/lib/parallelRequests.d.mts.map +0 -1
- package/lib/parallelRequests.mjs.map +0 -1
- package/lib/prefetchDocumentStorageService.d.mts.map +0 -1
- package/lib/prefetchDocumentStorageService.mjs.map +0 -1
- package/lib/rateLimiter.d.mts.map +0 -1
- package/lib/rateLimiter.mjs.map +0 -1
- package/lib/readAndParse.d.mts.map +0 -1
- package/lib/readAndParse.mjs.map +0 -1
- package/lib/runWithRetry.d.mts.map +0 -1
- package/lib/runWithRetry.mjs.map +0 -1
- package/lib/storageUtils.d.mts.map +0 -1
- package/lib/storageUtils.mjs.map +0 -1
- package/lib/summaryForCreateNew.d.mts.map +0 -1
- package/lib/summaryForCreateNew.mjs.map +0 -1
- package/lib/treeConversions.d.mts.map +0 -1
- package/lib/treeConversions.mjs.map +0 -1
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import { strict as assert } from "assert";
|
|
6
|
+
import { DriverErrorTypes } from "@fluidframework/driver-definitions";
|
|
7
|
+
import { createChildLogger } from "@fluidframework/telemetry-utils";
|
|
8
|
+
import { runWithRetry } from "../runWithRetry.js";
|
|
9
|
+
const _setTimeout = global.setTimeout;
|
|
10
|
+
const fastSetTimeout = (callback, ms, ...args) => _setTimeout(callback, ms / 1000.0, ...args);
|
|
11
|
+
async function runWithFastSetTimeout(callback) {
|
|
12
|
+
global.setTimeout = fastSetTimeout;
|
|
13
|
+
return callback().finally(() => {
|
|
14
|
+
global.setTimeout = _setTimeout;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
describe("runWithRetry Tests", () => {
|
|
18
|
+
const logger = createChildLogger();
|
|
19
|
+
it("Should succeed at first time", async () => {
|
|
20
|
+
let retryTimes = 1;
|
|
21
|
+
let success = false;
|
|
22
|
+
const api = async () => {
|
|
23
|
+
retryTimes -= 1;
|
|
24
|
+
return true;
|
|
25
|
+
};
|
|
26
|
+
let emitDelayInfoTimes = 0;
|
|
27
|
+
success = await runWithFastSetTimeout(async () => runWithRetry(api, "test", logger, {
|
|
28
|
+
onRetry: () => {
|
|
29
|
+
emitDelayInfoTimes += 1;
|
|
30
|
+
},
|
|
31
|
+
}));
|
|
32
|
+
assert.strictEqual(retryTimes, 0, "Should succeed at first time");
|
|
33
|
+
assert.strictEqual(success, true, "Retry should succeed ultimately");
|
|
34
|
+
assert.strictEqual(emitDelayInfoTimes, 0, "Should not emit delay at first time");
|
|
35
|
+
});
|
|
36
|
+
it("Check that it retries infinitely", async () => {
|
|
37
|
+
const maxTries = 5;
|
|
38
|
+
let retryTimes = maxTries;
|
|
39
|
+
let success = false;
|
|
40
|
+
const api = async () => {
|
|
41
|
+
if (retryTimes > 0) {
|
|
42
|
+
retryTimes -= 1;
|
|
43
|
+
const error = new Error("Throw error");
|
|
44
|
+
error.retryAfterSeconds = 10;
|
|
45
|
+
error.canRetry = true;
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
};
|
|
50
|
+
let emitDelayInfoTimes = 0;
|
|
51
|
+
success = await runWithFastSetTimeout(async () => runWithRetry(api, "test", logger, {
|
|
52
|
+
onRetry: () => {
|
|
53
|
+
emitDelayInfoTimes += 1;
|
|
54
|
+
},
|
|
55
|
+
}));
|
|
56
|
+
assert.strictEqual(retryTimes, 0, "Should keep retrying until success");
|
|
57
|
+
assert.strictEqual(success, true, "Retry should succeed ultimately");
|
|
58
|
+
assert.strictEqual(emitDelayInfoTimes, maxTries, "Should emit delay at each try");
|
|
59
|
+
});
|
|
60
|
+
it("Check that it retries after retry seconds", async () => {
|
|
61
|
+
let retryTimes = 1;
|
|
62
|
+
let success = false;
|
|
63
|
+
const api = async () => {
|
|
64
|
+
if (retryTimes > 0) {
|
|
65
|
+
retryTimes -= 1;
|
|
66
|
+
const error = new Error("Throttle Error");
|
|
67
|
+
error.errorType = DriverErrorTypes.throttlingError;
|
|
68
|
+
error.retryAfterSeconds = 400;
|
|
69
|
+
error.canRetry = true;
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
};
|
|
74
|
+
success = await runWithFastSetTimeout(async () => runWithRetry(api, "test", logger, {}));
|
|
75
|
+
assert.strictEqual(retryTimes, 0, "Should retry once");
|
|
76
|
+
assert.strictEqual(success, true, "Retry should succeed ultimately");
|
|
77
|
+
});
|
|
78
|
+
it("If error is just a string, should retry as canRetry is not false", async () => {
|
|
79
|
+
let retryTimes = 1;
|
|
80
|
+
let success = false;
|
|
81
|
+
const api = async () => {
|
|
82
|
+
if (retryTimes > 0) {
|
|
83
|
+
retryTimes -= 1;
|
|
84
|
+
const err = new Error("error");
|
|
85
|
+
err.canRetry = true;
|
|
86
|
+
throw err;
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
};
|
|
90
|
+
try {
|
|
91
|
+
success = await runWithFastSetTimeout(async () => runWithRetry(api, "test", logger, {}));
|
|
92
|
+
}
|
|
93
|
+
catch (error) { }
|
|
94
|
+
assert.strictEqual(retryTimes, 0, "Should retry");
|
|
95
|
+
assert.strictEqual(success, true, "Should succeed as retry should be successful");
|
|
96
|
+
});
|
|
97
|
+
it("Should not retry if canRetry is set as false", async () => {
|
|
98
|
+
let retryTimes = 1;
|
|
99
|
+
let success = false;
|
|
100
|
+
const api = async () => {
|
|
101
|
+
if (retryTimes > 0) {
|
|
102
|
+
retryTimes -= 1;
|
|
103
|
+
const error = new Error("error");
|
|
104
|
+
error.canRetry = false;
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
};
|
|
109
|
+
try {
|
|
110
|
+
success = await runWithFastSetTimeout(async () => runWithRetry(api, "test", logger, {}));
|
|
111
|
+
assert.fail("Should not succeed");
|
|
112
|
+
}
|
|
113
|
+
catch (error) { }
|
|
114
|
+
assert.strictEqual(retryTimes, 0, "Should not retry");
|
|
115
|
+
assert.strictEqual(success, false, "Should not succeed as canRetry was not set");
|
|
116
|
+
});
|
|
117
|
+
it("Should not retry if canRetry is not set", async () => {
|
|
118
|
+
let retryTimes = 1;
|
|
119
|
+
let success = false;
|
|
120
|
+
const api = async () => {
|
|
121
|
+
if (retryTimes > 0) {
|
|
122
|
+
retryTimes -= 1;
|
|
123
|
+
const error = new Error("error");
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
};
|
|
128
|
+
try {
|
|
129
|
+
success = await runWithFastSetTimeout(async () => runWithRetry(api, "test", logger, {}));
|
|
130
|
+
assert.fail("Should not succeed");
|
|
131
|
+
}
|
|
132
|
+
catch (error) { }
|
|
133
|
+
assert.strictEqual(retryTimes, 0, "Should not retry");
|
|
134
|
+
assert.strictEqual(success, false, "Should not succeed as canRetry was not set");
|
|
135
|
+
});
|
|
136
|
+
it("Should not retry if it is disabled", async () => {
|
|
137
|
+
let retryTimes = 1;
|
|
138
|
+
let success = false;
|
|
139
|
+
const api = async () => {
|
|
140
|
+
if (retryTimes > 0) {
|
|
141
|
+
retryTimes -= 1;
|
|
142
|
+
const error = new Error("error");
|
|
143
|
+
error.canRetry = true;
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
return true;
|
|
147
|
+
};
|
|
148
|
+
try {
|
|
149
|
+
success = await runWithFastSetTimeout(async () => runWithRetry(api, "test", logger, {
|
|
150
|
+
onRetry: () => {
|
|
151
|
+
throw new Error("disposed");
|
|
152
|
+
},
|
|
153
|
+
}));
|
|
154
|
+
assert.fail("Should not succeed");
|
|
155
|
+
}
|
|
156
|
+
catch (error) { }
|
|
157
|
+
assert.strictEqual(retryTimes, 0, "Should not retry");
|
|
158
|
+
assert.strictEqual(success, false, "Should not succeed as retrying was disabled");
|
|
159
|
+
});
|
|
160
|
+
it("Abort reason is included in thrown exception", async () => {
|
|
161
|
+
const abortController = new AbortController();
|
|
162
|
+
const api = () => {
|
|
163
|
+
abortController.abort("Sample abort reason");
|
|
164
|
+
const error = new Error("aborted");
|
|
165
|
+
error.canRetry = true;
|
|
166
|
+
throw error;
|
|
167
|
+
};
|
|
168
|
+
try {
|
|
169
|
+
await runWithFastSetTimeout(async () => runWithRetry(api, "test", logger, {
|
|
170
|
+
cancel: abortController.signal,
|
|
171
|
+
}));
|
|
172
|
+
assert.fail("Should not succeed");
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
assert.strictEqual(error.message, "runWithRetry was Aborted");
|
|
176
|
+
assert.strictEqual(error.reason, "Sample abort reason");
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
//# sourceMappingURL=runWithRetry.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runWithRetry.spec.js","sourceRoot":"","sources":["../../src/test/runWithRetry.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"assert\";\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions\";\nimport { createChildLogger } from \"@fluidframework/telemetry-utils\";\nimport { runWithRetry } from \"../runWithRetry.js\";\n\nconst _setTimeout = global.setTimeout;\nconst fastSetTimeout: any = (callback: (...cbArgs: any[]) => void, ms: number, ...args: any[]) =>\n\t_setTimeout(callback, ms / 1000.0, ...args);\nasync function runWithFastSetTimeout<T>(callback: () => Promise<T>): Promise<T> {\n\tglobal.setTimeout = fastSetTimeout;\n\treturn callback().finally(() => {\n\t\tglobal.setTimeout = _setTimeout;\n\t});\n}\n\ndescribe(\"runWithRetry Tests\", () => {\n\tconst logger = createChildLogger();\n\n\tit(\"Should succeed at first time\", async () => {\n\t\tlet retryTimes: number = 1;\n\t\tlet success = false;\n\t\tconst api = async () => {\n\t\t\tretryTimes -= 1;\n\t\t\treturn true;\n\t\t};\n\n\t\tlet emitDelayInfoTimes: number = 0;\n\t\tsuccess = await runWithFastSetTimeout(async () =>\n\t\t\trunWithRetry(api, \"test\", logger, {\n\t\t\t\tonRetry: () => {\n\t\t\t\t\temitDelayInfoTimes += 1;\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\tassert.strictEqual(retryTimes, 0, \"Should succeed at first time\");\n\t\tassert.strictEqual(success, true, \"Retry should succeed ultimately\");\n\t\tassert.strictEqual(emitDelayInfoTimes, 0, \"Should not emit delay at first time\");\n\t});\n\n\tit(\"Check that it retries infinitely\", async () => {\n\t\tconst maxTries: number = 5;\n\t\tlet retryTimes: number = maxTries;\n\t\tlet success = false;\n\t\tconst api = async () => {\n\t\t\tif (retryTimes > 0) {\n\t\t\t\tretryTimes -= 1;\n\t\t\t\tconst error = new Error(\"Throw error\");\n\t\t\t\t(error as any).retryAfterSeconds = 10;\n\t\t\t\t(error as any).canRetry = true;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\n\t\tlet emitDelayInfoTimes: number = 0;\n\t\tsuccess = await runWithFastSetTimeout(async () =>\n\t\t\trunWithRetry(api, \"test\", logger, {\n\t\t\t\tonRetry: () => {\n\t\t\t\t\temitDelayInfoTimes += 1;\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\tassert.strictEqual(retryTimes, 0, \"Should keep retrying until success\");\n\t\tassert.strictEqual(success, true, \"Retry should succeed ultimately\");\n\t\tassert.strictEqual(emitDelayInfoTimes, maxTries, \"Should emit delay at each try\");\n\t});\n\n\tit(\"Check that it retries after retry seconds\", async () => {\n\t\tlet retryTimes: number = 1;\n\t\tlet success = false;\n\t\tconst api = async () => {\n\t\t\tif (retryTimes > 0) {\n\t\t\t\tretryTimes -= 1;\n\t\t\t\tconst error = new Error(\"Throttle Error\");\n\t\t\t\t(error as any).errorType = DriverErrorTypes.throttlingError;\n\t\t\t\t(error as any).retryAfterSeconds = 400;\n\t\t\t\t(error as any).canRetry = true;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\tsuccess = await runWithFastSetTimeout(async () => runWithRetry(api, \"test\", logger, {}));\n\t\tassert.strictEqual(retryTimes, 0, \"Should retry once\");\n\t\tassert.strictEqual(success, true, \"Retry should succeed ultimately\");\n\t});\n\n\tit(\"If error is just a string, should retry as canRetry is not false\", async () => {\n\t\tlet retryTimes: number = 1;\n\t\tlet success = false;\n\t\tconst api = async () => {\n\t\t\tif (retryTimes > 0) {\n\t\t\t\tretryTimes -= 1;\n\t\t\t\tconst err = new Error(\"error\");\n\t\t\t\t(err as any).canRetry = true;\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\ttry {\n\t\t\tsuccess = await runWithFastSetTimeout(async () =>\n\t\t\t\trunWithRetry(api, \"test\", logger, {}),\n\t\t\t);\n\t\t} catch (error) {}\n\t\tassert.strictEqual(retryTimes, 0, \"Should retry\");\n\t\tassert.strictEqual(success, true, \"Should succeed as retry should be successful\");\n\t});\n\n\tit(\"Should not retry if canRetry is set as false\", async () => {\n\t\tlet retryTimes: number = 1;\n\t\tlet success = false;\n\t\tconst api = async () => {\n\t\t\tif (retryTimes > 0) {\n\t\t\t\tretryTimes -= 1;\n\t\t\t\tconst error = new Error(\"error\");\n\t\t\t\t(error as any).canRetry = false;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\ttry {\n\t\t\tsuccess = await runWithFastSetTimeout(async () =>\n\t\t\t\trunWithRetry(api, \"test\", logger, {}),\n\t\t\t);\n\t\t\tassert.fail(\"Should not succeed\");\n\t\t} catch (error) {}\n\t\tassert.strictEqual(retryTimes, 0, \"Should not retry\");\n\t\tassert.strictEqual(success, false, \"Should not succeed as canRetry was not set\");\n\t});\n\n\tit(\"Should not retry if canRetry is not set\", async () => {\n\t\tlet retryTimes: number = 1;\n\t\tlet success = false;\n\t\tconst api = async () => {\n\t\t\tif (retryTimes > 0) {\n\t\t\t\tretryTimes -= 1;\n\t\t\t\tconst error = new Error(\"error\");\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\ttry {\n\t\t\tsuccess = await runWithFastSetTimeout(async () =>\n\t\t\t\trunWithRetry(api, \"test\", logger, {}),\n\t\t\t);\n\t\t\tassert.fail(\"Should not succeed\");\n\t\t} catch (error) {}\n\t\tassert.strictEqual(retryTimes, 0, \"Should not retry\");\n\t\tassert.strictEqual(success, false, \"Should not succeed as canRetry was not set\");\n\t});\n\n\tit(\"Should not retry if it is disabled\", async () => {\n\t\tlet retryTimes: number = 1;\n\t\tlet success = false;\n\t\tconst api = async () => {\n\t\t\tif (retryTimes > 0) {\n\t\t\t\tretryTimes -= 1;\n\t\t\t\tconst error = new Error(\"error\");\n\t\t\t\t(error as any).canRetry = true;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\ttry {\n\t\t\tsuccess = await runWithFastSetTimeout(async () =>\n\t\t\t\trunWithRetry(api, \"test\", logger, {\n\t\t\t\t\tonRetry: () => {\n\t\t\t\t\t\tthrow new Error(\"disposed\");\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t\tassert.fail(\"Should not succeed\");\n\t\t} catch (error) {}\n\t\tassert.strictEqual(retryTimes, 0, \"Should not retry\");\n\t\tassert.strictEqual(success, false, \"Should not succeed as retrying was disabled\");\n\t});\n\n\tit(\"Abort reason is included in thrown exception\", async () => {\n\t\tconst abortController = new AbortController();\n\n\t\tconst api = () => {\n\t\t\tabortController.abort(\"Sample abort reason\");\n\t\t\tconst error = new Error(\"aborted\");\n\t\t\t(error as any).canRetry = true;\n\t\t\tthrow error;\n\t\t};\n\t\ttry {\n\t\t\tawait runWithFastSetTimeout(async () =>\n\t\t\t\trunWithRetry(api, \"test\", logger, {\n\t\t\t\t\tcancel: abortController.signal,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tassert.fail(\"Should not succeed\");\n\t\t} catch (error) {\n\t\t\tassert.strictEqual((error as any).message, \"runWithRetry was Aborted\");\n\t\t\tassert.strictEqual((error as any).reason, \"Sample abort reason\");\n\t\t}\n\t});\n});\n"]}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
/* eslint-disable @typescript-eslint/dot-notation */
|
|
6
|
+
export const summaryTemplate = {
|
|
7
|
+
type: 1,
|
|
8
|
+
tree: {
|
|
9
|
+
".channels": {
|
|
10
|
+
type: 1,
|
|
11
|
+
tree: {
|
|
12
|
+
rootDOId: {
|
|
13
|
+
type: 1,
|
|
14
|
+
tree: {
|
|
15
|
+
".channels": {
|
|
16
|
+
type: 1,
|
|
17
|
+
tree: {
|
|
18
|
+
"7a99532d-94ec-43ac-8a53-d9f978ad4ae9": {
|
|
19
|
+
type: 1,
|
|
20
|
+
tree: {
|
|
21
|
+
"header": {
|
|
22
|
+
type: 2,
|
|
23
|
+
content: '{"value":"123"}',
|
|
24
|
+
},
|
|
25
|
+
".attributes": {
|
|
26
|
+
type: 2,
|
|
27
|
+
content: '{"type":"https://graph.microsoft.com/types/cell","snapshotFormatVersion":"0.1","packageVersion":"2.0.0-internal.4.2.0"}',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
"root": {
|
|
32
|
+
type: 1,
|
|
33
|
+
tree: {
|
|
34
|
+
"header": {
|
|
35
|
+
type: 2,
|
|
36
|
+
content: '{"blobs":[],"content":{"ci":{"csn":0,"ccIds":[]},"subdirectories":{"initial-objects-key":{"ci":{"csn":-1,"ccIds":["detached"]},"storage":{"tree":{"type":"Plain","value":{"type":"__fluid_handle__","url":"/rootDOId/de68ca53-be31-479e-8d34-a267958997e4"}}}}}}}',
|
|
37
|
+
},
|
|
38
|
+
".attributes": {
|
|
39
|
+
type: 2,
|
|
40
|
+
content: '{"type":"https://graph.microsoft.com/types/directory","snapshotFormatVersion":"0.1","packageVersion":"2.0.0-internal.4.2.0"}',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
".component": {
|
|
47
|
+
type: 2,
|
|
48
|
+
content: '{"pkg":"[\\"rootDO\\"]","summaryFormatVersion":2,"isRootDataStore":true}',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
".metadata": {
|
|
55
|
+
type: 2,
|
|
56
|
+
content: '{"createContainerRuntimeVersion":"2.0.0-internal.4.2.0","createContainerTimestamp":1683180222333,"summaryNumber":2,"summaryFormatVersion":1,"gcFeature":2,"sessionExpiryTimeoutMs":2592000000,"sweepEnabled":false,"sweepTimeoutMs":3110400000,"message":{"clientId":null,"clientSequenceNumber":-1,"minimumSequenceNumber":5,"referenceSequenceNumber":-1,"sequenceNumber":7,"timestamp":1683180249726,"type":"join"},"telemetryDocumentId":"72d29676-b076-43e8-80aa-b8fc7aba1506"}',
|
|
57
|
+
},
|
|
58
|
+
".protocol": {
|
|
59
|
+
type: 1,
|
|
60
|
+
tree: {
|
|
61
|
+
misotest: {
|
|
62
|
+
type: 2,
|
|
63
|
+
content: "ABC",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
".electedSummarizer": {
|
|
68
|
+
type: 2,
|
|
69
|
+
content: '{"electedClientId":"f3bda689-ca40-4b68-b2ea-4c02dac76206","electedParentId":"af12d248-f040-413c-a6d1-8e5bd6619313","electionSequenceNumber":7}',
|
|
70
|
+
},
|
|
71
|
+
"gc": {
|
|
72
|
+
type: 1,
|
|
73
|
+
tree: {
|
|
74
|
+
__gc_root: {
|
|
75
|
+
type: 2,
|
|
76
|
+
content: '{"gcNodes":{"/":{"outboundRoutes":["/rootDOId"]},"/rootDOId":{"outboundRoutes":["/rootDOId/de68ca53-be31-479e-8d34-a267958997e4","/rootDOId/root"]},"/rootDOId/de68ca53-be31-479e-8d34-a267958997e4":{"outboundRoutes":["/rootDOId"]},"/rootDOId/root":{"outboundRoutes":["/rootDOId","/rootDOId/de68ca53-be31-479e-8d34-a267958997e4"]}}}',
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
export const snapshotTree = {
|
|
83
|
+
id: "c26019650fe7fc3c1e9f50b906071296008fd9e0",
|
|
84
|
+
blobs: {
|
|
85
|
+
".electedSummarizer": "1779e5eec3d53d36c476f7e365fe09d5eadb5cb7",
|
|
86
|
+
".metadata": "43a9378e44336b39fc8f86f0511a655511922f11",
|
|
87
|
+
".metadata.blobHeaders": "1",
|
|
88
|
+
},
|
|
89
|
+
trees: {
|
|
90
|
+
".channels": {
|
|
91
|
+
id: "1ac6a4929a0fb18b8093679b19d8eed478c908a0",
|
|
92
|
+
blobs: {},
|
|
93
|
+
commits: {},
|
|
94
|
+
trees: {
|
|
95
|
+
rootDOId: {
|
|
96
|
+
id: "5164ec1ecc2cfe24643347e30624aea2976f61e9",
|
|
97
|
+
blobs: {
|
|
98
|
+
".component": "c35bbe00f9cb9ee99c8af3d4757411abdda3d8f3",
|
|
99
|
+
},
|
|
100
|
+
commits: {},
|
|
101
|
+
trees: {
|
|
102
|
+
".channels": {
|
|
103
|
+
id: "9a415dc0f942849ac3d686ec8f8049a4d1484ee1",
|
|
104
|
+
blobs: {},
|
|
105
|
+
commits: {},
|
|
106
|
+
trees: {
|
|
107
|
+
"7a99532d-94ec-43ac-8a53-d9f978ad4ae9": {
|
|
108
|
+
id: "353aab1f600b0dd527073e286b4d6dd853c0d212",
|
|
109
|
+
blobs: {
|
|
110
|
+
".attributes": "d67e9b02c97d8b2d13b1ea88c4198ea6cdae3c06",
|
|
111
|
+
"compressed_2_header": "ee84b67e86708c9dd7fc79ff8f3380b78f000b79",
|
|
112
|
+
},
|
|
113
|
+
commits: {},
|
|
114
|
+
trees: {},
|
|
115
|
+
},
|
|
116
|
+
"root": {
|
|
117
|
+
id: "771be006709c44442dbcd69424b8f89e14a05de8",
|
|
118
|
+
blobs: {
|
|
119
|
+
".attributes": "3ec4a65a74f0e2fab11aaac9b31f284a8c931850",
|
|
120
|
+
"header": "c2de09aa55c92d79b9292d6efb469592915f0b1f",
|
|
121
|
+
},
|
|
122
|
+
commits: {},
|
|
123
|
+
trees: {},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
".logTail": {
|
|
132
|
+
id: "9ae35f3164c7c34c4ed29107af49f2913dc2e948",
|
|
133
|
+
blobs: {
|
|
134
|
+
logTail: "8240863a82570a9eff14ecbc06cee9886d5dc560",
|
|
135
|
+
},
|
|
136
|
+
commits: {},
|
|
137
|
+
trees: {},
|
|
138
|
+
},
|
|
139
|
+
".protocol": {
|
|
140
|
+
id: "f4ab61e0c13030ccd4f56550fcf5e5c271de7152",
|
|
141
|
+
blobs: {
|
|
142
|
+
attributes: "78c80fb681c6b152c48f57526a76bd31ec3b1baf",
|
|
143
|
+
quorumMembers: "cf6929236bacbea80764beb3aba8645210f4af57",
|
|
144
|
+
quorumProposals: "0637a088a01e8ddab3bf3fa98dbe804cbde1a0dc",
|
|
145
|
+
quorumValues: "c730f7a6ff8c606cc2b7d083e5a9705bff0d7029",
|
|
146
|
+
misotest: "misotest-id",
|
|
147
|
+
},
|
|
148
|
+
commits: {},
|
|
149
|
+
trees: {},
|
|
150
|
+
},
|
|
151
|
+
".serviceProtocol": {
|
|
152
|
+
id: "029fc548f99d4b9ef43cd98c401bc5a9f3a2f117",
|
|
153
|
+
blobs: {
|
|
154
|
+
deli: "041b2b724ca853a9d65f4917d5ddb97e91fd7408",
|
|
155
|
+
scribe: "97a0b1e36b67946044b7141ce62cbab6a5996723",
|
|
156
|
+
},
|
|
157
|
+
commits: {},
|
|
158
|
+
trees: {},
|
|
159
|
+
},
|
|
160
|
+
"gc": {
|
|
161
|
+
id: "e8ed0760ac37fd8042020559779ce80b1d88f266",
|
|
162
|
+
blobs: {
|
|
163
|
+
__gc_root: "018d97818f8b519f99c418cb3c33ce5cc4e38e3f",
|
|
164
|
+
},
|
|
165
|
+
commits: {},
|
|
166
|
+
trees: {},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=summaryCompressionData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summaryCompressionData.js","sourceRoot":"","sources":["../../src/test/summaryCompressionData.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/dot-notation */\n\nexport const summaryTemplate = {\n\ttype: 1,\n\ttree: {\n\t\t\".channels\": {\n\t\t\ttype: 1,\n\t\t\ttree: {\n\t\t\t\trootDOId: {\n\t\t\t\t\ttype: 1,\n\t\t\t\t\ttree: {\n\t\t\t\t\t\t\".channels\": {\n\t\t\t\t\t\t\ttype: 1,\n\t\t\t\t\t\t\ttree: {\n\t\t\t\t\t\t\t\t\"7a99532d-94ec-43ac-8a53-d9f978ad4ae9\": {\n\t\t\t\t\t\t\t\t\ttype: 1,\n\t\t\t\t\t\t\t\t\ttree: {\n\t\t\t\t\t\t\t\t\t\t\"header\": {\n\t\t\t\t\t\t\t\t\t\t\ttype: 2,\n\t\t\t\t\t\t\t\t\t\t\tcontent: '{\"value\":\"123\"}',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\".attributes\": {\n\t\t\t\t\t\t\t\t\t\t\ttype: 2,\n\t\t\t\t\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\t\t\t\t\t'{\"type\":\"https://graph.microsoft.com/types/cell\",\"snapshotFormatVersion\":\"0.1\",\"packageVersion\":\"2.0.0-internal.4.2.0\"}',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"root\": {\n\t\t\t\t\t\t\t\t\ttype: 1,\n\t\t\t\t\t\t\t\t\ttree: {\n\t\t\t\t\t\t\t\t\t\t\"header\": {\n\t\t\t\t\t\t\t\t\t\t\ttype: 2,\n\t\t\t\t\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\t\t\t\t\t'{\"blobs\":[],\"content\":{\"ci\":{\"csn\":0,\"ccIds\":[]},\"subdirectories\":{\"initial-objects-key\":{\"ci\":{\"csn\":-1,\"ccIds\":[\"detached\"]},\"storage\":{\"tree\":{\"type\":\"Plain\",\"value\":{\"type\":\"__fluid_handle__\",\"url\":\"/rootDOId/de68ca53-be31-479e-8d34-a267958997e4\"}}}}}}}',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\".attributes\": {\n\t\t\t\t\t\t\t\t\t\t\ttype: 2,\n\t\t\t\t\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\t\t\t\t\t'{\"type\":\"https://graph.microsoft.com/types/directory\",\"snapshotFormatVersion\":\"0.1\",\"packageVersion\":\"2.0.0-internal.4.2.0\"}',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\".component\": {\n\t\t\t\t\t\t\ttype: 2,\n\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\t'{\"pkg\":\"[\\\\\"rootDO\\\\\"]\",\"summaryFormatVersion\":2,\"isRootDataStore\":true}',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\".metadata\": {\n\t\t\ttype: 2,\n\t\t\tcontent:\n\t\t\t\t'{\"createContainerRuntimeVersion\":\"2.0.0-internal.4.2.0\",\"createContainerTimestamp\":1683180222333,\"summaryNumber\":2,\"summaryFormatVersion\":1,\"gcFeature\":2,\"sessionExpiryTimeoutMs\":2592000000,\"sweepEnabled\":false,\"sweepTimeoutMs\":3110400000,\"message\":{\"clientId\":null,\"clientSequenceNumber\":-1,\"minimumSequenceNumber\":5,\"referenceSequenceNumber\":-1,\"sequenceNumber\":7,\"timestamp\":1683180249726,\"type\":\"join\"},\"telemetryDocumentId\":\"72d29676-b076-43e8-80aa-b8fc7aba1506\"}',\n\t\t},\n\t\t\".protocol\": {\n\t\t\ttype: 1,\n\t\t\ttree: {\n\t\t\t\tmisotest: {\n\t\t\t\t\ttype: 2,\n\t\t\t\t\tcontent: \"ABC\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\".electedSummarizer\": {\n\t\t\ttype: 2,\n\t\t\tcontent:\n\t\t\t\t'{\"electedClientId\":\"f3bda689-ca40-4b68-b2ea-4c02dac76206\",\"electedParentId\":\"af12d248-f040-413c-a6d1-8e5bd6619313\",\"electionSequenceNumber\":7}',\n\t\t},\n\t\t\"gc\": {\n\t\t\ttype: 1,\n\t\t\ttree: {\n\t\t\t\t__gc_root: {\n\t\t\t\t\ttype: 2,\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t'{\"gcNodes\":{\"/\":{\"outboundRoutes\":[\"/rootDOId\"]},\"/rootDOId\":{\"outboundRoutes\":[\"/rootDOId/de68ca53-be31-479e-8d34-a267958997e4\",\"/rootDOId/root\"]},\"/rootDOId/de68ca53-be31-479e-8d34-a267958997e4\":{\"outboundRoutes\":[\"/rootDOId\"]},\"/rootDOId/root\":{\"outboundRoutes\":[\"/rootDOId\",\"/rootDOId/de68ca53-be31-479e-8d34-a267958997e4\"]}}}',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport const snapshotTree = {\n\tid: \"c26019650fe7fc3c1e9f50b906071296008fd9e0\",\n\tblobs: {\n\t\t\".electedSummarizer\": \"1779e5eec3d53d36c476f7e365fe09d5eadb5cb7\",\n\t\t\".metadata\": \"43a9378e44336b39fc8f86f0511a655511922f11\",\n\t\t\".metadata.blobHeaders\": \"1\",\n\t},\n\ttrees: {\n\t\t\".channels\": {\n\t\t\tid: \"1ac6a4929a0fb18b8093679b19d8eed478c908a0\",\n\t\t\tblobs: {},\n\t\t\tcommits: {},\n\t\t\ttrees: {\n\t\t\t\trootDOId: {\n\t\t\t\t\tid: \"5164ec1ecc2cfe24643347e30624aea2976f61e9\",\n\t\t\t\t\tblobs: {\n\t\t\t\t\t\t\".component\": \"c35bbe00f9cb9ee99c8af3d4757411abdda3d8f3\",\n\t\t\t\t\t},\n\t\t\t\t\tcommits: {},\n\t\t\t\t\ttrees: {\n\t\t\t\t\t\t\".channels\": {\n\t\t\t\t\t\t\tid: \"9a415dc0f942849ac3d686ec8f8049a4d1484ee1\",\n\t\t\t\t\t\t\tblobs: {},\n\t\t\t\t\t\t\tcommits: {},\n\t\t\t\t\t\t\ttrees: {\n\t\t\t\t\t\t\t\t\"7a99532d-94ec-43ac-8a53-d9f978ad4ae9\": {\n\t\t\t\t\t\t\t\t\tid: \"353aab1f600b0dd527073e286b4d6dd853c0d212\",\n\t\t\t\t\t\t\t\t\tblobs: {\n\t\t\t\t\t\t\t\t\t\t\".attributes\": \"d67e9b02c97d8b2d13b1ea88c4198ea6cdae3c06\",\n\t\t\t\t\t\t\t\t\t\t\"compressed_2_header\":\n\t\t\t\t\t\t\t\t\t\t\t\"ee84b67e86708c9dd7fc79ff8f3380b78f000b79\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcommits: {},\n\t\t\t\t\t\t\t\t\ttrees: {},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"root\": {\n\t\t\t\t\t\t\t\t\tid: \"771be006709c44442dbcd69424b8f89e14a05de8\",\n\t\t\t\t\t\t\t\t\tblobs: {\n\t\t\t\t\t\t\t\t\t\t\".attributes\": \"3ec4a65a74f0e2fab11aaac9b31f284a8c931850\",\n\t\t\t\t\t\t\t\t\t\t\"header\": \"c2de09aa55c92d79b9292d6efb469592915f0b1f\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcommits: {},\n\t\t\t\t\t\t\t\t\ttrees: {},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t\".logTail\": {\n\t\t\tid: \"9ae35f3164c7c34c4ed29107af49f2913dc2e948\",\n\t\t\tblobs: {\n\t\t\t\tlogTail: \"8240863a82570a9eff14ecbc06cee9886d5dc560\",\n\t\t\t},\n\t\t\tcommits: {},\n\t\t\ttrees: {},\n\t\t},\n\t\t\".protocol\": {\n\t\t\tid: \"f4ab61e0c13030ccd4f56550fcf5e5c271de7152\",\n\t\t\tblobs: {\n\t\t\t\tattributes: \"78c80fb681c6b152c48f57526a76bd31ec3b1baf\",\n\t\t\t\tquorumMembers: \"cf6929236bacbea80764beb3aba8645210f4af57\",\n\t\t\t\tquorumProposals: \"0637a088a01e8ddab3bf3fa98dbe804cbde1a0dc\",\n\t\t\t\tquorumValues: \"c730f7a6ff8c606cc2b7d083e5a9705bff0d7029\",\n\t\t\t\tmisotest: \"misotest-id\",\n\t\t\t},\n\t\t\tcommits: {},\n\t\t\ttrees: {},\n\t\t},\n\t\t\".serviceProtocol\": {\n\t\t\tid: \"029fc548f99d4b9ef43cd98c401bc5a9f3a2f117\",\n\t\t\tblobs: {\n\t\t\t\tdeli: \"041b2b724ca853a9d65f4917d5ddb97e91fd7408\",\n\t\t\t\tscribe: \"97a0b1e36b67946044b7141ce62cbab6a5996723\",\n\t\t\t},\n\t\t\tcommits: {},\n\t\t\ttrees: {},\n\t\t},\n\t\t\"gc\": {\n\t\t\tid: \"e8ed0760ac37fd8042020559779ce80b1d88f266\",\n\t\t\tblobs: {\n\t\t\t\t__gc_root: \"018d97818f8b519f99c418cb3c33ce5cc4e38e3f\",\n\t\t\t},\n\t\t\tcommits: {},\n\t\t\ttrees: {},\n\t\t},\n\t},\n};\n"]}
|