public DefaultClientBuilder_tests()
        {
            this.builder = new DefaultClientBuilder(new FakeUserAgentBuilder());

            // Providing these means the tests won't try to do a dynamic assembly lookup
            // which tends to screw up parallel-running tests
            this.builder
                .SetHttpClient(HttpClients.Create().RestSharpClient())
                .SetSerializer(Serializers.Create().JsonNetSerializer());
        }
 public static IClientBuilder AddStreamFilter <T>(this IClientBuilder builder, string name) where T : class, IStreamFilter
 {
     return(builder.ConfigureServices(svc => svc.AddStreamFilter <T>(name)));
 }
Ejemplo n.º 3
0
        public static void AddDefaultServices(IClientBuilder builder, IServiceCollection services)
        {
            // Options logging
            services.TryAddSingleton(typeof(IOptionFormatter <>), typeof(DefaultOptionsFormatter <>));
            services.TryAddSingleton(typeof(IOptionFormatterResolver <>), typeof(DefaultOptionsFormatterResolver <>));

            services.TryAddSingleton <ILifecycleParticipant <IClusterClientLifecycle>, ClientOptionsLogger>();
            services.TryAddSingleton <TelemetryManager>();
            services.TryAddFromExisting <ITelemetryProducer, TelemetryManager>();
            services.TryAddSingleton <IHostEnvironmentStatistics, NoOpHostEnvironmentStatistics>();
            services.TryAddSingleton <IAppEnvironmentStatistics, AppEnvironmentStatistics>();
            services.AddLogging();
            services.TryAddSingleton <ExecutorService>();
            services.TryAddSingleton <TypeMetadataCache>();
            services.TryAddSingleton <OutsideRuntimeClient>();
            services.TryAddFromExisting <IRuntimeClient, OutsideRuntimeClient>();
            services.TryAddFromExisting <IClusterConnectionStatusListener, OutsideRuntimeClient>();
            services.TryAddSingleton <GrainFactory>();
            services.TryAddSingleton <IGrainReferenceRuntime, GrainReferenceRuntime>();
            services.TryAddSingleton <IGrainCancellationTokenRuntime, GrainCancellationTokenRuntime>();
            services.TryAddFromExisting <IGrainFactory, GrainFactory>();
            services.TryAddFromExisting <IInternalGrainFactory, GrainFactory>();
            services.TryAddFromExisting <IGrainReferenceConverter, GrainFactory>();
            services.TryAddSingleton <ClientProviderRuntime>();
            services.TryAddSingleton <MessageFactory>();
            services.TryAddSingleton <ClientStatisticsManager>();
            services.TryAddFromExisting <IStreamProviderRuntime, ClientProviderRuntime>();
            services.TryAddFromExisting <IProviderRuntime, ClientProviderRuntime>();
            services.TryAddSingleton <IStreamSubscriptionManagerAdmin, StreamSubscriptionManagerAdmin>();
            services.TryAddSingleton <IInternalClusterClient, ClusterClient>();
            services.TryAddFromExisting <IClusterClient, IInternalClusterClient>();

            // Serialization
            services.TryAddSingleton <SerializationManager>();
            services.TryAddSingleton <ITypeResolver, CachedTypeResolver>();
            services.TryAddSingleton <IFieldUtils, FieldUtils>();
            services.AddSingleton <BinaryFormatterSerializer>();
            services.AddSingleton <BinaryFormatterISerializableSerializer>();
            services.AddFromExisting <IKeyedSerializer, BinaryFormatterISerializableSerializer>();
            services.TryAddSingleton <ILBasedSerializer>();
            services.AddFromExisting <IKeyedSerializer, ILBasedSerializer>();

            // Application parts
            var parts = builder.GetApplicationPartManager();

            services.TryAddSingleton <IApplicationPartManager>(parts);
            parts.AddApplicationPart(new AssemblyPart(typeof(RuntimeVersion).Assembly)
            {
                IsFrameworkAssembly = true
            });
            parts.AddFeatureProvider(new BuiltInTypesSerializationFeaturePopulator());
            parts.AddFeatureProvider(new AssemblyAttributeFeatureProvider <GrainInterfaceFeature>());
            parts.AddFeatureProvider(new AssemblyAttributeFeatureProvider <SerializerFeature>());
            services.AddTransient <IConfigurationValidator, ApplicationPartValidator>();

            services.TryAddSingleton(typeof(IKeyedServiceCollection <,>), typeof(KeyedServiceCollection <,>));

            // Add default option formatter if none is configured, for options which are requied to be configured
            services.ConfigureFormatter <ClusterOptions>();
            services.ConfigureFormatter <ClientMessagingOptions>();
            services.ConfigureFormatter <NetworkingOptions>();
            services.ConfigureFormatter <ClientStatisticsOptions>();

            services.AddTransient <IConfigurationValidator, ClusterOptionsValidator>();
            services.AddTransient <IConfigurationValidator, ClientClusteringValidator>();
        }
