From 8ddde066c0651acff89e964180b2af05cfbacfe6 Mon Sep 17 00:00:00 2001 From: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com> Date: Mon, 4 Jan 2021 22:33:57 -0800 Subject: [PATCH] Binary data binding (#17728) Fixes https://github.com/Azure/azure-sdk-for-net/issues/17473 --- .../tests/EventHubEndToEndTests.cs | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/tests/EventHubEndToEndTests.cs b/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/tests/EventHubEndToEndTests.cs index 9fd46cbfbc65..ec15cc57cda6 100644 --- a/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/tests/EventHubEndToEndTests.cs +++ b/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/tests/EventHubEndToEndTests.cs @@ -194,6 +194,22 @@ public async Task EventHub_MultipleDispatch() AssertMultipleDispatchLogs(host); } + [Test] + public async Task EventHub_MultipleDispatch_BinaryData() + { + var (jobHost, host) = BuildHost(); + using (jobHost) + { + int numEvents = 5; + await jobHost.CallAsync(nameof(EventHubTestMultipleDispatchJobsBinaryData.SendEvents_TestHub), new { numEvents = numEvents, input = _testId }); + + bool result = _eventWait.WaitOne(Timeout); + Assert.True(result); + } + + AssertMultipleDispatchLogs(host); + } + [Test] public async Task EventHub_MultipleDispatch_BinaryData() { @@ -493,6 +509,39 @@ public static void ProcessMultipleEventsBinaryData([EventHubTrigger(TestHubName) } } + public class EventHubTestMultipleDispatchJobsBinaryData + { + private static int s_eventCount; + private static int s_processedEventCount; + public static void SendEvents_TestHub(int numEvents, string input, [EventHub(TestHubName)] out BinaryData[] events) + { + s_eventCount = numEvents; + events = new BinaryData[numEvents]; + for (int i = 0; i < numEvents; i++) + { + events[i] = new BinaryData(input); + } + } + + public static void ProcessMultipleEventsBinaryData([EventHubTrigger(TestHubName)] BinaryData[] events, + string[] partitionKeyArray, DateTime[] enqueuedTimeUtcArray, IDictionary[] propertiesArray, + IDictionary[] systemPropertiesArray) + { + Assert.AreEqual(events.Length, partitionKeyArray.Length); + Assert.AreEqual(events.Length, enqueuedTimeUtcArray.Length); + Assert.AreEqual(events.Length, propertiesArray.Length); + Assert.AreEqual(events.Length, systemPropertiesArray.Length); + + s_processedEventCount += events.Length; + + // filter for the ID the current test is using + if (events[0].ToString() == _testId && s_processedEventCount == s_eventCount) + { + _eventWait.Set(); + } + } + } + public class EventHubPartitionKeyTestJobs { // send more events per partition than the EventHubsOptions.MaxBatchSize