Skip to content

Commit 0276f63

Browse files
authored
GridFS download test reenablement (#1991)
Re-enable GridFS download timeout test with spec test transform mechanism Re-enable the "timeoutMS applied to entire download, not individual parts" GridFS spec test that was previously skipped in CI. - Add a TestTransformer mechanism to UnifiedTestModifications, allowing spec test data (entities and definition) to be mutated before execution, with a mandatory reason string logged for each transformation. - Apply a transform for this test: bump timeoutMS from 75 to 250 and blockTimeMS from 50 to 200 to avoid CI latency failures (150ms margin). - Rename misleading variables in UnifiedTestModifications (dir/file/test -> directory/fileDescription/testDescription) to clarify that 'file' refers to the spec file's description field, not the filename. JAVA-5839
1 parent 503c4ca commit 0276f63

2 files changed

Lines changed: 210 additions & 60 deletions

File tree

driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -244,30 +244,36 @@ public void setUp(
244244
final int totalAttempts,
245245
final String schemaVersion,
246246
@Nullable final BsonArray runOnRequirements,
247-
final BsonArray entitiesArray,
247+
final BsonArray oriEntitiesArray,
248248
final BsonArray initialData,
249-
final BsonDocument definition) {
249+
final BsonDocument oriDefinition) {
250250
this.fileDescription = fileDescription;
251251
this.schemaVersion = schemaVersion;
252252
this.runOnRequirements = runOnRequirements;
253-
this.entitiesArray = entitiesArray;
253+
this.entitiesArray = oriEntitiesArray;
254254
this.initialData = initialData;
255-
this.definition = definition;
255+
this.definition = oriDefinition;
256256
entities = new Entities();
257257
crudHelper = new UnifiedCrudHelper(entities, definition.getString("description").getValue());
258258
gridFSHelper = new UnifiedGridFSHelper(entities);
259259
clientEncryptionHelper = new UnifiedClientEncryptionHelper(entities);
260260
failPoints = new ArrayList<>();
261261
rootContext = new UnifiedTestContext();
262-
rootContext.getAssertionContext().push(ContextElement.ofTest(definition));
263262
ignoreExtraEvents = false;
264263
if (directoryName != null && fileDescription != null && testDescription != null) {
265264
testDef = testDef(directoryName, fileDescription, testDescription, isReactive(), getLanguage());
266265
applyCustomizations(testDef);
267266

268267
boolean skip = testDef.wasAssignedModifier(Modifier.SKIP);
269268
assumeFalse(skip, "Skipping test");
269+
270+
if (testDef.hasTransformations()) {
271+
this.entitiesArray = entitiesArray.clone();
272+
this.definition = definition.clone();
273+
testDef.applyTransformations(entitiesArray, definition);
274+
}
270275
}
276+
rootContext.getAssertionContext().push(ContextElement.ofTest(definition));
271277
skips(fileDescription, testDescription);
272278

273279
assumeTrue(isSupportedSchemaVersion(schemaVersion), format("Unsupported schema version %s", schemaVersion));
@@ -334,6 +340,7 @@ protected Language getLanguage() {
334340

335341
@ParameterizedTest(name = "{0}")
336342
@MethodSource("data")
343+
@SuppressWarnings("unused")
337344
public void shouldPassAllOutcomes(
338345
final String testName,
339346
@Nullable final String fileDescription,
@@ -345,7 +352,7 @@ public void shouldPassAllOutcomes(
345352
@Nullable final BsonArray runOnRequirements,
346353
final BsonArray entitiesArray,
347354
final BsonArray initialData,
348-
final BsonDocument definition) {
355+
final BsonDocument oriDefinition) {
349356
boolean forceFlaky = testDef.wasAssignedModifier(Modifier.FORCE_FLAKY);
350357
if (!forceFlaky) {
351358
boolean ignoreThisTest = ATTEMPTED_TESTS_TO_HENCEFORTH_IGNORE.contains(testName);
@@ -356,6 +363,9 @@ public void shouldPassAllOutcomes(
356363
ATTEMPTED_TESTS_TO_HENCEFORTH_IGNORE.add(testName);
357364
}
358365
try {
366+
// Read from the field, not oriDefinition: setUp() may have replaced it with a
367+
// transformed clone, whereas the parameter is the original, untransformed definition.
368+
BsonDocument definition = this.definition;
359369
BsonArray operations = definition.getArray("operations");
360370
for (int i = 0; i < operations.size(); i++) {
361371
BsonValue cur = operations.get(i);

0 commit comments

Comments
 (0)