Ejemplo n.º 4
0
        private static IClientBuilder UpdateRetryInfo(this IClientBuilder clientBuilder)
        {
            clientBuilder.Register(c => c.Use <RetryStagedMiddleware>());

            return(clientBuilder);
        }
Ejemplo n.º 5
0
 public BuildRepository(IClientBuilder clientBuilder)
 {
     this.client = clientBuilder.GetClient();
 }
Ejemplo n.º 6
0
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
 {
     clientBuilder.UseAzureStorageClustering(gatewayOptions => { gatewayOptions.ConnectionString = TestDefaultConfiguration.DataConnectionString; });
 }
Ejemplo n.º 7
0
        private static IClientBuilder ProcessUniqueMessages(this IClientBuilder clientBuilder)
        {
            clientBuilder.Register(c => c.Use <ProcessUniqueMessagesMiddleware>());

            return(clientBuilder);
        }
Ejemplo n.º 8
0
 public static IClientBuilder UseJaeger(this IClientBuilder builder, ITracer tracer)
 {
     builder.Register(pipe => pipe
                      .Use <JaegerStagedMiddleware>(tracer));
     return(builder);
 }
Ejemplo n.º 9
0
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
 {
     clientBuilder
     .AddSimpleMessageStreamProvider(StreamTestsConstants.SMS_STREAM_PROVIDER_NAME)
     .AddStreamFilter <CustomStreamFilter>(StreamTestsConstants.SMS_STREAM_PROVIDER_NAME);
 }
Ejemplo n.º 10
0
            public void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
            {
                var clusterOptions = configuration.GetTestClusterOptions();

                clientBuilder.UseStaticClustering(new IPEndPoint(IPAddress.Loopback, clusterOptions.BaseGatewayPort));
            }
 public virtual void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
 => clientBuilder
 .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(ITestGrain).Assembly).WithReferences())
 .AddSimpleMessageStreamProvider("TestStream")
 ;
 /// <summary>
 /// Adds a metrics telemetric consumer provider of type <see cref="ElasticsearchTelemetryConsumer"/>.
 /// </summary>
 /// <param name="clientBuilder"></param>
 /// <param name="instrumentationKey">The Application Insights instrumentation key.</param>
 public static IClientBuilder AddElasticsearchTelemetryConsumer(this IClientBuilder clientBuilder, Uri elasticSearchUri, string indexPrefix = "orleans-telemetry", string dateFormatter = "yyyy-MM-dd-HH", int bufferWaitSeconds = 1, int bufferSize = 50)
 {
     return(clientBuilder.ConfigureServices((context, services) => ConfigureServices(context, services, elasticSearchUri, indexPrefix, dateFormatter, bufferWaitSeconds, bufferSize)));
 }
Ejemplo n.º 13
0
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
 {
     clientBuilder.Configure <SiloMessagingOptions>(options => options.PropagateActivityId = true);
 }
