@fluidframework/test-utils 2.0.0-dev-rc.1.0.0.225277 → 2.0.0-dev-rc.1.0.0.232845
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/CHANGELOG.md +34 -0
- package/api-report/test-utils.api.md +9 -3
- package/dist/TestConfigs.d.ts +14 -1
- package/dist/TestConfigs.d.ts.map +1 -1
- package/dist/TestConfigs.js +14 -3
- package/dist/TestConfigs.js.map +1 -1
- package/dist/TestSummaryUtils.d.ts.map +1 -1
- package/dist/TestSummaryUtils.js +27 -4
- package/dist/TestSummaryUtils.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/test-utils-alpha.d.ts +4 -2
- package/dist/test-utils-beta.d.ts +4 -2
- package/dist/test-utils-public.d.ts +4 -2
- package/dist/test-utils-untrimmed.d.ts +19 -5
- package/dist/tsdoc-metadata.json +1 -1
- package/package.json +33 -28
- package/src/TestConfigs.ts +25 -3
- package/src/TestSummaryUtils.ts +30 -7
- package/src/index.ts +1 -1
- package/src/packageVersion.ts +1 -1
- /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# @fluidframework/test-utils
|
|
2
2
|
|
|
3
|
+
## 2.0.0-rc.1.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Updated server dependencies ([#19122](https://github.com/microsoft/FluidFramework/issues/19122)) [25366b4229](https://github.com/microsoft/FluidFramework/commits/25366b422918cb43685c5f328b50450749592902)
|
|
8
|
+
|
|
9
|
+
The following Fluid server dependencies have been updated to the latest version, 3.0.0. [See the full changelog.](https://github.com/microsoft/FluidFramework/releases/tag/server_v3.0.0)
|
|
10
|
+
|
|
11
|
+
- @fluidframework/gitresources
|
|
12
|
+
- @fluidframework/server-kafka-orderer
|
|
13
|
+
- @fluidframework/server-lambdas
|
|
14
|
+
- @fluidframework/server-lambdas-driver
|
|
15
|
+
- @fluidframework/server-local-server
|
|
16
|
+
- @fluidframework/server-memory-orderer
|
|
17
|
+
- @fluidframework/protocol-base
|
|
18
|
+
- @fluidframework/server-routerlicious
|
|
19
|
+
- @fluidframework/server-routerlicious-base
|
|
20
|
+
- @fluidframework/server-services
|
|
21
|
+
- @fluidframework/server-services-client
|
|
22
|
+
- @fluidframework/server-services-core
|
|
23
|
+
- @fluidframework/server-services-ordering-kafkanode
|
|
24
|
+
- @fluidframework/server-services-ordering-rdkafka
|
|
25
|
+
- @fluidframework/server-services-ordering-zookeeper
|
|
26
|
+
- @fluidframework/server-services-shared
|
|
27
|
+
- @fluidframework/server-services-telemetry
|
|
28
|
+
- @fluidframework/server-services-utils
|
|
29
|
+
- @fluidframework/server-test-utils
|
|
30
|
+
- tinylicious
|
|
31
|
+
|
|
32
|
+
- Updated @fluidframework/protocol-definitions ([#19122](https://github.com/microsoft/FluidFramework/issues/19122)) [25366b4229](https://github.com/microsoft/FluidFramework/commits/25366b422918cb43685c5f328b50450749592902)
|
|
33
|
+
|
|
34
|
+
The @fluidframework/protocol-definitions dependency has been upgraded to v3.1.0. [See the full
|
|
35
|
+
changelog.](https://github.com/microsoft/FluidFramework/blob/main/common/lib/protocol-definitions/CHANGELOG.md#310)
|
|
36
|
+
|
|
3
37
|
## 2.0.0-internal.8.0.0
|
|
4
38
|
|
|
5
39
|
### Major Changes
|
|
@@ -89,6 +89,9 @@ export function createSummarizerFromFactory(provider: ITestObjectProvider, conta
|
|
|
89
89
|
summarizer: ISummarizer;
|
|
90
90
|
}>;
|
|
91
91
|
|
|
92
|
+
// @internal
|
|
93
|
+
export const createTestConfigProvider: () => ITestConfigProvider;
|
|
94
|
+
|
|
92
95
|
// @internal
|
|
93
96
|
export const createTestContainerRuntimeFactory: (containerRuntimeCtor: typeof ContainerRuntime) => {
|
|
94
97
|
new (type: string, dataStoreFactory: IFluidDataStoreFactory, runtimeOptions?: IContainerRuntimeOptions, requestHandlers?: RuntimeRequestHandler[]): {
|
|
@@ -170,6 +173,12 @@ export interface IProvideTestFluidObject {
|
|
|
170
173
|
readonly ITestFluidObject: ITestFluidObject;
|
|
171
174
|
}
|
|
172
175
|
|
|
176
|
+
// @internal
|
|
177
|
+
export interface ITestConfigProvider extends IConfigProviderBase {
|
|
178
|
+
clear: () => void;
|
|
179
|
+
set: (key: string, value: ConfigTypes) => void;
|
|
180
|
+
}
|
|
181
|
+
|
|
173
182
|
// @internal (undocumented)
|
|
174
183
|
export interface ITestContainerConfig {
|
|
175
184
|
enableAttribution?: boolean;
|
|
@@ -234,9 +243,6 @@ export class LocalCodeLoader implements ICodeDetailsLoader {
|
|
|
234
243
|
load(source: IFluidCodeDetails): Promise<IFluidModuleWithDetails>;
|
|
235
244
|
}
|
|
236
245
|
|
|
237
|
-
// @internal (undocumented)
|
|
238
|
-
export const mockConfigProvider: (settings?: Record<string, ConfigTypes>) => IConfigProviderBase;
|
|
239
|
-
|
|
240
246
|
// @internal
|
|
241
247
|
export const retryWithEventualValue: <T>(callback: () => Promise<T>, check: (value: T) => boolean, defaultValue: T, maxTries?: number, backOffMs?: number) => Promise<T>;
|
|
242
248
|
|
package/dist/TestConfigs.d.ts
CHANGED
|
@@ -4,7 +4,20 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { ConfigTypes, IConfigProviderBase } from "@fluidframework/core-interfaces";
|
|
6
6
|
/**
|
|
7
|
+
* Extension of IConfigProviderBase that supports setting a config value and clearing all
|
|
8
|
+
* config values for testing.
|
|
9
|
+
*
|
|
7
10
|
* @internal
|
|
8
11
|
*/
|
|
9
|
-
export
|
|
12
|
+
export interface ITestConfigProvider extends IConfigProviderBase {
|
|
13
|
+
/** Set a config value */
|
|
14
|
+
set: (key: string, value: ConfigTypes) => void;
|
|
15
|
+
/** Clear all config values */
|
|
16
|
+
clear: () => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates a test config provider with the ability to set configs values and clear all config values.
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export declare const createTestConfigProvider: () => ITestConfigProvider;
|
|
10
23
|
//# sourceMappingURL=TestConfigs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestConfigs.d.ts","sourceRoot":"","sources":["../src/TestConfigs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEnF
|
|
1
|
+
{"version":3,"file":"TestConfigs.d.ts","sourceRoot":"","sources":["../src/TestConfigs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC/D,yBAAyB;IACzB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,8BAA8B;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAO,mBAc3C,CAAC"}
|
package/dist/TestConfigs.js
CHANGED
|
@@ -4,14 +4,25 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
7
|
+
exports.createTestConfigProvider = void 0;
|
|
8
8
|
/**
|
|
9
|
+
* Creates a test config provider with the ability to set configs values and clear all config values.
|
|
9
10
|
* @internal
|
|
10
11
|
*/
|
|
11
|
-
const
|
|
12
|
+
const createTestConfigProvider = () => {
|
|
13
|
+
const settings = {};
|
|
12
14
|
return {
|
|
13
15
|
getRawConfig: (name) => settings[name],
|
|
16
|
+
set: (key, value) => {
|
|
17
|
+
settings[key] = value;
|
|
18
|
+
},
|
|
19
|
+
clear: () => {
|
|
20
|
+
Object.keys(settings).forEach((key) => {
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
22
|
+
delete settings[key];
|
|
23
|
+
});
|
|
24
|
+
},
|
|
14
25
|
};
|
|
15
26
|
};
|
|
16
|
-
exports.
|
|
27
|
+
exports.createTestConfigProvider = createTestConfigProvider;
|
|
17
28
|
//# sourceMappingURL=TestConfigs.js.map
|
package/dist/TestConfigs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestConfigs.js","sourceRoot":"","sources":["../src/TestConfigs.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"TestConfigs.js","sourceRoot":"","sources":["../src/TestConfigs.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiBH;;;GAGG;AACI,MAAM,wBAAwB,GAAG,GAAwB,EAAE;IACjE,MAAM,QAAQ,GAAgC,EAAE,CAAC;IACjD,OAAO;QACN,YAAY,EAAE,CAAC,IAAY,EAAe,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3D,GAAG,EAAE,CAAC,GAAW,EAAE,KAAkB,EAAE,EAAE;YACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrC,gEAAgE;gBAChE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACJ,CAAC;KACD,CAAC;AACH,CAAC,CAAC;AAdW,QAAA,wBAAwB,4BAcnC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ConfigTypes, IConfigProviderBase } from \"@fluidframework/core-interfaces\";\n\n/**\n * Extension of IConfigProviderBase that supports setting a config value and clearing all\n * config values for testing.\n *\n * @internal\n */\nexport interface ITestConfigProvider extends IConfigProviderBase {\n\t/** Set a config value */\n\tset: (key: string, value: ConfigTypes) => void;\n\t/** Clear all config values */\n\tclear: () => void;\n}\n\n/**\n * Creates a test config provider with the ability to set configs values and clear all config values.\n * @internal\n */\nexport const createTestConfigProvider = (): ITestConfigProvider => {\n\tconst settings: Record<string, ConfigTypes> = {};\n\treturn {\n\t\tgetRawConfig: (name: string): ConfigTypes => settings[name],\n\t\tset: (key: string, value: ConfigTypes) => {\n\t\t\tsettings[key] = value;\n\t\t},\n\t\tclear: () => {\n\t\t\tObject.keys(settings).forEach((key) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete settings[key];\n\t\t\t});\n\t\t},\n\t};\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestSummaryUtils.d.ts","sourceRoot":"","sources":["../src/TestSummaryUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,2CAA2C,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAE,UAAU,EAA6B,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EACN,yBAAyB,EACzB,WAAW,EAEX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACN,oBAAoB,
|
|
1
|
+
{"version":3,"file":"TestSummaryUtils.d.ts","sourceRoot":"","sources":["../src/TestSummaryUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,2CAA2C,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAE,UAAU,EAA6B,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EACN,yBAAyB,EACzB,WAAW,EAEX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACN,oBAAoB,EAEpB,mBAAmB,EAEnB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACN,sBAAsB,EACtB,kCAAkC,EAClC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AA6EjF;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,UAAU,EACrB,gBAAgB,EAAE,sBAAsB,EACxC,cAAc,CAAC,EAAE,MAAM,EACvB,2BAA2B,qDAA8C,EACzE,eAAe,CAAC,EAAE,kCAAkC,EACpD,MAAM,CAAC,EAAE,oBAAoB,EAC7B,cAAc,GAAE,mBAAgD,GAC9D,OAAO,CAAC;IAAE,SAAS,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,CAAC,CAiB7D;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,UAAU,EACrB,MAAM,CAAC,EAAE,oBAAoB,EAC7B,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,oBAAoB,GAC3B,OAAO,CAAC;IAAE,SAAS,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,CAAC,CAe7D;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CACjC,UAAU,EAAE,WAAW,EACvB,MAAM,GAAE,MAAM,GAAG,yBAA6C,GAC5D,OAAO,CAAC,WAAW,CAAC,CAmCtB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,WAAW,EAAE,YAAY,CAAC;IAC1B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACtB"}
|
package/dist/TestSummaryUtils.js
CHANGED
|
@@ -14,6 +14,27 @@ const containerUtils_1 = require("./containerUtils");
|
|
|
14
14
|
const timeoutUtils_1 = require("./timeoutUtils");
|
|
15
15
|
const testContainerRuntimeFactoryWithDefaultDataStore_1 = require("./testContainerRuntimeFactoryWithDefaultDataStore");
|
|
16
16
|
const summarizerClientType = "summarizer";
|
|
17
|
+
/**
|
|
18
|
+
* This function should ONLY be used for back compat purposes
|
|
19
|
+
* LTS versions of the Loader/Container will not have the "getEntryPoint" method, so we need to fallback to "request"
|
|
20
|
+
* This function can be removed once LTS version of Loader moves to 2.0.0-internal.7.0.0
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
async function getSummarizerBackCompat(container) {
|
|
24
|
+
if (container.getEntryPoint !== undefined) {
|
|
25
|
+
const entryPoint = await container.getEntryPoint();
|
|
26
|
+
// Note: We need to also check if the result of `getEntryPoint()` is defined. This is because when running
|
|
27
|
+
// cross version compat testing scenarios, if we create with 1.X container and load with 2.X then the
|
|
28
|
+
// function container.getEntryPoint will be defined for the 2.X container. However, it will not return undefined
|
|
29
|
+
// since the container's runtime will be on version 1.X, which does not have an entry point defined.
|
|
30
|
+
if (entryPoint !== undefined) {
|
|
31
|
+
return entryPoint;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const response = await container.request({ url: "_summarizer" });
|
|
35
|
+
(0, core_utils_1.assert)(response.status === 200, "requesting '/' should return default data object");
|
|
36
|
+
return response.value;
|
|
37
|
+
}
|
|
17
38
|
async function createSummarizerCore(container, loader, summaryVersion) {
|
|
18
39
|
const absoluteUrl = await container.getAbsoluteUrl("");
|
|
19
40
|
if (absoluteUrl === undefined) {
|
|
@@ -33,8 +54,10 @@ async function createSummarizerCore(container, loader, summaryVersion) {
|
|
|
33
54
|
};
|
|
34
55
|
const summarizerContainer = await loader.resolve(request);
|
|
35
56
|
await (0, containerUtils_1.waitForContainerConnection)(summarizerContainer);
|
|
36
|
-
|
|
37
|
-
|
|
57
|
+
// Old loaders will not have getEntryPoint API on the container. So, use getSummarizerBackCompat which
|
|
58
|
+
// will use request pattern to get the summarizer in these old loaders.
|
|
59
|
+
const fluidObject = await getSummarizerBackCompat(summarizerContainer);
|
|
60
|
+
if (fluidObject.ISummarizer === undefined) {
|
|
38
61
|
throw new Error("Fluid object does not implement ISummarizer");
|
|
39
62
|
}
|
|
40
63
|
return {
|
|
@@ -56,7 +79,7 @@ const defaultSummaryOptions = {
|
|
|
56
79
|
* The ISummarizer can be used to generate on-demand summaries. The IContainer can be used to fetch data stores, etc.
|
|
57
80
|
* @internal
|
|
58
81
|
*/
|
|
59
|
-
async function createSummarizerFromFactory(provider, container, dataStoreFactory, summaryVersion, containerRuntimeFactoryType = aqueduct_1.ContainerRuntimeFactoryWithDefaultDataStore, registryEntries, logger, configProvider = (0, TestConfigs_1.
|
|
82
|
+
async function createSummarizerFromFactory(provider, container, dataStoreFactory, summaryVersion, containerRuntimeFactoryType = aqueduct_1.ContainerRuntimeFactoryWithDefaultDataStore, registryEntries, logger, configProvider = (0, TestConfigs_1.createTestConfigProvider)()) {
|
|
60
83
|
const runtimeFactory = (0, testContainerRuntimeFactoryWithDefaultDataStore_1.createContainerRuntimeFactoryWithDefaultDataStore)(containerRuntimeFactoryType, {
|
|
61
84
|
defaultFactory: dataStoreFactory,
|
|
62
85
|
registryEntries: registryEntries ?? [
|
|
@@ -87,7 +110,7 @@ async function createSummarizer(provider, container, config, summaryVersion, log
|
|
|
87
110
|
},
|
|
88
111
|
loaderProps: {
|
|
89
112
|
...config?.loaderProps,
|
|
90
|
-
configProvider: config?.loaderProps?.configProvider ?? (0, TestConfigs_1.
|
|
113
|
+
configProvider: config?.loaderProps?.configProvider ?? (0, TestConfigs_1.createTestConfigProvider)(),
|
|
91
114
|
logger,
|
|
92
115
|
},
|
|
93
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestSummaryUtils.js","sourceRoot":"","sources":["../src/TestSummaryUtils.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 { ContainerRuntimeFactoryWithDefaultDataStore } from \"@fluidframework/aqueduct\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { IContainer, IHostLoader, LoaderHeader } from \"@fluidframework/container-definitions\";\nimport {\n\tIOnDemandSummarizeOptions,\n\tISummarizer,\n\tISummaryRuntimeOptions,\n} from \"@fluidframework/container-runtime\";\nimport {\n\tITelemetryBaseLogger,\n\tFluidObject,\n\tIRequest,\n\tIConfigProviderBase,\n} from \"@fluidframework/core-interfaces\";\nimport { DriverHeader } from \"@fluidframework/driver-definitions\";\nimport {\n\tIFluidDataStoreFactory,\n\tNamedFluidDataStoreRegistryEntries,\n} from \"@fluidframework/runtime-definitions\";\nimport { ISummaryTree } from \"@fluidframework/protocol-definitions\";\nimport { ITestContainerConfig, ITestObjectProvider } from \"./testObjectProvider\";\nimport { mockConfigProvider } from \"./TestConfigs\";\nimport { waitForContainerConnection } from \"./containerUtils\";\nimport { timeoutAwait } from \"./timeoutUtils\";\nimport { createContainerRuntimeFactoryWithDefaultDataStore } from \"./testContainerRuntimeFactoryWithDefaultDataStore\";\n\nconst summarizerClientType = \"summarizer\";\n\nasync function createSummarizerCore(\n\tcontainer: IContainer,\n\tloader: IHostLoader,\n\tsummaryVersion?: string,\n) {\n\tconst absoluteUrl = await container.getAbsoluteUrl(\"\");\n\tif (absoluteUrl === undefined) {\n\t\tthrow new Error(\"URL could not be resolved\");\n\t}\n\n\tconst request: IRequest = {\n\t\theaders: {\n\t\t\t[LoaderHeader.cache]: false,\n\t\t\t[LoaderHeader.clientDetails]: {\n\t\t\t\tcapabilities: { interactive: false },\n\t\t\t\ttype: summarizerClientType,\n\t\t\t},\n\t\t\t[DriverHeader.summarizingClient]: true,\n\t\t\t[LoaderHeader.version]: summaryVersion,\n\t\t},\n\t\turl: absoluteUrl,\n\t};\n\tconst summarizerContainer = await loader.resolve(request);\n\tawait waitForContainerConnection(summarizerContainer);\n\n\tconst fluidObject: FluidObject<ISummarizer> | undefined =\n\t\tawait summarizerContainer.getEntryPoint();\n\tif (fluidObject?.ISummarizer === undefined) {\n\t\tthrow new Error(\"Fluid object does not implement ISummarizer\");\n\t}\n\n\treturn {\n\t\tcontainer: summarizerContainer,\n\t\tsummarizer: fluidObject.ISummarizer,\n\t};\n}\n\nconst defaultSummaryOptions: ISummaryRuntimeOptions = {\n\tsummaryConfigOverrides: {\n\t\tstate: \"disableHeuristics\",\n\t\tmaxAckWaitTime: 20000, // Some of the AFR tests take a long time to ack.\n\t\tmaxOpsSinceLastSummary: 7000,\n\t\tinitialSummarizerDelayMs: 0,\n\t},\n};\n\n/**\n * Creates a summarizer client from the given container and data store factory, and returns the summarizer client's\n * IContainer and ISummarizer.\n * The ISummarizer can be used to generate on-demand summaries. The IContainer can be used to fetch data stores, etc.\n * @internal\n */\nexport async function createSummarizerFromFactory(\n\tprovider: ITestObjectProvider,\n\tcontainer: IContainer,\n\tdataStoreFactory: IFluidDataStoreFactory,\n\tsummaryVersion?: string,\n\tcontainerRuntimeFactoryType = ContainerRuntimeFactoryWithDefaultDataStore,\n\tregistryEntries?: NamedFluidDataStoreRegistryEntries,\n\tlogger?: ITelemetryBaseLogger,\n\tconfigProvider: IConfigProviderBase = mockConfigProvider(),\n): Promise<{ container: IContainer; summarizer: ISummarizer }> {\n\tconst runtimeFactory = createContainerRuntimeFactoryWithDefaultDataStore(\n\t\tcontainerRuntimeFactoryType,\n\t\t{\n\t\t\tdefaultFactory: dataStoreFactory,\n\t\t\tregistryEntries: registryEntries ?? [\n\t\t\t\t[dataStoreFactory.type, Promise.resolve(dataStoreFactory)],\n\t\t\t],\n\t\t\truntimeOptions: { summaryOptions: defaultSummaryOptions },\n\t\t},\n\t);\n\n\tconst loader = provider.createLoader([[provider.defaultCodeDetails, runtimeFactory]], {\n\t\tconfigProvider,\n\t\tlogger,\n\t});\n\treturn createSummarizerCore(container, loader, summaryVersion);\n}\n\n/**\n * Creates a summarizer client from the given container and returns the summarizer client's IContainer and ISummarizer.\n * The ISummarizer can be used to generate on-demand summaries. The IContainer can be used to fetch data stores, etc.\n *\n * Can pass in a test config provider to enable/disable features.\n * @internal\n */\nexport async function createSummarizer(\n\tprovider: ITestObjectProvider,\n\tcontainer: IContainer,\n\tconfig?: ITestContainerConfig,\n\tsummaryVersion?: string,\n\tlogger?: ITelemetryBaseLogger,\n): Promise<{ container: IContainer; summarizer: ISummarizer }> {\n\tconst testContainerConfig: ITestContainerConfig = {\n\t\t...config,\n\t\truntimeOptions: {\n\t\t\t...config?.runtimeOptions,\n\t\t\tsummaryOptions: config?.runtimeOptions?.summaryOptions ?? defaultSummaryOptions,\n\t\t},\n\t\tloaderProps: {\n\t\t\t...config?.loaderProps,\n\t\t\tconfigProvider: config?.loaderProps?.configProvider ?? mockConfigProvider(),\n\t\t\tlogger,\n\t\t},\n\t};\n\tconst loader = provider.makeTestLoader(testContainerConfig);\n\treturn createSummarizerCore(container, loader, summaryVersion);\n}\n\n/**\n * Summarizes on demand and returns the summary tree, the version number and the reference sequence number of the\n * submitted summary.\n *\n * @param summarizer - The ISummarizer to use to summarize on demand\n * @param inputs - Either the reason string or the full IOnDemandSummarizeOptions.\n * Defaults to the reason \"end-to-end test\".\n * @internal\n */\nexport async function summarizeNow(\n\tsummarizer: ISummarizer,\n\tinputs: string | IOnDemandSummarizeOptions = \"end-to-end test\",\n): Promise<SummaryInfo> {\n\tconst options: IOnDemandSummarizeOptions =\n\t\ttypeof inputs === \"string\" ? { reason: inputs } : inputs;\n\tconst result = summarizer.summarizeOnDemand(options);\n\n\tconst submitResult = await timeoutAwait(result.summarySubmitted);\n\tif (!submitResult.success) {\n\t\tif (typeof submitResult.error !== \"string\") {\n\t\t\tsubmitResult.error.data = submitResult.data;\n\t\t}\n\t\tthrow submitResult.error;\n\t}\n\tassert(\n\t\tsubmitResult.data.stage === \"submit\",\n\t\t\"on-demand summary submitted data stage should be submit\",\n\t);\n\tassert(submitResult.data.summaryTree !== undefined, \"summary tree should exist\");\n\n\tconst broadcastResult = await timeoutAwait(result.summaryOpBroadcasted);\n\tif (!broadcastResult.success) {\n\t\tthrow broadcastResult.error;\n\t}\n\n\tconst ackNackResult = await timeoutAwait(result.receivedSummaryAckOrNack);\n\tif (!ackNackResult.success) {\n\t\tthrow ackNackResult.error;\n\t}\n\n\tawait new Promise((resolve) => process.nextTick(resolve));\n\n\treturn {\n\t\tsummaryTree: submitResult.data.summaryTree,\n\t\tsummaryVersion: ackNackResult.data.summaryAckOp.contents.handle,\n\t\tsummaryRefSeq: submitResult.data.referenceSequenceNumber,\n\t};\n}\n\n/**\n * Summary information containing the summary tree, summary version, and summary sequence number.\n * @internal\n */\nexport interface SummaryInfo {\n\t/**\n\t * The summary tree generated\n\t */\n\tsummaryTree: ISummaryTree;\n\t/**\n\t * Handle of the completed summary\n\t */\n\tsummaryVersion: string;\n\t/**\n\t * Reference sequence number of the current summary generation\n\t */\n\tsummaryRefSeq: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TestSummaryUtils.js","sourceRoot":"","sources":["../src/TestSummaryUtils.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 { ContainerRuntimeFactoryWithDefaultDataStore } from \"@fluidframework/aqueduct\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { IContainer, IHostLoader, LoaderHeader } from \"@fluidframework/container-definitions\";\nimport {\n\tIOnDemandSummarizeOptions,\n\tISummarizer,\n\tISummaryRuntimeOptions,\n} from \"@fluidframework/container-runtime\";\nimport {\n\tITelemetryBaseLogger,\n\tIRequest,\n\tIConfigProviderBase,\n\tIResponse,\n} from \"@fluidframework/core-interfaces\";\nimport { DriverHeader } from \"@fluidframework/driver-definitions\";\nimport {\n\tIFluidDataStoreFactory,\n\tNamedFluidDataStoreRegistryEntries,\n} from \"@fluidframework/runtime-definitions\";\nimport { ISummaryTree } from \"@fluidframework/protocol-definitions\";\nimport { ITestContainerConfig, ITestObjectProvider } from \"./testObjectProvider\";\nimport { createTestConfigProvider } from \"./TestConfigs\";\nimport { waitForContainerConnection } from \"./containerUtils\";\nimport { timeoutAwait } from \"./timeoutUtils\";\nimport { createContainerRuntimeFactoryWithDefaultDataStore } from \"./testContainerRuntimeFactoryWithDefaultDataStore\";\n\nconst summarizerClientType = \"summarizer\";\n\n/**\n * This function should ONLY be used for back compat purposes\n * LTS versions of the Loader/Container will not have the \"getEntryPoint\" method, so we need to fallback to \"request\"\n * This function can be removed once LTS version of Loader moves to 2.0.0-internal.7.0.0\n * @internal\n */\nasync function getSummarizerBackCompat(container: IContainer): Promise<ISummarizer> {\n\tif (container.getEntryPoint !== undefined) {\n\t\tconst entryPoint = await container.getEntryPoint();\n\t\t// Note: We need to also check if the result of `getEntryPoint()` is defined. This is because when running\n\t\t// cross version compat testing scenarios, if we create with 1.X container and load with 2.X then the\n\t\t// function container.getEntryPoint will be defined for the 2.X container. However, it will not return undefined\n\t\t// since the container's runtime will be on version 1.X, which does not have an entry point defined.\n\t\tif (entryPoint !== undefined) {\n\t\t\treturn entryPoint as ISummarizer;\n\t\t}\n\t}\n\tconst response: IResponse = await (container as any).request({ url: \"_summarizer\" });\n\tassert(response.status === 200, \"requesting '/' should return default data object\");\n\treturn response.value as ISummarizer;\n}\n\nasync function createSummarizerCore(\n\tcontainer: IContainer,\n\tloader: IHostLoader,\n\tsummaryVersion?: string,\n) {\n\tconst absoluteUrl = await container.getAbsoluteUrl(\"\");\n\tif (absoluteUrl === undefined) {\n\t\tthrow new Error(\"URL could not be resolved\");\n\t}\n\n\tconst request: IRequest = {\n\t\theaders: {\n\t\t\t[LoaderHeader.cache]: false,\n\t\t\t[LoaderHeader.clientDetails]: {\n\t\t\t\tcapabilities: { interactive: false },\n\t\t\t\ttype: summarizerClientType,\n\t\t\t},\n\t\t\t[DriverHeader.summarizingClient]: true,\n\t\t\t[LoaderHeader.version]: summaryVersion,\n\t\t},\n\t\turl: absoluteUrl,\n\t};\n\tconst summarizerContainer = await loader.resolve(request);\n\tawait waitForContainerConnection(summarizerContainer);\n\n\t// Old loaders will not have getEntryPoint API on the container. So, use getSummarizerBackCompat which\n\t// will use request pattern to get the summarizer in these old loaders.\n\tconst fluidObject = await getSummarizerBackCompat(summarizerContainer);\n\tif (fluidObject.ISummarizer === undefined) {\n\t\tthrow new Error(\"Fluid object does not implement ISummarizer\");\n\t}\n\n\treturn {\n\t\tcontainer: summarizerContainer,\n\t\tsummarizer: fluidObject.ISummarizer,\n\t};\n}\n\nconst defaultSummaryOptions: ISummaryRuntimeOptions = {\n\tsummaryConfigOverrides: {\n\t\tstate: \"disableHeuristics\",\n\t\tmaxAckWaitTime: 20000, // Some of the AFR tests take a long time to ack.\n\t\tmaxOpsSinceLastSummary: 7000,\n\t\tinitialSummarizerDelayMs: 0,\n\t},\n};\n\n/**\n * Creates a summarizer client from the given container and data store factory, and returns the summarizer client's\n * IContainer and ISummarizer.\n * The ISummarizer can be used to generate on-demand summaries. The IContainer can be used to fetch data stores, etc.\n * @internal\n */\nexport async function createSummarizerFromFactory(\n\tprovider: ITestObjectProvider,\n\tcontainer: IContainer,\n\tdataStoreFactory: IFluidDataStoreFactory,\n\tsummaryVersion?: string,\n\tcontainerRuntimeFactoryType = ContainerRuntimeFactoryWithDefaultDataStore,\n\tregistryEntries?: NamedFluidDataStoreRegistryEntries,\n\tlogger?: ITelemetryBaseLogger,\n\tconfigProvider: IConfigProviderBase = createTestConfigProvider(),\n): Promise<{ container: IContainer; summarizer: ISummarizer }> {\n\tconst runtimeFactory = createContainerRuntimeFactoryWithDefaultDataStore(\n\t\tcontainerRuntimeFactoryType,\n\t\t{\n\t\t\tdefaultFactory: dataStoreFactory,\n\t\t\tregistryEntries: registryEntries ?? [\n\t\t\t\t[dataStoreFactory.type, Promise.resolve(dataStoreFactory)],\n\t\t\t],\n\t\t\truntimeOptions: { summaryOptions: defaultSummaryOptions },\n\t\t},\n\t);\n\n\tconst loader = provider.createLoader([[provider.defaultCodeDetails, runtimeFactory]], {\n\t\tconfigProvider,\n\t\tlogger,\n\t});\n\treturn createSummarizerCore(container, loader, summaryVersion);\n}\n\n/**\n * Creates a summarizer client from the given container and returns the summarizer client's IContainer and ISummarizer.\n * The ISummarizer can be used to generate on-demand summaries. The IContainer can be used to fetch data stores, etc.\n *\n * Can pass in a test config provider to enable/disable features.\n * @internal\n */\nexport async function createSummarizer(\n\tprovider: ITestObjectProvider,\n\tcontainer: IContainer,\n\tconfig?: ITestContainerConfig,\n\tsummaryVersion?: string,\n\tlogger?: ITelemetryBaseLogger,\n): Promise<{ container: IContainer; summarizer: ISummarizer }> {\n\tconst testContainerConfig: ITestContainerConfig = {\n\t\t...config,\n\t\truntimeOptions: {\n\t\t\t...config?.runtimeOptions,\n\t\t\tsummaryOptions: config?.runtimeOptions?.summaryOptions ?? defaultSummaryOptions,\n\t\t},\n\t\tloaderProps: {\n\t\t\t...config?.loaderProps,\n\t\t\tconfigProvider: config?.loaderProps?.configProvider ?? createTestConfigProvider(),\n\t\t\tlogger,\n\t\t},\n\t};\n\tconst loader = provider.makeTestLoader(testContainerConfig);\n\treturn createSummarizerCore(container, loader, summaryVersion);\n}\n\n/**\n * Summarizes on demand and returns the summary tree, the version number and the reference sequence number of the\n * submitted summary.\n *\n * @param summarizer - The ISummarizer to use to summarize on demand\n * @param inputs - Either the reason string or the full IOnDemandSummarizeOptions.\n * Defaults to the reason \"end-to-end test\".\n * @internal\n */\nexport async function summarizeNow(\n\tsummarizer: ISummarizer,\n\tinputs: string | IOnDemandSummarizeOptions = \"end-to-end test\",\n): Promise<SummaryInfo> {\n\tconst options: IOnDemandSummarizeOptions =\n\t\ttypeof inputs === \"string\" ? { reason: inputs } : inputs;\n\tconst result = summarizer.summarizeOnDemand(options);\n\n\tconst submitResult = await timeoutAwait(result.summarySubmitted);\n\tif (!submitResult.success) {\n\t\tif (typeof submitResult.error !== \"string\") {\n\t\t\tsubmitResult.error.data = submitResult.data;\n\t\t}\n\t\tthrow submitResult.error;\n\t}\n\tassert(\n\t\tsubmitResult.data.stage === \"submit\",\n\t\t\"on-demand summary submitted data stage should be submit\",\n\t);\n\tassert(submitResult.data.summaryTree !== undefined, \"summary tree should exist\");\n\n\tconst broadcastResult = await timeoutAwait(result.summaryOpBroadcasted);\n\tif (!broadcastResult.success) {\n\t\tthrow broadcastResult.error;\n\t}\n\n\tconst ackNackResult = await timeoutAwait(result.receivedSummaryAckOrNack);\n\tif (!ackNackResult.success) {\n\t\tthrow ackNackResult.error;\n\t}\n\n\tawait new Promise((resolve) => process.nextTick(resolve));\n\n\treturn {\n\t\tsummaryTree: submitResult.data.summaryTree,\n\t\tsummaryVersion: ackNackResult.data.summaryAckOp.contents.handle,\n\t\tsummaryRefSeq: submitResult.data.referenceSequenceNumber,\n\t};\n}\n\n/**\n * Summary information containing the summary tree, summary version, and summary sequence number.\n * @internal\n */\nexport interface SummaryInfo {\n\t/**\n\t * The summary tree generated\n\t */\n\tsummaryTree: ISummaryTree;\n\t/**\n\t * Handle of the completed summary\n\t */\n\tsummaryVersion: string;\n\t/**\n\t * Reference sequence number of the current summary generation\n\t */\n\tsummaryRefSeq: number;\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { LoaderContainerTracker } from "./loaderContainerTracker";
|
|
|
8
8
|
export { fluidEntryPoint, LocalCodeLoader, SupportedExportInterfaces } from "./localCodeLoader";
|
|
9
9
|
export { createAndAttachContainer, createLoader } from "./localLoader";
|
|
10
10
|
export { retryWithEventualValue } from "./retry";
|
|
11
|
-
export {
|
|
11
|
+
export { createTestConfigProvider, ITestConfigProvider } from "./TestConfigs";
|
|
12
12
|
export { createTestContainerRuntimeFactory, TestContainerRuntimeFactory, } from "./testContainerRuntimeFactory";
|
|
13
13
|
export { ChannelFactoryRegistry, TestFluidObject, TestFluidObjectFactory } from "./testFluidObject";
|
|
14
14
|
export { createDocumentId, DataObjectFactoryType, EventAndErrorTrackingLogger, getUnexpectedLogErrorException, IDocumentIdStrategy, IOpProcessingController, ITestContainerConfig, ITestObjectProvider, TestObjectProvider, TestObjectProviderWithVersionedLoad, } from "./testObjectProvider";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACN,iCAAiC,EACjC,2BAA2B,GAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACpG,OAAO,EACN,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,mCAAmC,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,gBAAgB,EAChB,2BAA2B,EAC3B,YAAY,EACZ,WAAW,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,wBAAwB,EACxB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,GAChC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iDAAiD,EAAE,MAAM,mDAAmD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.createContainerRuntimeFactoryWithDefaultDataStore = exports.getDataStoreEntryPointBackCompat = exports.getContainerEntryPointBackCompat = exports.waitForContainerConnection = exports.timeoutPromise = exports.timeoutAwait = exports.defaultTimeoutDurationMs = exports.summarizeNow = exports.createSummarizerFromFactory = exports.createSummarizer = exports.TestObjectProviderWithVersionedLoad = exports.TestObjectProvider = exports.getUnexpectedLogErrorException = exports.EventAndErrorTrackingLogger = exports.DataObjectFactoryType = exports.createDocumentId = exports.TestFluidObjectFactory = exports.TestFluidObject = exports.TestContainerRuntimeFactory = exports.createTestContainerRuntimeFactory = exports.
|
|
7
|
+
exports.createContainerRuntimeFactoryWithDefaultDataStore = exports.getDataStoreEntryPointBackCompat = exports.getContainerEntryPointBackCompat = exports.waitForContainerConnection = exports.timeoutPromise = exports.timeoutAwait = exports.defaultTimeoutDurationMs = exports.summarizeNow = exports.createSummarizerFromFactory = exports.createSummarizer = exports.TestObjectProviderWithVersionedLoad = exports.TestObjectProvider = exports.getUnexpectedLogErrorException = exports.EventAndErrorTrackingLogger = exports.DataObjectFactoryType = exports.createDocumentId = exports.TestFluidObjectFactory = exports.TestFluidObject = exports.TestContainerRuntimeFactory = exports.createTestContainerRuntimeFactory = exports.createTestConfigProvider = exports.retryWithEventualValue = exports.createLoader = exports.createAndAttachContainer = exports.LocalCodeLoader = exports.LoaderContainerTracker = exports.wrapDocumentStorageService = exports.wrapDocumentServiceFactory = exports.wrapDocumentService = void 0;
|
|
8
8
|
var DriverWrappers_1 = require("./DriverWrappers");
|
|
9
9
|
Object.defineProperty(exports, "wrapDocumentService", { enumerable: true, get: function () { return DriverWrappers_1.wrapDocumentService; } });
|
|
10
10
|
Object.defineProperty(exports, "wrapDocumentServiceFactory", { enumerable: true, get: function () { return DriverWrappers_1.wrapDocumentServiceFactory; } });
|
|
@@ -19,7 +19,7 @@ Object.defineProperty(exports, "createLoader", { enumerable: true, get: function
|
|
|
19
19
|
var retry_1 = require("./retry");
|
|
20
20
|
Object.defineProperty(exports, "retryWithEventualValue", { enumerable: true, get: function () { return retry_1.retryWithEventualValue; } });
|
|
21
21
|
var TestConfigs_1 = require("./TestConfigs");
|
|
22
|
-
Object.defineProperty(exports, "
|
|
22
|
+
Object.defineProperty(exports, "createTestConfigProvider", { enumerable: true, get: function () { return TestConfigs_1.createTestConfigProvider; } });
|
|
23
23
|
var testContainerRuntimeFactory_1 = require("./testContainerRuntimeFactory");
|
|
24
24
|
Object.defineProperty(exports, "createTestContainerRuntimeFactory", { enumerable: true, get: function () { return testContainerRuntimeFactory_1.createTestContainerRuntimeFactory; } });
|
|
25
25
|
Object.defineProperty(exports, "TestContainerRuntimeFactory", { enumerable: true, get: function () { return testContainerRuntimeFactory_1.TestContainerRuntimeFactory; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mDAI0B;AAHzB,qHAAA,mBAAmB,OAAA;AACnB,4HAAA,0BAA0B,OAAA;AAC1B,4HAAA,0BAA0B,OAAA;AAG3B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,qDAAgG;AAAtE,kHAAA,eAAe,OAAA;AACzC,6CAAuE;AAA9D,uHAAA,wBAAwB,OAAA;AAAE,2GAAA,YAAY,OAAA;AAC/C,iCAAiD;AAAxC,+GAAA,sBAAsB,OAAA;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mDAI0B;AAHzB,qHAAA,mBAAmB,OAAA;AACnB,4HAAA,0BAA0B,OAAA;AAC1B,4HAAA,0BAA0B,OAAA;AAG3B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,qDAAgG;AAAtE,kHAAA,eAAe,OAAA;AACzC,6CAAuE;AAA9D,uHAAA,wBAAwB,OAAA;AAAE,2GAAA,YAAY,OAAA;AAC/C,iCAAiD;AAAxC,+GAAA,sBAAsB,OAAA;AAC/B,6CAA8E;AAArE,uHAAA,wBAAwB,OAAA;AACjC,6EAGuC;AAFtC,gJAAA,iCAAiC,OAAA;AACjC,0IAAA,2BAA2B,OAAA;AAE5B,qDAAoG;AAAnE,kHAAA,eAAe,OAAA;AAAE,yHAAA,sBAAsB,OAAA;AACxE,2DAW8B;AAV7B,sHAAA,gBAAgB,OAAA;AAChB,2HAAA,qBAAqB,OAAA;AACrB,iIAAA,2BAA2B,OAAA;AAC3B,oIAAA,8BAA8B,OAAA;AAK9B,wHAAA,kBAAkB,OAAA;AAClB,yIAAA,mCAAmC,OAAA;AAEpC,uDAK4B;AAJ3B,oHAAA,gBAAgB,OAAA;AAChB,+HAAA,2BAA2B,OAAA;AAC3B,gHAAA,YAAY,OAAA;AAGb,+CAMwB;AALvB,wHAAA,wBAAwB,OAAA;AACxB,4GAAA,YAAY,OAAA;AACZ,8GAAA,cAAc,OAAA;AAIf,mDAI0B;AAHzB,4HAAA,0BAA0B,OAAA;AAC1B,kIAAA,gCAAgC,OAAA;AAChC,kIAAA,gCAAgC,OAAA;AAEjC,qHAAsH;AAA7G,oLAAA,iDAAiD,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\twrapDocumentService,\n\twrapDocumentServiceFactory,\n\twrapDocumentStorageService,\n} from \"./DriverWrappers\";\nexport { IProvideTestFluidObject, ITestFluidObject } from \"./interfaces\";\nexport { LoaderContainerTracker } from \"./loaderContainerTracker\";\nexport { fluidEntryPoint, LocalCodeLoader, SupportedExportInterfaces } from \"./localCodeLoader\";\nexport { createAndAttachContainer, createLoader } from \"./localLoader\";\nexport { retryWithEventualValue } from \"./retry\";\nexport { createTestConfigProvider, ITestConfigProvider } from \"./TestConfigs\";\nexport {\n\tcreateTestContainerRuntimeFactory,\n\tTestContainerRuntimeFactory,\n} from \"./testContainerRuntimeFactory\";\nexport { ChannelFactoryRegistry, TestFluidObject, TestFluidObjectFactory } from \"./testFluidObject\";\nexport {\n\tcreateDocumentId,\n\tDataObjectFactoryType,\n\tEventAndErrorTrackingLogger,\n\tgetUnexpectedLogErrorException,\n\tIDocumentIdStrategy,\n\tIOpProcessingController,\n\tITestContainerConfig,\n\tITestObjectProvider,\n\tTestObjectProvider,\n\tTestObjectProviderWithVersionedLoad,\n} from \"./testObjectProvider\";\nexport {\n\tcreateSummarizer,\n\tcreateSummarizerFromFactory,\n\tsummarizeNow,\n\tSummaryInfo,\n} from \"./TestSummaryUtils\";\nexport {\n\tdefaultTimeoutDurationMs,\n\ttimeoutAwait,\n\ttimeoutPromise,\n\tTimeoutWithError,\n\tTimeoutWithValue,\n} from \"./timeoutUtils\";\nexport {\n\twaitForContainerConnection,\n\tgetContainerEntryPointBackCompat,\n\tgetDataStoreEntryPointBackCompat,\n} from \"./containerUtils\";\nexport { createContainerRuntimeFactoryWithDefaultDataStore } from \"./testContainerRuntimeFactoryWithDefaultDataStore\";\n"]}
|
package/dist/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/test-utils";
|
|
8
|
-
export declare const pkgVersion = "2.0.0-dev-rc.1.0.0.
|
|
8
|
+
export declare const pkgVersion = "2.0.0-dev-rc.1.0.0.232845";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
package/dist/packageVersion.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.pkgVersion = exports.pkgName = void 0;
|
|
10
10
|
exports.pkgName = "@fluidframework/test-utils";
|
|
11
|
-
exports.pkgVersion = "2.0.0-dev-rc.1.0.0.
|
|
11
|
+
exports.pkgVersion = "2.0.0-dev-rc.1.0.0.232845";
|
|
12
12
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,4BAA4B,CAAC;AACvC,QAAA,UAAU,GAAG,2BAA2B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/test-utils\";\nexport const pkgVersion = \"2.0.0-dev-rc.1.0.0.
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,4BAA4B,CAAC;AACvC,QAAA,UAAU,GAAG,2BAA2B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/test-utils\";\nexport const pkgVersion = \"2.0.0-dev-rc.1.0.0.232845\";\n"]}
|
|
@@ -70,6 +70,8 @@ export declare function createAndAttachContainer(source: IFluidCodeDetails, load
|
|
|
70
70
|
|
|
71
71
|
/* Excluded from this release type: createSummarizerFromFactory */
|
|
72
72
|
|
|
73
|
+
/* Excluded from this release type: createTestConfigProvider */
|
|
74
|
+
|
|
73
75
|
/* Excluded from this release type: createTestContainerRuntimeFactory */
|
|
74
76
|
|
|
75
77
|
/* Excluded from this release type: DataObjectFactoryType */
|
|
@@ -105,6 +107,8 @@ export declare interface IProvideTestFluidObject {
|
|
|
105
107
|
readonly ITestFluidObject: ITestFluidObject;
|
|
106
108
|
}
|
|
107
109
|
|
|
110
|
+
/* Excluded from this release type: ITestConfigProvider */
|
|
111
|
+
|
|
108
112
|
/* Excluded from this release type: ITestContainerConfig */
|
|
109
113
|
|
|
110
114
|
/* Excluded from this release type: ITestDriver */
|
|
@@ -266,8 +270,6 @@ export declare class LoaderContainerTracker implements IOpProcessingController {
|
|
|
266
270
|
|
|
267
271
|
/* Excluded from this release type: LocalCodeLoader */
|
|
268
272
|
|
|
269
|
-
/* Excluded from this release type: mockConfigProvider */
|
|
270
|
-
|
|
271
273
|
/* Excluded from this release type: retryWithEventualValue */
|
|
272
274
|
|
|
273
275
|
/* Excluded from this release type: summarizeNow */
|
|
@@ -67,6 +67,8 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
|
|
|
67
67
|
|
|
68
68
|
/* Excluded from this release type: createSummarizerFromFactory */
|
|
69
69
|
|
|
70
|
+
/* Excluded from this release type: createTestConfigProvider */
|
|
71
|
+
|
|
70
72
|
/* Excluded from this release type: createTestContainerRuntimeFactory */
|
|
71
73
|
|
|
72
74
|
/* Excluded from this release type: DataObjectFactoryType */
|
|
@@ -143,6 +145,8 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
|
|
|
143
145
|
|
|
144
146
|
/* Excluded from this release type: ISummaryContext */
|
|
145
147
|
|
|
148
|
+
/* Excluded from this release type: ITestConfigProvider */
|
|
149
|
+
|
|
146
150
|
/* Excluded from this release type: ITestContainerConfig */
|
|
147
151
|
|
|
148
152
|
/* Excluded from this release type: ITestDriver */
|
|
@@ -159,8 +163,6 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
|
|
|
159
163
|
|
|
160
164
|
/* Excluded from this release type: LocalCodeLoader */
|
|
161
165
|
|
|
162
|
-
/* Excluded from this release type: mockConfigProvider */
|
|
163
|
-
|
|
164
166
|
/* Excluded from this release type: NamedFluidDataStoreRegistryEntries */
|
|
165
167
|
|
|
166
168
|
/* Excluded from this release type: retryWithEventualValue */
|
|
@@ -67,6 +67,8 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
|
|
|
67
67
|
|
|
68
68
|
/* Excluded from this release type: createSummarizerFromFactory */
|
|
69
69
|
|
|
70
|
+
/* Excluded from this release type: createTestConfigProvider */
|
|
71
|
+
|
|
70
72
|
/* Excluded from this release type: createTestContainerRuntimeFactory */
|
|
71
73
|
|
|
72
74
|
/* Excluded from this release type: DataObjectFactoryType */
|
|
@@ -143,6 +145,8 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
|
|
|
143
145
|
|
|
144
146
|
/* Excluded from this release type: ISummaryContext */
|
|
145
147
|
|
|
148
|
+
/* Excluded from this release type: ITestConfigProvider */
|
|
149
|
+
|
|
146
150
|
/* Excluded from this release type: ITestContainerConfig */
|
|
147
151
|
|
|
148
152
|
/* Excluded from this release type: ITestDriver */
|
|
@@ -159,8 +163,6 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
|
|
|
159
163
|
|
|
160
164
|
/* Excluded from this release type: LocalCodeLoader */
|
|
161
165
|
|
|
162
|
-
/* Excluded from this release type: mockConfigProvider */
|
|
163
|
-
|
|
164
166
|
/* Excluded from this release type: NamedFluidDataStoreRegistryEntries */
|
|
165
167
|
|
|
166
168
|
/* Excluded from this release type: retryWithEventualValue */
|
|
@@ -114,6 +114,12 @@ export declare function createSummarizerFromFactory(provider: ITestObjectProvide
|
|
|
114
114
|
summarizer: ISummarizer;
|
|
115
115
|
}>;
|
|
116
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Creates a test config provider with the ability to set configs values and clear all config values.
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
export declare const createTestConfigProvider: () => ITestConfigProvider;
|
|
122
|
+
|
|
117
123
|
/**
|
|
118
124
|
* Create a container runtime factory class that allows you to set runtime options
|
|
119
125
|
* @internal
|
|
@@ -238,6 +244,19 @@ export declare interface IProvideTestFluidObject {
|
|
|
238
244
|
readonly ITestFluidObject: ITestFluidObject;
|
|
239
245
|
}
|
|
240
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Extension of IConfigProviderBase that supports setting a config value and clearing all
|
|
249
|
+
* config values for testing.
|
|
250
|
+
*
|
|
251
|
+
* @internal
|
|
252
|
+
*/
|
|
253
|
+
export declare interface ITestConfigProvider extends IConfigProviderBase {
|
|
254
|
+
/** Set a config value */
|
|
255
|
+
set: (key: string, value: ConfigTypes) => void;
|
|
256
|
+
/** Clear all config values */
|
|
257
|
+
clear: () => void;
|
|
258
|
+
}
|
|
259
|
+
|
|
241
260
|
/**
|
|
242
261
|
* @internal
|
|
243
262
|
*/
|
|
@@ -523,11 +542,6 @@ export declare class LocalCodeLoader implements ICodeDetailsLoader {
|
|
|
523
542
|
load(source: IFluidCodeDetails): Promise<IFluidModuleWithDetails>;
|
|
524
543
|
}
|
|
525
544
|
|
|
526
|
-
/**
|
|
527
|
-
* @internal
|
|
528
|
-
*/
|
|
529
|
-
export declare const mockConfigProvider: (settings?: Record<string, ConfigTypes>) => IConfigProviderBase;
|
|
530
|
-
|
|
531
545
|
/**
|
|
532
546
|
* Simple retry mechanism with linear back off to call
|
|
533
547
|
* a function which may eventually return an accepted value.
|
package/dist/tsdoc-metadata.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/test-utils",
|
|
3
|
-
"version": "2.0.0-dev-rc.1.0.0.
|
|
3
|
+
"version": "2.0.0-dev-rc.1.0.0.232845",
|
|
4
4
|
"description": "Utilities for Fluid tests",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -34,40 +34,40 @@
|
|
|
34
34
|
"temp-directory": "nyc/.nyc_output"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@fluidframework/aqueduct": "2.0.0-dev-rc.1.0.0.
|
|
38
|
-
"@fluidframework/container-definitions": "2.0.0-dev-rc.1.0.0.
|
|
39
|
-
"@fluidframework/container-loader": "2.0.0-dev-rc.1.0.0.
|
|
40
|
-
"@fluidframework/container-runtime": "2.0.0-dev-rc.1.0.0.
|
|
41
|
-
"@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.1.0.0.
|
|
42
|
-
"@fluidframework/core-interfaces": "2.0.0-dev-rc.1.0.0.
|
|
43
|
-
"@fluidframework/core-utils": "2.0.0-dev-rc.1.0.0.
|
|
44
|
-
"@fluidframework/datastore": "2.0.0-dev-rc.1.0.0.
|
|
45
|
-
"@fluidframework/datastore-definitions": "2.0.0-dev-rc.1.0.0.
|
|
46
|
-
"@fluidframework/driver-definitions": "2.0.0-dev-rc.1.0.0.
|
|
47
|
-
"@fluidframework/driver-utils": "2.0.0-dev-rc.1.0.0.
|
|
48
|
-
"@fluidframework/local-driver": "2.0.0-dev-rc.1.0.0.
|
|
49
|
-
"@fluidframework/map": "2.0.0-dev-rc.1.0.0.
|
|
50
|
-
"@fluidframework/protocol-definitions": "^3.
|
|
51
|
-
"@fluidframework/request-handler": "2.0.0-dev-rc.1.0.0.
|
|
52
|
-
"@fluidframework/routerlicious-driver": "2.0.0-dev-rc.1.0.0.
|
|
53
|
-
"@fluidframework/runtime-definitions": "2.0.0-dev-rc.1.0.0.
|
|
54
|
-
"@fluidframework/runtime-utils": "2.0.0-dev-rc.1.0.0.
|
|
55
|
-
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.1.0.0.
|
|
56
|
-
"@fluidframework/test-driver-definitions": "2.0.0-dev-rc.1.0.0.
|
|
57
|
-
"@fluidframework/test-runtime-utils": "2.0.0-dev-rc.1.0.0.
|
|
37
|
+
"@fluidframework/aqueduct": "2.0.0-dev-rc.1.0.0.232845",
|
|
38
|
+
"@fluidframework/container-definitions": "2.0.0-dev-rc.1.0.0.232845",
|
|
39
|
+
"@fluidframework/container-loader": "2.0.0-dev-rc.1.0.0.232845",
|
|
40
|
+
"@fluidframework/container-runtime": "2.0.0-dev-rc.1.0.0.232845",
|
|
41
|
+
"@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.1.0.0.232845",
|
|
42
|
+
"@fluidframework/core-interfaces": "2.0.0-dev-rc.1.0.0.232845",
|
|
43
|
+
"@fluidframework/core-utils": "2.0.0-dev-rc.1.0.0.232845",
|
|
44
|
+
"@fluidframework/datastore": "2.0.0-dev-rc.1.0.0.232845",
|
|
45
|
+
"@fluidframework/datastore-definitions": "2.0.0-dev-rc.1.0.0.232845",
|
|
46
|
+
"@fluidframework/driver-definitions": "2.0.0-dev-rc.1.0.0.232845",
|
|
47
|
+
"@fluidframework/driver-utils": "2.0.0-dev-rc.1.0.0.232845",
|
|
48
|
+
"@fluidframework/local-driver": "2.0.0-dev-rc.1.0.0.232845",
|
|
49
|
+
"@fluidframework/map": "2.0.0-dev-rc.1.0.0.232845",
|
|
50
|
+
"@fluidframework/protocol-definitions": "^3.2.0-231454",
|
|
51
|
+
"@fluidframework/request-handler": "2.0.0-dev-rc.1.0.0.232845",
|
|
52
|
+
"@fluidframework/routerlicious-driver": "2.0.0-dev-rc.1.0.0.232845",
|
|
53
|
+
"@fluidframework/runtime-definitions": "2.0.0-dev-rc.1.0.0.232845",
|
|
54
|
+
"@fluidframework/runtime-utils": "2.0.0-dev-rc.1.0.0.232845",
|
|
55
|
+
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.1.0.0.232845",
|
|
56
|
+
"@fluidframework/test-driver-definitions": "2.0.0-dev-rc.1.0.0.232845",
|
|
57
|
+
"@fluidframework/test-runtime-utils": "2.0.0-dev-rc.1.0.0.232845",
|
|
58
58
|
"best-random": "^1.0.0",
|
|
59
59
|
"debug": "^4.3.4",
|
|
60
60
|
"uuid": "^9.0.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@arethetypeswrong/cli": "^0.13.3",
|
|
64
|
-
"@fluid-tools/build-cli": "0.29.0
|
|
64
|
+
"@fluid-tools/build-cli": "^0.29.0",
|
|
65
65
|
"@fluidframework/build-common": "^2.0.3",
|
|
66
|
-
"@fluidframework/build-tools": "0.29.0
|
|
67
|
-
"@fluidframework/eslint-config-fluid": "^3.
|
|
68
|
-
"@fluidframework/mocha-test-setup": "2.0.0-dev-rc.1.0.0.
|
|
66
|
+
"@fluidframework/build-tools": "^0.29.0",
|
|
67
|
+
"@fluidframework/eslint-config-fluid": "^3.3.0",
|
|
68
|
+
"@fluidframework/mocha-test-setup": "2.0.0-dev-rc.1.0.0.232845",
|
|
69
69
|
"@fluidframework/test-utils-previous": "npm:@fluidframework/test-utils@2.0.0-internal.8.0.0",
|
|
70
|
-
"@microsoft/api-extractor": "^7.
|
|
70
|
+
"@microsoft/api-extractor": "^7.39.1",
|
|
71
71
|
"@types/debug": "^4.1.5",
|
|
72
72
|
"@types/diff": "^3.5.1",
|
|
73
73
|
"@types/mocha": "^9.1.1",
|
|
@@ -98,7 +98,12 @@
|
|
|
98
98
|
}
|
|
99
99
|
},
|
|
100
100
|
"typeValidation": {
|
|
101
|
-
"broken": {
|
|
101
|
+
"broken": {
|
|
102
|
+
"RemovedVariableDeclaration_mockConfigProvider": {
|
|
103
|
+
"forwardCompat": false,
|
|
104
|
+
"backCompat": false
|
|
105
|
+
}
|
|
106
|
+
}
|
|
102
107
|
},
|
|
103
108
|
"scripts": {
|
|
104
109
|
"api": "fluid-build . --task api",
|
package/src/TestConfigs.ts
CHANGED
|
@@ -6,12 +6,34 @@
|
|
|
6
6
|
import { ConfigTypes, IConfigProviderBase } from "@fluidframework/core-interfaces";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* Extension of IConfigProviderBase that supports setting a config value and clearing all
|
|
10
|
+
* config values for testing.
|
|
11
|
+
*
|
|
9
12
|
* @internal
|
|
10
13
|
*/
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
export interface ITestConfigProvider extends IConfigProviderBase {
|
|
15
|
+
/** Set a config value */
|
|
16
|
+
set: (key: string, value: ConfigTypes) => void;
|
|
17
|
+
/** Clear all config values */
|
|
18
|
+
clear: () => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Creates a test config provider with the ability to set configs values and clear all config values.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export const createTestConfigProvider = (): ITestConfigProvider => {
|
|
26
|
+
const settings: Record<string, ConfigTypes> = {};
|
|
14
27
|
return {
|
|
15
28
|
getRawConfig: (name: string): ConfigTypes => settings[name],
|
|
29
|
+
set: (key: string, value: ConfigTypes) => {
|
|
30
|
+
settings[key] = value;
|
|
31
|
+
},
|
|
32
|
+
clear: () => {
|
|
33
|
+
Object.keys(settings).forEach((key) => {
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
35
|
+
delete settings[key];
|
|
36
|
+
});
|
|
37
|
+
},
|
|
16
38
|
};
|
|
17
39
|
};
|
package/src/TestSummaryUtils.ts
CHANGED
|
@@ -13,9 +13,9 @@ import {
|
|
|
13
13
|
} from "@fluidframework/container-runtime";
|
|
14
14
|
import {
|
|
15
15
|
ITelemetryBaseLogger,
|
|
16
|
-
FluidObject,
|
|
17
16
|
IRequest,
|
|
18
17
|
IConfigProviderBase,
|
|
18
|
+
IResponse,
|
|
19
19
|
} from "@fluidframework/core-interfaces";
|
|
20
20
|
import { DriverHeader } from "@fluidframework/driver-definitions";
|
|
21
21
|
import {
|
|
@@ -24,13 +24,35 @@ import {
|
|
|
24
24
|
} from "@fluidframework/runtime-definitions";
|
|
25
25
|
import { ISummaryTree } from "@fluidframework/protocol-definitions";
|
|
26
26
|
import { ITestContainerConfig, ITestObjectProvider } from "./testObjectProvider";
|
|
27
|
-
import {
|
|
27
|
+
import { createTestConfigProvider } from "./TestConfigs";
|
|
28
28
|
import { waitForContainerConnection } from "./containerUtils";
|
|
29
29
|
import { timeoutAwait } from "./timeoutUtils";
|
|
30
30
|
import { createContainerRuntimeFactoryWithDefaultDataStore } from "./testContainerRuntimeFactoryWithDefaultDataStore";
|
|
31
31
|
|
|
32
32
|
const summarizerClientType = "summarizer";
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* This function should ONLY be used for back compat purposes
|
|
36
|
+
* LTS versions of the Loader/Container will not have the "getEntryPoint" method, so we need to fallback to "request"
|
|
37
|
+
* This function can be removed once LTS version of Loader moves to 2.0.0-internal.7.0.0
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
async function getSummarizerBackCompat(container: IContainer): Promise<ISummarizer> {
|
|
41
|
+
if (container.getEntryPoint !== undefined) {
|
|
42
|
+
const entryPoint = await container.getEntryPoint();
|
|
43
|
+
// Note: We need to also check if the result of `getEntryPoint()` is defined. This is because when running
|
|
44
|
+
// cross version compat testing scenarios, if we create with 1.X container and load with 2.X then the
|
|
45
|
+
// function container.getEntryPoint will be defined for the 2.X container. However, it will not return undefined
|
|
46
|
+
// since the container's runtime will be on version 1.X, which does not have an entry point defined.
|
|
47
|
+
if (entryPoint !== undefined) {
|
|
48
|
+
return entryPoint as ISummarizer;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const response: IResponse = await (container as any).request({ url: "_summarizer" });
|
|
52
|
+
assert(response.status === 200, "requesting '/' should return default data object");
|
|
53
|
+
return response.value as ISummarizer;
|
|
54
|
+
}
|
|
55
|
+
|
|
34
56
|
async function createSummarizerCore(
|
|
35
57
|
container: IContainer,
|
|
36
58
|
loader: IHostLoader,
|
|
@@ -56,9 +78,10 @@ async function createSummarizerCore(
|
|
|
56
78
|
const summarizerContainer = await loader.resolve(request);
|
|
57
79
|
await waitForContainerConnection(summarizerContainer);
|
|
58
80
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
81
|
+
// Old loaders will not have getEntryPoint API on the container. So, use getSummarizerBackCompat which
|
|
82
|
+
// will use request pattern to get the summarizer in these old loaders.
|
|
83
|
+
const fluidObject = await getSummarizerBackCompat(summarizerContainer);
|
|
84
|
+
if (fluidObject.ISummarizer === undefined) {
|
|
62
85
|
throw new Error("Fluid object does not implement ISummarizer");
|
|
63
86
|
}
|
|
64
87
|
|
|
@@ -91,7 +114,7 @@ export async function createSummarizerFromFactory(
|
|
|
91
114
|
containerRuntimeFactoryType = ContainerRuntimeFactoryWithDefaultDataStore,
|
|
92
115
|
registryEntries?: NamedFluidDataStoreRegistryEntries,
|
|
93
116
|
logger?: ITelemetryBaseLogger,
|
|
94
|
-
configProvider: IConfigProviderBase =
|
|
117
|
+
configProvider: IConfigProviderBase = createTestConfigProvider(),
|
|
95
118
|
): Promise<{ container: IContainer; summarizer: ISummarizer }> {
|
|
96
119
|
const runtimeFactory = createContainerRuntimeFactoryWithDefaultDataStore(
|
|
97
120
|
containerRuntimeFactoryType,
|
|
@@ -133,7 +156,7 @@ export async function createSummarizer(
|
|
|
133
156
|
},
|
|
134
157
|
loaderProps: {
|
|
135
158
|
...config?.loaderProps,
|
|
136
|
-
configProvider: config?.loaderProps?.configProvider ??
|
|
159
|
+
configProvider: config?.loaderProps?.configProvider ?? createTestConfigProvider(),
|
|
137
160
|
logger,
|
|
138
161
|
},
|
|
139
162
|
};
|
package/src/index.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { LoaderContainerTracker } from "./loaderContainerTracker";
|
|
|
13
13
|
export { fluidEntryPoint, LocalCodeLoader, SupportedExportInterfaces } from "./localCodeLoader";
|
|
14
14
|
export { createAndAttachContainer, createLoader } from "./localLoader";
|
|
15
15
|
export { retryWithEventualValue } from "./retry";
|
|
16
|
-
export {
|
|
16
|
+
export { createTestConfigProvider, ITestConfigProvider } from "./TestConfigs";
|
|
17
17
|
export {
|
|
18
18
|
createTestContainerRuntimeFactory,
|
|
19
19
|
TestContainerRuntimeFactory,
|
package/src/packageVersion.ts
CHANGED
|
File without changes
|