public void SetUp()
		{
			_bus = MockRepository.GenerateMock<IMessageBus>();
			_assemblyIdProvider = MockRepository.GenerateMock<IRetrieveAssemblyIdentifiers>();
			_consumer = new BinaryFileChangeConsumer(_bus, _assemblyIdProvider);
			_files = new FileChangeMessage();
		}
Ejemplo n.º 2
0
        public async Task FileSyncHandlerAsync([QueueTrigger(Consts.FileSyncQueueName, Connection = Consts.StorageConnectionSettingName)] FileChangeMessage filechange, ILogger logger)
        {
            var folderpath = Path.Combine(_settings.LocalJobAssetCacheFolder, filechange.folderpath);
            var filePath   = Path.Combine(folderpath, filechange.filename);

            logger.LogInformation($"{(filechange.fileAdded ? "moving" : "deleting")} file:{filePath}");

            if (!filechange.fileAdded)
            {
                File.Delete(filePath);
            }
            else
            {
                Directory.CreateDirectory(folderpath);
                using (var localfile = File.Create(filePath))
                {
                    using (var fs = await _blob.OpenReadonlyBlobStreamAsync(filechange.blobContainer, filechange.folderpath, filechange.filename))
                    {
                        int bytesRead  = -1;
                        int bufferSize = 1024 * 1024;

                        byte[] bytes = new byte[bufferSize];
                        //bytesRead = fs.Read(bytes, 0, bufferSize);

                        while ((bytesRead = await fs.ReadAsync(bytes, 0, bufferSize)) > 0)
                        {
                            localfile.Write(bytes, 0, bytesRead);
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void When_finding_more_projects_by_multiple_locators_the_ones_closest_to_the_changed_file_should_be_published()
        {
            var locator1 = new FakeProjectLocator(new ChangedFile[]
            {
                new ChangedFile("FirstRootProject.csproj")
            });
            var locator2 = new FakeProjectLocator(new ChangedFile[]
            {
                new ChangedFile(Path.Combine("SubFolder", "FirstSubProject.vbproj"))
            });
            var locator3 = new FakeProjectLocator(new ChangedFile[]
            {
                new ChangedFile(Path.Combine("SubFolder", "SecondSubProject.xproj")),
                new ChangedFile(Path.Combine("SubFolder", "ThirdSubProject.xproj"))
            });

            _services.Stub(s => s.LocateAll <ILocateProjects>()).Return(new ILocateProjects[] { locator1, locator2, locator3 });
            var fileChange = new FileChangeMessage();

            fileChange.AddFile(new ChangedFile(Path.Combine("SubFolder", Path.Combine("SecondSub", "asdf.cs"))));
            _subject.Consume(fileChange);
            _bus.AssertWasCalled(b => b.Publish <ProjectChangeMessage>(
                                     Arg <ProjectChangeMessage> .Matches(
                                         p => p.Files.Length.Equals(3) &&
                                         p.Files[0].Name.Equals("FirstSubProject.vbproj") &&
                                         p.Files[1].Name.Equals("SecondSubProject.xproj") &&
                                         p.Files[2].Name.Equals("ThirdSubProject.xproj"))));
        }
Ejemplo n.º 4
0
 public void SetUp()
 {
     _bus = MockRepository.GenerateMock <IMessageBus>();
     _assemblyIdProvider = MockRepository.GenerateMock <IRetrieveAssemblyIdentifiers>();
     _consumer           = new BinaryFileChangeConsumer(_bus, _assemblyIdProvider);
     _files = new FileChangeMessage();
 }
Ejemplo n.º 5
0
 public void Publish <T> (T message)
 {
     if (typeof(T).Equals(typeof(FileChangeMessage)))
     {
         Message = (FileChangeMessage)(IMessage)message;
     }
 }
 public void Should_subscribe_to_file_change_messages()
 {
     var message = new FileChangeMessage();
     _bus.Publish(message);
     waitForAsyncCall(() => { return _view.FileChangeMessage != null; });
     _view.FileChangeMessage.ShouldBeTheSameAs(message);
 }
Ejemplo n.º 7
0
 public void HandleProjects(FileChangeMessage message)
 {
     foreach (var file in message.Files)
     {
         handleProject(".csproj", file);
         handleProject(".vbproj", file);
     }
 }
Ejemplo n.º 8
0
        public void Should_subscribe_to_file_change_messages()
        {
            var message = new FileChangeMessage();

            _bus.Publish(message);
            waitForAsyncCall(() => { return(_view.FileChangeMessage != null); });
            _view.FileChangeMessage.ShouldBeTheSameAs(message);
        }
Ejemplo n.º 9
0
 public void SetUp()
 {
     _bus    = MockRepository.GenerateMock <IMessageBus>();
     _config = MockRepository.GenerateMock <IConfiguration>();
     _config.Stub(x => x.Providers).Return(".NET");
     _assemblyIdProvider = MockRepository.GenerateMock <IRetrieveAssemblyIdentifiers>();
     _consumer           = new BinaryFileChangeConsumer(_bus, _assemblyIdProvider, _config);
     _files = new FileChangeMessage();
 }
		public void SetUp()
		{
			_bus = MockRepository.GenerateMock<IMessageBus>();
			_config = MockRepository.GenerateMock<IConfiguration>();
            _config.Stub(x => x.Providers).Return(".NET");
			_assemblyIdProvider = MockRepository.GenerateMock<IRetrieveAssemblyIdentifiers>();
			_consumer = new BinaryFileChangeConsumer(_bus, _assemblyIdProvider, _config);
			_files = new FileChangeMessage();
		}
 public void Should_publish_if_project_was_found()
 {
     var locator = new FakeProjectLocator(new ChangedFile[] { new ChangedFile("someproject.csproj") });
     _services.Stub(s => s.LocateAll<ILocateProjects>()).Return(new ILocateProjects[] { locator });
     var fileChange = new FileChangeMessage();
     fileChange.AddFile(new ChangedFile("asdf.cs"));
     _subject.Consume(fileChange);
     _bus.AssertWasCalled(b => b.Publish<ProjectChangeMessage>(null), b => b.IgnoreArguments());
 }
Ejemplo n.º 12
0
 private void displayFileChangeMessage(FileChangeMessage fileChangeMessage)
 {
     lock (_outputLock)
     {
         foreach (var file in fileChangeMessage.Files)
         {
             writeToOutput("Found file change: " + file.FullName);
         }
         writeToOutput("");
     }
 }
Ejemplo n.º 13
0
        public void Should_publish_if_project_was_found()
        {
            var locator = new FakeProjectLocator(new ChangedFile[] { new ChangedFile("someproject.csproj") });

            _services.Stub(s => s.LocateAll <ILocateProjects>()).Return(new ILocateProjects[] { locator });
            var fileChange = new FileChangeMessage();

            fileChange.AddFile(new ChangedFile("asdf.cs"));
            _subject.Consume(fileChange);
            _bus.AssertWasCalled(b => b.Publish <ProjectChangeMessage>(null), b => b.IgnoreArguments());
        }
Ejemplo n.º 14
0
        internal static void ConsumingFileChange(FileChangeMessage message)
        {
            var builder = new StringBuilder();

            builder.AppendLine("Consuming file change for:");
            foreach (var file in message.Files)
            {
                builder.AppendLine(string.Format("    {0}", file.FullName));
            }
            writeDebug(builder.ToString());
        }
        public void When_changed_file_is_project_handle_it()
        {
            var locator = new FakeProjectLocator(new ChangedFile[] { new ChangedFile("someproject.csproj") });

            locator.WhenAskedIfFileIsProjectReturn(true);
            _services.Stub(s => s.LocateAll <ILocateProjects>()).Return(new ILocateProjects[] { locator });
            var fileChange = new FileChangeMessage();

            fileChange.AddFile(new ChangedFile("someproject.csproj"));
            _subject.Consume(fileChange);
            _marker.AssertWasCalled(m => m.HandleProjects(fileChange));
        }
Ejemplo n.º 16
0
        public void Should_serialize_file_change_message()
        {
            var file    = new ChangedFile(System.Reflection.Assembly.GetExecutingAssembly().FullName);
            var message = new FileChangeMessage();

            message.AddFile(file);
            var output = serializeDeserialize <FileChangeMessage>(message);

            output.Files.Length.ShouldEqual(1);
            output.Files[0].Name.ShouldEqual(file.Name);
            output.Files[0].FullName.ShouldEqual(file.FullName);
            output.Files[0].Extension.ShouldEqual(file.Extension);
        }
 public void When_finding_multiple_projects_all_should_be_published()
 {
     var locator = new FakeProjectLocator(new ChangedFile[]
                                              {
                                                  new ChangedFile("FirstRootProject.csproj"),
                                                  new ChangedFile("someproject.csproj")
                                              });
     _services.Stub(s => s.LocateAll<ILocateProjects>()).Return(new ILocateProjects[] { locator });
     var fileChange = new FileChangeMessage();
     fileChange.AddFile(new ChangedFile(Path.Combine("SubFolder", Path.Combine("SecondSub", "asdf.cs"))));
     _subject.Consume(fileChange);
     _bus.AssertWasCalled(b => b.Publish<ProjectChangeMessage>(Arg<ProjectChangeMessage>.Matches(p => p.Files.Length.Equals(2))));
 }
Ejemplo n.º 18
0
        public void When_finding_multiple_projects_all_should_be_published()
        {
            var locator = new FakeProjectLocator(new ChangedFile[]
            {
                new ChangedFile("FirstRootProject.csproj"),
                new ChangedFile("someproject.csproj")
            });

            _services.Stub(s => s.LocateAll <ILocateProjects>()).Return(new ILocateProjects[] { locator });
            var fileChange = new FileChangeMessage();

            fileChange.AddFile(new ChangedFile(Path.Combine("SubFolder", Path.Combine("SecondSub", "asdf.cs"))));
            _subject.Consume(fileChange);
            _bus.AssertWasCalled(b => b.Publish <ProjectChangeMessage>(Arg <ProjectChangeMessage> .Matches(p => p.Files.Length.Equals(2))));
        }
Ejemplo n.º 19
0
 private void _batchTimer_Elapsed(object sender, ElapsedEventArgs e)
 {
     lock (_padLock)
     {
         if (_buffer.Count > 0)
         {
             Debug.AboutToPublishFileChanges(_buffer.Count);
             var fileChange = new FileChangeMessage();
             fileChange.AddFile(_buffer.ToArray());
             _bus.Publish(fileChange);
         }
         _buffer.Clear();
         stopTimer();
     }
 }
Ejemplo n.º 20
0
        private void _batchTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            Debug.AboutToPublishFileChanges(_buffer.Count);
            var fileChange = new FileChangeMessage();

            while (_buffer.Count > 0)
            {
                var file = _buffer.Pop();
                fileChange.AddFile(file);
            }
            if (fileChange.Files.Length > 0)
            {
                _bus.Publish(fileChange);
            }
            stopTimer();
        }
Ejemplo n.º 21
0
        public void Should_add_projects_that_doesnt_exist()
        {
            var project = new Project("", new ProjectDocument(ProjectType.VisualBasic));
            var cache   = MockRepository.GenerateMock <ICache>();
            var message = new FileChangeMessage();

            message.AddFile(new ChangedFile(string.Format("TestResources{0}VS2008{0}NUnitTestProjectVisualBasic.vbproj", Path.DirectorySeparatorChar)));
            cache.Stub(c => c.Get <Project>(message.Files[0].FullName)).Return(null).Repeat.Once();
            cache.Stub(c => c.Get <Project>(message.Files[0].FullName)).Return(project).Repeat.Once();

            var marker = new ProjectRebuildMarker(cache);

            marker.HandleProjects(message);

            cache.AssertWasCalled(c => c.Add <Project>(message.Files[0].FullName));
        }
		private void _batchTimer_Elapsed(object sender, ElapsedEventArgs e)
		{
			Debug.AboutToPublishFileChanges(_buffer.Count);
			var fileChange = new FileChangeMessage();
			while (_buffer.Count > 0)
			{
				var file = _buffer.Pop();
				fileChange.AddFile(file);
			}
			if (fileChange.Files.Length > 0)
				_bus.Publish(fileChange);
			stopTimer();
		}
Ejemplo n.º 23
0
 public void RecievingFileChangeMessage(FileChangeMessage message)
 {
 }
Ejemplo n.º 24
0
 public FileChangeMessageEventArgs(FileChangeMessage message)
 {
     Message = message;
 }
Ejemplo n.º 25
0
 public void When_changed_file_is_project_mark_project_as_dirty()
 {
     var locator = new FakeProjectLocator(new ChangedFile[] { new ChangedFile("someproject.csproj") });
     locator.WhenAskedIfFileIsProjectReturn(true);
     _services.Stub(s => s.LocateAll<ILocateProjects>()).Return(new ILocateProjects[] { locator });
     var fileChange = new FileChangeMessage();
     fileChange.AddFile(new ChangedFile("someproject.csproj"));
     _cache.Stub(c => c.Exists("someproject.csproj")).Return(true);
     _subject.Consume(fileChange);
     _cache.AssertWasCalled(c => c.Reload<Project>("someproject.csproj"));
 }
Ejemplo n.º 26
0
 private void _batchTimer_Elapsed(object sender, ElapsedEventArgs e)
 {
     lock (_padLock)
     {
         if (_buffer.Count > 0)
         {
             Debug.AboutToPublishFileChanges(_buffer.Count);
             var fileChange = new FileChangeMessage();
             fileChange.AddFile(_buffer.ToArray());
             _bus.Publish(fileChange);
         }
         _buffer.Clear();
         stopTimer();
     }
 }
Ejemplo n.º 27
0
 public void RecievingFileChangeMessage(FileChangeMessage message)
 {
 }
Ejemplo n.º 28
0
 public FileChangeMessageEventArgs(FileChangeMessage message)
 {
     Message = message;
 }
 public void When_finding_more_projects_by_multiple_locators_the_ones_closest_to_the_changed_file_should_be_published()
 {
     var locator1 = new FakeProjectLocator(new ChangedFile[]
                                              {
                                                  new ChangedFile("FirstRootProject.csproj")
                                              });
     var locator2 = new FakeProjectLocator(new ChangedFile[]
                                              {
                                                  new ChangedFile(Path.Combine("SubFolder", "FirstSubProject.vbproj"))
                                              });
     var locator3 = new FakeProjectLocator(new ChangedFile[]
                                              {
                                                  new ChangedFile(Path.Combine("SubFolder", "SecondSubProject.xproj")),
                                                  new ChangedFile(Path.Combine("SubFolder", "ThirdSubProject.xproj"))
                                              });
     _services.Stub(s => s.LocateAll<ILocateProjects>()).Return(new ILocateProjects[] { locator1, locator2, locator3 });
     var fileChange = new FileChangeMessage();
     fileChange.AddFile(new ChangedFile(Path.Combine("SubFolder", Path.Combine("SecondSub", "asdf.cs"))));
     _subject.Consume(fileChange);
     _bus.AssertWasCalled(b => b.Publish<ProjectChangeMessage>(
                                   Arg<ProjectChangeMessage>.Matches(
                                       p => p.Files.Length.Equals(3) &&
                                            p.Files[0].Name.Equals("FirstSubProject.vbproj") &&
                                            p.Files[1].Name.Equals("SecondSubProject.xproj") &&
                                            p.Files[2].Name.Equals("ThirdSubProject.xproj"))));
 }
Ejemplo n.º 30
0
 public void RecievingFileChangeMessage(FileChangeMessage message)
 {
     Debug.WriteDebug("handling file changed");
     trySend(message);
 }