Skip to content

Commit 49aa14c

Browse files
committed
fix flaky test where execution time is compared.
1 parent 583fdec commit 49aa14c

File tree

1 file changed

+31
-8
lines changed

1 file changed

+31
-8
lines changed

MongoDB.DriverUnitTests/Linq/ExplainTests.cs

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@ public void TestExplainFromLinqQueryEqualsExplainFromCursor()
5050
var queryExplain = _collection.FindAs<C>(Query.And(Query.EQ("X", 2), Query.EQ("Y", 1))).SetLimit(1).Explain();
5151

5252
// millis could be different, so we'll ignore that difference.
53-
linqExplain.Remove("millis");
54-
queryExplain.Remove("millis");
55-
linqExplain.Remove("executionTimeMillis");
56-
queryExplain.Remove("executionTimeMillis");
53+
RemoveKey(linqExplain, "millis");
54+
RemoveKey(queryExplain, "millis");
55+
RemoveKey(linqExplain, "executionTimeMillis");
56+
RemoveKey(queryExplain, "executionTimeMillis");
57+
RemoveKey(linqExplain, "executionTimeMillisEstimate");
58+
RemoveKey(queryExplain, "executionTimeMillisEstimate");
5759

5860
Assert.AreEqual(linqExplain, queryExplain);
5961
}
@@ -65,10 +67,12 @@ public void TestVerboseExplainFromLinqQueryEqualsVerboseExplainFromCursor()
6567
var queryExplain = _collection.FindAs<C>(Query.And(Query.EQ("X", 2), Query.EQ("Y", 1))).SetLimit(1).Explain(true);
6668

6769
// millis could be different, so we'll ignore that difference.
68-
linqExplain.Remove("millis");
69-
queryExplain.Remove("millis");
70-
linqExplain.Remove("executionTimeMillis");
71-
queryExplain.Remove("executionTimeMillis");
70+
RemoveKey(linqExplain, "millis");
71+
RemoveKey(queryExplain, "millis");
72+
RemoveKey(linqExplain, "executionTimeMillis");
73+
RemoveKey(queryExplain, "executionTimeMillis");
74+
RemoveKey(linqExplain, "executionTimeMillisEstimate");
75+
RemoveKey(queryExplain, "executionTimeMillisEstimate");
7276

7377
Assert.AreEqual(linqExplain, queryExplain);
7478
}
@@ -84,5 +88,24 @@ public void TestTakeZeroQueriesCannotBeExplained()
8488
{
8589
Assert.Throws<NotSupportedException>(() => _collection.AsQueryable<C>().Take(0).Explain());
8690
}
91+
92+
private void RemoveKey(BsonValue value, string key)
93+
{
94+
if (value.IsBsonDocument)
95+
{
96+
value.AsBsonDocument.Remove(key);
97+
foreach (var element in value.AsBsonDocument)
98+
{
99+
RemoveKey(element.Value, key);
100+
}
101+
}
102+
else if (value.IsBsonArray)
103+
{
104+
foreach (var item in value.AsBsonArray)
105+
{
106+
RemoveKey(item, key);
107+
}
108+
}
109+
}
87110
}
88111
}

0 commit comments

Comments
 (0)