Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not set connected event if Connection is Faulted #1728

Merged
merged 3 commits into from
Aug 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public ConnectedEventArgs(Exception faultException)
public ICommunicationChannel Channel { get; private set; }

/// <summary>
/// Gets true if it's connected.
/// Gets a value indicating whether channel is connected or not, true if it's connected.
/// </summary>
public bool Connected { get; private set; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ private void OnServerConnected(Task connectAsyncTask)
{
if (connectAsyncTask.IsFaulted)
{
this.Connected.SafeInvoke(this, new ConnectedEventArgs(connectAsyncTask.Exception), "SocketClient: ServerConnected");
this.Connected.SafeInvoke(this, new ConnectedEventArgs(connectAsyncTask.Exception), "SocketClient: Server Failed to Connect");
if (EqtTrace.IsVerboseEnabled)
{
EqtTrace.Verbose("Unable to connect to server, Exception occured : {0}", connectAsyncTask.Exception);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,11 @@ public int InitializeCommunication()
this.communicationEndpoint.Connected += (sender, args) =>
{
this.channel = args.Channel;
this.connected.Set();

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need test for this ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so, it's a safe check, anyways args.Channel would be null, & we will just crash when we do TestRequestSender.CheckVersionWithTestHost().

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added tests

if (args.Connected && this.channel != null)
{
this.connected.Set();
}
};
this.communicationEndpoint.Disconnected += (sender, args) =>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ namespace Microsoft.TestPlatform.CommunicationUtilities.UnitTests
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;

Expand All @@ -34,13 +35,13 @@ public class TestRequestSenderTests
private readonly Mock<IDataSerializer> mockDataSerializer;
private readonly Mock<ICommunicationChannel> mockChannel;

private readonly ConnectedEventArgs connectedEventArgs;
private readonly List<string> pathToAdditionalExtensions = new List<string> { "Hello", "World" };
private readonly Mock<ITestDiscoveryEventsHandler2> mockDiscoveryEventsHandler;
private readonly Mock<ITestRunEventsHandler> mockExecutionEventsHandler;
private readonly TestRunCriteriaWithSources testRunCriteriaWithSources;
private TestHostConnectionInfo connectionInfo;
private ITestRequestSender testRequestSender;
private ConnectedEventArgs connectedEventArgs;

public TestRequestSenderTests()
{
Expand Down Expand Up @@ -85,6 +86,17 @@ public void WaitForRequestHandlerConnectionShouldWaitForClientToConnect()
Assert.IsTrue(connected);
}

[TestMethod]
public void WaitForRequestHandlerConnectionShouldNotConnectIfExceptionWasThrownByTcpLayer()
{
this.connectedEventArgs = new ConnectedEventArgs(new SocketException());
this.SetupFakeCommunicationChannel();

var connected = this.testRequestSender.WaitForRequestHandlerConnection(1, It.IsAny<CancellationToken>());

Assert.IsFalse(connected);
}

[TestMethod]
public void WaitForRequestHandlerConnectionWithInfiniteTimeoutShouldReturnImmediatelyWhenCancellationRequested()
{
Expand Down