@fluidframework/test-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 +4 -1
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +34 -0
- package/README.md +1 -1
- package/api-extractor-cjs.json +8 -0
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/test-utils.api.md +18 -6
- package/dist/DriverWrappers.d.ts +3 -0
- package/dist/DriverWrappers.d.ts.map +1 -1
- package/dist/DriverWrappers.js +3 -0
- package/dist/DriverWrappers.js.map +1 -1
- package/dist/TestSummaryUtils.d.ts +7 -2
- package/dist/TestSummaryUtils.d.ts.map +1 -1
- package/dist/TestSummaryUtils.js +14 -12
- package/dist/TestSummaryUtils.js.map +1 -1
- package/dist/containerUtils.d.ts +1 -1
- package/dist/containerUtils.d.ts.map +1 -1
- package/dist/containerUtils.js +2 -2
- package/dist/containerUtils.js.map +1 -1
- package/dist/debug.js +2 -2
- package/dist/debug.js.map +1 -1
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -43
- package/dist/index.js.map +1 -1
- package/dist/loaderContainerTracker.d.ts +5 -1
- package/dist/loaderContainerTracker.d.ts.map +1 -1
- package/dist/loaderContainerTracker.js +13 -13
- package/dist/loaderContainerTracker.js.map +1 -1
- package/dist/localLoader.d.ts +1 -1
- package/dist/localLoader.d.ts.map +1 -1
- package/dist/localLoader.js +2 -2
- package/dist/localLoader.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/test-utils-alpha.d.ts +3 -1
- package/dist/test-utils-beta.d.ts +5 -1
- package/dist/test-utils-public.d.ts +5 -1
- package/dist/test-utils-untrimmed.d.ts +40 -9
- package/dist/testContainerRuntimeFactory.d.ts.map +1 -1
- package/dist/testContainerRuntimeFactory.js +9 -2
- package/dist/testContainerRuntimeFactory.js.map +1 -1
- package/dist/testFluidObject.d.ts +1 -1
- package/dist/testFluidObject.d.ts.map +1 -1
- package/dist/testFluidObject.js.map +1 -1
- package/dist/testObjectProvider.d.ts +34 -11
- package/dist/testObjectProvider.d.ts.map +1 -1
- package/dist/testObjectProvider.js +71 -38
- package/dist/testObjectProvider.js.map +1 -1
- package/dist/timeoutUtils.d.ts.map +1 -1
- package/dist/timeoutUtils.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/DriverWrappers.d.ts +35 -0
- package/lib/DriverWrappers.d.ts.map +1 -0
- package/lib/DriverWrappers.js +54 -0
- package/lib/DriverWrappers.js.map +1 -0
- package/lib/TestConfigs.d.ts +23 -0
- package/lib/TestConfigs.d.ts.map +1 -0
- package/lib/TestConfigs.js +24 -0
- package/lib/TestConfigs.js.map +1 -0
- package/lib/TestSummaryUtils.d.ts +66 -0
- package/lib/TestSummaryUtils.d.ts.map +1 -0
- package/lib/TestSummaryUtils.js +153 -0
- package/lib/TestSummaryUtils.js.map +1 -0
- package/lib/containerUtils.d.ts +46 -0
- package/lib/containerUtils.d.ts.map +1 -0
- package/lib/containerUtils.js +79 -0
- package/lib/containerUtils.js.map +1 -0
- package/lib/debug.d.ts +7 -0
- package/lib/debug.d.ts.map +1 -0
- package/lib/debug.js +9 -0
- package/lib/debug.js.map +1 -0
- package/lib/index.d.ts +19 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +18 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces.d.ts +25 -0
- package/lib/interfaces.d.ts.map +1 -0
- package/lib/interfaces.js +6 -0
- package/lib/interfaces.js.map +1 -0
- package/lib/loaderContainerTracker.d.ts +148 -0
- package/lib/loaderContainerTracker.d.ts.map +1 -0
- package/lib/loaderContainerTracker.js +631 -0
- package/lib/loaderContainerTracker.js.map +1 -0
- package/lib/localCodeLoader.d.ts +31 -0
- package/lib/localCodeLoader.d.ts.map +1 -0
- package/lib/localCodeLoader.js +73 -0
- package/lib/localCodeLoader.js.map +1 -0
- package/lib/localLoader.d.ts +26 -0
- package/lib/localLoader.d.ts.map +1 -0
- package/lib/localLoader.js +37 -0
- package/lib/localLoader.js.map +1 -0
- package/lib/packageVersion.d.ts +9 -0
- package/lib/packageVersion.d.ts.map +1 -0
- package/lib/packageVersion.js +9 -0
- package/lib/packageVersion.js.map +1 -0
- package/lib/retry.d.ts +18 -0
- package/lib/retry.d.ts.map +1 -0
- package/lib/retry.js +37 -0
- package/lib/retry.js.map +1 -0
- package/lib/test/timeoutUtils.spec.js +165 -0
- package/lib/test/timeoutUtils.spec.js.map +1 -0
- package/lib/test/types/validateTestUtilsPrevious.generated.js +90 -0
- package/lib/test/types/validateTestUtilsPrevious.generated.js.map +1 -0
- package/lib/test-utils-alpha.d.ts +309 -0
- package/lib/test-utils-beta.d.ts +208 -0
- package/lib/test-utils-public.d.ts +208 -0
- package/lib/test-utils-untrimmed.d.ts +1046 -0
- package/lib/testContainerRuntimeFactory.d.ts +46 -0
- package/lib/testContainerRuntimeFactory.d.ts.map +1 -0
- package/lib/testContainerRuntimeFactory.js +113 -0
- package/lib/testContainerRuntimeFactory.js.map +1 -0
- package/lib/testContainerRuntimeFactoryWithDefaultDataStore.d.ts +23 -0
- package/lib/testContainerRuntimeFactoryWithDefaultDataStore.d.ts.map +1 -0
- package/lib/testContainerRuntimeFactoryWithDefaultDataStore.js +28 -0
- package/lib/testContainerRuntimeFactoryWithDefaultDataStore.js.map +1 -0
- package/lib/testFluidObject.d.ts +92 -0
- package/lib/testFluidObject.d.ts.map +1 -0
- package/lib/testFluidObject.js +159 -0
- package/lib/testFluidObject.js.map +1 -0
- package/lib/testObjectProvider.d.ts +435 -0
- package/lib/testObjectProvider.d.ts.map +1 -0
- package/lib/testObjectProvider.js +636 -0
- package/lib/testObjectProvider.js.map +1 -0
- package/lib/timeoutUtils.d.ts +60 -0
- package/lib/timeoutUtils.d.ts.map +1 -0
- package/lib/timeoutUtils.js +164 -0
- package/lib/timeoutUtils.js.map +1 -0
- package/package.json +99 -37
- package/src/DriverWrappers.ts +3 -0
- package/src/TestSummaryUtils.ts +7 -6
- package/src/containerUtils.ts +1 -1
- package/src/debug.ts +1 -1
- package/src/index.ts +19 -14
- package/src/loaderContainerTracker.ts +6 -5
- package/src/localLoader.ts +1 -1
- package/src/packageVersion.ts +1 -1
- package/src/testContainerRuntimeFactory.ts +12 -2
- package/src/testFluidObject.ts +1 -1
- package/src/testObjectProvider.ts +99 -34
- package/src/timeoutUtils.ts +1 -0
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +3 -4
package/src/TestSummaryUtils.ts
CHANGED
|
@@ -23,11 +23,11 @@ import {
|
|
|
23
23
|
NamedFluidDataStoreRegistryEntries,
|
|
24
24
|
} from "@fluidframework/runtime-definitions";
|
|
25
25
|
import { ISummaryTree } from "@fluidframework/protocol-definitions";
|
|
26
|
-
import { ITestContainerConfig, ITestObjectProvider } from "./testObjectProvider";
|
|
27
|
-
import { createTestConfigProvider } from "./TestConfigs";
|
|
28
|
-
import { waitForContainerConnection } from "./containerUtils";
|
|
29
|
-
import { timeoutAwait } from "./timeoutUtils";
|
|
30
|
-
import { createContainerRuntimeFactoryWithDefaultDataStore } from "./testContainerRuntimeFactoryWithDefaultDataStore";
|
|
26
|
+
import { ITestContainerConfig, ITestObjectProvider } from "./testObjectProvider.js";
|
|
27
|
+
import { createTestConfigProvider } from "./TestConfigs.js";
|
|
28
|
+
import { waitForContainerConnection } from "./containerUtils.js";
|
|
29
|
+
import { timeoutAwait } from "./timeoutUtils.js";
|
|
30
|
+
import { createContainerRuntimeFactoryWithDefaultDataStore } from "./testContainerRuntimeFactoryWithDefaultDataStore.js";
|
|
31
31
|
|
|
32
32
|
const summarizerClientType = "summarizer";
|
|
33
33
|
|
|
@@ -53,7 +53,8 @@ async function getSummarizerBackCompat(container: IContainer): Promise<ISummariz
|
|
|
53
53
|
return response.value as ISummarizer;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
/** @internal */
|
|
57
|
+
export async function createSummarizerCore(
|
|
57
58
|
container: IContainer,
|
|
58
59
|
loader: IHostLoader,
|
|
59
60
|
summaryVersion?: string,
|
package/src/containerUtils.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { ConnectionState } from "@fluidframework/container-loader";
|
|
|
8
8
|
import { IResponse } from "@fluidframework/core-interfaces";
|
|
9
9
|
import { assert } from "@fluidframework/core-utils";
|
|
10
10
|
import { IDataStore } from "@fluidframework/runtime-definitions";
|
|
11
|
-
import { PromiseExecutor, timeoutPromise, TimeoutWithError } from "./timeoutUtils";
|
|
11
|
+
import { PromiseExecutor, timeoutPromise, TimeoutWithError } from "./timeoutUtils.js";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Utility function to wait for the specified Container to be in Connected state.
|
package/src/debug.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import registerDebug from "debug";
|
|
7
|
-
import { pkgName, pkgVersion } from "./packageVersion";
|
|
7
|
+
import { pkgName, pkgVersion } from "./packageVersion.js";
|
|
8
8
|
|
|
9
9
|
export const debug = registerDebug("fluid:test-utils");
|
|
10
10
|
debug(`Package: ${pkgName} - Version: ${pkgVersion}`);
|
package/src/index.ts
CHANGED
|
@@ -7,18 +7,22 @@ export {
|
|
|
7
7
|
wrapDocumentService,
|
|
8
8
|
wrapDocumentServiceFactory,
|
|
9
9
|
wrapDocumentStorageService,
|
|
10
|
-
} from "./DriverWrappers";
|
|
11
|
-
export { IProvideTestFluidObject, ITestFluidObject } from "./interfaces";
|
|
12
|
-
export { LoaderContainerTracker } from "./loaderContainerTracker";
|
|
13
|
-
export { fluidEntryPoint, LocalCodeLoader, SupportedExportInterfaces } from "./localCodeLoader";
|
|
14
|
-
export { createAndAttachContainer, createLoader } from "./localLoader";
|
|
15
|
-
export { retryWithEventualValue } from "./retry";
|
|
16
|
-
export { createTestConfigProvider, ITestConfigProvider } from "./TestConfigs";
|
|
10
|
+
} from "./DriverWrappers.js";
|
|
11
|
+
export { IProvideTestFluidObject, ITestFluidObject } from "./interfaces.js";
|
|
12
|
+
export { LoaderContainerTracker } from "./loaderContainerTracker.js";
|
|
13
|
+
export { fluidEntryPoint, LocalCodeLoader, SupportedExportInterfaces } from "./localCodeLoader.js";
|
|
14
|
+
export { createAndAttachContainer, createLoader } from "./localLoader.js";
|
|
15
|
+
export { retryWithEventualValue } from "./retry.js";
|
|
16
|
+
export { createTestConfigProvider, ITestConfigProvider } from "./TestConfigs.js";
|
|
17
17
|
export {
|
|
18
18
|
createTestContainerRuntimeFactory,
|
|
19
19
|
TestContainerRuntimeFactory,
|
|
20
|
-
} from "./testContainerRuntimeFactory";
|
|
21
|
-
export {
|
|
20
|
+
} from "./testContainerRuntimeFactory.js";
|
|
21
|
+
export {
|
|
22
|
+
ChannelFactoryRegistry,
|
|
23
|
+
TestFluidObject,
|
|
24
|
+
TestFluidObjectFactory,
|
|
25
|
+
} from "./testFluidObject.js";
|
|
22
26
|
export {
|
|
23
27
|
createDocumentId,
|
|
24
28
|
DataObjectFactoryType,
|
|
@@ -30,23 +34,24 @@ export {
|
|
|
30
34
|
ITestObjectProvider,
|
|
31
35
|
TestObjectProvider,
|
|
32
36
|
TestObjectProviderWithVersionedLoad,
|
|
33
|
-
} from "./testObjectProvider";
|
|
37
|
+
} from "./testObjectProvider.js";
|
|
34
38
|
export {
|
|
35
39
|
createSummarizer,
|
|
40
|
+
createSummarizerCore,
|
|
36
41
|
createSummarizerFromFactory,
|
|
37
42
|
summarizeNow,
|
|
38
43
|
SummaryInfo,
|
|
39
|
-
} from "./TestSummaryUtils";
|
|
44
|
+
} from "./TestSummaryUtils.js";
|
|
40
45
|
export {
|
|
41
46
|
defaultTimeoutDurationMs,
|
|
42
47
|
timeoutAwait,
|
|
43
48
|
timeoutPromise,
|
|
44
49
|
TimeoutWithError,
|
|
45
50
|
TimeoutWithValue,
|
|
46
|
-
} from "./timeoutUtils";
|
|
51
|
+
} from "./timeoutUtils.js";
|
|
47
52
|
export {
|
|
48
53
|
waitForContainerConnection,
|
|
49
54
|
getContainerEntryPointBackCompat,
|
|
50
55
|
getDataStoreEntryPointBackCompat,
|
|
51
|
-
} from "./containerUtils";
|
|
52
|
-
export { createContainerRuntimeFactoryWithDefaultDataStore } from "./testContainerRuntimeFactoryWithDefaultDataStore";
|
|
56
|
+
} from "./containerUtils.js";
|
|
57
|
+
export { createContainerRuntimeFactoryWithDefaultDataStore } from "./testContainerRuntimeFactoryWithDefaultDataStore.js";
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
|
|
5
6
|
import { assert } from "@fluidframework/core-utils";
|
|
6
7
|
import { IContainer, IDeltaQueue, IHostLoader } from "@fluidframework/container-definitions";
|
|
7
8
|
import { ConnectionState } from "@fluidframework/container-loader";
|
|
@@ -15,11 +16,11 @@ import {
|
|
|
15
16
|
IContainerCreateProps,
|
|
16
17
|
IContainerLoadProps,
|
|
17
18
|
// eslint-disable-next-line import/no-internal-modules
|
|
18
|
-
} from "@fluidframework/container-loader/
|
|
19
|
-
import { waitForContainerConnection } from "./containerUtils";
|
|
20
|
-
import { debug } from "./debug";
|
|
21
|
-
import { IOpProcessingController } from "./testObjectProvider";
|
|
22
|
-
import { timeoutAwait, timeoutPromise } from "./timeoutUtils";
|
|
19
|
+
} from "@fluidframework/container-loader/test/container";
|
|
20
|
+
import { waitForContainerConnection } from "./containerUtils.js";
|
|
21
|
+
import { debug } from "./debug.js";
|
|
22
|
+
import { IOpProcessingController } from "./testObjectProvider.js";
|
|
23
|
+
import { timeoutAwait, timeoutPromise } from "./timeoutUtils.js";
|
|
23
24
|
|
|
24
25
|
const debugOp = debug.extend("ops");
|
|
25
26
|
const debugWait = debug.extend("wait");
|
package/src/localLoader.ts
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import { Loader } from "@fluidframework/container-loader";
|
|
14
14
|
import { ITelemetryBaseLogger, IRequest } from "@fluidframework/core-interfaces";
|
|
15
15
|
import { IDocumentServiceFactory, IUrlResolver } from "@fluidframework/driver-definitions";
|
|
16
|
-
import { fluidEntryPoint, LocalCodeLoader } from "./localCodeLoader";
|
|
16
|
+
import { fluidEntryPoint, LocalCodeLoader } from "./localCodeLoader.js";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Creates a loader with the given package entries and driver.
|
package/src/packageVersion.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { assert } from "@fluidframework/core-utils";
|
|
6
7
|
import { IContainerContext, IRuntime } from "@fluidframework/container-definitions";
|
|
7
8
|
import {
|
|
8
9
|
ContainerRuntime,
|
|
@@ -83,12 +84,21 @@ export const createTestContainerRuntimeFactory = (
|
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
public async instantiateFirstTime(runtime: ContainerRuntime): Promise<void> {
|
|
86
|
-
|
|
87
|
+
// Back-compat - old code does not return IDataStore for rootContext.attachRuntime() call!
|
|
88
|
+
// Thus need to leverage old API createDetachedRootDataStore() that is gone in latest releases.
|
|
89
|
+
const rootContext =
|
|
90
|
+
"createDetachedRootDataStore" in runtime
|
|
91
|
+
? (runtime as any).createDetachedRootDataStore([this.type], "default")
|
|
92
|
+
: runtime.createDetachedDataStore([this.type], "default");
|
|
93
|
+
|
|
87
94
|
const rootRuntime = await this.dataStoreFactory.instantiateDataStore(
|
|
88
95
|
rootContext,
|
|
89
96
|
/* existing */ false,
|
|
90
97
|
);
|
|
91
|
-
await rootContext.attachRuntime(this.dataStoreFactory, rootRuntime);
|
|
98
|
+
const dataStore = await rootContext.attachRuntime(this.dataStoreFactory, rootRuntime);
|
|
99
|
+
|
|
100
|
+
const result = await dataStore?.trySetAlias("default");
|
|
101
|
+
assert(result === "Success" || result === undefined, "success");
|
|
92
102
|
}
|
|
93
103
|
|
|
94
104
|
public async instantiateFromExisting(runtime: ContainerRuntime): Promise<void> {
|
package/src/testFluidObject.ts
CHANGED
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
import { IFluidDataStoreRuntime, IChannelFactory } from "@fluidframework/datastore-definitions";
|
|
19
19
|
import { assert } from "@fluidframework/core-utils";
|
|
20
20
|
import { create404Response } from "@fluidframework/runtime-utils";
|
|
21
|
-
import { ITestFluidObject } from "./interfaces";
|
|
21
|
+
import { ITestFluidObject } from "./interfaces.js";
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* A test Fluid object that will create a shared object for each key-value pair in the factoryEntries passed to load.
|
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
} from "@fluidframework/container-loader";
|
|
17
17
|
import { IContainerRuntimeOptions } from "@fluidframework/container-runtime";
|
|
18
18
|
import {
|
|
19
|
-
ITelemetryGenericEvent,
|
|
20
19
|
ITelemetryBaseLogger,
|
|
21
20
|
ITelemetryBaseEvent,
|
|
22
21
|
IRequestHeader,
|
|
@@ -28,11 +27,15 @@ import {
|
|
|
28
27
|
} from "@fluidframework/driver-definitions";
|
|
29
28
|
import { ITestDriver, TestDriverTypes } from "@fluidframework/test-driver-definitions";
|
|
30
29
|
import { v4 as uuid } from "uuid";
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
import {
|
|
31
|
+
createChildLogger,
|
|
32
|
+
createMultiSinkLogger,
|
|
33
|
+
type ITelemetryGenericEventExt,
|
|
34
|
+
} from "@fluidframework/telemetry-utils";
|
|
35
|
+
import { LoaderContainerTracker } from "./loaderContainerTracker.js";
|
|
36
|
+
import { fluidEntryPoint, LocalCodeLoader } from "./localCodeLoader.js";
|
|
37
|
+
import { createAndAttachContainer } from "./localLoader.js";
|
|
38
|
+
import { ChannelFactoryRegistry } from "./testFluidObject.js";
|
|
36
39
|
|
|
37
40
|
const defaultCodeDetails: IFluidCodeDetails = {
|
|
38
41
|
package: "defaultTestPackage",
|
|
@@ -126,6 +129,19 @@ export interface ITestObjectProvider {
|
|
|
126
129
|
loaderProps?: Partial<ILoaderProps>,
|
|
127
130
|
): Promise<IContainer>;
|
|
128
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Create a detached container much like createContainer, but without attaching it to the document service.
|
|
134
|
+
*/
|
|
135
|
+
createDetachedContainer(
|
|
136
|
+
entryPoint: fluidEntryPoint,
|
|
137
|
+
loaderProps?: Partial<ILoaderProps>,
|
|
138
|
+
): Promise<IContainer>;
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Attaches a detached container to the document service.
|
|
142
|
+
*/
|
|
143
|
+
attachDetachedContainer(container: IContainer): Promise<void>;
|
|
144
|
+
|
|
129
145
|
/**
|
|
130
146
|
* Loads a container using the default document id
|
|
131
147
|
*/
|
|
@@ -288,12 +304,12 @@ export class EventAndErrorTrackingLogger implements ITelemetryBaseLogger {
|
|
|
288
304
|
constructor(private readonly baseLogger: ITelemetryBaseLogger) {}
|
|
289
305
|
|
|
290
306
|
private readonly expectedEvents: (
|
|
291
|
-
| { index: number; event:
|
|
307
|
+
| { index: number; event: ITelemetryGenericEventExt | undefined }
|
|
292
308
|
| undefined
|
|
293
309
|
)[] = [];
|
|
294
310
|
private readonly unexpectedErrors: ITelemetryBaseEvent[] = [];
|
|
295
311
|
|
|
296
|
-
public registerExpectedEvent(...orderedExpectedEvents:
|
|
312
|
+
public registerExpectedEvent(...orderedExpectedEvents: ITelemetryGenericEventExt[]) {
|
|
297
313
|
if (this.expectedEvents.length !== 0) {
|
|
298
314
|
// we don't have to error here. just no reason not to. given the events must be
|
|
299
315
|
// ordered it could be tricky to figure out problems around multiple registrations.
|
|
@@ -505,6 +521,36 @@ export class TestObjectProvider implements ITestObjectProvider {
|
|
|
505
521
|
return container;
|
|
506
522
|
}
|
|
507
523
|
|
|
524
|
+
/**
|
|
525
|
+
* {@inheritdoc ITestObjectProvider.createDetachedContainer}
|
|
526
|
+
*/
|
|
527
|
+
public async createDetachedContainer(
|
|
528
|
+
entryPoint: fluidEntryPoint,
|
|
529
|
+
loaderProps?: Partial<ILoaderProps> | undefined,
|
|
530
|
+
): Promise<IContainer> {
|
|
531
|
+
if (this._documentCreated) {
|
|
532
|
+
throw new Error(
|
|
533
|
+
"Only one container/document can be created. To load the container/document use loadContainer",
|
|
534
|
+
);
|
|
535
|
+
}
|
|
536
|
+
const loader = this.createLoader([[defaultCodeDetails, entryPoint]], loaderProps);
|
|
537
|
+
return loader.createDetachedContainer(defaultCodeDetails);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* {@inheritdoc ITestObjectProvider.attachDetachedContainer}
|
|
542
|
+
*/
|
|
543
|
+
public async attachDetachedContainer(container: IContainer): Promise<void> {
|
|
544
|
+
if (this._documentCreated) {
|
|
545
|
+
throw new Error(
|
|
546
|
+
"Only one container/document can be created. To load the container/document use loadContainer",
|
|
547
|
+
);
|
|
548
|
+
}
|
|
549
|
+
await container.attach(this.driver.createCreateNewRequest(this.documentId));
|
|
550
|
+
this._documentCreated = true;
|
|
551
|
+
this._documentIdStrategy.update(container.resolvedUrl);
|
|
552
|
+
}
|
|
553
|
+
|
|
508
554
|
/**
|
|
509
555
|
* {@inheritDoc ITestObjectProvider.loadContainer}
|
|
510
556
|
*/
|
|
@@ -643,14 +689,12 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
643
689
|
private _documentCreated = false;
|
|
644
690
|
|
|
645
691
|
/**
|
|
646
|
-
*
|
|
647
|
-
* loadCount is even then we will load with the "create" version, and if odd we load with the "load" version.
|
|
648
|
-
* After each test we will reset loadCount to 0 to ensure we always create the first container with the create version.
|
|
692
|
+
* Used to determine which APIs to use when creating a loader.
|
|
649
693
|
*
|
|
650
|
-
*
|
|
694
|
+
* The first load will always use the create APIs, and then useCreateApi will be set to false to ensure all
|
|
695
|
+
* subsequent loads use the load APIs.
|
|
651
696
|
*/
|
|
652
|
-
|
|
653
|
-
private _loadCount: number = 0;
|
|
697
|
+
private useCreateApi: boolean = true;
|
|
654
698
|
|
|
655
699
|
constructor(
|
|
656
700
|
private readonly LoaderConstructorForCreating: typeof Loader,
|
|
@@ -726,7 +770,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
726
770
|
* {@inheritDoc ITestObjectProvider.driver}
|
|
727
771
|
*/
|
|
728
772
|
public get driver(): ITestDriver {
|
|
729
|
-
return this.
|
|
773
|
+
return this.useCreateApi ? this.driverForCreating : this.driverForLoading;
|
|
730
774
|
}
|
|
731
775
|
|
|
732
776
|
/**
|
|
@@ -735,7 +779,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
735
779
|
public get createFluidEntryPoint(): (
|
|
736
780
|
testContainerConfig?: ITestContainerConfig,
|
|
737
781
|
) => fluidEntryPoint {
|
|
738
|
-
return this.
|
|
782
|
+
return this.useCreateApi
|
|
739
783
|
? this.createFluidEntryPointForCreating
|
|
740
784
|
: this.createFluidEntryPointForLoading;
|
|
741
785
|
}
|
|
@@ -789,9 +833,12 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
789
833
|
packageEntries: Iterable<[IFluidCodeDetails, fluidEntryPoint]>,
|
|
790
834
|
loaderProps?: Partial<ILoaderProps>,
|
|
791
835
|
) {
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
836
|
+
if (this.useCreateApi) {
|
|
837
|
+
// After we create the first loader, we can set this.useCreateApi to false.
|
|
838
|
+
this.useCreateApi = false;
|
|
839
|
+
return this.createLoaderForCreating(packageEntries, loaderProps);
|
|
840
|
+
}
|
|
841
|
+
return this.createLoaderForLoading(packageEntries, loaderProps);
|
|
795
842
|
}
|
|
796
843
|
|
|
797
844
|
/**
|
|
@@ -816,6 +863,36 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
816
863
|
return container;
|
|
817
864
|
}
|
|
818
865
|
|
|
866
|
+
/**
|
|
867
|
+
* {@inheritdoc ITestObjectProvider.createDetachedContainer}
|
|
868
|
+
*/
|
|
869
|
+
public async createDetachedContainer(
|
|
870
|
+
entryPoint: fluidEntryPoint,
|
|
871
|
+
loaderProps?: Partial<ILoaderProps> | undefined,
|
|
872
|
+
): Promise<IContainer> {
|
|
873
|
+
if (this._documentCreated) {
|
|
874
|
+
throw new Error(
|
|
875
|
+
"Only one container/document can be created. To load the container/document use loadContainer",
|
|
876
|
+
);
|
|
877
|
+
}
|
|
878
|
+
const loader = this.createLoader([[defaultCodeDetails, entryPoint]], loaderProps);
|
|
879
|
+
return loader.createDetachedContainer(defaultCodeDetails);
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
/**
|
|
883
|
+
* {@inheritdoc ITestObjectProvider.attachDetachedContainer}
|
|
884
|
+
*/
|
|
885
|
+
public async attachDetachedContainer(container: IContainer): Promise<void> {
|
|
886
|
+
if (this._documentCreated) {
|
|
887
|
+
throw new Error(
|
|
888
|
+
"Only one container/document can be created. To load the container/document use loadContainer",
|
|
889
|
+
);
|
|
890
|
+
}
|
|
891
|
+
await container.attach(this.driver.createCreateNewRequest(this.documentId));
|
|
892
|
+
this._documentCreated = true;
|
|
893
|
+
this._documentIdStrategy.update(container.resolvedUrl);
|
|
894
|
+
}
|
|
895
|
+
|
|
819
896
|
/**
|
|
820
897
|
* {@inheritDoc ITestObjectProvider.loadContainer}
|
|
821
898
|
*/
|
|
@@ -824,9 +901,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
824
901
|
loaderProps?: Partial<ILoaderProps>,
|
|
825
902
|
requestHeader?: IRequestHeader,
|
|
826
903
|
): Promise<IContainer> {
|
|
827
|
-
const driver = this.
|
|
828
|
-
? this.driverForCreating
|
|
829
|
-
: this.driverForLoading;
|
|
904
|
+
const driver = this.useCreateApi ? this.driverForCreating : this.driverForLoading;
|
|
830
905
|
const loader = this.createLoader([[defaultCodeDetails, entryPoint]], loaderProps);
|
|
831
906
|
return this.resolveContainer(loader, requestHeader, driver);
|
|
832
907
|
}
|
|
@@ -888,9 +963,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
888
963
|
requestHeader?: IRequestHeader,
|
|
889
964
|
): Promise<IContainer> {
|
|
890
965
|
// Keep track of which Loader we are about to use so we can pass the correct driver through
|
|
891
|
-
const driver = this.
|
|
892
|
-
? this.driverForCreating
|
|
893
|
-
: this.driverForLoading;
|
|
966
|
+
const driver = this.useCreateApi ? this.driverForCreating : this.driverForLoading;
|
|
894
967
|
const loader = this.makeTestLoader(testContainerConfig);
|
|
895
968
|
const container = await this.resolveContainer(loader, requestHeader, driver);
|
|
896
969
|
await this.waitContainerToCatchUp(container);
|
|
@@ -902,7 +975,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
902
975
|
* {@inheritDoc ITestObjectProvider.reset}
|
|
903
976
|
*/
|
|
904
977
|
public reset() {
|
|
905
|
-
this.
|
|
978
|
+
this.useCreateApi = true;
|
|
906
979
|
this._loaderContainerTracker.reset();
|
|
907
980
|
this._logger = undefined;
|
|
908
981
|
this._documentServiceFactory = undefined;
|
|
@@ -948,14 +1021,6 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
948
1021
|
this._loaderContainerTracker.reset();
|
|
949
1022
|
this._loaderContainerTracker = new LoaderContainerTracker(syncSummarizerClients);
|
|
950
1023
|
}
|
|
951
|
-
|
|
952
|
-
private nextLoaderShouldCreate(increment: boolean = false): boolean {
|
|
953
|
-
const shouldCreate = this._loadCount % 2 === 0;
|
|
954
|
-
if (increment) {
|
|
955
|
-
this._loadCount++;
|
|
956
|
-
}
|
|
957
|
-
return shouldCreate;
|
|
958
|
-
}
|
|
959
1024
|
}
|
|
960
1025
|
|
|
961
1026
|
/**
|
package/src/timeoutUtils.ts
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": "
|
|
2
|
+
"extends": "../../../common/build/build-common/tsconfig.node16.json",
|
|
3
3
|
"exclude": ["src/test/**/*"],
|
|
4
4
|
"compilerOptions": {
|
|
5
5
|
"rootDir": "./src",
|
|
6
|
-
"outDir": "./
|
|
7
|
-
"
|
|
8
|
-
"types": ["mocha", "node"],
|
|
6
|
+
"outDir": "./lib",
|
|
7
|
+
"types": ["node"],
|
|
9
8
|
},
|
|
10
9
|
"include": ["src/**/*"],
|
|
11
10
|
}
|