Skip to content

Commit e8e994a

Browse files
MarcoRossignolinohwnd
authored andcommitted
Fix SocketCommunicationManager (#2290)
1 parent 3ae0859 commit e8e994a

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

src/Microsoft.TestPlatform.CommunicationUtilities/DataCollectionTestCaseEventSender.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public void SendTestCaseStart(TestCaseStartEventArgs e)
9292
this.communicationManager.SendMessage(MessageType.DataCollectionTestStart, e);
9393

9494
var message = this.communicationManager.ReceiveMessage();
95-
if (message.MessageType != MessageType.DataCollectionTestStartAck)
95+
if (message != null && message.MessageType != MessageType.DataCollectionTestStartAck)
9696
{
9797
if (EqtTrace.IsErrorEnabled)
9898
{
@@ -108,8 +108,7 @@ public Collection<AttachmentSet> SendTestCaseEnd(TestCaseEndEventArgs e)
108108
this.communicationManager.SendMessage(MessageType.DataCollectionTestEnd, e);
109109

110110
var message = this.communicationManager.ReceiveMessage();
111-
112-
if (message.MessageType == MessageType.DataCollectionTestEndResult)
111+
if (message != null && message.MessageType == MessageType.DataCollectionTestEndResult)
113112
{
114113
attachmentSets = this.dataSerializer.DeserializePayload<Collection<AttachmentSet>>(message);
115114
}

src/Microsoft.TestPlatform.CommunicationUtilities/SocketCommunicationManager.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,12 @@ public void SendRawMessage(string rawMessage)
285285
public Message ReceiveMessage()
286286
{
287287
var rawMessage = this.ReceiveRawMessage();
288-
return this.dataSerializer.DeserializeMessage(rawMessage);
288+
if (!string.IsNullOrEmpty(rawMessage))
289+
{
290+
return this.dataSerializer.DeserializeMessage(rawMessage);
291+
}
292+
293+
return null;
289294
}
290295

291296
/// <summary>
@@ -317,7 +322,7 @@ public string ReceiveRawMessage()
317322
lock (this.receiveSyncObject)
318323
{
319324
// Reading message on binaryreader is not thread-safe
320-
return this.binaryReader.ReadString();
325+
return this.binaryReader?.ReadString();
321326
}
322327
}
323328

test/Microsoft.TestPlatform.CommunicationUtilities.PlatformTests/SocketCommunicationManagerTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,22 @@ public void SocketPollShouldNotHangServerClientCommunication()
297297
Assert.IsTrue(true);
298298
}
299299

300+
[TestMethod]
301+
public async Task ReceiveRawMessageNotConnectedSocketShouldReturnNull()
302+
{
303+
var peer = new SocketCommunicationManager();
304+
Assert.IsNull(peer.ReceiveRawMessage());
305+
Assert.IsNull(await peer.ReceiveRawMessageAsync(CancellationToken.None));
306+
}
307+
308+
[TestMethod]
309+
public async Task ReceiveMessageNotConnectedSocketShouldReturnNull()
310+
{
311+
var peer = new SocketCommunicationManager();
312+
Assert.IsNull(peer.ReceiveMessage());
313+
Assert.IsNull(await peer.ReceiveMessageAsync(CancellationToken.None));
314+
}
315+
300316
private static void SendData(ICommunicationManager communicationManager)
301317
{
302318
// Having less than the buffer size in SocketConstants.BUFFERSIZE.

0 commit comments

Comments
 (0)