Akka.Cluster.Tools.Tests.MultiNode.ClusterClient.ClusterClientSpec.ClusterClient_should_demonstrate_usage C# (CSharp) Method

ClusterClient_should_demonstrate_usage() public method

public ClusterClient_should_demonstrate_usage ( ) : void
return void
        public void ClusterClient_should_demonstrate_usage()
        {
            ClusterClient_should_communicate_to_any_node_in_cluster();

            Within(TimeSpan.FromSeconds(15), () =>
            {
                RunOn(() =>
                {
                    var serviceA = Sys.ActorOf(Props.Create<Service>(), "serviceA");
                    ClusterClientReceptionist.Get(Sys).RegisterService(serviceA);
                }, _first);

                RunOn(() =>
                {
                    var serviceB = Sys.ActorOf(Props.Create<Service>(), "serviceB");
                    ClusterClientReceptionist.Get(Sys).RegisterService(serviceB);
                }, _second, _third);

                RunOn(() =>
                {
                    AwaitCount(4);
                }, _first, _second, _third, _fourth);

                RunOn(() =>
                {
                    var c = Sys.ActorOf(Client.ClusterClient.Props(ClusterClientSettings.Create(Sys).WithInitialContacts(InitialContacts)), "client");
                    c.Tell(new Client.ClusterClient.Send("/user/serviceA", "hello", localAffinity: true));
                    c.Tell(new Client.ClusterClient.SendToAll("/user/serviceB", "hi"));
                }, _client);

                RunOn(() =>
                {
                    // note that "hi" was sent to 2 "serviceB"
                    var received = ReceiveN(3);
                    Assert.True(received.Contains("hello"));
                    Assert.True(received.Contains("hi"));
                }, _client);

                // strange, barriers fail without this sleep
                Thread.Sleep(1000);
                EnterBarrier("after-3");
            });
        }