public void GetBindingData_SingleDispatch_ReturnsExpectedValue() { var evt = new EventData(new byte[] { }); IDictionary <string, object> sysProps = GetSystemProperties(); TestHelpers.SetField(evt, "SystemProperties", sysProps); var input = EventHubTriggerInput.New(evt); input.PartitionContext = GetPartitionContext(); var strategy = new EventHubTriggerBindingStrategy(); var bindingData = strategy.GetBindingData(input); Assert.Equal(7, bindingData.Count); Assert.Same(input.PartitionContext, bindingData["PartitionContext"]); Assert.Equal(evt.SystemProperties.PartitionKey, bindingData["PartitionKey"]); Assert.Equal(evt.SystemProperties.Offset, bindingData["Offset"]); Assert.Equal(evt.SystemProperties.SequenceNumber, bindingData["SequenceNumber"]); Assert.Equal(evt.SystemProperties.EnqueuedTimeUtc, bindingData["EnqueuedTimeUtc"]); Assert.Same(evt.Properties, bindingData["Properties"]); IDictionary <string, object> bindingDataSysProps = bindingData["SystemProperties"] as Dictionary <string, object>; Assert.NotNull(bindingDataSysProps); Assert.Equal(bindingDataSysProps["PartitionKey"], bindingData["PartitionKey"]); Assert.Equal(bindingDataSysProps["Offset"], bindingData["Offset"]); Assert.Equal(bindingDataSysProps["SequenceNumber"], bindingData["SequenceNumber"]); Assert.Equal(bindingDataSysProps["EnqueuedTimeUtc"], bindingData["EnqueuedTimeUtc"]); }
public void GetBindingData_SingleDispatch_ReturnsExpectedValue() { var evt = GetSystemProperties(new byte[] { }); var input = EventHubTriggerInput.New(evt); input.PartitionContext = GetPartitionContext(); var strategy = new EventHubTriggerBindingStrategy(); var bindingData = strategy.GetBindingData(input); Assert.AreEqual(7, bindingData.Count); Assert.AreSame(input.PartitionContext, bindingData["PartitionContext"]); Assert.AreEqual(evt.PartitionKey, bindingData["PartitionKey"]); Assert.AreEqual(evt.Offset, bindingData["Offset"]); Assert.AreEqual(evt.SequenceNumber, bindingData["SequenceNumber"]); Assert.AreEqual(evt.EnqueuedTime, bindingData["EnqueuedTimeUtc"]); Assert.AreSame(evt.Properties, bindingData["Properties"]); IDictionary <string, object> bindingDataSysProps = bindingData["SystemProperties"] as Dictionary <string, object>; Assert.NotNull(bindingDataSysProps); Assert.AreEqual(bindingDataSysProps["PartitionKey"], bindingData["PartitionKey"]); Assert.AreEqual(bindingDataSysProps["Offset"], bindingData["Offset"]); Assert.AreEqual(bindingDataSysProps["SequenceNumber"], bindingData["SequenceNumber"]); Assert.AreEqual(bindingDataSysProps["EnqueuedTimeUtc"], bindingData["EnqueuedTimeUtc"]); Assert.AreEqual(bindingDataSysProps["iothub-connection-device-id"], "testDeviceId"); Assert.AreEqual(bindingDataSysProps["iothub-enqueuedtime"], DateTime.MinValue); }
public Task<ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; EventHubTriggerAttribute attribute = parameter.GetCustomAttribute<EventHubTriggerAttribute>(inherit: false); if (attribute == null) { return Task.FromResult<ITriggerBinding>(null); } string eventHubName = attribute.EventHubName; string resolvedName = _nameResolver.ResolveWholeString(eventHubName); var eventHostListener = _eventHubConfig.GetEventProcessorHost(resolvedName); var options = _eventHubConfig.GetOptions(); var hooks = new EventHubTriggerBindingStrategy(); Func<ListenerFactoryContext, bool, Task<IListener>> createListener = (factoryContext, singleDispatch) => { IListener listener = new EventHubListener(factoryContext.Executor, eventHostListener, options, singleDispatch); return Task.FromResult(listener); }; ITriggerBinding binding = BindingFactory.GetTriggerBinding<EventData, EventHubTriggerInput>(hooks, parameter, _converterManager, createListener); return Task.FromResult<ITriggerBinding>(binding); }
public void GetBindingData_MultipleDispatch_ReturnsExpectedValue() { var events = new EventData[3] { GetSystemProperties(Encoding.UTF8.GetBytes("Event 1"), $"pk0"), GetSystemProperties(Encoding.UTF8.GetBytes("Event 2"), $"pk1"), GetSystemProperties(Encoding.UTF8.GetBytes("Event 3"), $"pk2"), }; var input = new EventHubTriggerInput { Events = events, PartitionContext = GetPartitionContext(), }; var strategy = new EventHubTriggerBindingStrategy(); var bindingData = strategy.GetBindingData(input); Assert.AreEqual(7, bindingData.Count); Assert.AreSame(input.PartitionContext, bindingData["PartitionContext"]); // verify an array was created for each binding data type Assert.AreEqual(events.Length, ((string[])bindingData["PartitionKeyArray"]).Length); Assert.AreEqual(events.Length, ((string[])bindingData["OffsetArray"]).Length); Assert.AreEqual(events.Length, ((long[])bindingData["SequenceNumberArray"]).Length); Assert.AreEqual(events.Length, ((DateTimeOffset[])bindingData["EnqueuedTimeUtcArray"]).Length); Assert.AreEqual(events.Length, ((IDictionary <string, object>[])bindingData["PropertiesArray"]).Length); Assert.AreEqual(events.Length, ((IDictionary <string, object>[])bindingData["SystemPropertiesArray"]).Length); Assert.AreEqual(events[0].PartitionKey, ((string[])bindingData["PartitionKeyArray"])[0]); Assert.AreEqual(events[1].PartitionKey, ((string[])bindingData["PartitionKeyArray"])[1]); Assert.AreEqual(events[2].PartitionKey, ((string[])bindingData["PartitionKeyArray"])[2]); }
public void StrategyStaticContract() { var strategy = new EventHubTriggerBindingStrategy(); var contract = strategy.GetStaticBindingContract(); Assert.Equal(1, contract.Count); Assert.Equal(typeof(PartitionContext), contract["partitionContext"]); }
public void GetBindingContract_SingleDispatch_ReturnsExpectedValue() { var strategy = new EventHubTriggerBindingStrategy(); var contract = strategy.GetBindingContract(true); Assert.Equal(7, contract.Count); Assert.Equal(typeof(PartitionContext), contract["PartitionContext"]); Assert.Equal(typeof(string), contract["Offset"]); Assert.Equal(typeof(long), contract["SequenceNumber"]); Assert.Equal(typeof(DateTime), contract["EnqueuedTimeUtc"]); Assert.Equal(typeof(IDictionary <string, object>), contract["Properties"]); Assert.Equal(typeof(IDictionary <string, object>), contract["SystemProperties"]); }
public void GetBindingContract_MultipleDispatch_ReturnsExpectedValue() { var strategy = new EventHubTriggerBindingStrategy(); var contract = strategy.GetBindingContract(false); Assert.Equal(7, contract.Count); Assert.Equal(typeof(PartitionContext), contract["PartitionContext"]); Assert.Equal(typeof(string[]), contract["PartitionKeyArray"]); Assert.Equal(typeof(string[]), contract["OffsetArray"]); Assert.Equal(typeof(long[]), contract["SequenceNumberArray"]); Assert.Equal(typeof(DateTime[]), contract["EnqueuedTimeUtcArray"]); Assert.Equal(typeof(IDictionary <string, object>[]), contract["PropertiesArray"]); Assert.Equal(typeof(IDictionary <string, object>[]), contract["SystemPropertiesArray"]); }
public void TriggerStrategy() { string data = "123"; var strategy = new EventHubTriggerBindingStrategy(); EventHubTriggerInput triggerInput = strategy.ConvertFromString(data); var contract = strategy.GetBindingData(triggerInput); EventData single = strategy.BindSingle(triggerInput, null); string body = Encoding.UTF8.GetString(single.Body.Array); Assert.Equal(data, body); Assert.Null(contract["PartitionContext"]); Assert.Null(contract["partitioncontext"]); // case insensitive }
public void TriggerStrategy() { string data = "123"; var strategy = new EventHubTriggerBindingStrategy(); EventHubTriggerInput triggerInput = strategy.ConvertFromString(data); var contract = strategy.GetContractInstance(triggerInput); EventData single = strategy.BindSingle(triggerInput, null); string body = Encoding.UTF8.GetString(single.GetBytes()); Assert.Equal(data, body); Assert.Null(contract["PartitionContext"]); Assert.Null(contract["partitioncontext"]); // case insensitive }
public void GetBindingData_MultipleDispatch_ReturnsExpectedValue() { var events = new EventData[3] { new EventData(Encoding.UTF8.GetBytes("Event 1")), new EventData(Encoding.UTF8.GetBytes("Event 2")), new EventData(Encoding.UTF8.GetBytes("Event 3")), }; var count = 0; foreach (var evt in events) { var sysProps = TestHelpers.New <SystemPropertiesCollection>(); TestHelpers.SetField(sysProps, "PartitionKey", $"pk{count++}"); TestHelpers.SetField(evt, "SystemProperties", sysProps); } var input = new EventHubTriggerInput { Events = events, PartitionContext = GetPartitionContext(), }; var strategy = new EventHubTriggerBindingStrategy(); var bindingData = strategy.GetBindingData(input); Assert.Equal(7, bindingData.Count); Assert.Same(input.PartitionContext, bindingData["PartitionContext"]); // verify an array was created for each binding data type Assert.Equal(events.Length, ((string[])bindingData["PartitionKeyArray"]).Length); Assert.Equal(events.Length, ((string[])bindingData["OffsetArray"]).Length); Assert.Equal(events.Length, ((long[])bindingData["SequenceNumberArray"]).Length); Assert.Equal(events.Length, ((DateTime[])bindingData["EnqueuedTimeUtcArray"]).Length); Assert.Equal(events.Length, ((IDictionary <string, object>[])bindingData["PropertiesArray"]).Length); Assert.Equal(events.Length, ((IDictionary <string, object>[])bindingData["SystemPropertiesArray"]).Length); Assert.Equal(events[0].SystemProperties.PartitionKey, ((string[])bindingData["PartitionKeyArray"])[0]); Assert.Equal(events[1].SystemProperties.PartitionKey, ((string[])bindingData["PartitionKeyArray"])[1]); Assert.Equal(events[2].SystemProperties.PartitionKey, ((string[])bindingData["PartitionKeyArray"])[2]); }
public void GetBindingData_SingleDispatch_ReturnsExpectedValue() { var evt = new EventData(); evt.PartitionKey = "TestKey"; var input = EventHubTriggerInput.New(evt); input.PartitionContext = new PartitionContext(); var strategy = new EventHubTriggerBindingStrategy(); var bindingData = strategy.GetBindingData(input); Assert.Equal(7, bindingData.Count); Assert.Same(input.PartitionContext, bindingData["PartitionContext"]); Assert.Equal(evt.PartitionKey, bindingData["PartitionKey"]); Assert.Equal(evt.Offset, bindingData["Offset"]); Assert.Equal(evt.SequenceNumber, bindingData["SequenceNumber"]); Assert.Equal(evt.EnqueuedTimeUtc, bindingData["EnqueuedTimeUtc"]); Assert.Same(evt.Properties, bindingData["Properties"]); Assert.Same(evt.SystemProperties, bindingData["SystemProperties"]); }