예제 #1
0
        public void Should_replicate_transformers_by_default()
        {
            using (var sourceServer = GetNewServer(8077))
                using (var source = NewRemoteDocumentStore(ravenDbServer: sourceServer))
                    using (var destinationServer1 = GetNewServer(8078))
                        using (var destination1 = NewRemoteDocumentStore(ravenDbServer: destinationServer1))
                            using (var destinationServer2 = GetNewServer())
                                using (var destination2 = NewRemoteDocumentStore(ravenDbServer: destinationServer2))
                                    using (var destinationServer3 = GetNewServer(8081))
                                        using (var destination3 = NewRemoteDocumentStore(ravenDbServer: destinationServer3))
                                        {
                                            CreateDatabaseWithReplication(source, "testDB");
                                            CreateDatabaseWithReplication(destination1, "testDB");
                                            CreateDatabaseWithReplication(destination2, "testDB");
                                            CreateDatabaseWithReplication(destination3, "testDB");

                                            // ReSharper disable once AccessToDisposedClosure
                                            SetupReplication(source, "testDB", store => false, destination1, destination2, destination3);

                                            var transformer = new UserWithoutExtraInfoTransformer();
                                            transformer.Execute(source.DatabaseCommands.ForDatabase("testDB"), source.Conventions);

                                            var transformersOnDestination1 = destination1.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(1, transformersOnDestination1.Count(x => x.Name == transformer.TransformerName));

                                            var transformersOnDestination2 = destination2.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(1, transformersOnDestination2.Count(x => x.Name == transformer.TransformerName));

                                            var transformersOnDestination3 = destination3.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(1, transformersOnDestination3.Count(x => x.Name == transformer.TransformerName));
                                        }
        }
예제 #2
0
        public async Task Should_replicate_all_transformers_periodically()
        {
            using (var sourceServer = GetNewServer(8077))
                using (var source = NewRemoteDocumentStore(ravenDbServer: sourceServer))
                    using (var destinationServer1 = GetNewServer(8078))
                        using (var destination1 = NewRemoteDocumentStore(ravenDbServer: destinationServer1))
                            using (var destinationServer2 = GetNewServer())
                                using (var destination2 = NewRemoteDocumentStore(ravenDbServer: destinationServer2))
                                    using (var destinationServer3 = GetNewServer(8081))
                                        using (var destination3 = NewRemoteDocumentStore(ravenDbServer: destinationServer3))
                                        {
                                            CreateDatabaseWithReplication(source, "testDB");
                                            CreateDatabaseWithReplication(destination1, "testDB");
                                            CreateDatabaseWithReplication(destination2, "testDB");
                                            CreateDatabaseWithReplication(destination3, "testDB");

                                            //turn-off automatic index replication - precaution
                                            source.Conventions.IndexAndTransformerReplicationMode = IndexAndTransformerReplicationMode.None;
                                            // ReSharper disable once AccessToDisposedClosure
                                            SetupReplication(source, "testDB", store => false, destination1, destination2, destination3);

                                            var userTransformer              = new UserWithoutExtraInfoTransformer();
                                            var anotherTransformer           = new AnotherTransformer();
                                            var yetAnotherTransformer        = new YetAnotherTransformer();
                                            var conflictDocumentsTransformer = new RavenConflictDocumentsTransformer(); // #RavenDB-3981

                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(userTransformer.TransformerName, userTransformer.CreateTransformerDefinition());
                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(anotherTransformer.TransformerName, anotherTransformer.CreateTransformerDefinition());
                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(yetAnotherTransformer.TransformerName, yetAnotherTransformer.CreateTransformerDefinition());

                                            var sourceDB = await sourceServer.Server.GetDatabaseInternal("testDB");

                                            var replicationTask = sourceDB.StartupTasks.OfType <ReplicationTask>().First();
                                            SpinWait.SpinUntil(() => replicationTask.TransformerReplication.Execute());

                                            var expectedTransformerNames = new HashSet <string>
                                            {
                                                userTransformer.TransformerName,
                                                anotherTransformer.TransformerName,
                                                yetAnotherTransformer.TransformerName
                                            };

                                            var transformerNamesAtDestination1 = destination1.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024)
                                                                                 .Where(x => x.Name != conflictDocumentsTransformer.TransformerName)
                                                                                 .Select(x => x.Name)
                                                                                 .ToList();
                                            var transformerNamesAtDestination2 = destination2.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024)
                                                                                 .Where(x => x.Name != conflictDocumentsTransformer.TransformerName)
                                                                                 .Select(x => x.Name)
                                                                                 .ToList();
                                            var transformerNamesAtDestination3 = destination3.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024)
                                                                                 .Where(x => x.Name != conflictDocumentsTransformer.TransformerName)
                                                                                 .Select(x => x.Name)
                                                                                 .ToList();

                                            Assert.True(expectedTransformerNames.SetEquals(transformerNamesAtDestination1));
                                            Assert.True(expectedTransformerNames.SetEquals(transformerNamesAtDestination2));
                                            Assert.True(expectedTransformerNames.SetEquals(transformerNamesAtDestination3));
                                        }
        }
