Fix projectmodel-server regression

1. Address the null reference exception when a project dependency is
broken.
2. Address the duplicate key issues after the logic of redirecting
System pacage to reference assembly was added

Update projectmodel-server and tests

1. Fix test timeout caused by undisconnected socket;
2. Update project model server
This commit is contained in:
Troy Dai 2016-01-29 01:49:56 -08:00
parent c4b3925e46
commit b9f2d8fe3d
12 changed files with 81 additions and 48 deletions

View file

@ -9,6 +9,7 @@ using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Xunit;
@ -29,18 +30,19 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests
// works in visual studio
private readonly Dictionary<string, int> _projectContexts = new Dictionary<string, int>();
private int _nextContextId;
private readonly Socket _socket;
public DthTestClient(DthTestServer server)
{
var socket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
_socket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
socket.Connect(new IPEndPoint(IPAddress.Loopback, server.Port));
_socket.Connect(new IPEndPoint(IPAddress.Loopback, server.Port));
_hostId = server.HostId;
_networkStream = new NetworkStream(socket);
_networkStream = new NetworkStream(_socket);
_reader = new BinaryReader(_networkStream);
_writer = new BinaryWriter(_networkStream);
@ -221,6 +223,7 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests
_writer.Dispose();
_networkStream.Dispose();
_readCancellationToken.Cancel();
_socket.Shutdown(SocketShutdown.Both);
}
private void ReadMessage(CancellationToken cancellationToken)

View file

@ -5,13 +5,14 @@ using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.DotNet.ProjectModel.Server;
using Microsoft.Extensions.Logging;
namespace Microsoft.DotNet.ProjectModel.Server.Tests
{
public class DthTestServer : IDisposable
{
private readonly Program _program;
private readonly ProjectModelServerCommand _program;
private readonly Thread _thread;
public DthTestServer(ILoggerFactory loggerFactory)
@ -21,9 +22,9 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests
Port = FindFreePort();
HostId = Guid.NewGuid().ToString();
_program = new Program(Port, HostId, LoggerFactory);
_program = new ProjectModelServerCommand(Port, HostId, LoggerFactory);
_thread = new Thread(() => { _program.OpenChannel(); });
_thread = new Thread(() => { _program.OpenChannel(); }) { IsBackground = true };
_thread.Start();
}

View file

@ -86,7 +86,7 @@ namespace Microsoft.DotNet.ProjectModel.Server.Tests
[Theory]
[InlineData("Project", "UnresolvedProjectSample", "EmptyLibrary", "Project")]
[InlineData("Package", "UnresolvedPackageSample", "NoSuchPackage", null)]
[InlineData("Package", "IncompatiblePackageSample", "Newtonsoft.Json", "Package")]
[InlineData("Package", "IncompatiblePackageSample", "Microsoft.Web.Administration", "Package")]
public void DthCompilation_Initialize_UnresolvedDependency(string referenceType,
string testProjectName,
string expectedUnresolvedDependency,