protected override Task OnInitializeAsync(RequestSenderSpecifications requestSenderSpecifications) { this.InitializeOperationDataBuffers(requestSenderSpecifications.OperationDataSizeInBytes); this.InitializeProxies(requestSenderSpecifications.NumItems); return(Task.FromResult <object>(null)); }
public async Task InitializeAsync(RequestSenderSpecifications requestSenderSpecifications) { // Wait for all partitions of the service to become ready to accept requests. FabricClient fabricClient = new FabricClient(); await AwaitPartitionReadyOperation.PerformAsync(fabricClient, this.ServiceName); await this.OnInitializeAsync(requestSenderSpecifications); }
private async Task <IRequestSender> GetRequestSenderAsync() { // Create request sender Assembly assembly = Assembly.Load(this.specifications.RequestSenderAssemblyName); Type type = assembly.GetType(this.specifications.RequestSenderTypeName); IRequestSender sender = (IRequestSender)Activator.CreateInstance(type); RequestSenderSpecifications requestSenderSpecifications = new RequestSenderSpecifications() { NumItems = this.specifications.NumItems, OperationDataSizeInBytes = this.specifications.OperationDataSizeInBytes }; // Initialize request sender await sender.InitializeAsync(requestSenderSpecifications); return(sender); }
public Task InitializeAsync(RequestSenderSpecifications requestSenderSpecifications) { if ((requestSenderSpecifications.OperationDataSizeInBytes < OperationDataSizeLowerLimit) || (requestSenderSpecifications.OperationDataSizeInBytes > OperationDataSizeUpperLimit)) { string message = String.Format( "Request sender simulator does not support data size {0}. The data size must be between {1} and {2}.", requestSenderSpecifications.OperationDataSizeInBytes, OperationDataSizeLowerLimit, OperationDataSizeUpperLimit); throw new ArgumentException(message); } this.readDelay = TimeSpan.FromMilliseconds(MillisecondsDelayPerKByteForReads * (requestSenderSpecifications.OperationDataSizeInBytes / 1024)); this.writeDelay = TimeSpan.FromMilliseconds(MillisecondsDelayPerKByteForWrites * (requestSenderSpecifications.OperationDataSizeInBytes / 1024)); int concurrencyCount = ConcurrencyComputationDividend / requestSenderSpecifications.OperationDataSizeInBytes; this.concurrencyGuard = new SemaphoreSlim(concurrencyCount, concurrencyCount); this.itemLocks = new SemaphoreSlim[requestSenderSpecifications.NumItems]; for (int i = 0; i < requestSenderSpecifications.NumItems; i++) { this.itemLocks[i] = new SemaphoreSlim(1, 1); } return(Task.FromResult <object>(null)); }
protected abstract Task OnInitializeAsync(RequestSenderSpecifications requestSenderSpecifications);