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));
        }
Пример #2
0
        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);
        }