@fluidframework/test-utils 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.1
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 +23 -0
- package/api-report/test-utils.api.md +72 -51
- package/dist/DriverWrappers.d.ts +1 -1
- package/dist/DriverWrappers.d.ts.map +1 -1
- package/dist/DriverWrappers.js.map +1 -1
- package/dist/TestSummaryUtils.d.ts +5 -5
- package/dist/TestSummaryUtils.d.ts.map +1 -1
- package/dist/TestSummaryUtils.js +13 -13
- package/dist/TestSummaryUtils.js.map +1 -1
- package/dist/containerUtils.d.ts +2 -2
- package/dist/containerUtils.d.ts.map +1 -1
- package/dist/containerUtils.js +3 -3
- package/dist/containerUtils.js.map +1 -1
- package/dist/debug.d.ts.map +1 -1
- package/dist/debug.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +3 -3
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/legacy.d.ts +18 -0
- package/dist/loaderContainerTracker.d.ts +5 -1
- package/dist/loaderContainerTracker.d.ts.map +1 -1
- package/dist/loaderContainerTracker.js +15 -15
- package/dist/loaderContainerTracker.js.map +1 -1
- package/dist/localCodeLoader.d.ts +3 -3
- package/dist/localCodeLoader.d.ts.map +1 -1
- package/dist/localCodeLoader.js +4 -4
- package/dist/localCodeLoader.js.map +1 -1
- package/dist/localLoader.d.ts +3 -3
- package/dist/localLoader.d.ts.map +1 -1
- package/dist/localLoader.js +2 -2
- package/dist/localLoader.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/public.d.ts +12 -0
- package/dist/retry.js +2 -2
- package/dist/retry.js.map +1 -1
- package/dist/testContainerRuntimeFactory.d.ts +5 -5
- package/dist/testContainerRuntimeFactory.d.ts.map +1 -1
- package/dist/testContainerRuntimeFactory.js +16 -14
- package/dist/testContainerRuntimeFactory.js.map +1 -1
- package/dist/testContainerRuntimeFactoryWithDefaultDataStore.d.ts +5 -5
- package/dist/testContainerRuntimeFactoryWithDefaultDataStore.d.ts.map +1 -1
- package/dist/testContainerRuntimeFactoryWithDefaultDataStore.js +2 -2
- package/dist/testContainerRuntimeFactoryWithDefaultDataStore.js.map +1 -1
- package/dist/testFluidObject.d.ts +5 -5
- package/dist/testFluidObject.d.ts.map +1 -1
- package/dist/testFluidObject.js +10 -10
- package/dist/testFluidObject.js.map +1 -1
- package/dist/testObjectProvider.d.ts +47 -23
- package/dist/testObjectProvider.d.ts.map +1 -1
- package/dist/testObjectProvider.js +66 -46
- package/dist/testObjectProvider.js.map +1 -1
- package/dist/timeoutUtils.js +4 -4
- package/dist/timeoutUtils.js.map +1 -1
- package/internal.d.ts +11 -0
- package/legacy.d.ts +11 -0
- package/lib/DriverWrappers.d.ts +1 -1
- package/lib/DriverWrappers.d.ts.map +1 -1
- package/lib/DriverWrappers.js.map +1 -1
- package/lib/TestSummaryUtils.d.ts +5 -5
- package/lib/TestSummaryUtils.d.ts.map +1 -1
- package/lib/TestSummaryUtils.js +5 -5
- package/lib/TestSummaryUtils.js.map +1 -1
- package/lib/containerUtils.d.ts +2 -2
- package/lib/containerUtils.d.ts.map +1 -1
- package/lib/containerUtils.js +1 -1
- package/lib/containerUtils.js.map +1 -1
- package/lib/debug.d.ts.map +1 -1
- package/lib/debug.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces.d.ts +3 -3
- package/lib/interfaces.d.ts.map +1 -1
- package/lib/interfaces.js.map +1 -1
- package/lib/legacy.d.ts +18 -0
- package/lib/loaderContainerTracker.d.ts +5 -1
- package/lib/loaderContainerTracker.d.ts.map +1 -1
- package/lib/loaderContainerTracker.js +2 -2
- package/lib/loaderContainerTracker.js.map +1 -1
- package/lib/localCodeLoader.d.ts +3 -3
- package/lib/localCodeLoader.d.ts.map +1 -1
- package/lib/localCodeLoader.js +2 -2
- package/lib/localCodeLoader.js.map +1 -1
- package/lib/localLoader.d.ts +3 -3
- package/lib/localLoader.d.ts.map +1 -1
- package/lib/localLoader.js +1 -1
- package/lib/localLoader.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +12 -0
- package/lib/retry.js +1 -1
- package/lib/retry.js.map +1 -1
- package/lib/testContainerRuntimeFactory.d.ts +5 -5
- package/lib/testContainerRuntimeFactory.d.ts.map +1 -1
- package/lib/testContainerRuntimeFactory.js +10 -6
- package/lib/testContainerRuntimeFactory.js.map +1 -1
- package/lib/testContainerRuntimeFactoryWithDefaultDataStore.d.ts +5 -5
- package/lib/testContainerRuntimeFactoryWithDefaultDataStore.d.ts.map +1 -1
- package/lib/testContainerRuntimeFactoryWithDefaultDataStore.js +1 -1
- package/lib/testContainerRuntimeFactoryWithDefaultDataStore.js.map +1 -1
- package/lib/testFluidObject.d.ts +5 -5
- package/lib/testFluidObject.d.ts.map +1 -1
- package/lib/testFluidObject.js +4 -4
- package/lib/testFluidObject.js.map +1 -1
- package/lib/testObjectProvider.d.ts +47 -23
- package/lib/testObjectProvider.d.ts.map +1 -1
- package/lib/testObjectProvider.js +61 -41
- package/lib/testObjectProvider.js.map +1 -1
- package/lib/timeoutUtils.js +1 -1
- package/lib/timeoutUtils.js.map +1 -1
- package/package.json +46 -64
- package/src/DriverWrappers.ts +1 -1
- package/src/TestSummaryUtils.ts +16 -11
- package/src/containerUtils.ts +5 -4
- package/src/debug.ts +1 -0
- package/src/index.ts +1 -0
- package/src/interfaces.ts +4 -4
- package/src/loaderContainerTracker.ts +11 -8
- package/src/localCodeLoader.ts +10 -9
- package/src/localLoader.ts +7 -6
- package/src/packageVersion.ts +1 -1
- package/src/retry.ts +1 -1
- package/src/testContainerRuntimeFactory.ts +15 -10
- package/src/testContainerRuntimeFactoryWithDefaultDataStore.ts +5 -5
- package/src/testFluidObject.ts +10 -9
- package/src/testObjectProvider.ts +136 -75
- package/src/timeoutUtils.ts +1 -1
- package/api-extractor-cjs.json +0 -8
- package/dist/test-utils-alpha.d.ts +0 -309
- package/dist/test-utils-beta.d.ts +0 -208
- package/dist/test-utils-public.d.ts +0 -208
- package/dist/test-utils-untrimmed.d.ts +0 -1046
- package/lib/test/timeoutUtils.spec.js +0 -165
- package/lib/test/timeoutUtils.spec.js.map +0 -1
- package/lib/test/types/validateTestUtilsPrevious.generated.js +0 -90
- package/lib/test/types/validateTestUtilsPrevious.generated.js.map +0 -1
- package/lib/test-utils-alpha.d.ts +0 -309
- package/lib/test-utils-beta.d.ts +0 -208
- package/lib/test-utils-public.d.ts +0 -208
- package/lib/test-utils-untrimmed.d.ts +0 -1046
- /package/{dist → lib}/tsdoc-metadata.json +0 -0
|
@@ -3,37 +3,40 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { ITestDriver, TestDriverTypes } from "@fluid-internal/test-driver-definitions";
|
|
6
8
|
import {
|
|
7
9
|
IContainer,
|
|
8
|
-
IHostLoader,
|
|
9
10
|
IFluidCodeDetails,
|
|
11
|
+
IHostLoader,
|
|
10
12
|
ILoader,
|
|
11
|
-
} from "@fluidframework/container-definitions";
|
|
13
|
+
} from "@fluidframework/container-definitions/internal";
|
|
12
14
|
import {
|
|
13
15
|
ILoaderProps,
|
|
14
16
|
Loader,
|
|
15
17
|
waitContainerToCatchUp as waitContainerToCatchUp_original,
|
|
16
|
-
} from "@fluidframework/container-loader";
|
|
17
|
-
import { IContainerRuntimeOptions } from "@fluidframework/container-runtime";
|
|
18
|
+
} from "@fluidframework/container-loader/internal";
|
|
19
|
+
import { IContainerRuntimeOptions } from "@fluidframework/container-runtime/internal";
|
|
18
20
|
import {
|
|
19
|
-
ITelemetryBaseLogger,
|
|
20
|
-
ITelemetryBaseEvent,
|
|
21
21
|
IRequestHeader,
|
|
22
|
+
ITelemetryBaseEvent,
|
|
23
|
+
ITelemetryBaseLogger,
|
|
22
24
|
} from "@fluidframework/core-interfaces";
|
|
23
25
|
import {
|
|
24
26
|
IDocumentServiceFactory,
|
|
25
27
|
IResolvedUrl,
|
|
26
28
|
IUrlResolver,
|
|
27
|
-
} from "@fluidframework/driver-definitions";
|
|
28
|
-
import {
|
|
29
|
-
import { v4 as uuid } from "uuid";
|
|
29
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
30
|
+
import { type ITelemetryGenericEventExt } from "@fluidframework/telemetry-utils";
|
|
30
31
|
import {
|
|
31
32
|
createChildLogger,
|
|
32
33
|
createMultiSinkLogger,
|
|
33
|
-
type
|
|
34
|
-
} from "@fluidframework/telemetry-utils";
|
|
34
|
+
type ITelemetryLoggerPropertyBags,
|
|
35
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
36
|
+
import { v4 as uuid } from "uuid";
|
|
37
|
+
|
|
35
38
|
import { LoaderContainerTracker } from "./loaderContainerTracker.js";
|
|
36
|
-
import {
|
|
39
|
+
import { LocalCodeLoader, fluidEntryPoint } from "./localCodeLoader.js";
|
|
37
40
|
import { createAndAttachContainer } from "./localLoader.js";
|
|
38
41
|
import { ChannelFactoryRegistry } from "./testFluidObject.js";
|
|
39
42
|
|
|
@@ -79,7 +82,12 @@ export interface ITestObjectProvider {
|
|
|
79
82
|
/**
|
|
80
83
|
* Logger used to track expected and unexpected events.
|
|
81
84
|
*/
|
|
82
|
-
logger:
|
|
85
|
+
logger: ITelemetryBaseLogger;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Logger used to track expected and unexpected events.
|
|
89
|
+
*/
|
|
90
|
+
tracker: IEventAndErrorTrackingLogger;
|
|
83
91
|
|
|
84
92
|
/**
|
|
85
93
|
* Used to create a url for the created container with any data store path given in the relative url.
|
|
@@ -108,10 +116,13 @@ export interface ITestObjectProvider {
|
|
|
108
116
|
* containerRuntime/dataRuntime used in fluidEntryPoint will be used as is from what is passed in.
|
|
109
117
|
*
|
|
110
118
|
* @param packageEntries - list of code details and fluidEntryPoint pairs.
|
|
119
|
+
* @param loaderProps - Optional loader properties
|
|
120
|
+
* @param forceUseCreateVersion - For Cross-Version compat testing, create a loader based on the create version
|
|
111
121
|
*/
|
|
112
122
|
createLoader(
|
|
113
123
|
packageEntries: Iterable<[IFluidCodeDetails, fluidEntryPoint]>,
|
|
114
124
|
loaderProps?: Partial<ILoaderProps>,
|
|
125
|
+
forceUseCreateVersion?: boolean,
|
|
115
126
|
): IHostLoader;
|
|
116
127
|
|
|
117
128
|
/**
|
|
@@ -174,6 +185,7 @@ export interface ITestObjectProvider {
|
|
|
174
185
|
loadTestContainer(
|
|
175
186
|
testContainerConfig?: ITestContainerConfig,
|
|
176
187
|
requestHeader?: IRequestHeader,
|
|
188
|
+
pendingLocalState?: string,
|
|
177
189
|
): Promise<IContainer>;
|
|
178
190
|
|
|
179
191
|
/**
|
|
@@ -221,6 +233,9 @@ export interface ITestContainerConfig {
|
|
|
221
233
|
/** Whether this runtime should be instantiated using a mixed-in attributor class */
|
|
222
234
|
enableAttribution?: boolean;
|
|
223
235
|
|
|
236
|
+
/** For Cross-Version compat testing, load using the create version (e.g. use this to get a Summarizer on the create version) */
|
|
237
|
+
forceUseCreateVersion?: true;
|
|
238
|
+
|
|
224
239
|
/** Loader options for the loader used to create containers */
|
|
225
240
|
loaderProps?: Partial<ILoaderProps>;
|
|
226
241
|
}
|
|
@@ -279,6 +294,15 @@ function getDocumentIdStrategy(type?: TestDriverTypes): IDocumentIdStrategy {
|
|
|
279
294
|
}
|
|
280
295
|
}
|
|
281
296
|
|
|
297
|
+
/** @internal */
|
|
298
|
+
export interface IEventAndErrorTrackingLogger {
|
|
299
|
+
registerExpectedEvent: (...orderedExpectedEvents: ITelemetryGenericEventExt[]) => void;
|
|
300
|
+
reportAndClearTrackedEvents: () => {
|
|
301
|
+
expectedNotFound: { index: number; event: ITelemetryGenericEventExt }[];
|
|
302
|
+
unexpectedErrors: ITelemetryBaseEvent[];
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
|
|
282
306
|
/**
|
|
283
307
|
* This class tracks events. It allows specifying expected events, which will be looked for in order.
|
|
284
308
|
* It also tracks all unexpected errors.
|
|
@@ -286,7 +310,9 @@ function getDocumentIdStrategy(type?: TestDriverTypes): IDocumentIdStrategy {
|
|
|
286
310
|
* any expected events that have not occurred.
|
|
287
311
|
* @internal
|
|
288
312
|
*/
|
|
289
|
-
export class EventAndErrorTrackingLogger
|
|
313
|
+
export class EventAndErrorTrackingLogger
|
|
314
|
+
implements ITelemetryBaseLogger, IEventAndErrorTrackingLogger
|
|
315
|
+
{
|
|
290
316
|
/**
|
|
291
317
|
* Even if these error events are logged, tests should still be allowed to pass
|
|
292
318
|
* Additionally, if downgrade is true, then log as generic (e.g. to avoid polluting the e2e test logs)
|
|
@@ -301,12 +327,9 @@ export class EventAndErrorTrackingLogger implements ITelemetryBaseLogger {
|
|
|
301
327
|
{ eventName: "fluid:telemetry:OpPerf:OpRoundtripTime" },
|
|
302
328
|
];
|
|
303
329
|
|
|
304
|
-
constructor(private readonly baseLogger
|
|
330
|
+
constructor(private readonly baseLogger?: ITelemetryBaseLogger) {}
|
|
305
331
|
|
|
306
|
-
private readonly expectedEvents:
|
|
307
|
-
| { index: number; event: ITelemetryGenericEventExt | undefined }
|
|
308
|
-
| undefined
|
|
309
|
-
)[] = [];
|
|
332
|
+
private readonly expectedEvents: { index: number; event: ITelemetryGenericEventExt }[] = [];
|
|
310
333
|
private readonly unexpectedErrors: ITelemetryBaseEvent[] = [];
|
|
311
334
|
|
|
312
335
|
public registerExpectedEvent(...orderedExpectedEvents: ITelemetryGenericEventExt[]) {
|
|
@@ -324,24 +347,26 @@ export class EventAndErrorTrackingLogger implements ITelemetryBaseLogger {
|
|
|
324
347
|
}
|
|
325
348
|
|
|
326
349
|
send(event: ITelemetryBaseEvent): void {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
350
|
+
if (this.expectedEvents.length > 0) {
|
|
351
|
+
const ee = this.expectedEvents[0].event;
|
|
352
|
+
if (ee.eventName === event.eventName) {
|
|
353
|
+
let matches = true;
|
|
354
|
+
for (const key of Object.keys(ee)) {
|
|
355
|
+
if (ee[key] !== event[key]) {
|
|
356
|
+
matches = false;
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
334
359
|
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
360
|
+
if (matches) {
|
|
361
|
+
// we found an expected event
|
|
362
|
+
// so remove it from the list of expected events
|
|
363
|
+
// and if it is an error, change it to generic
|
|
364
|
+
// this helps keep our telemetry clear of
|
|
365
|
+
// expected errors.
|
|
366
|
+
this.expectedEvents.shift();
|
|
367
|
+
if (event.category === "error") {
|
|
368
|
+
event.category = "generic";
|
|
369
|
+
}
|
|
345
370
|
}
|
|
346
371
|
}
|
|
347
372
|
}
|
|
@@ -358,7 +383,7 @@ export class EventAndErrorTrackingLogger implements ITelemetryBaseLogger {
|
|
|
358
383
|
}
|
|
359
384
|
}
|
|
360
385
|
|
|
361
|
-
this.baseLogger
|
|
386
|
+
this.baseLogger?.send(event);
|
|
362
387
|
}
|
|
363
388
|
|
|
364
389
|
public reportAndClearTrackedEvents() {
|
|
@@ -383,7 +408,8 @@ export class TestObjectProvider implements ITestObjectProvider {
|
|
|
383
408
|
private _loaderContainerTracker = new LoaderContainerTracker();
|
|
384
409
|
private _documentServiceFactory: IDocumentServiceFactory | undefined;
|
|
385
410
|
private _urlResolver: IUrlResolver | undefined;
|
|
386
|
-
private _logger:
|
|
411
|
+
private _logger: ITelemetryBaseLogger | undefined;
|
|
412
|
+
private _tracker: EventAndErrorTrackingLogger | undefined;
|
|
387
413
|
private readonly _documentIdStrategy: IDocumentIdStrategy;
|
|
388
414
|
// Since documentId doesn't change we can only create/make one container. Call the load functions instead.
|
|
389
415
|
private _documentCreated = false;
|
|
@@ -412,27 +438,29 @@ export class TestObjectProvider implements ITestObjectProvider {
|
|
|
412
438
|
/**
|
|
413
439
|
* {@inheritDoc ITestObjectProvider.logger}
|
|
414
440
|
*/
|
|
415
|
-
public get logger():
|
|
441
|
+
public get logger(): ITelemetryBaseLogger {
|
|
416
442
|
if (this._logger === undefined) {
|
|
417
|
-
this.
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
443
|
+
this._tracker = new EventAndErrorTrackingLogger(getTestLogger?.());
|
|
444
|
+
this._logger = createChildLogger({
|
|
445
|
+
logger: this._tracker,
|
|
446
|
+
properties: {
|
|
447
|
+
all: {
|
|
448
|
+
testType: this.type,
|
|
449
|
+
driverType: this.driver.type,
|
|
450
|
+
driverEndpointName: this.driver.endpointName,
|
|
451
|
+
driverTenantName: this.driver.tenantName,
|
|
452
|
+
driverUserIndex: this.driver.userIndex,
|
|
427
453
|
},
|
|
428
|
-
}
|
|
429
|
-
);
|
|
454
|
+
},
|
|
455
|
+
});
|
|
430
456
|
}
|
|
431
457
|
return this._logger;
|
|
432
458
|
}
|
|
433
459
|
|
|
434
|
-
|
|
435
|
-
this.
|
|
460
|
+
public get tracker() {
|
|
461
|
+
void this.logger;
|
|
462
|
+
assert(this._tracker !== undefined, "should be initialized");
|
|
463
|
+
return this._tracker;
|
|
436
464
|
}
|
|
437
465
|
|
|
438
466
|
/**
|
|
@@ -563,11 +591,18 @@ export class TestObjectProvider implements ITestObjectProvider {
|
|
|
563
591
|
return this.resolveContainer(loader, requestHeader);
|
|
564
592
|
}
|
|
565
593
|
|
|
566
|
-
private async resolveContainer(
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
594
|
+
private async resolveContainer(
|
|
595
|
+
loader: ILoader,
|
|
596
|
+
headers?: IRequestHeader,
|
|
597
|
+
pendingLocalState?: string,
|
|
598
|
+
) {
|
|
599
|
+
return loader.resolve(
|
|
600
|
+
{
|
|
601
|
+
url: await this.driver.createContainerUrl(this.documentId),
|
|
602
|
+
headers,
|
|
603
|
+
},
|
|
604
|
+
pendingLocalState,
|
|
605
|
+
);
|
|
571
606
|
}
|
|
572
607
|
|
|
573
608
|
/**
|
|
@@ -610,10 +645,11 @@ export class TestObjectProvider implements ITestObjectProvider {
|
|
|
610
645
|
public async loadTestContainer(
|
|
611
646
|
testContainerConfig?: ITestContainerConfig,
|
|
612
647
|
requestHeader?: IRequestHeader,
|
|
648
|
+
pendingLocalState?: string,
|
|
613
649
|
): Promise<IContainer> {
|
|
614
650
|
const loader = this.makeTestLoader(testContainerConfig);
|
|
615
651
|
|
|
616
|
-
const container = await this.resolveContainer(loader, requestHeader);
|
|
652
|
+
const container = await this.resolveContainer(loader, requestHeader, pendingLocalState);
|
|
617
653
|
await this.waitContainerToCatchUp(container);
|
|
618
654
|
|
|
619
655
|
return container;
|
|
@@ -627,11 +663,12 @@ export class TestObjectProvider implements ITestObjectProvider {
|
|
|
627
663
|
this._documentServiceFactory = undefined;
|
|
628
664
|
this._urlResolver = undefined;
|
|
629
665
|
this._documentIdStrategy.reset();
|
|
630
|
-
const logError = getUnexpectedLogErrorException(this.
|
|
666
|
+
const logError = getUnexpectedLogErrorException(this._tracker);
|
|
631
667
|
if (logError) {
|
|
632
668
|
throw logError;
|
|
633
669
|
}
|
|
634
670
|
this._logger = undefined;
|
|
671
|
+
this._tracker = undefined;
|
|
635
672
|
this._documentCreated = false;
|
|
636
673
|
}
|
|
637
674
|
|
|
@@ -681,7 +718,8 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
681
718
|
*/
|
|
682
719
|
public readonly type = "TestObjectProviderWithVersionedLoad";
|
|
683
720
|
private _loaderContainerTracker = new LoaderContainerTracker();
|
|
684
|
-
private _logger:
|
|
721
|
+
private _logger: ITelemetryBaseLogger | undefined;
|
|
722
|
+
private _tracker: EventAndErrorTrackingLogger | undefined;
|
|
685
723
|
private readonly _documentIdStrategy: IDocumentIdStrategy;
|
|
686
724
|
private _documentServiceFactory: IDocumentServiceFactory | undefined;
|
|
687
725
|
private _urlResolver: IUrlResolver | undefined;
|
|
@@ -707,6 +745,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
707
745
|
private readonly createFluidEntryPointForLoading: (
|
|
708
746
|
testContainerConfig?: ITestContainerConfig,
|
|
709
747
|
) => fluidEntryPoint,
|
|
748
|
+
private readonly telemetryProps?: ITelemetryLoggerPropertyBags,
|
|
710
749
|
) {
|
|
711
750
|
this._documentIdStrategy = getDocumentIdStrategy(driverForCreating.type);
|
|
712
751
|
}
|
|
@@ -714,17 +753,23 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
714
753
|
/**
|
|
715
754
|
* {@inheritDoc ITestObjectProvider.logger}
|
|
716
755
|
*/
|
|
717
|
-
public get logger()
|
|
756
|
+
public get logger() {
|
|
718
757
|
if (this._logger === undefined) {
|
|
719
|
-
this.
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
);
|
|
758
|
+
this._tracker = new EventAndErrorTrackingLogger(getTestLogger?.());
|
|
759
|
+
this._logger = createChildLogger({
|
|
760
|
+
logger: this._tracker,
|
|
761
|
+
properties: this.telemetryProps,
|
|
762
|
+
});
|
|
724
763
|
}
|
|
725
764
|
return this._logger;
|
|
726
765
|
}
|
|
727
766
|
|
|
767
|
+
public get tracker() {
|
|
768
|
+
void this.logger;
|
|
769
|
+
assert(this._tracker !== undefined, "should be initialized");
|
|
770
|
+
return this._tracker;
|
|
771
|
+
}
|
|
772
|
+
|
|
728
773
|
/**
|
|
729
774
|
* {@inheritDoc ITestObjectProvider.documentServiceFactory}
|
|
730
775
|
*/
|
|
@@ -832,10 +877,14 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
832
877
|
public createLoader(
|
|
833
878
|
packageEntries: Iterable<[IFluidCodeDetails, fluidEntryPoint]>,
|
|
834
879
|
loaderProps?: Partial<ILoaderProps>,
|
|
880
|
+
forceUseCreateVersion = false,
|
|
835
881
|
) {
|
|
882
|
+
const useCreateVersion = forceUseCreateVersion === true || this.useCreateApi;
|
|
836
883
|
if (this.useCreateApi) {
|
|
837
884
|
// After we create the first loader, we can set this.useCreateApi to false.
|
|
838
885
|
this.useCreateApi = false;
|
|
886
|
+
}
|
|
887
|
+
if (useCreateVersion) {
|
|
839
888
|
return this.createLoaderForCreating(packageEntries, loaderProps);
|
|
840
889
|
}
|
|
841
890
|
return this.createLoaderForLoading(packageEntries, loaderProps);
|
|
@@ -910,12 +959,16 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
910
959
|
loader: ILoader,
|
|
911
960
|
headers?: IRequestHeader,
|
|
912
961
|
driver?: ITestDriver,
|
|
962
|
+
pendingLocalState?: string,
|
|
913
963
|
) {
|
|
914
|
-
return loader.resolve(
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
964
|
+
return loader.resolve(
|
|
965
|
+
{
|
|
966
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
967
|
+
url: await driver!.createContainerUrl(this.documentId),
|
|
968
|
+
headers,
|
|
969
|
+
},
|
|
970
|
+
pendingLocalState,
|
|
971
|
+
);
|
|
919
972
|
}
|
|
920
973
|
|
|
921
974
|
/**
|
|
@@ -925,6 +978,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
925
978
|
return this.createLoader(
|
|
926
979
|
[[defaultCodeDetails, this.createFluidEntryPoint(testContainerConfig)]],
|
|
927
980
|
testContainerConfig?.loaderProps,
|
|
981
|
+
testContainerConfig?.forceUseCreateVersion,
|
|
928
982
|
);
|
|
929
983
|
}
|
|
930
984
|
|
|
@@ -961,11 +1015,17 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
961
1015
|
public async loadTestContainer(
|
|
962
1016
|
testContainerConfig?: ITestContainerConfig,
|
|
963
1017
|
requestHeader?: IRequestHeader,
|
|
1018
|
+
pendingLocalState?: string,
|
|
964
1019
|
): Promise<IContainer> {
|
|
965
1020
|
// Keep track of which Loader we are about to use so we can pass the correct driver through
|
|
966
1021
|
const driver = this.useCreateApi ? this.driverForCreating : this.driverForLoading;
|
|
967
1022
|
const loader = this.makeTestLoader(testContainerConfig);
|
|
968
|
-
const container = await this.resolveContainer(
|
|
1023
|
+
const container = await this.resolveContainer(
|
|
1024
|
+
loader,
|
|
1025
|
+
requestHeader,
|
|
1026
|
+
driver,
|
|
1027
|
+
pendingLocalState,
|
|
1028
|
+
);
|
|
969
1029
|
await this.waitContainerToCatchUp(container);
|
|
970
1030
|
|
|
971
1031
|
return container;
|
|
@@ -978,10 +1038,11 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
978
1038
|
this.useCreateApi = true;
|
|
979
1039
|
this._loaderContainerTracker.reset();
|
|
980
1040
|
this._logger = undefined;
|
|
1041
|
+
this._tracker = undefined;
|
|
981
1042
|
this._documentServiceFactory = undefined;
|
|
982
1043
|
this._urlResolver = undefined;
|
|
983
1044
|
this._documentIdStrategy.reset();
|
|
984
|
-
const logError = getUnexpectedLogErrorException(this.
|
|
1045
|
+
const logError = getUnexpectedLogErrorException(this._tracker);
|
|
985
1046
|
if (logError) {
|
|
986
1047
|
throw logError;
|
|
987
1048
|
}
|
|
@@ -1027,7 +1088,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
|
|
|
1027
1088
|
* @internal
|
|
1028
1089
|
*/
|
|
1029
1090
|
export function getUnexpectedLogErrorException(
|
|
1030
|
-
logger:
|
|
1091
|
+
logger: IEventAndErrorTrackingLogger | undefined,
|
|
1031
1092
|
prefix?: string,
|
|
1032
1093
|
) {
|
|
1033
1094
|
if (logger === undefined) {
|
package/src/timeoutUtils.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert, Deferred } from "@fluidframework/core-utils";
|
|
6
|
+
import { assert, Deferred } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import type * as Mocha from "mocha";
|
|
8
8
|
|
|
9
9
|
// @deprecated this value is no longer used
|
package/api-extractor-cjs.json
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
|
|
3
|
-
"extends": "../../../common/build/build-common/api-extractor-base.cjs.primary.json",
|
|
4
|
-
// CJS is actually secondary; so, no report.
|
|
5
|
-
"apiReport": {
|
|
6
|
-
"enabled": false
|
|
7
|
-
}
|
|
8
|
-
}
|