예제 #3
0
        public void should_replicate_only_updated_transformer()
        {
            var requestFactory = new HttpRavenRequestFactory();

            using (var sourceServer = GetNewServer(8077))
                using (var source = NewRemoteDocumentStore(ravenDbServer: sourceServer, fiddler: true))
                    using (var destinationServer = GetNewServer(8078))
                        using (var destination = NewRemoteDocumentStore(ravenDbServer: destinationServer, fiddler: true))
                        {
                            CreateDatabaseWithReplication(source, "testDB");
                            CreateDatabaseWithReplication(destination, "testDB");

                            source.Conventions.IndexAndTransformerReplicationMode      = IndexAndTransformerReplicationMode.None;
                            destination.Conventions.IndexAndTransformerReplicationMode = IndexAndTransformerReplicationMode.None;

                            SetupReplication(source, "testDB", store => false, destination);
                            SetupReplication(destination, "testDB", store => false, source);

                            for (var i = 0; i < 30; i++)
                            {
                                //just for starting the initial index and transformer replication
                                source.DatabaseCommands.ForDatabase("testDB").Put("test" + i, Etag.Empty, new RavenJObject(), new RavenJObject());
                                destination.DatabaseCommands.ForDatabase("testDB").Put("test" + (i + 50), Etag.Empty, new RavenJObject(), new RavenJObject());
                            }

                            WaitForDocument(destination.DatabaseCommands.ForDatabase("testDB"), "test29");
                            WaitForDocument(source.DatabaseCommands.ForDatabase("testDB"), "test79");

                            var userTransformer = new UserWithoutExtraInfoTransformer();
                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(userTransformer.TransformerName, userTransformer.CreateTransformerDefinition());

                            //replicating transformer from the source
                            var replicationRequestUrl = string.Format("{0}/databases/testDB/replication/replicate-transformers?op=replicate-all", source.Url);
                            var replicationRequest    = requestFactory.Create(replicationRequestUrl, HttpMethods.Post, new RavenConnectionStringOptions
                            {
                                Url = source.Url
                            });
                            replicationRequest.ExecuteRequest();

                            var updatedUserTransformer = new UserWithoutExtraInfoTransformer_Extended();
                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(userTransformer.TransformerName, updatedUserTransformer.CreateTransformerDefinition());

                            var transformer = source.DatabaseCommands.ForDatabase("testDB").GetTransformer(userTransformer.TransformerName);
                            Assert.True(updatedUserTransformer.CreateTransformerDefinition().TransformResults.Equals(transformer.TransformResults));

                            //replicating transformer from the destination
                            replicationRequestUrl = string.Format("{0}/databases/testDB/replication/replicate-transformers?op=replicate-all", destination.Url);
                            replicationRequest    = requestFactory.Create(replicationRequestUrl, HttpMethods.Post, new RavenConnectionStringOptions
                            {
                                Url = destination.Url
                            });
                            replicationRequest.ExecuteRequest();

                            //the new transformer shouldn't be overwritten
                            transformer = source.DatabaseCommands.ForDatabase("testDB").GetTransformer(userTransformer.TransformerName);
                            Assert.True(updatedUserTransformer.CreateTransformerDefinition().TransformResults.Equals(transformer.TransformResults));
                        }
        }
