@fluidframework/test-utils 2.0.0-internal.8.0.0 → 2.0.0-rc.1.0.0

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/api-extractor-lint.json +1 -10
  3. package/api-extractor.json +1 -9
  4. package/api-report/test-utils.api.md +11 -8
  5. package/dist/TestSummaryUtils.d.ts +18 -3
  6. package/dist/TestSummaryUtils.d.ts.map +1 -1
  7. package/dist/TestSummaryUtils.js.map +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/interfaces.d.ts +2 -2
  12. package/dist/interfaces.js.map +1 -1
  13. package/dist/loaderContainerTracker.d.ts +1 -1
  14. package/dist/loaderContainerTracker.js +1 -1
  15. package/dist/loaderContainerTracker.js.map +1 -1
  16. package/dist/localLoader.d.ts +1 -1
  17. package/dist/localLoader.js +1 -1
  18. package/dist/localLoader.js.map +1 -1
  19. package/dist/packageVersion.d.ts +1 -1
  20. package/dist/packageVersion.d.ts.map +1 -1
  21. package/dist/packageVersion.js +1 -1
  22. package/dist/packageVersion.js.map +1 -1
  23. package/dist/test-utils-alpha.d.ts +177 -12
  24. package/dist/test-utils-beta.d.ts +2 -28
  25. package/dist/test-utils-public.d.ts +2 -28
  26. package/dist/test-utils-untrimmed.d.ts +22 -7
  27. package/dist/testObjectProvider.d.ts +1 -1
  28. package/dist/testObjectProvider.js.map +1 -1
  29. package/package.json +35 -49
  30. package/src/TestSummaryUtils.ts +21 -1
  31. package/src/index.ts +6 -1
  32. package/src/interfaces.ts +2 -2
  33. package/src/loaderContainerTracker.ts +1 -1
  34. package/src/localLoader.ts +1 -1
  35. package/src/packageVersion.ts +1 -1
  36. package/src/testObjectProvider.ts +1 -1
  37. package/lib/test-utils-alpha.d.ts +0 -140
  38. package/lib/test-utils-beta.d.ts +0 -228
  39. package/lib/test-utils-public.d.ts +0 -228
  40. package/lib/test-utils-untrimmed.d.ts +0 -986
@@ -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-internal.8.0.0";
11
+ exports.pkgVersion = "2.0.0-rc.1.0.0";
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,sBAAsB,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-internal.8.0.0\";\n"]}
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,gBAAgB,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-rc.1.0.0\";\n"]}
@@ -51,7 +51,14 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
51
51
 
52
52
  /* Excluded from this release type: ChannelFactoryRegistry */
53
53
 
54
- /* Excluded from this release type: createAndAttachContainer */
54
+ /**
55
+ * Creates a detached Container and attaches it.
56
+ * @param source - The code details used to create the Container.
57
+ * @param loader - The loader to use to initialize the container.
58
+ * @param attachRequest - The request to create new from.
59
+ * @alpha
60
+ */
61
+ export declare function createAndAttachContainer(source: IFluidCodeDetails, loader: IHostLoader, attachRequest: IRequest): Promise<IContainer>;
55
62
 
56
63
  /* Excluded from this release type: createContainerRuntimeFactoryWithDefaultDataStore */
57
64
 
@@ -79,27 +86,183 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
79
86
 
80
87
  /* Excluded from this release type: getUnexpectedLogErrorException */
81
88
 
82
- /* Excluded from this release type: ICodeDetailsLoader */
83
-
84
89
  /* Excluded from this release type: IDocumentIdStrategy */
85
90
 
86
- /* Excluded from this release type: IFluidModuleWithDetails */
87
-
88
- /* Excluded from this release type: IOpProcessingController */
89
-
90
- /* Excluded from this release type: IProvideTestFluidObject */
91
-
92
- /* Excluded from this release type: ISummarizer */
91
+ /**
92
+ * @alpha
93
+ */
94
+ export declare interface IOpProcessingController {
95
+ processIncoming(...containers: IContainer[]): Promise<void>;
96
+ processOutgoing(...containers: IContainer[]): Promise<void>;
97
+ pauseProcessing(...containers: IContainer[]): Promise<void>;
98
+ resumeProcessing(...containers: IContainer[]): void;
99
+ }
100
+
101
+ /**
102
+ * @alpha
103
+ */
104
+ export declare interface IProvideTestFluidObject {
105
+ readonly ITestFluidObject: ITestFluidObject;
106
+ }
93
107
 
