private static bool IsReplicaSet(string uri)
        {
            var clusterBuilder = new ClusterBuilder();

            clusterBuilder.ConfigureWithConnectionString(uri);

            using (var cluster = clusterBuilder.BuildCluster())
            {
                cluster.Initialize();

                var serverSelector = new ReadPreferenceServerSelector(ReadPreference.PrimaryPreferred);
                var server         = cluster.SelectServer(serverSelector, CancellationToken.None);
                return(server.Description.Type.IsReplicaSetMember());
            }
        }
        public static ClusterBuilder ConfigureCluster(ClusterBuilder builder)
        {
            var serverSelectionTimeoutString = Environment.GetEnvironmentVariable("MONGO_SERVER_SELECTION_TIMEOUT_MS");

            if (serverSelectionTimeoutString == null)
            {
                serverSelectionTimeoutString = "10000";
            }

            builder = builder
                      .ConfigureWithConnectionString(__connectionString)
                      .ConfigureCluster(c => c.With(serverSelectionTimeout: TimeSpan.FromMilliseconds(int.Parse(serverSelectionTimeoutString))));

            if (__connectionString.Ssl.HasValue && __connectionString.Ssl.Value)
            {
                var certificateFilename = Environment.GetEnvironmentVariable("MONGO_SSL_CERT_FILE");
                if (certificateFilename != null)
                {
                    builder.ConfigureSsl(ssl =>
                    {
                        var password = Environment.GetEnvironmentVariable("MONGO_SSL_CERT_PASS");
                        X509Certificate cert;
                        if (password == null)
                        {
                            cert = new X509Certificate2(certificateFilename);
                        }
                        else
                        {
                            cert = new X509Certificate2(certificateFilename, password);
                        }
                        return(ssl.With(
                                   clientCertificates: new[] { cert }));
                    });
                }
            }

            var traceSource = new TraceSource("mongodb-tests", SourceLevels.Information);

            traceSource.Listeners.Clear(); // remove the default listener
            var listener = new ConsoleTraceListener();

            traceSource.Listeners.Add(listener);
            builder = builder.TraceWith(traceSource);

            return(builder);
        }
示例#3
0
        public static ClusterBuilder ConfigureCluster(ClusterBuilder builder)
        {
            var serverSelectionTimeoutString = Environment.GetEnvironmentVariable("MONGO_SERVER_SELECTION_TIMEOUT_MS");

            if (serverSelectionTimeoutString == null)
            {
                serverSelectionTimeoutString = "10000";
            }

            builder = builder
                      .ConfigureWithConnectionString(__connectionString)
                      .ConfigureCluster(c => c.With(serverSelectionTimeout: TimeSpan.FromMilliseconds(int.Parse(serverSelectionTimeoutString))));

            if (__connectionString.Ssl.HasValue && __connectionString.Ssl.Value)
            {
                var certificateFilename = Environment.GetEnvironmentVariable("MONGO_SSL_CERT_FILE");
                if (certificateFilename != null)
                {
                    builder.ConfigureSsl(ssl =>
                    {
                        var password = Environment.GetEnvironmentVariable("MONGO_SSL_CERT_PASS");
                        X509Certificate cert;
                        if (password == null)
                        {
                            cert = new X509Certificate2(certificateFilename);
                        }
                        else
                        {
                            cert = new X509Certificate2(certificateFilename, password);
                        }
                        return(ssl.With(
                                   clientCertificates: new[] { cert }));
                    });
                }
            }

            return(builder);
        }