public void FormatReason_BlobTriggeredFunction_ReturnsExpectedReason() { FunctionStartedMessage message = new FunctionStartedMessage(); message.Reason = ExecutionReason.AutomaticTrigger; BlobTriggerParameterDescriptor triggerParameterDescriptor = new BlobTriggerParameterDescriptor { Name = "paramName" }; FunctionDescriptor function = new FunctionDescriptor() { Parameters = new ParameterDescriptor[] { triggerParameterDescriptor }, TriggerParameterDescriptor = triggerParameterDescriptor }; message.Function = function; message.Arguments = new Dictionary <string, string>() { { "paramName", "blob/path" } }; string result = message.FormatReason(); Assert.Equal("New blob detected: blob/path", result); }
public void TestHasBlobAndUnboundParameter() { var entry = IndexMethod("HasBlobAndUnboundParameter"); Assert.NotNull(entry); IFunctionDefinition definiton = entry.Item2; Assert.NotNull(definiton); Assert.Null(definiton.ListenerFactory); FunctionDescriptor descriptor = entry.Item1; Assert.NotNull(descriptor); var parameters = descriptor.Parameters; Assert.Equal(2, parameters.Count()); ParameterDescriptor firstParameter = parameters.ElementAt(0); Assert.Equal("input", firstParameter.Name); Assert.IsType <BlobTriggerParameterDescriptor>(firstParameter); BlobTriggerParameterDescriptor blobParameter = (BlobTriggerParameterDescriptor)firstParameter; Assert.Equal("container", blobParameter.ContainerName); ParameterDescriptor secondParameter = parameters.ElementAt(1); Assert.Equal("unbound", secondParameter.Name); Assert.IsType <CallerSuppliedParameterDescriptor>(secondParameter); }
internal static FunctionInstanceArgument CreateFunctionInstanceArgument(string value, ParameterDescriptor descriptor) { BlobParameterDescriptor blobDescriptor = descriptor as BlobParameterDescriptor; BlobTriggerParameterDescriptor blobTriggerDescriptor = null; string accountName = null; if (blobDescriptor != null) { accountName = blobDescriptor.AccountName; } else { blobTriggerDescriptor = descriptor as BlobTriggerParameterDescriptor; if (blobTriggerDescriptor != null) { accountName = blobTriggerDescriptor.AccountName; } } return(new FunctionInstanceArgument { Value = value, IsBlob = blobDescriptor != null || blobTriggerDescriptor != null, IsBlobOutput = blobDescriptor != null && blobDescriptor.Access == FileAccess.Write, AccountName = accountName }); }
public void FormatReason_BlobTriggeredFunction_ReturnsExpectedReason() { FunctionStartedMessage message = new FunctionStartedMessage(); message.Reason = ExecutionReason.AutomaticTrigger; BlobTriggerParameterDescriptor triggerParameterDescriptor = new BlobTriggerParameterDescriptor { Name = "paramName" }; FunctionDescriptor function = new FunctionDescriptor(); function.Parameters = new ParameterDescriptor[] { triggerParameterDescriptor }; message.Function = function; message.Arguments = new Dictionary<string, string>() { { "paramName", "blob/path" } }; string result = message.FormatReason(); Assert.Equal("New blob detected: blob/path", result); }
public void TestHasBlobAndBoundParameter() { FunctionDescriptor func = IndexMethod("HasBlobAndBoundParameter").Item1; Assert.NotNull(func); var parameters = func.Parameters; Assert.Equal(2, parameters.Count()); ParameterDescriptor firstParameter = parameters.ElementAt(0); Assert.Equal("input", firstParameter.Name); Assert.IsType <BlobTriggerParameterDescriptor>(firstParameter); BlobTriggerParameterDescriptor blobParameter = (BlobTriggerParameterDescriptor)firstParameter; Assert.Equal("container", blobParameter.ContainerName); ParameterDescriptor secondParameter = parameters.ElementAt(1); Assert.Equal("bound", secondParameter.Name); Assert.IsType <BindingDataParameterDescriptor>(secondParameter); }
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); } }