Skip to content

Commit

Permalink
Refactor access to remote workspace (#46542)
Browse files Browse the repository at this point in the history
  • Loading branch information
tmat authored Aug 18, 2020
1 parent d8e46bb commit 05b8f2d
Show file tree
Hide file tree
Showing 30 changed files with 628 additions and 807 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ public VisualStudioWorkspaceImpl(ExportProvider exportProvider, IAsyncServicePro

_textBufferFactoryService.TextBufferCreated += AddTextBufferCloneServiceToBuffer;
_projectionBufferFactoryService.ProjectionBufferCreated += AddTextBufferCloneServiceToBuffer;
exportProvider.GetExportedValue<PrimaryWorkspace>().Register(this);

_ = Task.Run(() => InitializeUIAffinitizedServicesAsync(asyncServiceProvider));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ public async Task TestSessionClosed()
{
using var workspace = CreateWorkspace();

var client = (InProcRemoteHostClient)await InProcRemoteHostClient.CreateAsync(workspace.Services, runCacheCleanup: false).ConfigureAwait(false);
using var client = await InProcRemoteHostClient.GetTestClientAsync(workspace).ConfigureAwait(false);

var serviceName = new RemoteServiceName("Test");

// register local service
Expand Down
19 changes: 15 additions & 4 deletions src/VisualStudio/Core/Test.Next/Services/AssetProviderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,22 @@ namespace Roslyn.VisualStudio.Next.UnitTests.Remote
[UseExportProvider]
public class AssetProviderTests
{
private static Workspace CreateRemoteWorkspace()
=> new RemoteWorkspace(FeaturesTestCompositions.RemoteHost.GetHostServices(), WorkspaceKind.RemoteWorkspace);

[Fact, Trait(Traits.Feature, Traits.Features.RemoteHost)]
public async Task TestAssets()
{
var sessionId = 0;
var checksum = Checksum.Create(WellKnownSynchronizationKind.Null, ImmutableArray.CreateRange(Guid.NewGuid().ToByteArray()));
var data = new object();

using var remoteWorkspace = CreateRemoteWorkspace();

var storage = new AssetStorage();
storage.Initialize(new SimpleAssetSource(new Dictionary<Checksum, object>() { { checksum, data } }));

var provider = new AssetProvider(sessionId, storage, new RemoteWorkspace().Services.GetService<ISerializerService>());
var provider = new AssetProvider(sessionId, storage, remoteWorkspace.Services.GetService<ISerializerService>());
var stored = await provider.GetAssetAsync<object>(checksum, CancellationToken.None);
Assert.Equal(data, stored);

Expand All @@ -56,11 +61,13 @@ public async Task TestAssetSynchronization()

var map = await solution.GetAssetMapAsync(CancellationToken.None);

using var remoteWorkspace = CreateRemoteWorkspace();

var sessionId = 0;
var storage = new AssetStorage();
storage.Initialize(new SimpleAssetSource(map));

var service = new AssetProvider(sessionId, storage, new RemoteWorkspace().Services.GetService<ISerializerService>());
var service = new AssetProvider(sessionId, storage, remoteWorkspace.Services.GetService<ISerializerService>());
await service.SynchronizeAssetsAsync(new HashSet<Checksum>(map.Keys), CancellationToken.None);

foreach (var kv in map)
Expand All @@ -82,11 +89,13 @@ public async Task TestSolutionSynchronization()

var map = await solution.GetAssetMapAsync(CancellationToken.None);

using var remoteWorkspace = CreateRemoteWorkspace();

var sessionId = 0;
var storage = new AssetStorage();
storage.Initialize(new SimpleAssetSource(map));

var service = new AssetProvider(sessionId, storage, new RemoteWorkspace().Services.GetService<ISerializerService>());
var service = new AssetProvider(sessionId, storage, remoteWorkspace.Services.GetService<ISerializerService>());
await service.SynchronizeSolutionAssetsAsync(await solution.State.GetChecksumAsync(CancellationToken.None), CancellationToken.None);

TestUtils.VerifyAssetStorage(map, storage);
Expand All @@ -105,11 +114,13 @@ public async Task TestProjectSynchronization()

var map = await project.GetAssetMapAsync(CancellationToken.None);

using var remoteWorkspace = CreateRemoteWorkspace();

var sessionId = 0;
var storage = new AssetStorage();
storage.Initialize(new SimpleAssetSource(map));

var service = new AssetProvider(sessionId, storage, new RemoteWorkspace().Services.GetService<ISerializerService>());
var service = new AssetProvider(sessionId, storage, remoteWorkspace.Services.GetService<ISerializerService>());
await service.SynchronizeProjectAssetsAsync(SpecializedCollections.SingletonEnumerable(await project.State.GetChecksumAsync(CancellationToken.None)), CancellationToken.None);

TestUtils.VerifyAssetStorage(map, storage);
Expand Down
Loading

0 comments on commit 05b8f2d

Please sign in to comment.