Skip to content

Commit 263089f

Browse files
committed
Fix test that was failing just because millis in execution stats were slightly different.
1 parent 29414b2 commit 263089f

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

tests/MongoDB.Driver.Legacy.Tests/Linq/ExplainTests.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
using System;
1717
using System.Linq;
18+
using System.Text.RegularExpressions;
1819
using MongoDB.Bson;
1920
using MongoDB.Driver;
2021
using MongoDB.Driver.Builders;
@@ -46,12 +47,8 @@ public void TestExplainFromLinqQueryEqualsExplainFromCursor()
4647
var queryExplain = _collection.FindAs<C>(Query.And(Query.EQ("X", 2), Query.EQ("Y", 1))).SetLimit(1).Explain();
4748

4849
// millis could be different, so we'll ignore that difference.
49-
RemoveKey(linqExplain, "millis");
50-
RemoveKey(queryExplain, "millis");
51-
RemoveKey(linqExplain, "executionTimeMillis");
52-
RemoveKey(queryExplain, "executionTimeMillis");
53-
RemoveKey(linqExplain, "executionTimeMillisEstimate");
54-
RemoveKey(queryExplain, "executionTimeMillisEstimate");
50+
RemoveMatchingElements(linqExplain, new Regex("millis", RegexOptions.IgnoreCase));
51+
RemoveMatchingElements(queryExplain, new Regex("millis", RegexOptions.IgnoreCase));
5552

5653
Assert.Equal(linqExplain, queryExplain);
5754
}
@@ -63,12 +60,8 @@ public void TestVerboseExplainFromLinqQueryEqualsVerboseExplainFromCursor()
6360
var queryExplain = _collection.FindAs<C>(Query.And(Query.EQ("X", 2), Query.EQ("Y", 1))).SetLimit(1).Explain(true);
6461

6562
// millis could be different, so we'll ignore that difference.
66-
RemoveKey(linqExplain, "millis");
67-
RemoveKey(queryExplain, "millis");
68-
RemoveKey(linqExplain, "executionTimeMillis");
69-
RemoveKey(queryExplain, "executionTimeMillis");
70-
RemoveKey(linqExplain, "executionTimeMillisEstimate");
71-
RemoveKey(queryExplain, "executionTimeMillisEstimate");
63+
RemoveMatchingElements(linqExplain, new Regex("millis", RegexOptions.IgnoreCase));
64+
RemoveMatchingElements(queryExplain, new Regex("millis", RegexOptions.IgnoreCase));
7265

7366
Assert.Equal(linqExplain, queryExplain);
7467
}
@@ -85,21 +78,28 @@ public void TestTakeZeroQueriesCannotBeExplained()
8578
Assert.Throws<NotSupportedException>(() => _collection.AsQueryable<C>().Take(0).Explain());
8679
}
8780

88-
private void RemoveKey(BsonValue value, string key)
81+
private void RemoveMatchingElements(BsonValue value, Regex regex)
8982
{
90-
if(value.IsBsonDocument)
83+
if (value.BsonType == BsonType.Document)
9184
{
92-
value.AsBsonDocument.Remove(key);
93-
foreach (var element in value.AsBsonDocument)
85+
var document = value.AsBsonDocument;
86+
foreach (var name in document.Names.ToList())
9487
{
95-
RemoveKey(element.Value, key);
88+
if (regex.IsMatch(name))
89+
{
90+
document.Remove(name);
91+
}
92+
else
93+
{
94+
RemoveMatchingElements(document[name], regex);
95+
}
9696
}
9797
}
98-
else if (value.IsBsonArray)
98+
else if (value.BsonType == BsonType.Array)
9999
{
100-
foreach(var item in value.AsBsonArray)
100+
foreach (var item in value.AsBsonArray)
101101
{
102-
RemoveKey(item, key);
102+
RemoveMatchingElements(item, regex);
103103
}
104104
}
105105
}

0 commit comments

Comments
 (0)