public async Task ClusterOneTimeSetUp()
        {
            // create remote client and cluster
            RcClient = await ConnectToRemoteControllerAsync().CfAwait();

            RcCluster = await RcClient.CreateClusterAsync(RcClusterConfiguration).CfAwait();
        }
        protected async ValueTask <IHazelcastClient> StartClientAsync(string serverXml, bool enableSsl, bool?validateCertificateChain,
                                                                      bool?validateCertificateName, bool?checkCertificateRevocation, string certSubjectName, byte[] clientCertificate,
                                                                      string certPassword, bool failFast = false)
        {
            RcCluster = await RcClient.CreateClusterAsync(serverXml);

            RcMember = await RcClient.StartMemberAsync(RcCluster);

            var options = HazelcastOptions.Build();

            options.Networking.Addresses.Clear();
            //options.Networking.Addresses.Add("localhost:5701");
            options.Networking.Addresses.Add("127.0.0.1:5701");
            ((IClusterOptions)options).ClusterName = RcCluster.Id;
            options.LoggerFactory.Creator          = () => LoggerFactory;

            var sslOptions = options.Networking.Ssl;

            sslOptions.Enabled = enableSsl;
            sslOptions.ValidateCertificateChain   = validateCertificateChain ?? sslOptions.ValidateCertificateChain;
            sslOptions.ValidateCertificateName    = validateCertificateName ?? sslOptions.ValidateCertificateName;
            sslOptions.CertificateName            = certSubjectName ?? sslOptions.CertificateName;
            sslOptions.CheckCertificateRevocation = checkCertificateRevocation ?? sslOptions.CheckCertificateRevocation;

            if (failFast)
            {
                // default value is 20s but if we know we are going to fail, no point trying again and again
                options.Networking.ConnectionRetry.ClusterConnectionTimeoutMilliseconds = 2_000;
            }

            if (enableSsl && clientCertificate != null)
            {
                var certFilePath = CreateTmpFile(clientCertificate);
                sslOptions.CertificatePath = certFilePath;
                if (certPassword != null)
                {
                    sslOptions.CertificatePassword = certPassword;
                }
            }

            return(await HazelcastClientFactory.StartNewClientAsync(options));
        }