private static async Task SetupQueue(string queueName)
        {
            //Clear queue
            await StorageHelpers.ClearQueue(queueName);

            //Set up and trigger
            await StorageHelpers.CreateQueue(queueName);
        }
コード例 #2
0
        public async Task ActivityCanHaveQueueBinding()
        {
            const string queueName = "outqueue";
            await StorageHelpers.ClearQueue(queueName);

            var initialResponse = await Utilities.GetHttpTriggerResponse("DurableClient", queryString : "?FunctionName=DurableOrchestratorWriteToQueue");

            Assert.Equal(HttpStatusCode.Accepted, initialResponse.StatusCode);

            var initialResponseBody = await initialResponse.Content.ReadAsStringAsync();

            dynamic initialResponseBodyObject = JsonConvert.DeserializeObject(initialResponseBody);
            var     statusQueryGetUri         = (string)initialResponseBodyObject.statusQueryGetUri;

            var startTime = DateTime.UtcNow;

            using var httpClient = new HttpClient();

            while (true)
            {
                var statusResponse = await httpClient.GetAsync(statusQueryGetUri);

                switch (statusResponse.StatusCode)
                {
                case HttpStatusCode.Accepted:
                {
                    if (DateTime.UtcNow > startTime + _orchestrationCompletionTimeout)
                    {
                        Assert.True(false, $"The orchestration has not completed after {_orchestrationCompletionTimeout}");
                    }

                    await Task.Delay(TimeSpan.FromSeconds(2));

                    break;
                }

                case HttpStatusCode.OK:
                {
                    var statusResponseBody = await GetResponseBodyAsync(statusResponse);

                    Assert.Equal("Completed", (string)statusResponseBody.runtimeStatus);

                    var queueMessage = await StorageHelpers.ReadFromQueue(queueName);

                    Assert.Equal("QueueData", queueMessage);
                    return;
                }

                default:
                    Assert.True(false, $"Unexpected orchestration status code: {statusResponse.StatusCode}");
                    break;
                }
            }
        }
        public async Task QueueTriggerAndOutput_Succeeds()
        {
            string expectedQueueMessage = Guid.NewGuid().ToString();
            //Clear queue
            await StorageHelpers.ClearQueue(Constants.Queue.OutputBindingName);

            await StorageHelpers.ClearQueue(Constants.Queue.InputBindingName);

            //Set up and trigger
            await StorageHelpers.CreateQueue(Constants.Queue.OutputBindingName);

            await StorageHelpers.InsertIntoQueue(Constants.Queue.InputBindingName, expectedQueueMessage);

            //Verify
            var queueMessage = await StorageHelpers.ReadFromQueue(Constants.Queue.OutputBindingName);

            Assert.Equal(expectedQueueMessage, queueMessage);
        }
        public async Task EventHubTriggerCardinalityOne_Succeeds()
        {
            string expectedEventId = Guid.NewGuid().ToString();

            try
            {
                await SetupQueue(Constants.EventHubs.Cardinality_One_Test.OutputName);

                // Need to setup EventHubs: test-inputOne-powershell and test-outputone-powershell
                await EventHubsHelpers.SendMessagesAsync(expectedEventId, Constants.EventHubs.Cardinality_One_Test.InputName);

                //Verify
                IEnumerable <string> queueMessages = await StorageHelpers.ReadMessagesFromQueue(Constants.EventHubs.Cardinality_One_Test.OutputName);

                Assert.True(queueMessages.All(msg => msg.Contains(expectedEventId)));
            }
            finally
            {
                //Clear queue
                await StorageHelpers.ClearQueue(Constants.EventHubs.Cardinality_One_Test.OutputName);
            }
        }
        public async Task EventHubTriggerAndOutputString_Succeeds()
        {
            string expectedEventId = Guid.NewGuid().ToString();

            try
            {
                await SetupQueue(Constants.EventHubs.String_Test.OutputName);

                // Need to setup EventHubs: test-input-one-ps
                await EventHubsHelpers.SendMessagesAsync(expectedEventId, Constants.EventHubs.String_Test.InputName);

                //Verify
                var queueMessage = await StorageHelpers.ReadFromQueue(Constants.EventHubs.String_Test.OutputName);

                Assert.Contains(expectedEventId, queueMessage);
            }
            finally
            {
                //Clear queue
                await StorageHelpers.ClearQueue(Constants.EventHubs.String_Test.OutputName);
            }
        }
        public async Task EventHubTriggerAndOutputJSON_Succeeds()
        {
            string expectedEventId = Guid.NewGuid().ToString();

            try
            {
                await SetupQueue(Constants.EventHubs.Json_Test.OutputName);

                // Need to setup EventHubs: test-inputjson-powershell and test-outputjson-powershell
                await EventHubsHelpers.SendJSONMessagesAsync(expectedEventId, Constants.EventHubs.Json_Test.InputName);

                //Verify
                var queueMessage = await StorageHelpers.ReadFromQueue(Constants.EventHubs.Json_Test.OutputName);

                JObject json = JObject.Parse(queueMessage);
                Assert.Contains(expectedEventId, json["value"].ToString());
            }
            finally
            {
                //Clear queue
                await StorageHelpers.ClearQueue(Constants.EventHubs.Json_Test.OutputName);
            }
        }