94
108
  /* Excluded from this release type: ITestContainerConfig */
95
109
 
96
110
  /* Excluded from this release type: ITestDriver */
97
111
 
98
- /* Excluded from this release type: ITestFluidObject */
112
+ /**
113
+ * @alpha
114
+ */
115
+ export declare interface ITestFluidObject extends IProvideTestFluidObject, IFluidLoadable {
116
+ root: ISharedMap;
117
+ readonly runtime: IFluidDataStoreRuntime;
118
+ readonly channel: IFluidDataStoreChannel;
119
+ readonly context: IFluidDataStoreContext;
120
+ getSharedObject<T = any>(id: string): Promise<T>;
121
+ }
99
122
 
100
123
  /* Excluded from this release type: ITestObjectProvider */
101
124
 
102
- /* Excluded from this release type: LoaderContainerTracker */
125
+ /**
126
+ * @alpha
127
+ */
128
+ export declare class LoaderContainerTracker implements IOpProcessingController {
129
+ private readonly syncSummarizerClients;
130
+ private readonly containers;
131
+ private lastProposalSeqNum;
132
+ constructor(syncSummarizerClients?: boolean);
133
+ /**
134
+ * Add a loader to start to track any container created from them
135
+ * @param loader - loader to start tracking any container created.
136
+ */
137
+ add<LoaderType extends IHostLoader>(loader: LoaderType): void;
138
+ /**
139
+ * Utility function to add container to be tracked.
140
+ *
141
+ * @param container - container to add
142
+ */
143
+ private addContainer;
144
+ /**
145
+ * Keep track of the trailing NoOp that was sent so we can discount them in the clientSequenceNumber tracking.
146
+ * The server might coalesce them with other ops, or a single NoOp, or delay it if it don't think it is necessary.
147
+ *
148
+ * @param container - the container to track
149
+ * @param record - the record to update the trailing op information
150
+ */
151
+ private trackTrailingNoOps;
152
+ private trackLastProposal;
153
+ /**
154
+ * Reset the tracker, closing all containers and stop tracking them.
155
+ */
156
+ reset(): void;
157
+ /**
158
+ * Make sure all the tracked containers are synchronized.
159
+ *
160
+ * No isDirty (non-readonly) containers
161
+ * No extra clientId in quorum of any container that is not tracked and still opened.
162
+ * - i.e. no pending Join/Leave message.
163
+ * No unresolved proposal (minSeqNum \>= lastProposalSeqNum)
164
+ * lastSequenceNumber of all container is the same
165
+ * clientSequenceNumberObserved is the same as clientSequenceNumber sent
166
+ * - this overlaps with !isDirty, but include task scheduler ops.
167
+ * - Trailing NoOp is tracked and don't count as pending ops.
168
+ *
169
+ * Containers that are already pause will resume process and paused again once
170
+ * everything is synchronized. Containers that aren't paused will remain unpaused when this
171
+ * function returns.
172
+ */
173
+ ensureSynchronized(...containers: IContainer[]): Promise<void>;
174
+ /**
175
+ * Utility to calculate the set of clientId per container in quorum that is NOT associated with
176
+ * any container we tracked, indicating there is a pending join or leave op that we need to wait.
177
+ *
178
+ * @param containersToApply - the set of containers to check
179
+ */
180
+ private getPendingClients;
181
+ /**
182
+ * Utility to check synchronization based on sequence number
183
+ * See ensureSynchronized for more detail
184
+ *
185
+ * @param containersToApply - the set of containers to check
186
+ */
187
+ private needSequenceNumberSynchronize;
188
+ private containerIndexStrings;
189
+ /**
190
+ * Utility to wait for any clientId in quorum that is NOT associated with any container we
191
+ * tracked, indicating there is a pending join or leave op that we need to wait.
192
+ *
193
+ * Note that this function doesn't account for container that got added after we started waiting
194
+ *
195
+ * @param containersToApply - the set of containers to wait for any inbound ops for
196
+ */
197
+ private waitForPendingClients;
198
+ /**
199
+ * Utility to wait for any inbound ops from a set of containers
200
+ * @param containersToApply - the set of containers to wait for any inbound ops for
201
+ */
202
+ private waitForAnyInboundOps;
203
+ /**
204
+ * Resume all queue activities on all paused tracked containers and return them
205
+ */
206
+ resumeProcessing(...containers: IContainer[]): IContainer[];
207
+ /**
208
+ * Pause all queue activities on the containers given, or all tracked containers
209
+ * Any containers given that is not tracked will be ignored.
210
+ *
211
+ * When a container is paused, it is assumed that we want fine grain control over op
212
+ * sequencing. This function will prepare the container and force it into write mode to
213
+ * avoid missing join messages or change the sequence of event when switching from read to
214
+ * write mode.
215
+ */
216
+ pauseProcessing(...containers: IContainer[]): Promise<void>;
217
+ /**
218
+ * When a container is paused, it is assumed that we want fine grain control over op
219
+ * sequencing. This function will prepare the container and force it into write mode to
220
+ * avoid missing join messages or change the sequence of event when switching from read to
221
+ * write mode.
222
+ *
223
+ * @param container - the container to pause
224
+ * @param record - the record for the container
225
+ */
226
+ private pauseContainer;
227
+ /**
228
+ * Pause all queue activities on all tracked containers, and resume only
229
+ * inbound to process ops until it is idle. All queues are left in the paused state
230
+ * after the function.
231
+ *
232
+ * Pausing will switch the container to write mode. See `pauseProcessing`
233
+ */
234
+ processIncoming(...containers: IContainer[]): Promise<void>;
235
+ /**
236
+ * Pause all queue activities on all tracked containers, and resume only
237
+ * outbound to process ops until it is idle. All queues are left in the paused state
238
+ * after the function.
239
+ *
240
+ * Pausing will switch the container to write mode. See `pauseProcessing`
241
+ */
242
+ processOutgoing(...containers: IContainer[]): Promise<void>;
243
+ /**
244
+ * Implementation of processIncoming and processOutgoing
245
+ */
246
+ private processQueue;
247
+ /**
248
+ * Utility to set up listener to track the outbound ops until it round trip back
249
+ * Returns a function to remove the handler after it is done.
250
+ *
251
+ * @param container - the container to setup
252
+ * @param inflightTracker - a map to track the clientSequenceNumber per container it expect to get ops back
253
+ */
254
+ private setupInOutTracker;
255
+ /**
256
+ * Setup debug traces for connection and ops
257
+ */
258
+ private setupTrace;
259
+ /**
260
+ * Filter out the opened containers based on param.
261
+ * @param containers - The container to filter to. If the array is empty, it means don't filter and return
262
+ * all open containers.
263
+ */
264
+ private getContainers;
265
+ }
103
266
 
