//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldCatchupThroughHierarchy() throws Throwable //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldCatchupThroughHierarchy() { ClusterRule = ClusterRule.withInstanceReadReplicaParam(CausalClusteringSettings.server_groups, id => _serverGroups[id]).withInstanceCoreParam(CausalClusteringSettings.server_groups, id => _serverGroups[id]); // given //JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET: //ORIGINAL LINE: org.neo4j.causalclustering.discovery.Cluster<?> cluster = clusterRule.startCluster(); Cluster <object> cluster = ClusterRule.startCluster(); int numberOfNodesToCreate = 100; cluster.CoreTx((db, tx) => { Db.schema().constraintFor(label("Foo")).assertPropertyIsUnique("foobar").create(); tx.success(); }); // 0, 1, 2 are core instances createLabelledNodesWithProperty(cluster, numberOfNodesToCreate, label("Foo"), () => Pair.of("foobar", string.Format("baz_bat{0}", System.Guid.randomUUID()))); // 3, 4 are other DCs ReadReplica east3 = cluster.AddReadReplicaWithId(3); east3.Start(); ReadReplica west4 = cluster.AddReadReplicaWithId(4); west4.Start(); checkDataHasReplicatedToReadReplicas(cluster, numberOfNodesToCreate); foreach (CoreClusterMember coreClusterMember in cluster.CoreMembers()) { coreClusterMember.DisableCatchupServer(); } // 5, 6 are other DCs ReadReplica east5 = cluster.AddReadReplicaWithId(5); east5.UpstreamDatabaseSelectionStrategy = "connect-randomly-within-server-group"; east5.Start(); ReadReplica west6 = cluster.AddReadReplicaWithId(6); west6.UpstreamDatabaseSelectionStrategy = "connect-randomly-within-server-group"; west6.Start(); checkDataHasReplicatedToReadReplicas(cluster, numberOfNodesToCreate); }