예제 #4
0
        public void Should_replicate_all_transformers_only_to_specific_destination_if_relevant_endpoint_is_hit()
        {
            var requestFactory = new HttpRavenRequestFactory();

            using (var sourceServer = GetNewServer(8077))
                using (var source = NewRemoteDocumentStore(ravenDbServer: sourceServer, fiddler: true))
                    using (var destinationServer1 = GetNewServer(8078))
                        using (var destination1 = NewRemoteDocumentStore(ravenDbServer: destinationServer1, fiddler: true))
                            using (var destinationServer2 = GetNewServer())
                                using (var destination2 = NewRemoteDocumentStore(ravenDbServer: destinationServer2, fiddler: true))
                                    using (var destinationServer3 = GetNewServer(8081))
                                        using (var destination3 = NewRemoteDocumentStore(ravenDbServer: destinationServer3, fiddler: true))
                                        {
                                            CreateDatabaseWithReplication(source, "testDB");
                                            CreateDatabaseWithReplication(destination1, "testDB");
                                            CreateDatabaseWithReplication(destination2, "testDB");
                                            CreateDatabaseWithReplication(destination3, "testDB");

                                            //make sure replication is off for indexes/transformers
                                            source.Conventions.IndexAndTransformerReplicationMode = IndexAndTransformerReplicationMode.None;

                                            var userTransformer       = new UserWithoutExtraInfoTransformer();
                                            var anotherTransformer    = new AnotherTransformer();
                                            var yetAnotherTransformer = new YetAnotherTransformer();

                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(userTransformer.TransformerName, userTransformer.CreateTransformerDefinition());
                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(anotherTransformer.TransformerName, anotherTransformer.CreateTransformerDefinition());
                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(yetAnotherTransformer.TransformerName, yetAnotherTransformer.CreateTransformerDefinition());

                                            var expectedTransformerNames = new HashSet <string>(StringComparer.InvariantCultureIgnoreCase)
                                            {
                                                userTransformer.TransformerName,
                                                anotherTransformer.TransformerName,
                                                yetAnotherTransformer.TransformerName
                                            };

                                            // ReSharper disable once AccessToDisposedClosure
                                            var destinations = SetupReplication(source, "testDB", store => false, destination1, destination2, destination3);

                                            var replicationRequestUrl = string.Format("{0}/databases/testDB/replication/replicate-transformers?op=replicate-all-to-destination", source.Url);
                                            var replicationRequest    = requestFactory.Create(replicationRequestUrl, "POST", new RavenConnectionStringOptions
                                            {
                                                Url = source.Url
                                            });
                                            replicationRequest.Write(RavenJObject.FromObject(destinations[1]));
                                            replicationRequest.ExecuteRequest();

                                            var transformerNamesAtDestination1 = destination1.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            var transformerNamesAtDestination2 = destination2.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            var transformerNamesAtDestination3 = destination3.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);

                                            Assert.Equal(0, transformerNamesAtDestination1.Length);
                                            Assert.True(expectedTransformerNames.SetEquals(transformerNamesAtDestination2.Select(x => x.Name).ToArray()));
                                            Assert.Equal(0, transformerNamesAtDestination3.Length);
                                        }
        }