104
267
  /* Excluded from this release type: LocalCodeLoader */
105
268
 
@@ -109,6 +272,8 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
109
272
 
110
273
  /* Excluded from this release type: summarizeNow */
111
274
 
275
+ /* Excluded from this release type: SummaryInfo */
276
+
112
277
  /* Excluded from this release type: SupportedExportInterfaces */
113
278
 
114
279
  /* Excluded from this release type: TestContainerRuntimeFactory */
@@ -51,8 +51,6 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
51
51
 
52
52
  /* Excluded from this release type: ChannelFactoryRegistry */
53
53
 
54
- /* Excluded from this release type: ConfigTypes */
55
-
56
54
  /* Excluded from this release type: ContainerRuntime */
57
55
 
58
56
  /* Excluded from this release type: ContainerRuntimeFactoryWithDefaultDataStore */
@@ -81,20 +79,14 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
81
79
 
82
80
  /* Excluded from this release type: fluidEntryPoint */
83
81
 
84
- /* Excluded from this release type: FluidObject */
85
-
86
82
  /* Excluded from this release type: getContainerEntryPointBackCompat */
87
83
 
88
84
  /* Excluded from this release type: getDataStoreEntryPointBackCompat */
89
85
 
90
86
  /* Excluded from this release type: getUnexpectedLogErrorException */
91
87
 
92
- /* Excluded from this release type: IChannelFactory */
93
-
94
88
  /* Excluded from this release type: ICodeDetailsLoader */
95
89
 
96
- /* Excluded from this release type: IConfigProviderBase */
97
-
98
90
  /* Excluded from this release type: IContainer */
99
91
 
100
92
  /* Excluded from this release type: IContainerContext */
@@ -121,20 +113,12 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
121
113
 
122
114
  /* Excluded from this release type: IFluidDataStoreFactory */
123
115
 
124
- /* Excluded from this release type: IFluidDataStoreRuntime */
125
-
126
- /* Excluded from this release type: IFluidHandle */
127
-
128
- /* Excluded from this release type: IFluidLoadable */
129
-
130
116
  /* Excluded from this release type: IFluidModule */
