protected override Task OnInitializeAsync(RequestSenderSpecifications requestSenderSpecifications)
        {
            this.InitializeOperationDataBuffers(requestSenderSpecifications.OperationDataSizeInBytes);
            this.InitializeProxies(requestSenderSpecifications.NumItems);

            return(Task.FromResult <object>(null));
        }
示例#2
0
        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);
        }
示例#4
0
        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));
        }
示例#5
0
 protected abstract Task OnInitializeAsync(RequestSenderSpecifications requestSenderSpecifications);