示例#1
0
        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"));
        }
示例#2
0
 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();
 }
示例#3
0
 private void MockAllTheSubscribers(List<AvailableChannel> availableChannels, PublishPackageRequestResponse publishPackageRequestResponse)
 {
     foreach (var availableChannel in availableChannels)
     {
         MockTheSubscriber(availableChannel,publishPackageRequestResponse);
     }
 }
 public void RemovePackage(PublishPackageRequestResponse packageRequestResponsePublished)
 {
     throw new NotImplementedException();
 }
示例#5
0
 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);
     }
 }
示例#6
0
 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;
     }
 }
示例#7
0
 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));
     }
 }
示例#8
0
        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);
        }
示例#9
0
        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);
            }
        }
示例#10
0
 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"));
 }