131
117
 
132
118
  /* Excluded from this release type: IFluidModuleWithDetails */
133
119
 
134
120
  /* Excluded from this release type: IHostLoader */
135
121
 
136
- /* Excluded from this release type: ILoaderOptions */
137
-
138
122
  /* Excluded from this release type: ILoaderProps */
139
123
 
140
124
  /* Excluded from this release type: IOnDemandSummarizeOptions */
@@ -151,26 +135,14 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
151
135
 
152
136
  /* Excluded from this release type: IProvideTestFluidObject */
153
137
 
154
- /* Excluded from this release type: IRequest */
155
-
156
138
  /* Excluded from this release type: IResolvedUrl */
157
139
 
158
- /* Excluded from this release type: IResponse */
159
-
160
140
  /* Excluded from this release type: IRuntime */
161
141
 
162
- /* Excluded from this release type: ISharedMap */
163
-
164
142
  /* Excluded from this release type: ISummarizer */
165
143
 
166
144
  /* Excluded from this release type: ISummaryContext */
167
145
 
168
- /* Excluded from this release type: ITelemetryBaseEvent */
169
-
170
- /* Excluded from this release type: ITelemetryBaseLogger */
171
-
172
- /* Excluded from this release type: ITelemetryGenericEvent */
173
-
174
146
  /* Excluded from this release type: ITestContainerConfig */
175
147
 
176
148
  /* Excluded from this release type: ITestDriver */
@@ -197,6 +169,8 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
197
169
 
198
170
  /* Excluded from this release type: summarizeNow */
199
171
 
172
+ /* Excluded from this release type: SummaryInfo */
173
+
200
174
  /* Excluded from this release type: SupportedExportInterfaces */
201
175
 
202
176
  /* Excluded from this release type: TestContainerRuntimeFactory */
@@ -51,8 +51,6 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
51
51
 
52
52
  /* Excluded from this release type: ChannelFactoryRegistry */
53
53
 
54
- /* Excluded from this release type: ConfigTypes */
55
-
56
54
  /* Excluded from this release type: ContainerRuntime */
57
55
 
58
56
  /* Excluded from this release type: ContainerRuntimeFactoryWithDefaultDataStore */
@@ -81,20 +79,14 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
81
79
 
82
80
  /* Excluded from this release type: fluidEntryPoint */
83
81
 
84
- /* Excluded from this release type: FluidObject */
85
-
86
82
  /* Excluded from this release type: getContainerEntryPointBackCompat */
87
83
 
88
84
  /* Excluded from this release type: getDataStoreEntryPointBackCompat */
89
85
 
90
86
  /* Excluded from this release type: getUnexpectedLogErrorException */
91
87
 
92
- /* Excluded from this release type: IChannelFactory */
93
-
94
88
  /* Excluded from this release type: ICodeDetailsLoader */
95
89
 
96
- /* Excluded from this release type: IConfigProviderBase */
97
-
98
90
  /* Excluded from this release type: IContainer */
99
91
 
100
92
  /* Excluded from this release type: IContainerContext */
@@ -121,20 +113,12 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
121
113
 
122
114
  /* Excluded from this release type: IFluidDataStoreFactory */
123
115
 
124
- /* Excluded from this release type: IFluidDataStoreRuntime */
125
-
126
- /* Excluded from this release type: IFluidHandle */
127
-
128
- /* Excluded from this release type: IFluidLoadable */
129
-
130
116
  /* Excluded from this release type: IFluidModule */
131
117
 
132
118
  /* Excluded from this release type: IFluidModuleWithDetails */
133
119
 
134
120
  /* Excluded from this release type: IHostLoader */
135
121
 
136
- /* Excluded from this release type: ILoaderOptions */
137
-
138
122
  /* Excluded from this release type: ILoaderProps */
139
123
 
140
124
  /* Excluded from this release type: IOnDemandSummarizeOptions */
@@ -151,26 +135,14 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
151
135
 
152
136
  /* Excluded from this release type: IProvideTestFluidObject */
153
137
 
154
- /* Excluded from this release type: IRequest */
155
-
156
138
  /* Excluded from this release type: IResolvedUrl */
157
139
 
158
- /* Excluded from this release type: IResponse */
159
-
160
140
  /* Excluded from this release type: IRuntime */
161
141
 
