public void SetUp() { _bus = MockRepository.GenerateMock<IMessageBus>(); _assemblyIdProvider = MockRepository.GenerateMock<IRetrieveAssemblyIdentifiers>(); _consumer = new BinaryFileChangeConsumer(_bus, _assemblyIdProvider); _files = new FileChangeMessage(); }
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); } } } } }
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")))); }
public void SetUp() { _bus = MockRepository.GenerateMock <IMessageBus>(); _assemblyIdProvider = MockRepository.GenerateMock <IRetrieveAssemblyIdentifiers>(); _consumer = new BinaryFileChangeConsumer(_bus, _assemblyIdProvider); _files = new FileChangeMessage(); }
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); }
public void HandleProjects(FileChangeMessage message) { foreach (var file in message.Files) { handleProject(".csproj", file); handleProject(".vbproj", file); } }
public void Should_subscribe_to_file_change_messages() { var message = new FileChangeMessage(); _bus.Publish(message); waitForAsyncCall(() => { return(_view.FileChangeMessage != null); }); _view.FileChangeMessage.ShouldBeTheSameAs(message); }
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()); }
private void displayFileChangeMessage(FileChangeMessage fileChangeMessage) { lock (_outputLock) { foreach (var file in fileChangeMessage.Files) { writeToOutput("Found file change: " + file.FullName); } writeToOutput(""); } }
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()); }
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)); }
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)))); }
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)))); }
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(); } }
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(); }
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(); }
public void RecievingFileChangeMessage(FileChangeMessage message) { }
public FileChangeMessageEventArgs(FileChangeMessage message) { Message = message; }
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")); }
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(); } }
public void RecievingFileChangeMessage(FileChangeMessage message) { }
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")))); }
public void RecievingFileChangeMessage(FileChangeMessage message) { Debug.WriteDebug("handling file changed"); trySend(message); }