private static string GetAutomaticTriggerReason(FunctionStartedMessage message) { string blobPath = GetArgumentValue <BlobTriggerParameterDescriptor>(message); if (blobPath != null) { return("New blob detected: " + blobPath); } QueueTriggerParameterDescriptor queueTrigger = GetParameterDescriptor <QueueTriggerParameterDescriptor>(message); if (queueTrigger != null) { return("New queue message detected on '" + queueTrigger.QueueName + "'."); } ServiceBusTriggerParameterDescriptor serviceBusTrigger = GetParameterDescriptor <ServiceBusTriggerParameterDescriptor>(message); if (serviceBusTrigger != null) { return("New service bus message detected on '" + GetPath(serviceBusTrigger) + "'."); } return(null); }
public void TestQueueTrigger() { FunctionDescriptor func = IndexMethod("QueueTrigger").Item1; Assert.NotNull(func); var parameters = func.Parameters; Assert.Single(parameters); ParameterDescriptor firstParameter = parameters.First(); Assert.IsType <QueueTriggerParameterDescriptor>(firstParameter); QueueTriggerParameterDescriptor queueParameter = (QueueTriggerParameterDescriptor)firstParameter; Assert.Equal("inputqueue", queueParameter.QueueName); // queue name gets normalized. Assert.Equal("queueValue", firstParameter.Name); // parameter name does not. }
public void FormatReason_QueueTriggeredFunction_ReturnsExpectedReason() { FunctionStartedMessage message = new FunctionStartedMessage(); QueueTriggerParameterDescriptor triggerParameterDescriptor = new QueueTriggerParameterDescriptor { Name = "paramName", QueueName = "testqueue" }; FunctionDescriptor function = new FunctionDescriptor { Parameters = new ParameterDescriptor[] { triggerParameterDescriptor } }; message.Function = function; message.Reason = ExecutionReason.AutomaticTrigger; string result = message.FormatReason(); Assert.Equal("New queue message detected on 'testqueue'.", result); }
public void FormatReason_QueueTriggeredFunction_ReturnsExpectedReason() { FunctionStartedMessage message = new FunctionStartedMessage(); QueueTriggerParameterDescriptor triggerParameterDescriptor = new QueueTriggerParameterDescriptor { Name = "paramName", QueueName = "testqueue" }; FunctionDescriptor function = new FunctionDescriptor { Parameters = new ParameterDescriptor[] { triggerParameterDescriptor } }; message.Function = function; message.Reason = ExecutionReason.AutomaticTrigger; string result = message.FormatReason(); Assert.Equal("New queue message detected on 'testqueue'.", result); }
internal static ParameterSnapshot CreateParameterSnapshot(ParameterDescriptor parameter) { // If display hints have already been provided by the descriptor // use them. Otherwise, we construct a new snapshot below. Note that // for extensibility (e.g. custom binding extensions), this is the // mechanism that must be used, since the Dashboard doesn't share type info // with custom extensions, we won't have access to the actual type as we do below. if (parameter.DisplayHints != null) { return(new DisplayHintsParameterSnapshot(parameter.DisplayHints)); } switch (parameter.Type) { case "Blob": BlobParameterDescriptor blobParameter = (BlobParameterDescriptor)parameter; return(new BlobParameterSnapshot { ContainerName = blobParameter.ContainerName, BlobName = blobParameter.BlobName, IsInput = blobParameter.Access == FileAccess.Read }); case "BlobTrigger": BlobTriggerParameterDescriptor blobTriggerParameter = (BlobTriggerParameterDescriptor)parameter; return(new BlobParameterSnapshot { ContainerName = blobTriggerParameter.ContainerName, BlobName = blobTriggerParameter.BlobName, IsInput = true }); case "Queue": QueueParameterDescriptor queueParameter = (QueueParameterDescriptor)parameter; return(new QueueParameterSnapshot { QueueName = queueParameter.QueueName, IsInput = queueParameter.Access == FileAccess.Read }); case "QueueTrigger": QueueTriggerParameterDescriptor queueTriggerParameter = (QueueTriggerParameterDescriptor)parameter; return(new QueueParameterSnapshot { QueueName = queueTriggerParameter.QueueName, IsInput = true }); case "Table": TableParameterDescriptor tableParameter = (TableParameterDescriptor)parameter; return(new TableParameterSnapshot { TableName = tableParameter.TableName }); case "TableEntity": TableEntityParameterDescriptor tableEntityParameter = (TableEntityParameterDescriptor)parameter; return(new TableEntityParameterSnapshot { TableName = tableEntityParameter.TableName, PartitionKey = tableEntityParameter.PartitionKey, RowKey = tableEntityParameter.RowKey }); case "ServiceBus": // TEMP: This is here for back compat // Latest versions of the SDK send a display info // via ParameterDescriptor.DisplayHints ServiceBusParameterDescriptor serviceBusParameter = (ServiceBusParameterDescriptor)parameter; return(new ServiceBusParameterSnapshot { EntityPath = serviceBusParameter.QueueOrTopicName, IsInput = false }); case "ServiceBusTrigger": // TEMP: This is here for back compat // Latest versions of the SDK send display info // via ParameterDescriptor.DisplayHints ServiceBusTriggerParameterDescriptor serviceBusTriggerParameter = (ServiceBusTriggerParameterDescriptor)parameter; return(new ServiceBusParameterSnapshot { EntityPath = serviceBusTriggerParameter.QueueName != null ? serviceBusTriggerParameter.QueueName : serviceBusTriggerParameter.TopicName + "/Subscriptions/" + serviceBusTriggerParameter.SubscriptionName, IsInput = true }); case "CallerSupplied": case "BindingData": return(new InvokeParameterSnapshot()); default: // Don't convert parameters that aren't used for invoke purposes. return(null); } }
internal static ParameterSnapshot CreateParameterSnapshot(ParameterDescriptor parameter) { switch (parameter.Type) { case "Blob": BlobParameterDescriptor blobParameter = (BlobParameterDescriptor)parameter; return(new BlobParameterSnapshot { ContainerName = blobParameter.ContainerName, BlobName = blobParameter.BlobName, IsInput = blobParameter.Access == FileAccess.Read }); case "BlobTrigger": BlobTriggerParameterDescriptor blobTriggerParameter = (BlobTriggerParameterDescriptor)parameter; return(new BlobParameterSnapshot { ContainerName = blobTriggerParameter.ContainerName, BlobName = blobTriggerParameter.BlobName, IsInput = true }); case "Queue": QueueParameterDescriptor queueParameter = (QueueParameterDescriptor)parameter; return(new QueueParameterSnapshot { QueueName = queueParameter.QueueName, IsInput = queueParameter.Access == FileAccess.Read }); case "QueueTrigger": QueueTriggerParameterDescriptor queueTriggerParameter = (QueueTriggerParameterDescriptor)parameter; return(new QueueParameterSnapshot { QueueName = queueTriggerParameter.QueueName, IsInput = true }); case "Table": TableParameterDescriptor tableParameter = (TableParameterDescriptor)parameter; return(new TableParameterSnapshot { TableName = tableParameter.TableName }); case "TableEntity": TableEntityParameterDescriptor tableEntityParameter = (TableEntityParameterDescriptor)parameter; return(new TableEntityParameterSnapshot { TableName = tableEntityParameter.TableName, PartitionKey = tableEntityParameter.PartitionKey, RowKey = tableEntityParameter.RowKey }); case "ServiceBus": ServiceBusParameterDescriptor serviceBusParameter = (ServiceBusParameterDescriptor)parameter; return(new ServiceBusParameterSnapshot { EntityPath = serviceBusParameter.QueueOrTopicName, IsInput = false }); case "ServiceBusTrigger": ServiceBusTriggerParameterDescriptor serviceBusTriggerParameter = (ServiceBusTriggerParameterDescriptor)parameter; return(new ServiceBusParameterSnapshot { EntityPath = serviceBusTriggerParameter.QueueName != null ? serviceBusTriggerParameter.QueueName : serviceBusTriggerParameter.TopicName + "/Subscriptions/" + serviceBusTriggerParameter.SubscriptionName, IsInput = true }); case "CallerSupplied": case "BindingData": return(new InvokeParameterSnapshot()); default: // Don't convert parameters that aren't used for invoke purposes. return(null); } }