예제 #5
0
        public void Replicate_all_transformers_should_respect_disable_replication_flag()
        {
            var requestFactory = new HttpRavenRequestFactory();

            using (var sourceServer = GetNewServer(8077))
                using (var source = NewRemoteDocumentStore(ravenDbServer: sourceServer, fiddler: true))
                    using (var destinationServer1 = GetNewServer(8078))
                        using (var destination1 = NewRemoteDocumentStore(ravenDbServer: destinationServer1, fiddler: true))
                            using (var destinationServer2 = GetNewServer())
                                using (var destination2 = NewRemoteDocumentStore(ravenDbServer: destinationServer2, fiddler: true))
                                    using (var destinationServer3 = GetNewServer(8081))
                                        using (var destination3 = NewRemoteDocumentStore(ravenDbServer: destinationServer3, fiddler: true))
                                        {
                                            CreateDatabaseWithReplication(source, "testDB");
                                            CreateDatabaseWithReplication(destination1, "testDB");
                                            CreateDatabaseWithReplication(destination2, "testDB");
                                            CreateDatabaseWithReplication(destination3, "testDB");

                                            //make sure replication is off for indexes/transformers
                                            source.Conventions.IndexAndTransformerReplicationMode = IndexAndTransformerReplicationMode.None;

                                            var userTransformer              = new UserWithoutExtraInfoTransformer();
                                            var anotherTransformer           = new AnotherTransformer();
                                            var yetAnotherTransformer        = new YetAnotherTransformer();
                                            var conflictDocumentsTransformer = new RavenConflictDocumentsTransformer(); // #RavenDB-3981

                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(userTransformer.TransformerName, userTransformer.CreateTransformerDefinition());
                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(anotherTransformer.TransformerName, anotherTransformer.CreateTransformerDefinition());
                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(yetAnotherTransformer.TransformerName, yetAnotherTransformer.CreateTransformerDefinition());

                                            var expectedTransformerNames = new HashSet <string>(StringComparer.InvariantCultureIgnoreCase)
                                            {
                                                userTransformer.TransformerName,
                                                anotherTransformer.TransformerName,
                                                yetAnotherTransformer.TransformerName,
                                            };

                                            // ReSharper disable once AccessToDisposedClosure
                                            SetupReplication(source, "testDB", store => store == destination2, destination1, destination2, destination3);

                                            var replicationRequestUrl = string.Format("{0}/databases/testDB/replication/replicate-transformers?op=replicate-all", source.Url);
                                            var replicationRequest    = requestFactory.Create(replicationRequestUrl, HttpMethods.Post, new RavenConnectionStringOptions
                                            {
                                                Url = source.Url
                                            });
                                            replicationRequest.ExecuteRequest();

                                            var transformerNamesAtDestination1 = destination1.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024).Where(x => x.Name != conflictDocumentsTransformer.TransformerName);
                                            var transformerNamesAtDestination2 = destination2.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024).Where(x => x.Name != conflictDocumentsTransformer.TransformerName);
                                            var transformerNamesAtDestination3 = destination3.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024).Where(x => x.Name != conflictDocumentsTransformer.TransformerName);

                                            Assert.True(expectedTransformerNames.SetEquals(transformerNamesAtDestination1.Select(x => x.Name).ToArray()));
                                            Assert.Equal(0, transformerNamesAtDestination2.Count());
                                            Assert.True(expectedTransformerNames.SetEquals(transformerNamesAtDestination3.Select(x => x.Name).ToArray()));
                                        }
        }
