Beispiel #1
0
        /// <inheritdoc/>
        public async Task PerformTestAsync(CloudTableClient client, TableDataStoreConfiguration configuration, CancellationToken cancellationToken = default)
        {
            EnsureArg.IsNotNull(client, nameof(client));
            EnsureArg.IsNotNull(configuration, nameof(configuration));

            CloudTable table = client.GetTableReference(TestTable);
            await table.CreateIfNotExistsAsync();

            HealthEntity entity = new HealthEntity(TestPartitionKey, TestRowKey);

            entity.Data = TestData;

            TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(entity);

            TableResult result = await table.ExecuteAsync(insertOrMergeOperation, cancellationToken);

            TableOperation retrieveOperation = TableOperation.Retrieve <HealthEntity>(TestPartitionKey, TestRowKey);

            result = await table.ExecuteAsync(retrieveOperation, cancellationToken);

            TableOperation deleteOperation = TableOperation.Delete(entity);

            result = await table.ExecuteAsync(deleteOperation, cancellationToken);

            await table.DeleteAsync(cancellationToken);
        }
 public TableClientInitializer(
     ILogger <TableClientInitializer> logger,
     TableDataStoreConfiguration configuration)
 {
     EnsureArg.IsNotNull(logger, nameof(logger));
     EnsureArg.IsNotNull(configuration, nameof(configuration));
     _logger        = logger;
     _configuration = configuration;
 }
Beispiel #3
0
        public TableClientProvider(
            TableDataStoreConfiguration tableDataStoreConfiguration,
            ITableClientInitializer tableClientIntilizer,
            ILogger <TableClientProvider> logger)
        {
            EnsureArg.IsNotNull(tableDataStoreConfiguration, nameof(tableDataStoreConfiguration));
            EnsureArg.IsNotNull(tableClientIntilizer, nameof(tableClientIntilizer));
            EnsureArg.IsNotNull(logger, nameof(logger));

            _cloudTableClient        = tableClientIntilizer.CreateTableClient();
            _initializationOperation = new RetryableInitializationOperation(
                () => tableClientIntilizer.IntializeDataStoreAsync(_cloudTableClient));
        }
Beispiel #4
0
        private static TableDataStoreConfiguration RegisterTableDataStoreConfiguration(IServiceCollection serviceCollection, IConfiguration configuration)
        {
            var tableDataStoreConfiguration = new TableDataStoreConfiguration();

            configuration.GetSection(TableStoreConfigurationSectionName).Bind(tableDataStoreConfiguration);

            if (string.IsNullOrEmpty(tableDataStoreConfiguration.ConnectionString) && tableDataStoreConfiguration.EndpointUri == null)
            {
                tableDataStoreConfiguration.ConnectionString = TableStorageLocalEmulator.ConnectionString;
            }

            serviceCollection.AddSingleton(Options.Create(tableDataStoreConfiguration));
            return(tableDataStoreConfiguration);
        }
Beispiel #5
0
        public TableHealthCheck(
            CloudTableClient client,
            TableDataStoreConfiguration configuration,
            ITableClientTestProvider testProvider,
            ILogger <TableHealthCheck> logger)
        {
            EnsureArg.IsNotNull(client, nameof(client));
            EnsureArg.IsNotNull(configuration, nameof(configuration));
            EnsureArg.IsNotNull(testProvider, nameof(testProvider));
            EnsureArg.IsNotNull(logger, nameof(logger));

            _client        = client;
            _configuration = configuration;
            _testProvider  = testProvider;
            _logger        = logger;
        }
Beispiel #6
0
        private static IServiceCollection AddTableDataStore(this IServiceCollection serviceCollection, IConfiguration configuration)
        {
            EnsureArg.IsNotNull(serviceCollection, nameof(serviceCollection));
            EnsureArg.IsNotNull(configuration, nameof(configuration));

            serviceCollection.Add(provider =>
            {
                var config = new TableDataStoreConfiguration();
                configuration.GetSection(TableStoreConfigurationSectionName).Bind(config);

                if (string.IsNullOrEmpty(config.ConnectionString))
                {
                    config.ConnectionString = TableStorageLocalEmulator.ConnectionString;
                }

                return(config);
            })
            .Singleton()
            .AsSelf();

            serviceCollection.Add <TableClientProvider>()
            .Singleton()
            .AsSelf()
            .AsService <IHostedService>()
            .AsService <IRequireInitializationOnFirstRequest>();

            serviceCollection.Add(sp => sp.GetService <TableClientProvider>().CreateTableClient())
            .Singleton()
            .AsSelf();

            serviceCollection.Add <TableClientInitializer>()
            .Singleton()
            .AsService <ITableClientInitializer>();

            serviceCollection.Add <TableExceptionStore>()
            .Singleton()
            .AsSelf()
            .AsImplementedInterfaces();

            serviceCollection.Add <TableSyncStateStore>()
            .Singleton()
            .AsSelf()
            .AsImplementedInterfaces();

            return(serviceCollection);
        }
Beispiel #7
0
        private static IServiceCollection AddTableDataStore(this IServiceCollection serviceCollection, IConfiguration configuration)
        {
            EnsureArg.IsNotNull(serviceCollection, nameof(serviceCollection));
            EnsureArg.IsNotNull(configuration, nameof(configuration));

            TableDataStoreConfiguration tableDataStoreConfiguration = RegisterTableDataStoreConfiguration(serviceCollection, configuration);

            serviceCollection.AddAzureClients(builder =>
            {
                if (string.IsNullOrWhiteSpace(tableDataStoreConfiguration.ConnectionString))
                {
                    builder.AddTableServiceClient(tableDataStoreConfiguration.EndpointUri)
                    .WithCredential(new DefaultAzureCredential(new DefaultAzureCredentialOptions {
                        ManagedIdentityClientId = tableDataStoreConfiguration.ClientId
                    }));
                }
                else
                {
                    builder.AddTableServiceClient(tableDataStoreConfiguration.ConnectionString);
                }
            });

            serviceCollection.Add <TableServiceClientProvider>()
            .Singleton()
            .AsSelf()
            .AsService <IHostedService>()
            .AsService <IRequireInitializationOnFirstRequest>();

            serviceCollection.Add <TableServiceClientInitializer>()
            .Singleton()
            .AsService <ITableServiceClientInitializer>();

            serviceCollection.Add <TableExceptionStore>()
            .Singleton()
            .AsSelf()
            .AsImplementedInterfaces();

            serviceCollection.Add <TableSyncStateStore>()
            .Singleton()
            .AsSelf()
            .AsImplementedInterfaces();

            return(serviceCollection);
        }