public async Task FirstRunShouldLoadPrvAssemblies() { var w = new Workspace() { Status = WorkspaceStatus.Compiled, NodeName = "node1", Id = 123 }; var loc = this.GetType().Assembly.Location; var c = new Model.Compilation() { Assembly = File.ReadAllBytes(loc), Hash = Guid.NewGuid(), Workspace = w, WorkspaceId = 123, Purpose = purpose }; Fixture.WithNodeName() .With(w) .With(c); await Fixture.Sut.Load(); Fixture.DynamicTypePool.Received(1) .AddOrReplace(Arg.Is <DynamicAssembly>(y => y.SrcHash == c.Hash)); await Fixture.Repository.Received().CommitChanges(); w.Status.Should().Be(WorkspaceStatus.Running); Fixture.MetadataProvider.Discover(Arg.Is <Assembly[]>(y => y[0].Location == loc)); }
private async Task Load(Workspace[] workspaces, Model.Compilation c) { _logger.Info("Old metadata model loaded from database with {hash} hash.", c.Hash); DynamicAssembly assembly = new DynamicAssembly(_eventHub); assembly.AddDefaultReferences(); assembly.Load(c.Assembly, c.Hash); _dynamicPool.AddOrReplace(assembly); _metadataProvider.Clear(); _metadataProvider.Discover(assembly.Assembly); // TODO: Refactor this and from Load await _eventHub.Publish(new AssemblyLoadedEvent() { Assembly = assembly.Assembly, Purpose = assembly.Purpose }); var w = await SetWorkspaceInfo(workspaces); AppDomain.CurrentDomain.SetDynamicWorkspace(w.VersionSignature, w.Id); }