예제 #6
0
        public async Task Should_replicate_transformer_deletion()
        {
            using (var sourceServer = GetNewServer(8077))
                using (var source = NewRemoteDocumentStore(ravenDbServer: sourceServer))
                    using (var destinationServer1 = GetNewServer(8078))
                        using (var destination1 = NewRemoteDocumentStore(ravenDbServer: destinationServer1))
                            using (var destinationServer2 = GetNewServer())
                                using (var destination2 = NewRemoteDocumentStore(ravenDbServer: destinationServer2))
                                    using (var destinationServer3 = GetNewServer(8081))
                                        using (var destination3 = NewRemoteDocumentStore(ravenDbServer: destinationServer3))
                                        {
                                            source.Conventions.IndexAndTransformerReplicationMode = IndexAndTransformerReplicationMode.None;

                                            CreateDatabaseWithReplication(source, "testDB");
                                            CreateDatabaseWithReplication(destination1, "testDB");
                                            CreateDatabaseWithReplication(destination2, "testDB");
                                            CreateDatabaseWithReplication(destination3, "testDB");

                                            // ReSharper disable once AccessToDisposedClosure
                                            SetupReplication(source, "testDB", store => false, destination1, destination2, destination3);

                                            var transformer = new UserWithoutExtraInfoTransformer();
                                            transformer.Execute(source.DatabaseCommands.ForDatabase("testDB"), source.Conventions);

                                            var sourceDB = await sourceServer.Server.GetDatabaseInternal("testDB");

                                            var replicationTask = sourceDB.StartupTasks.OfType <ReplicationTask>().First();
                                            replicationTask.TimeToWaitBeforeSendingDeletesOfIndexesToSiblings = TimeSpan.Zero;
                                            SpinWait.SpinUntil(() => replicationTask.ReplicateIndexesAndTransformersTask(null));

                                            var transformersOnDestination1 = destination1.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(1, transformersOnDestination1.Count(x => x.Name == transformer.TransformerName));

                                            var transformersOnDestination2 = destination2.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(1, transformersOnDestination2.Count(x => x.Name == transformer.TransformerName));

                                            var transformersOnDestination3 = destination3.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(1, transformersOnDestination3.Count(x => x.Name == transformer.TransformerName));

                                            //now delete the transformer at the source and verify that the deletion is replicated
                                            source.DatabaseCommands.ForDatabase("testDB").DeleteTransformer(transformer.TransformerName);
                                            SpinWait.SpinUntil(() => replicationTask.ReplicateIndexesAndTransformersTask(null));

                                            transformersOnDestination1 = destination1.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(0, transformersOnDestination1.Count(x => x.Name == transformer.TransformerName));

                                            transformersOnDestination2 = destination2.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(0, transformersOnDestination2.Count(x => x.Name == transformer.TransformerName));

                                            transformersOnDestination3 = destination3.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(0, transformersOnDestination3.Count(x => x.Name == transformer.TransformerName));
                                        }
        }
예제 #7
0
        public void Transformer_replication_should_respect_skip_replication_flag()
        {
            using (var sourceServer = GetNewServer(8077))
                using (var source = NewRemoteDocumentStore(ravenDbServer: sourceServer))
                    using (var destinationServer1 = GetNewServer(8078))
                        using (var destination1 = NewRemoteDocumentStore(ravenDbServer: destinationServer1))
                            using (var destinationServer2 = GetNewServer())
                                using (var destination2 = NewRemoteDocumentStore(ravenDbServer: destinationServer2))
                                    using (var destinationServer3 = GetNewServer(8081))
                                        using (var destination3 = NewRemoteDocumentStore(ravenDbServer: destinationServer3))
                                        {
                                            CreateDatabaseWithReplication(source, "testDB");
                                            CreateDatabaseWithReplication(destination1, "testDB");
                                            CreateDatabaseWithReplication(destination2, "testDB");
                                            CreateDatabaseWithReplication(destination3, "testDB");

                                            // ReSharper disable once AccessToDisposedClosure
                                            SetupReplication(source, "testDB", store => store == destination2, destination1, destination2, destination3);

                                            var conflictDocumentsTransformer = new RavenConflictDocumentsTransformer(); // #RavenDB-3981
                                            var transformer = new UserWithoutExtraInfoTransformer();
                                            transformer.Execute(source.DatabaseCommands.ForDatabase("testDB"), source.Conventions);

                                            var transformersOnDestination1 = destination1.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(1, transformersOnDestination1.Count(x => x.Name == transformer.TransformerName));

                                            var transformersOnDestination2 = destination2.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024)
                                                                             .Where(x => x.Name != conflictDocumentsTransformer
                                                                                    .TransformerName)
                                                                             .ToList();
                                            Assert.Equal(0, transformersOnDestination2.Count);

                                            var transformersOnDestination3 = destination3.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024);
                                            Assert.Equal(1, transformersOnDestination3.Count(x => x.Name == transformer.TransformerName));
                                        }
        }
