private IHostConnectionPool CreatePool(IEndPointResolver res = null) { _host = new Host(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9042)); if (res == null) { _resolver = Mock.Of <IEndPointResolver>(); Mock.Get(_resolver).Setup(resolver => resolver.GetConnectionEndPointAsync(_host, It.IsAny <bool>())) .ReturnsAsync((Host h, bool b) => new ConnectionEndPoint(h.Address, null)); } else { _resolver = res; } var pool = new HostConnectionPool( _host, new TestConfigurationBuilder { EndPointResolver = _resolver, ConnectionFactory = new FakeConnectionFactory(), Policies = new Cassandra.Policies( new RoundRobinPolicy(), new ConstantReconnectionPolicy(1), new DefaultRetryPolicy(), NoSpeculativeExecutionPolicy.Instance, new AtomicMonotonicTimestampGenerator()), PoolingOptions = PoolingOptions.Create(ProtocolVersion.V4).SetCoreConnectionsPerHost(HostDistance.Local, 2) }.Build(), SerializerManager.Default.GetCurrentSerializer(), new MetricsObserverFactory(new MetricsManager(new NullDriverMetricsProvider(), new DriverMetricsOptions(), false, "s1")) ); pool.SetDistance(HostDistance.Local); // set expected connections length return(pool); }
private IControlConnection Create() { _connectionFactory = new FakeConnectionFactory(); _resolver = Mock.Of <IEndPointResolver>(); Mock.Get(_resolver).Setup(r => r.GetOrResolveContactPointAsync("127.0.0.1")).ReturnsAsync( new List <IConnectionEndPoint> { new ConnectionEndPoint(_endpoint1, null) }); Mock.Get(_resolver).Setup(r => r.GetOrResolveContactPointAsync("cp2")).ReturnsAsync( new List <IConnectionEndPoint> { new ConnectionEndPoint(_endpoint2, null) }); Mock.Get(_resolver).Setup(r => r.GetOrResolveContactPointAsync("cp1")).ReturnsAsync( new List <IConnectionEndPoint> { new ConnectionEndPoint(_endpoint1, null), new ConnectionEndPoint(_endpoint2, null) }); var config = new TestConfigurationBuilder { EndPointResolver = _resolver, ConnectionFactory = _connectionFactory }.Build(); return(new ControlConnection( new ProtocolEventDebouncer( new FakeTimerFactory(), TimeSpan.Zero, TimeSpan.Zero), ProtocolVersion.V3, config, new Metadata(config), new List <object> { "cp1", "cp2", "127.0.0.1" })); }
/// <summary> /// Creates a new instance. This class is also used to shareable a context across all instance that are created below one Cluster instance. /// One configuration instance per Cluster instance. /// </summary> internal Configuration(Policies policies, ProtocolOptions protocolOptions, PoolingOptions poolingOptions, SocketOptions socketOptions, ClientOptions clientOptions, IAuthProvider authProvider, IAuthInfoProvider authInfoProvider, QueryOptions queryOptions, IAddressTranslator addressTranslator, IStartupOptionsFactory startupOptionsFactory, ISessionFactoryBuilder <IInternalCluster, IInternalSession> sessionFactoryBuilder, IReadOnlyDictionary <string, IExecutionProfile> executionProfiles, IRequestOptionsMapper requestOptionsMapper, MetadataSyncOptions metadataSyncOptions, IEndPointResolver endPointResolver, IRequestHandlerFactory requestHandlerFactory = null, IHostConnectionPoolFactory hostConnectionPoolFactory = null, IRequestExecutionFactory requestExecutionFactory = null, IConnectionFactory connectionFactory = null, IControlConnectionFactory controlConnectionFactory = null, IPrepareHandlerFactory prepareHandlerFactory = null, ITimerFactory timerFactory = null) { AddressTranslator = addressTranslator ?? throw new ArgumentNullException(nameof(addressTranslator)); QueryOptions = queryOptions ?? throw new ArgumentNullException(nameof(queryOptions)); Policies = policies; ProtocolOptions = protocolOptions; PoolingOptions = poolingOptions; SocketOptions = socketOptions; ClientOptions = clientOptions; AuthProvider = authProvider; AuthInfoProvider = authInfoProvider; StartupOptionsFactory = startupOptionsFactory; SessionFactoryBuilder = sessionFactoryBuilder; RequestOptionsMapper = requestOptionsMapper; MetadataSyncOptions = metadataSyncOptions?.Clone() ?? new MetadataSyncOptions(); DnsResolver = new DnsResolver(); EndPointResolver = endPointResolver ?? new EndPointResolver(DnsResolver, protocolOptions); RequestHandlerFactory = requestHandlerFactory ?? new RequestHandlerFactory(); HostConnectionPoolFactory = hostConnectionPoolFactory ?? new HostConnectionPoolFactory(); RequestExecutionFactory = requestExecutionFactory ?? new RequestExecutionFactory(); ConnectionFactory = connectionFactory ?? new ConnectionFactory(); ControlConnectionFactory = controlConnectionFactory ?? new ControlConnectionFactory(); PrepareHandlerFactory = prepareHandlerFactory ?? new PrepareHandlerFactory(); TimerFactory = timerFactory ?? new TaskBasedTimerFactory(); RequestOptions = RequestOptionsMapper.BuildRequestOptionsDictionary(executionProfiles, policies, socketOptions, clientOptions, queryOptions); ExecutionProfiles = BuildExecutionProfilesDictionary(executionProfiles, RequestOptions); // Create the buffer pool with 16KB for small buffers and 256Kb for large buffers. // The pool does not eagerly reserve the buffers, so it doesn't take unnecessary memory // to create the instance. BufferPool = new RecyclableMemoryStreamManager(16 * 1024, 256 * 1024, ProtocolOptions.MaximumFrameLength); Timer = new HashedWheelTimer(); }
private static void SetInitialized() { lock (_lock) { if (_isInitialized) { return; } if (_backendConfigurator == null) { _backendConfigurator = new BackendConfigurator(); } if (_endPointResolver == null) { _endPointResolver = new RedirectableEndPointResolver(_backendConfigurator); } _isInitialized = true; } }
internal Builder WithEndPointResolver(IEndPointResolver endPointResolver) { _endPointResolver = endPointResolver ?? throw new ArgumentNullException(nameof(endPointResolver)); return(this); }
/// <summary> /// Creates a new instance. This class is also used to shareable a context across all instance that are created below one Cluster instance. /// One configuration instance per Cluster instance. /// </summary> internal Configuration(Policies policies, ProtocolOptions protocolOptions, PoolingOptions poolingOptions, SocketOptions socketOptions, ClientOptions clientOptions, IAuthProvider authProvider, IAuthInfoProvider authInfoProvider, QueryOptions queryOptions, IAddressTranslator addressTranslator, IReadOnlyDictionary <string, IExecutionProfile> executionProfiles, MetadataSyncOptions metadataSyncOptions, IEndPointResolver endPointResolver, IDriverMetricsProvider driverMetricsProvider, DriverMetricsOptions metricsOptions, string sessionName, GraphOptions graphOptions, Guid?clusterId, string appVersion, string appName, MonitorReportingOptions monitorReportingOptions, TypeSerializerDefinitions typeSerializerDefinitions, bool?keepContactPointsUnresolved, ISessionFactory sessionFactory = null, IRequestOptionsMapper requestOptionsMapper = null, IStartupOptionsFactory startupOptionsFactory = null, IInsightsSupportVerifier insightsSupportVerifier = null, IRequestHandlerFactory requestHandlerFactory = null, IHostConnectionPoolFactory hostConnectionPoolFactory = null, IRequestExecutionFactory requestExecutionFactory = null, IConnectionFactory connectionFactory = null, IControlConnectionFactory controlConnectionFactory = null, IPrepareHandlerFactory prepareHandlerFactory = null, ITimerFactory timerFactory = null, IObserverFactoryBuilder observerFactoryBuilder = null, IInsightsClientFactory insightsClientFactory = null, IContactPointParser contactPointParser = null, IServerNameResolver serverNameResolver = null, IDnsResolver dnsResolver = null) { AddressTranslator = addressTranslator ?? throw new ArgumentNullException(nameof(addressTranslator)); QueryOptions = queryOptions ?? throw new ArgumentNullException(nameof(queryOptions)); GraphOptions = graphOptions ?? new GraphOptions(); ClusterId = clusterId ?? Guid.NewGuid(); ApplicationVersion = appVersion ?? Configuration.DefaultApplicationVersion; ApplicationName = appName ?? Configuration.FallbackApplicationName; ApplicationNameWasGenerated = appName == null; Policies = policies; ProtocolOptions = protocolOptions; PoolingOptions = poolingOptions; SocketOptions = socketOptions; ClientOptions = clientOptions; AuthProvider = authProvider; AuthInfoProvider = authInfoProvider; StartupOptionsFactory = startupOptionsFactory ?? new StartupOptionsFactory(ClusterId, ApplicationVersion, ApplicationName); SessionFactory = sessionFactory ?? new SessionFactory(); RequestOptionsMapper = requestOptionsMapper ?? new RequestOptionsMapper(); MetadataSyncOptions = metadataSyncOptions?.Clone() ?? new MetadataSyncOptions(); DnsResolver = dnsResolver ?? new DnsResolver(); MetricsOptions = metricsOptions ?? new DriverMetricsOptions(); MetricsProvider = driverMetricsProvider ?? new NullDriverMetricsProvider(); SessionName = sessionName; MetricsEnabled = driverMetricsProvider != null; TypeSerializers = typeSerializerDefinitions?.Definitions; KeepContactPointsUnresolved = keepContactPointsUnresolved ?? false; ObserverFactoryBuilder = observerFactoryBuilder ?? (MetricsEnabled ? (IObserverFactoryBuilder) new MetricsObserverFactoryBuilder() : new NullObserverFactoryBuilder()); RequestHandlerFactory = requestHandlerFactory ?? new RequestHandlerFactory(); HostConnectionPoolFactory = hostConnectionPoolFactory ?? new HostConnectionPoolFactory(); RequestExecutionFactory = requestExecutionFactory ?? new RequestExecutionFactory(); ConnectionFactory = connectionFactory ?? new ConnectionFactory(); ControlConnectionFactory = controlConnectionFactory ?? new ControlConnectionFactory(); PrepareHandlerFactory = prepareHandlerFactory ?? new PrepareHandlerFactory(); TimerFactory = timerFactory ?? new TaskBasedTimerFactory(); RequestOptions = RequestOptionsMapper.BuildRequestOptionsDictionary(executionProfiles, policies, socketOptions, clientOptions, queryOptions, GraphOptions); ExecutionProfiles = BuildExecutionProfilesDictionary(executionProfiles, RequestOptions); MonitorReportingOptions = monitorReportingOptions ?? new MonitorReportingOptions(); InsightsSupportVerifier = insightsSupportVerifier ?? Configuration.DefaultInsightsSupportVerifier; InsightsClientFactory = insightsClientFactory ?? Configuration.DefaultInsightsClientFactory; ServerNameResolver = serverNameResolver ?? new ServerNameResolver(ProtocolOptions); EndPointResolver = endPointResolver ?? new EndPointResolver(ServerNameResolver); ContactPointParser = contactPointParser ?? new ContactPointParser(DnsResolver, ProtocolOptions, ServerNameResolver, KeepContactPointsUnresolved); // Create the buffer pool with 16KB for small buffers and 256Kb for large buffers. // The pool does not eagerly reserve the buffers, so it doesn't take unnecessary memory // to create the instance. BufferPool = new RecyclableMemoryStreamManager(16 * 1024, 256 * 1024, ProtocolOptions.MaximumFrameLength); Timer = new HashedWheelTimer(); }