public void ApplyChanges_Deletes_Ok() { Subscriber changeApplyer = new Subscriber(); PublishPackageRequestResponse deletePackageRequestResponse = new PublishPackageRequestResponse { Source = "Source1", SourceRootName = @"Data\Test", ChangePushItems = new List<ChangePushItem> { new ChangePushItem { AbsolutePath = @"Data\Test\F1\F12\F12.xml", OperationType = OperationType.Delete }, new ChangePushItem { AbsolutePath = @"Data\Test\F1\F12\F121.xml", OperationType = OperationType.Delete } } }; changeApplyer.Initialize(@"Data\Output\Test"); Assert.True(File.Exists(@"Data\Output\Test\F1\F12\F12.xml")); Assert.True(File.Exists(@"Data\Output\Test\F1\F12\F121.xml")); var mockCopyStrategy = MockCopyStrategy(); changeApplyer.CopyStrategy = mockCopyStrategy; foreach (var changePushItem in deletePackageRequestResponse.ChangePushItems) { var response = changeApplyer.TryApplyChange(new ApplyChangePushItemRequest { ChangePushItem = changePushItem, SourceRootName = deletePackageRequestResponse.SourceRootName }); Assert.True(response.Success); Assert.AreNotEqual(changePushItem.AbsolutePath, response.ChangePushItem.AbsolutePath); } Assert.False(File.Exists(@"Data\Output\Test\F1\F12\F12.xml")); Assert.False(File.Exists(@"Data\Output\Test\F1\F12\F121.xml")); }
private void MockTheSubscriber(AvailableChannel channel, PublishPackageRequestResponse publishPackageRequestResponse) { //var mockSubscriber = new Mock<ISubscriber>(); //mockSubscriber.Setup(m => m.GetHeartbeat()).Returns(new GetHeartbeatResponse { Status = true, RootPath = @"destination root folder\Item One" }); //mockSubscriber.Setup(m => m.TryOpenChannel(null)).Returns(new TryOpenChannelResponse{Status=true}); //foreach(var changePushItem in publishPackageRequestResponse.ChangePushItems) //{ // mockSubscriber.Setup( // m => // m.ApplyChangePushItem(new ApplyChangePushItemRequest // { // ChangePushItem = changePushItem, // SourceRootName = publishPackageRequestResponse.SourceRootName // })).Returns( // new ApplyChangePushItemResponse // {ChangePushItem = changePushItem, Success = true}); //} channel.Subscriber = new MockRemoteSubscriber(); }
private void MockAllTheSubscribers(List<AvailableChannel> availableChannels, PublishPackageRequestResponse publishPackageRequestResponse) { foreach (var availableChannel in availableChannels) { MockTheSubscriber(availableChannel,publishPackageRequestResponse); } }
public void RemovePackage(PublishPackageRequestResponse packageRequestResponsePublished) { throw new NotImplementedException(); }
public void RemovePackage(PublishPackageRequestResponse packageRequestResponsePublished) { if(packageRequestResponsePublished==null) throw new ArgumentNullException("publishedPackage"); lock (_lock) { LoggingManager.Debug("Removing package after publishing: " + packageRequestResponsePublished.PackageId); var identifiedPackage = PublishedPackageNotDistributed.FirstOrDefault(p => p.PackageId == packageRequestResponsePublished.PackageId); if (identifiedPackage == null) return; PublishedPackageNotDistributed.Remove(identifiedPackage); LoggingManager.Debug("Removed package after publishing: " + packageRequestResponsePublished.PackageId); } }
public PublishPackageRequestResponse PublishPackage() { if(string.IsNullOrEmpty(_sourceRootName) || _temporaryStore==null) throw new PublisherSetupException(_sourceRootName,"Publisher Information incomplete"); lock (_lock) { LoggingManager.Debug("Starting publishing package"); if (PublishedPackageNotDistributed != null && PublishedPackageNotDistributed.Count > 0) { LoggingManager.Debug("Republish package: " + PublishedPackageNotDistributed[0].PackageId); return PublishedPackageNotDistributed[0]; } if (_temporaryStore.Keys.Count == 0) { LoggingManager.Debug("Nothing to publish"); return null; } PublishPackageRequestResponse publishPackageRequestResponse = new PublishPackageRequestResponse {Source = Environment.MachineName, SourceRootName = _sourceRootName,PackageId=Guid.NewGuid()}; List<ChangePushItem> _pushItems= new List<ChangePushItem>(); foreach(string key in _temporaryStore.Keys) _pushItems.Add(new ChangePushItem{AbsolutePath = key,OperationType = _temporaryStore[key]}); _temporaryStore.Clear(); publishPackageRequestResponse.ChangePushItems = _pushItems; if(PublishedPackageNotDistributed==null) PublishedPackageNotDistributed= new List<PublishPackageRequestResponse>(); PublishedPackageNotDistributed.Add(publishPackageRequestResponse); LoggingManager.Debug("Published package: " +publishPackageRequestResponse.PackageId); return publishPackageRequestResponse; } }
private void CompareTwoPackages(PublishPackageRequestResponse expectedPackageRequestResponse, PublishPackageRequestResponse actualPackageRequestResponse) { Assert.AreEqual(expectedPackageRequestResponse.Source,actualPackageRequestResponse.Source); Assert.AreEqual(expectedPackageRequestResponse.SourceRootName, actualPackageRequestResponse.SourceRootName); Assert.AreEqual(expectedPackageRequestResponse.ChangePushItems.Count,actualPackageRequestResponse.ChangePushItems.Count); foreach (var expectedItem in expectedPackageRequestResponse.ChangePushItems) { Assert.IsNotNull(actualPackageRequestResponse.ChangePushItems.FirstOrDefault(i=>i.AbsolutePath==expectedItem.AbsolutePath && i.OperationType==expectedItem.OperationType)); } }
public void SetUp() { if (File.Exists("backup.xml")) { File.Copy("backup.xml", "backup1.xml", true); File.Delete("backup.xml"); } _expectedPackageRequestResponse = new PublishPackageRequestResponse { Source = Environment.MachineName, SourceRootName = "source root name 1" }; _changePublisherForThreads= new ChangePublisher(); var mockItemDiscoverer = MockTestHelper.MockItemDiscoverer("source root name 1"); _changePublisherForThreads.Initialize("source root name 1", mockItemDiscoverer); }
public void ApplyChanges_Upserts_SomeFail() { Subscriber changeApplyer = new Subscriber(); PublishPackageRequestResponse insertPackageRequestResponse = new PublishPackageRequestResponse { Source = "Source1", SourceRootName = @"Data\Test\", ChangePushItems = new List<ChangePushItem> { new ChangePushItem { AbsolutePath = @"Data\Test\F1\F12\F11.xml", OperationType = OperationType.Insert }, new ChangePushItem { AbsolutePath = @"Data\Test\F1\F13\F12.xml", OperationType = OperationType.Insert }, new ChangePushItem { AbsolutePath = @"Data\Test\F1\F13\F13.xml", OperationType = OperationType.Update } } }; changeApplyer.Initialize(@"Data\Output\Test\"); var mockCopyStrategy = MockCopyStrategy(); changeApplyer.CopyStrategy = mockCopyStrategy; foreach (var changePushItem in insertPackageRequestResponse.ChangePushItems) { var response = changeApplyer.TryApplyChange(new ApplyChangePushItemRequest { ChangePushItem = changePushItem, SourceRootName = insertPackageRequestResponse.SourceRootName }); if (response.ChangePushItem.AbsolutePath == @"Data\Output\Test\F1\F13\F12.xml") Assert.False(response.Success); else Assert.True(response.Success); Assert.AreNotEqual(changePushItem.AbsolutePath, response.ChangePushItem.AbsolutePath); } }
public void TestOnlyRemoteDataSource_Ok() { if (File.Exists(@"Data\Output\File1.xml")) File.Delete(@"Data\Output\File1.xml"); Subscriber subscriber = new Subscriber(); subscriber.Initialize(@"Data\Output"); PublishPackageRequestResponse publishedPackageRequestResponse = new PublishPackageRequestResponse { PackageId = Guid.NewGuid(), Source = "SCIENDO-LAPTOP", SourceRootName = @"C:\MySynch.Source.Test.Root\", ChangePushItems = new List<ChangePushItem> { new ChangePushItem { AbsolutePath = @"C:\MySynch.Source.Test.Root\File1.xml", OperationType = OperationType.Insert } } }; Assert.True(subscriber.TryOpenChannel(new TryOpenChannelRequest{SourceOfDataPort=8765}).Status); Assert.True(subscriber.ApplyChangePushItem(new ApplyChangePushItemRequest{ChangePushItem = publishedPackageRequestResponse.ChangePushItems[0],SourceRootName=publishedPackageRequestResponse.SourceRootName}).Success); Assert.True(File.Exists(@"Data\Output\File1.xml")); }