예제 #8
0
        public void Should_replicate_all_transformers_only_to_specific_destination_if_relevant_endpoint_is_hit()
        {
            var requestFactory = new HttpRavenRequestFactory();

            using (var sourceServer = GetNewServer(8077))
                using (var source = NewRemoteDocumentStore(ravenDbServer: sourceServer, fiddler: true))
                    using (var destinationServer1 = GetNewServer(8078))
                        using (var destination1 = NewRemoteDocumentStore(ravenDbServer: destinationServer1, fiddler: true))
                            using (var destinationServer2 = GetNewServer())
                                using (var destination2 = NewRemoteDocumentStore(ravenDbServer: destinationServer2, fiddler: true))
                                    using (var destinationServer3 = GetNewServer(8081))
                                        using (var destination3 = NewRemoteDocumentStore(ravenDbServer: destinationServer3, fiddler: true))
                                        {
                                            CreateDatabaseWithReplication(source, "testDB");
                                            CreateDatabaseWithReplication(destination1, "testDB");
                                            CreateDatabaseWithReplication(destination2, "testDB");
                                            CreateDatabaseWithReplication(destination3, "testDB");

                                            //make sure replication is off for indexes/transformers
                                            source.Conventions.IndexAndTransformerReplicationMode = IndexAndTransformerReplicationMode.None;

                                            // ReSharper disable once AccessToDisposedClosure
                                            var destinationDocuments = SetupReplication(source, "testDB", store => false, destination1, destination2, destination3);

                                            // index and transformer replication is forced if we are replicating for the first time, so replicating one document to bypass this
                                            ReplicateOneDummyDocument(source, destination1, destination2, destination3);

                                            var userTransformer              = new UserWithoutExtraInfoTransformer();
                                            var anotherTransformer           = new AnotherTransformer();
                                            var yetAnotherTransformer        = new YetAnotherTransformer();
                                            var conflictDocumentsTransformer = new RavenConflictDocumentsTransformer(); // #RavenDB-3981

                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(userTransformer.TransformerName, userTransformer.CreateTransformerDefinition());
                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(anotherTransformer.TransformerName, anotherTransformer.CreateTransformerDefinition());
                                            source.DatabaseCommands.ForDatabase("testDB").PutTransformer(yetAnotherTransformer.TransformerName, yetAnotherTransformer.CreateTransformerDefinition());

                                            var expectedTransformerNames = new HashSet <string>
                                            {
                                                userTransformer.TransformerName,
                                                anotherTransformer.TransformerName,
                                                yetAnotherTransformer.TransformerName
                                            };

                                            var replicationRequestUrl = string.Format("{0}/databases/testDB/replication/replicate-transformers?op=replicate-all-to-destination", source.Url);
                                            var replicationRequest    = requestFactory.Create(replicationRequestUrl, HttpMethods.Post, new RavenConnectionStringOptions
                                            {
                                                Url = source.Url
                                            });
                                            replicationRequest.Write(RavenJObject.FromObject(destinationDocuments[1]));
                                            replicationRequest.ExecuteRequest();

                                            var transformerNamesAtDestination1 = destination1.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024)
                                                                                 .Where(x => x.Name != conflictDocumentsTransformer.TransformerName)
                                                                                 .Select(x => x.Name)
                                                                                 .ToList();
                                            var transformerNamesAtDestination2 = destination2.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024)
                                                                                 .Where(x => x.Name != conflictDocumentsTransformer.TransformerName)
                                                                                 .Select(x => x.Name)
                                                                                 .ToList();
                                            var transformerNamesAtDestination3 = destination3.DatabaseCommands.ForDatabase("testDB").GetTransformers(0, 1024)
                                                                                 .Where(x => x.Name != conflictDocumentsTransformer.TransformerName)
                                                                                 .Select(x => x.Name)
                                                                                 .ToList();

                                            Assert.Equal(0, transformerNamesAtDestination1.Count);
                                            Assert.True(expectedTransformerNames.SetEquals(transformerNamesAtDestination2));
                                            Assert.Equal(0, transformerNamesAtDestination3.Count);
                                        }
        }