Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5b4a6eb

Browse files
CSHARP-3984: Fixed tests.
1 parent 7e68ab4 commit 5b4a6eb

File tree

3 files changed

+25
-43
lines changed

3 files changed

+25
-43
lines changed

‎tests/MongoDB.Driver.Core.TestHelpers/CoreTestConfiguration.cs‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,21 @@ public static DatabaseNamespace DatabaseNamespace
7575
get { return __databaseNamespace.Value; }
7676
}
7777

78+
public static ICluster FullyConnectedCluster
79+
{
80+
get
81+
{
82+
var timeout = TimeSpan.FromSeconds(30);
83+
var cluster = __cluster.Value;
84+
if (!SpinWait.SpinUntil(() => cluster.Description.Servers.Any(s => s.Type == ServerType.ReplicaSetPrimary), timeout))
85+
{
86+
throw new Exception($"The cluster didn't find a primary during {timeout}. The current cluster description: {cluster.Description}.");
87+
}
88+
89+
return cluster;
90+
}
91+
}
92+
7893
public static MessageEncoderSettings MessageEncoderSettings
7994
{
8095
get { return __messageEncoderSettings; }

‎tests/MongoDB.Driver.Core.Tests/Core/Connections/BinaryConnectionTests.cs‎

Lines changed: 9 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414
*/
1515

1616
using System;
17-
using System.Collections.Generic;
1817
using System.IO;
19-
using System.Linq;
2018
using System.Net;
2119
using System.Net.Sockets;
2220
using System.Threading;
@@ -457,11 +455,7 @@ public void ReceiveMessage_should_complete_when_reply_is_not_already_on_the_stre
457455

458456
[Theory]
459457
[ParameterAttributeData]
460-
public void ReceiveMessage_should_handle_out_of_order_replies(
461-
[Values(false, true)]
462-
bool async1,
463-
[Values(false, true)]
464-
bool async2)
458+
public void ReceiveMessage_should_throw_when_responseTo_incorrect([Values(false, true)] bool async)
465459
{
466460
using (var stream = new BlockingMemoryStream())
467461
{
@@ -470,46 +464,19 @@ public void ReceiveMessage_should_handle_out_of_order_replies(
470464
_subject.Open(CancellationToken.None);
471465
_capturedEvents.Clear();
472466

473-
var encoderSelector = new ReplyMessageEncoderSelector<BsonDocument>(BsonDocumentSerializer.Instance);
474-
475-
Task<ResponseMessage> receivedTask10;
476-
if (async1)
477-
{
478-
receivedTask10 = _subject.ReceiveMessageAsync(10, encoderSelector, _messageEncoderSettings, CancellationToken.None);
479-
}
480-
else
481-
{
482-
receivedTask10 = Task.Run(() => _subject.ReceiveMessage(10, encoderSelector, _messageEncoderSettings, CancellationToken.None));
483-
}
484-
485-
Task<ResponseMessage> receivedTask11;
486-
if (async2)
487-
{
488-
receivedTask11 = _subject.ReceiveMessageAsync(11, encoderSelector, _messageEncoderSettings, CancellationToken.None);
489-
}
490-
else
491-
{
492-
receivedTask11 = Task.Run(() => _subject.ReceiveMessage(11, encoderSelector, _messageEncoderSettings, CancellationToken.None));
493-
}
494-
495-
SpinWait.SpinUntil(() => _capturedEvents.Count >= 2, TimeSpan.FromSeconds(5)).Should().BeTrue();
496-
497-
var messageToReceive10 = MessageHelper.BuildReply<BsonDocument>(new BsonDocument("_id", 10), BsonDocumentSerializer.Instance, responseTo: 10);
498467
var messageToReceive11 = MessageHelper.BuildReply<BsonDocument>(new BsonDocument("_id", 11), BsonDocumentSerializer.Instance, responseTo: 11);
499-
MessageHelper.WriteResponsesToStream(stream, new[] { messageToReceive11,messageToReceive10});// out of order
468+
MessageHelper.WriteResponsesToStream(stream, new[] { messageToReceive11});
500469

501-
var received10 = receivedTask10.GetAwaiter().GetResult();
502-
varreceived11 = receivedTask11.GetAwaiter().GetResult();
503-
504-
var expected =MessageHelper.TranslateMessagesToBsonDocuments(new[]{messageToReceive10,messageToReceive11});
505-
var actual = MessageHelper.TranslateMessagesToBsonDocuments(new[]{received10,received11});
470+
var encoderSelector = new ReplyMessageEncoderSelector<BsonDocument>(BsonDocumentSerializer.Instance);
471+
Exception exception = Record.Exception(
472+
()=>async
473+
?_subject.ReceiveMessageAsync(10,encoderSelector,_messageEncoderSettings,CancellationToken.None).GetAwaiter().GetResult()
474+
: _subject.ReceiveMessage(10,encoderSelector,_messageEncoderSettings,CancellationToken.None));
506475

507-
actual.Should().BeEquivalentTo(expected);
476+
exception.Should().BeOfType<InvalidOperationException>().Subject.Message.Should().Be("Expected responseTo to be 10 but was 11.");
508477

509478
_capturedEvents.Next().Should().BeOfType<ConnectionReceivingMessageEvent>();
510-
_capturedEvents.Next().Should().BeOfType<ConnectionReceivingMessageEvent>();
511-
_capturedEvents.Next().Should().BeOfType<ConnectionReceivedMessageEvent>();
512-
_capturedEvents.Next().Should().BeOfType<ConnectionReceivedMessageEvent>();
479+
_capturedEvents.Next().Should().BeOfType<ConnectionReceivingMessageFailedEvent>();
513480
_capturedEvents.Any().Should().BeFalse();
514481
}
515482
}

‎tests/MongoDB.Driver.Tests/Jira/CSharp2564Tests.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public async Task Misbehaved_async_method_should_not_deadlock_server_selection()
3939
// but then the sync call to RunCommand blocks waiting for a primary and the call to TrySetResult never returns
4040
// which in turn prevents SDAM from unwinding back to process the next queued heartbeat event so the primary is never found
4141

42-
var primary = CoreTestConfiguration.Cluster.Description.Servers.Where(s => s.Type == ServerType.ReplicaSetPrimary).Single();
42+
var primary = CoreTestConfiguration.FullyConnectedCluster.Description.Servers.Where(s => s.Type == ServerType.ReplicaSetPrimary).Single();
4343
void clusterConfigurator(ClusterBuilder builder)
4444
{
4545
builder.Subscribe((ServerHeartbeatSucceededEvent heartbeatEvent) =>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /