static async Task Main(string[] args) { int threads = AppConfig.GetOptionalSetting <int>("Threads") ?? 32; ILogger logger = AppConfig.CreateLogger("Storage"); string workloadType = AppConfig.GetSetting("Workload"); CancellationToken cancellationToken = AppConfig.GetCancellationToken(); string connectionString = AppConfig.GetSetting("StorageConnectionString"); var storage = CloudStorageAccount.Parse(connectionString); var client = storage.CreateCloudBlobClient(); var container = client.GetContainerReference("performance"); await container.CreateIfNotExistsAsync(cancellationToken).ConfigureAwait(false); if (workloadType == "latency") { var workload = new LatencyWorkload(logger, "Storage"); await workload.InvokeAsync(threads, (value) => WriteAsync(container, value, cancellationToken), cancellationToken).ConfigureAwait(false); } if (workloadType == "throughput") { var workload = new ThroughputWorkload(logger, "Storage"); await workload.InvokeAsync(threads, () => WriteAsync(container, cancellationToken), cancellationToken).ConfigureAwait(false); } }
static async Task Main(string[] args) { int threads = AppConfig.GetOptionalSetting <int>("Threads") ?? 8; ILogger logger = AppConfig.CreateLogger("CosmosDB"); string workloadType = AppConfig.GetSetting("Workload"); CancellationToken cancellationToken = AppConfig.GetCancellationToken(); Uri endpoint = new Uri(AppConfig.GetSetting("CosmosDbEndpoint")); string key = AppConfig.GetSetting("CosmosDbKey"); string databaseId = AppConfig.GetSetting("CosmosDbDatabaseId"); string collectionId = AppConfig.GetSetting("CosmosDbCollectionId"); var client = new DocumentClient(endpoint, key, new ConnectionPolicy { ConnectionMode = ConnectionMode.Direct, ConnectionProtocol = Protocol.Tcp, }); var collectionUri = UriFactory.CreateDocumentCollectionUri(databaseId, collectionId); var collection = await client.ReadDocumentCollectionAsync(collectionUri).ConfigureAwait(false); if (workloadType == "latency") { var workload = new LatencyWorkload(logger, "CosmosDB"); await workload.InvokeAsync(threads, (value) => WriteAsync(client, collection, value, cancellationToken), cancellationToken).ConfigureAwait(false); } if (workloadType == "throughput") { var workload = new ThroughputWorkload(logger, "CosmosDB", IsThrottlingException); await workload.InvokeAsync(threads, () => WriteAsync(client, collection, cancellationToken), cancellationToken).ConfigureAwait(false); } }
static async Task Main(string[] args) { int threads = AppConfig.GetOptionalSetting <int>("Threads") ?? 32; ILogger logger = AppConfig.CreateLogger("SQL"); string workloadType = AppConfig.GetSetting("Workload"); CancellationToken cancellationToken = AppConfig.GetCancellationToken(); string connectionString = AppConfig.GetSetting("SqlConnectionString"); await CreateDatabaseAsync(connectionString).ConfigureAwait(false); if (workloadType == "latency") { var workload = new LatencyWorkload(logger, "SQL"); await workload.InvokeAsync(threads, (value) => WriteAsync(connectionString, value, cancellationToken), cancellationToken).ConfigureAwait(false); } if (workloadType == "throughput") { var workload = new ThroughputWorkload(logger, "SQL"); await workload.InvokeAsync(threads, () => WriteAsync(connectionString, cancellationToken), cancellationToken).ConfigureAwait(false); } }
static async Task Main(string[] args) { int threads = AppConfig.GetOptionalSetting <int>("Threads") ?? 32; ILogger logger = AppConfig.CreateLogger("EventHub"); string workloadType = AppConfig.GetSetting("Workload"); CancellationToken cancellationToken = AppConfig.GetCancellationToken(); string connectionString = AppConfig.GetSetting("EventHubConnectionString"); var client = EventHubClient.CreateFromConnectionString(connectionString); if (workloadType == "latency") { var workload = new LatencyWorkload(logger, "EventHub"); await workload.InvokeAsync(threads, (value) => WriteAsync(client, value, cancellationToken), cancellationToken).ConfigureAwait(false); } if (workloadType == "throughput") { var workload = new ThroughputWorkload(logger, "EventHub", IsThrottlingException); await workload.InvokeAsync(threads, () => WriteAsync(client, cancellationToken), cancellationToken).ConfigureAwait(false); } }
static async Task Main(string[] args) { int threads = AppConfig.GetOptionalSetting <int>("Threads") ?? 32; ILogger logger = AppConfig.CreateLogger("ServiceBus"); string workloadType = AppConfig.GetSetting("Workload"); CancellationToken cancellationToken = AppConfig.GetCancellationToken(); string connectionString = AppConfig.GetSetting("ServiceBusConnectionString"); var client = new MessageSender(new ServiceBusConnectionStringBuilder(connectionString), RetryPolicy.NoRetry); if (workloadType == "latency") { var workload = new LatencyWorkload(logger, "ServiceBus"); await workload.InvokeAsync(threads, (value) => WriteAsync(client, value, cancellationToken), cancellationToken).ConfigureAwait(false); } if (workloadType == "throughput") { var workload = new ThroughputWorkload(logger, "ServiceBus", IsThrottlingException); await workload.InvokeAsync(threads, () => WriteAsync(client, cancellationToken), cancellationToken).ConfigureAwait(false); } }