Skip to content

Commit 7a9c3c0

Browse files
authored
loadContainerPaused() test fix (microsoft#22173)
**Issue:** `Throw if attempting to pause at a sequence number before the latest summary` test was failing erratically. Passed for local server but failed for odsp/frs etc services. **Root Cause:** The test tries to check that the `loadContainerPaused()` function should throw an error when we try to load from a seq number which is lesser than the latest snapshot sequence number. This was failing because the latest snapshot that the container refereed to was an older one (the very first snapshot generated when a container is created) because the`fetchSnapshot` races to retrieve the snapshot from cache or network and in almost all cases, refers to the snapshot in cache. **Fix:** Now we are explicily providing the snapshot version number in the `IRequestHeaders` so that the test refers to the latest snapshot when performing comparisons. [AB#8561](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/8561)
1 parent e632b39 commit 7a9c3c0

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

packages/test/test-end-to-end-tests/src/test/loadModes.spec.ts

+9-11
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
createDocumentId,
2626
createLoader,
2727
createSummarizerFromFactory,
28+
summarizeNow,
2829
} from "@fluidframework/test-utils/internal";
2930

3031
const counterKey = "count";
@@ -143,7 +144,7 @@ describeCompat("LoadModes", "NoCompat", (getTestObjectProvider, apis: CompatApis
143144
containerUrl: IResolvedUrl | undefined,
144145
defaultFactory: IFluidDataStoreFactory,
145146
headers?: IRequestHeader,
146-
sequenceNumber?: number,
147+
loadToSequenceNumber?: number,
147148
): Promise<IContainer> {
148149
const runtimeFactory = new ContainerRuntimeFactoryWithDefaultDataStore({
149150
defaultFactory,
@@ -162,7 +163,7 @@ describeCompat("LoadModes", "NoCompat", (getTestObjectProvider, apis: CompatApis
162163
url: await provider.driver.createContainerUrl(documentId, containerUrl),
163164
headers,
164165
},
165-
sequenceNumber,
166+
loadToSequenceNumber,
166167
);
167168
}
168169

@@ -378,23 +379,20 @@ describeCompat("LoadModes", "NoCompat", (getTestObjectProvider, apis: CompatApis
378379
dataObject1.increment();
379380
}
380381
await loaderContainerTracker.ensureSynchronized(container1);
381-
const result = summarizer.summarizeOnDemand({ reason: "test" });
382-
const submitResult = await result.receivedSummaryAckOrNack;
383-
assert.ok(submitResult);
382+
const result = await summarizeNow(summarizer);
384383

385-
// Try to pause at sequence number 1 (before snapshot)
386-
const sequenceNumber = 1;
387384
const headers: IRequestHeader = {
388-
[LoaderHeader.loadMode]: {
389-
opsBeforeReturn: "sequenceNumber",
390-
},
385+
// Force the container to load from the latest created summary instead of using the cached version. Latest snapshot is in cache is updated async so could cause test flakiness.
386+
[LoaderHeader.version]: result.summaryVersion,
391387
};
388+
// Try to pause at sequence number 1 (before snapshot)
389+
const loadUptoSeqNumber = 1;
392390
await assert.rejects(
393391
loadContainer(
394392
container1.resolvedUrl,
395393
testDataObjectFactory,
396394
headers,
397-
sequenceNumber,
395+
loadUptoSeqNumber,
398396
),
399397
{
400398
message:

0 commit comments

Comments
 (0)