public static void Run(string connectionString) { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); CreateTestQueues(queueClient); try { CloudQueue firstQueue = queueClient.GetQueueReference(_nameResolver.ResolveInString(FunctionChainingPerfTest.FirstQueueName)); firstQueue.AddMessage(new CloudQueueMessage("Test")); _startBlock = MeasurementBlock.BeginNew(0, HostStartMetric); JobHostConfiguration hostConfig = new JobHostConfiguration(connectionString); hostConfig.NameResolver = _nameResolver; hostConfig.TypeLocator = new FakeTypeLocator(typeof(FunctionChainingPerfTest)); JobHost host = new JobHost(hostConfig); _tokenSource = new CancellationTokenSource(); Task stopTask = null; _tokenSource.Token.Register(() => stopTask = host.StopAsync()); host.RunAndBlock(); stopTask.GetAwaiter().GetResult(); } finally { DeleteTestQueues(queueClient); } }
public static void QueuePerfJobStart([QueueTrigger(FirstQueueName)] string input, [Queue(PerfQueuePrefix + "1")] out string output) { // When we reach here, it means that the host started and the first function is invoked // so we can stop the timer _startBlock.Dispose(); output = input; _functionsExecutionBlock = MeasurementBlock.BeginNew(0, QueueFunctionChainMetric); }