Ejemplo n.º 14
0
        public static void AddDefaultServices(IClientBuilder builder, IServiceCollection services)
        {
            // Options logging
            services.TryAddSingleton(typeof(IOptionFormatter<>), typeof(DefaultOptionsFormatter<>));
            services.TryAddSingleton(typeof(IOptionFormatterResolver<>), typeof(DefaultOptionsFormatterResolver<>));

            services.AddSingleton<ClientOptionsLogger>();
            services.AddFromExisting<ILifecycleParticipant<IClusterClientLifecycle>, ClientOptionsLogger>();
            services.TryAddSingleton<TelemetryManager>();
            services.TryAddFromExisting<ITelemetryProducer, TelemetryManager>();
            services.TryAddSingleton<IHostEnvironmentStatistics, NoOpHostEnvironmentStatistics>();
            services.TryAddSingleton<IAppEnvironmentStatistics, AppEnvironmentStatistics>();
            services.TryAddSingleton<ClientStatisticsManager>();
            services.TryAddSingleton<ApplicationRequestsStatisticsGroup>();
            services.TryAddSingleton<StageAnalysisStatisticsGroup>();
            services.TryAddSingleton<SchedulerStatisticsGroup>();
            services.TryAddSingleton<SerializationStatisticsGroup>();
            services.AddLogging();
            services.TryAddSingleton<ExecutorService>();
            services.TryAddSingleton<TypeMetadataCache>();
            services.TryAddSingleton<OutsideRuntimeClient>();
            services.TryAddFromExisting<IRuntimeClient, OutsideRuntimeClient>();
            services.TryAddFromExisting<IClusterConnectionStatusListener, OutsideRuntimeClient>();
            services.TryAddSingleton<GrainFactory>();
            services.TryAddSingleton<IGrainReferenceRuntime, GrainReferenceRuntime>();
            services.TryAddSingleton<IGrainCancellationTokenRuntime, GrainCancellationTokenRuntime>();
            services.TryAddFromExisting<IGrainFactory, GrainFactory>();
            services.TryAddFromExisting<IInternalGrainFactory, GrainFactory>();
            services.TryAddFromExisting<IGrainReferenceConverter, GrainFactory>();
            services.TryAddSingleton<ClientProviderRuntime>();
            services.TryAddSingleton<MessageFactory>();
            services.TryAddFromExisting<IStreamProviderRuntime, ClientProviderRuntime>();
            services.TryAddFromExisting<IProviderRuntime, ClientProviderRuntime>();
            services.TryAddSingleton<IStreamSubscriptionManagerAdmin, StreamSubscriptionManagerAdmin>();
            services.TryAddSingleton<IInternalClusterClient, ClusterClient>();
            services.TryAddFromExisting<IClusterClient, IInternalClusterClient>();

            // Serialization
            services.TryAddSingleton<SerializationManager>(sp => ActivatorUtilities.CreateInstance<SerializationManager>(sp,
                sp.GetRequiredService<IOptions<ClientMessagingOptions>>().Value.LargeMessageWarningThreshold));
            services.TryAddSingleton<ITypeResolver, CachedTypeResolver>();
            services.TryAddSingleton<IFieldUtils, FieldUtils>();
            services.AddSingleton<BinaryFormatterSerializer>();
            services.AddSingleton<BinaryFormatterISerializableSerializer>();
            services.AddFromExisting<IKeyedSerializer, BinaryFormatterISerializableSerializer>();
#pragma warning disable CS0618 // Type or member is obsolete
            services.TryAddSingleton<ILBasedSerializer>();
            services.AddFromExisting<IKeyedSerializer, ILBasedSerializer>();
#pragma warning restore CS0618 // Type or member is obsolete

            // Application parts
            var parts = builder.GetApplicationPartManager();
            services.TryAddSingleton<IApplicationPartManager>(parts);
            parts.AddApplicationPart(new AssemblyPart(typeof(RuntimeVersion).Assembly) { IsFrameworkAssembly = true });
            parts.AddFeatureProvider(new BuiltInTypesSerializationFeaturePopulator());
            parts.AddFeatureProvider(new AssemblyAttributeFeatureProvider<GrainInterfaceFeature>());
            parts.AddFeatureProvider(new AssemblyAttributeFeatureProvider<SerializerFeature>());
            services.AddTransient<IConfigurationValidator, ApplicationPartValidator>();

            services.TryAddSingleton(typeof(IKeyedServiceCollection<,>), typeof(KeyedServiceCollection<,>));

            // Add default option formatter if none is configured, for options which are requied to be configured 
            services.ConfigureFormatter<ClusterOptions>();
            services.ConfigureFormatter<ClientMessagingOptions>();
            services.ConfigureFormatter<ConnectionOptions>();
            services.ConfigureFormatter<StatisticsOptions>();

            services.AddTransient<IConfigurationValidator, ClusterOptionsValidator>();
            services.AddTransient<IConfigurationValidator, ClientClusteringValidator>();

            // TODO: abstract or move into some options.
            services.AddSingleton<SocketSchedulers>();
            services.AddSingleton<SharedMemoryPool>();

            // Networking
            services.TryAddSingleton<ConnectionManager>();
            services.AddSingleton<ILifecycleParticipant<IClusterClientLifecycle>, ConnectionManagerLifecycleAdapter<IClusterClientLifecycle>>();

            services.AddSingletonKeyedService<object, IConnectionFactory>(
                ClientOutboundConnectionFactory.ServicesKey,
                (sp, key) => ActivatorUtilities.CreateInstance<SocketConnectionFactory>(sp));

            services.TryAddTransient<IMessageSerializer>(sp => ActivatorUtilities.CreateInstance<MessageSerializer>(sp,
                sp.GetRequiredService<IOptions<ClientMessagingOptions>>().Value.MaxMessageHeaderSize,
                sp.GetRequiredService<IOptions<ClientMessagingOptions>>().Value.MaxMessageBodySize));
            services.TryAddSingleton<ConnectionFactory, ClientOutboundConnectionFactory>();
            services.TryAddSingleton<ClientMessageCenter>(sp => sp.GetRequiredService<OutsideRuntimeClient>().MessageCenter);
            services.TryAddFromExisting<IMessageCenter, ClientMessageCenter>();
            services.AddSingleton<GatewayManager>();
            services.TryAddSingleton<INetworkingTrace, NetworkingTrace>();
        }