162
- /* Excluded from this release type: ISharedMap */
163
-
164
142
  /* Excluded from this release type: ISummarizer */
165
143
 
166
144
  /* Excluded from this release type: ISummaryContext */
167
145
 
168
- /* Excluded from this release type: ITelemetryBaseEvent */
169
-
170
- /* Excluded from this release type: ITelemetryBaseLogger */
171
-
172
- /* Excluded from this release type: ITelemetryGenericEvent */
173
-
174
146
  /* Excluded from this release type: ITestContainerConfig */
175
147
 
176
148
  /* Excluded from this release type: ITestDriver */
@@ -197,6 +169,8 @@ import { RuntimeRequestHandler } from '@fluidframework/request-handler';
197
169
 
198
170
  /* Excluded from this release type: summarizeNow */
199
171
 
172
+ /* Excluded from this release type: SummaryInfo */
173
+
200
174
  /* Excluded from this release type: SupportedExportInterfaces */
201
175
 
202
176
  /* Excluded from this release type: TestContainerRuntimeFactory */
@@ -59,7 +59,7 @@ export declare type ChannelFactoryRegistry = Iterable<[string | undefined, IChan
59
59
  * @param source - The code details used to create the Container.
60
60
  * @param loader - The loader to use to initialize the container.
61
61
  * @param attachRequest - The request to create new from.
62
- * @internal
62
+ * @alpha
63
63
  */
64
64
  export declare function createAndAttachContainer(source: IFluidCodeDetails, loader: IHostLoader, attachRequest: IRequest): Promise<IContainer>;
65
65
 
@@ -222,7 +222,7 @@ export declare interface IDocumentIdStrategy {
222
222
  }
223
223
 
224
224
  /**
225
- * @internal
225
+ * @alpha
226
226
  */
227
227
  export declare interface IOpProcessingController {
228
228
  processIncoming(...containers: IContainer[]): Promise<void>;
@@ -232,7 +232,7 @@ export declare interface IOpProcessingController {
232
232
  }
233
233
 
234
234
  /**
235
- * @internal
235
+ * @alpha
236
236
  */
237
237
  export declare interface IProvideTestFluidObject {
238
238
  readonly ITestFluidObject: ITestFluidObject;
@@ -255,7 +255,7 @@ export declare interface ITestContainerConfig {
255
255
  }
256
256
 
257
257
  /**
258
- * @internal
258
+ * @alpha
259
259
  */
260
260
  export declare interface ITestFluidObject extends IProvideTestFluidObject, IFluidLoadable {
261
261
  root: ISharedMap;
@@ -366,7 +366,7 @@ export declare interface ITestObjectProvider {
366
366
  }
367
367
 
368
368
  /**
369
- * @internal
369
+ * @alpha
370
370
  */
371
371
  export declare class LoaderContainerTracker implements IOpProcessingController {
372
372
  private readonly syncSummarizerClients;
@@ -551,11 +551,26 @@ export declare const retryWithEventualValue: <T>(callback: () => Promise<T>, che
551
551
  * Defaults to the reason "end-to-end test".
552
552
  * @internal
553
553
  */
554
- export declare function summarizeNow(summarizer: ISummarizer, inputs?: string | IOnDemandSummarizeOptions): Promise<{
554
+ export declare function summarizeNow(summarizer: ISummarizer, inputs?: string | IOnDemandSummarizeOptions): Promise<SummaryInfo>;
555
+
556
+ /**
557
+ * Summary information containing the summary tree, summary version, and summary sequence number.
558
+ * @internal
559
+ */
560
+ export declare interface SummaryInfo {
561
+ /**
562
+ * The summary tree generated
563
+ */
555
564
  summaryTree: ISummaryTree;
565
+ /**
566
+ * Handle of the completed summary
567
+ */
556
568
  summaryVersion: string;
569
+ /**
570
+ * Reference sequence number of the current summary generation
571
+ */
557
572
  summaryRefSeq: number;
558
- }>;
573
+ }
559
574
 
560
575
  /**
561
576
  * @internal
@@ -11,7 +11,7 @@ import { ITestDriver } from "@fluidframework/test-driver-definitions";
11
11
  import { fluidEntryPoint } from "./localCodeLoader";
12
12
  import { ChannelFactoryRegistry } from "./testFluidObject";
13
13
  /**
14
- * @internal
14
+ * @alpha
15
15
  */
16
16
  export interface IOpProcessingController {
17
17
  processIncoming(...containers: IContainer[]): Promise<void>;