Ejemplo n.º 15
0
 /// <summary>
 /// Configure cluster client to use SQS persistent streams.
 /// </summary>
 public static IClientBuilder AddSqsStreams(this IClientBuilder builder, string name, Action <ClusterClientSqsStreamConfigurator> configure)
 {
     configure?.Invoke(builder.AddSqsStreams(name));
     return(builder);
 }
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
 {
     clientBuilder.ConfigureApplicationParts(parts => parts.AddFrameworkPart(typeof(ITestHooksSystemTarget).Assembly));
 }
Ejemplo n.º 17
0
 /// <summary>
 /// Use Linux host environment statistics
 /// </summary>
 public static IClientBuilder UseLinuxEnvironmentStatistics(this IClientBuilder builder)
 {
     return(builder.ConfigureServices(LinuxEnvironmentStatisticsServices.RegisterServices <IClusterClientLifecycle>));
 }
 /// <summary>
 /// Adds support for connecting to a cluster hosted in Service Fabric.
 /// </summary>
 /// <param name="clientBuilder">The client builder.</param>
 /// <param name="serviceName">The Service Fabric service name.</param>
 /// <returns>The provided client builder.</returns>
 public static IClientBuilder AddServiceFabric(
     this IClientBuilder clientBuilder,
     string serviceName)
 {
     return(clientBuilder.AddServiceFabric(new Uri(serviceName)));
 }
Ejemplo n.º 19
0
        private IClusterClient BuilderClient(string name)
        {
            IClientBuilder builder = this.ServiceProvider.GetRequiredServiceByName <IClientBuilder>(name);

            return(builder.Build());
        }
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) => clientBuilder
 .AddMemoryStreams <DefaultMemoryMessageBodySerializer>(StreamProviderName, b => b
                                                        .ConfigurePartitioning(partitionCount));
 /// <summary>
 /// Configure cluster to use indexing using a configure action.
 /// </summary>
 public static IClientBuilder UseIndexing(this IClientBuilder builder, Action <IndexingOptions> configureOptions)
 => UseIndexing(builder, ob => ob.Configure(configureOptions));
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) => clientBuilder.AddStreaming();
Ejemplo n.º 23
0
        public static IClientBuilder UseDashboard(this IClientBuilder builder)
        {
            builder.ConfigureApplicationParts(appParts => appParts.AddFrameworkPart(typeof(Dashboard).Assembly).WithReferences());

            return(builder);
        }
Ejemplo n.º 24
0
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
 {
     clientBuilder.AddSimpleMessageStreamProvider(StreamProvider);
 }
Ejemplo n.º 25
0
 /// <summary>
 /// Configures this silo to use MySql for clustering. Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts" />.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="configureOptions">The configuration delegate.</param>
 /// <returns>
 /// The provided <see cref="T:Orleans.IClientBuilder" />.
 /// </returns>
 /// <remarks>
 /// Instructions on configuring your database are available at <see href="http://aka.ms/orleans-sql-scripts" />.
 /// </remarks>
 public static IClientBuilder UseMySqlClustering(
     this IClientBuilder builder,
     Action <MySqlClusteringClientOptions> configureOptions)
 => builder.UseOrleansAdoNetClustering(configureOptions);
 public static IClientBuilder UseRedisGatewayListProvider(this IClientBuilder builder, Action <RedisClusteringOptions> configureOptions)
 {
     return(builder.ConfigureServices(services => services.UseRedisGatewayListProvider(configureOptions)));
 }
Ejemplo n.º 27
0
 public ClusterClientMemoryStreamConfigurator(string name, IClientBuilder builder)
     : base(name, builder, MemoryAdapterFactory <TSerializer> .Create)
 {
     builder
     .ConfigureApplicationParts(parts => parts.AddFrameworkPart(typeof(MemoryAdapterFactory <>).Assembly));
 }
Ejemplo n.º 28
0
 public static IClientBuilder UseMessageContext <TMessageContext>(this IClientBuilder builder)
     where TMessageContext : new()
 {
     return(UseMessageContext(builder, context => new TMessageContext()));
 }
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder) =>
 BaseIndexingFixture.Configure(clientBuilder)
 .UseIndexing(indexingOptions => ConfigureBasicOptions(indexingOptions));
Ejemplo n.º 30
0
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
 {
     clientBuilder.Configure <TypeManagementOptions>(options => options.TypeMapRefreshInterval = ClientRefreshDelay);
 }
 public void Configure(IConfiguration configuration, IClientBuilder clientBuilder)
 {
     clientBuilder
     .AddMemoryStreams <DefaultMemoryMessageBodySerializer>(StreamProviderName);
 }