public void FormatReason_Portal_ReturnsExpectedReason()
        {
            FunctionStartedMessage message = new FunctionStartedMessage();
            message.Reason = ExecutionReason.Portal;

            Assert.Equal("Ran from Portal.", message.FormatReason());

            message.ParentId = Guid.NewGuid();
            Assert.Equal("Replayed from Portal.", message.FormatReason());
        }
        private FunctionStartedMessage CreateStartedMessageWithoutArguments(IFunctionInstance instance)
        {
            FunctionStartedMessage message = new FunctionStartedMessage
            {
                HostInstanceId      = _hostOutputMessage.HostInstanceId,
                HostDisplayName     = _hostOutputMessage.HostDisplayName,
                SharedQueueName     = _hostOutputMessage.SharedQueueName,
                InstanceQueueName   = _hostOutputMessage.InstanceQueueName,
                Heartbeat           = _hostOutputMessage.Heartbeat,
                WebJobRunIdentifier = _hostOutputMessage.WebJobRunIdentifier,
                FunctionInstanceId  = instance.Id,
                Function            = instance.FunctionDescriptor,
                ParentId            = instance.ParentId,
                Reason    = instance.Reason,
                StartTime = DateTimeOffset.UtcNow
            };

            // It's important that the host formats the reason before sending the message.
            // This enables extensibility scenarios. For the built in types, the Host and Dashboard
            // share types so it's possible (in the case of triggered functions) for the formatting
            // to require a call to TriggerParameterDescriptor.GetTriggerReason and that can only
            // be done on the Host side in the case of extensions (since the dashboard doesn't
            // know about extension types).
            message.ReasonDetails = message.FormatReason();

            return(message);
        }
Ejemplo n.º 3
0
        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 FormatReason_ReasonDetailsAlreadySet_ReturnsExpectedReason()
        {
            FunctionStartedMessage message = new FunctionStartedMessage();
            message.ReasonDetails = "The trigger fired!";

            string result = message.FormatReason();
            Assert.Equal("The trigger fired!", result);
        }
        public void FormatReason_ReasonDetailsAlreadySet_ReturnsExpectedReason()
        {
            FunctionStartedMessage message = new FunctionStartedMessage();

            message.ReasonDetails = "The trigger fired!";

            string result = message.FormatReason();

            Assert.Equal("The trigger fired!", result);
        }
        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 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);
        }
 private static FunctionCompletedMessage CreateCompletedMessage(FunctionStartedMessage startedMessage)
 {
     return(new FunctionCompletedMessage
     {
         HostInstanceId = startedMessage.HostInstanceId,
         HostDisplayName = startedMessage.HostDisplayName,
         SharedQueueName = startedMessage.SharedQueueName,
         InstanceQueueName = startedMessage.InstanceQueueName,
         Heartbeat = startedMessage.Heartbeat,
         WebJobRunIdentifier = startedMessage.WebJobRunIdentifier,
         FunctionInstanceId = startedMessage.FunctionInstanceId,
         Function = startedMessage.Function,
         Arguments = startedMessage.Arguments,
         ParentId = startedMessage.ParentId,
         Reason = startedMessage.Reason,
         ReasonDetails = startedMessage.FormatReason(),
         StartTime = startedMessage.StartTime,
         OutputBlob = startedMessage.OutputBlob,
         ParameterLogBlob = startedMessage.ParameterLogBlob
     });
 }
        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);
        }
Ejemplo n.º 10
0
 internal static FunctionInstanceSnapshot CreateSnapshot(FunctionStartedMessage message)
 {
     return(new FunctionInstanceSnapshot
     {
         Id = message.FunctionInstanceId,
         HostInstanceId = message.HostInstanceId,
         InstanceQueueName = message.InstanceQueueName,
         Heartbeat = message.Heartbeat,
         FunctionId = new FunctionIdentifier(message.SharedQueueName, message.Function.Id).ToString(),
         FunctionFullName = message.Function.FullName,
         FunctionShortName = message.Function.ShortName,
         Arguments = CreateArguments(message.Function.Parameters, message.Arguments),
         ParentId = message.ParentId,
         Reason = message.FormatReason(),
         QueueTime = message.StartTime,
         StartTime = message.StartTime,
         OutputBlob = message.OutputBlob,
         ParameterLogBlob = message.ParameterLogBlob,
         WebSiteName = message.WebJobRunIdentifier != null ? message.WebJobRunIdentifier.WebSiteName : null,
         WebJobType = message.WebJobRunIdentifier != null?message.WebJobRunIdentifier.JobType.ToString() : null,
                          WebJobName = message.WebJobRunIdentifier != null ? message.WebJobRunIdentifier.JobName : null,
                          WebJobRunId = message.WebJobRunIdentifier != null ? message.WebJobRunIdentifier.RunId : null
     });
 }
 public Task <string> LogFunctionStartedAsync(FunctionStartedMessage message, CancellationToken cancellationToken)
 {
     Console.WriteLine("Executing: '{0}' - Reason: '{1}'", message.Function.ShortName, message.FormatReason());
     return(Task.FromResult <string>(null));
 }
Ejemplo n.º 12
0
        public Task <string> LogFunctionStartedAsync(FunctionStartedMessage message, CancellationToken cancellationToken)
        {
            string traceMessage = string.Format(CultureInfo.InvariantCulture, "Executing: '{0}' - Reason: '{1}'", message.Function.ShortName, message.FormatReason());

            Trace(TraceLevel.Info, message.HostInstanceId, message.Function, message.FunctionInstanceId, traceMessage, TraceSource.Execution);
            return(Task.FromResult <string>(null));
        }
Ejemplo n.º 13
0
        public Task <string> LogFunctionStartedAsync(FunctionStartedMessage message, CancellationToken cancellationToken)
        {
            string traceMessage = string.Format(CultureInfo.InvariantCulture, "Executing '{0}' (Reason='{1}', Id={2})", message.Function.ShortName, message.FormatReason(), message.FunctionInstanceId);

            Log(LogLevel.Information, message.Function, message.FunctionInstanceId, traceMessage);

            return(Task.FromResult <string>(null));
        }
 public Task<string> LogFunctionStartedAsync(FunctionStartedMessage message, CancellationToken cancellationToken)
 {
     Console.WriteLine("Executing: '{0}' - Reason: '{1}'", message.Function.ShortName, message.FormatReason());
     return Task.FromResult<string>(null);
 }
 public Task <string> LogFunctionStartedAsync(FunctionStartedMessage message, CancellationToken cancellationToken)
 {
     _trace.Info(string.Format(CultureInfo.InvariantCulture, "Executing: '{0}' - Reason: '{1}'", message.Function.ShortName, message.FormatReason()), TraceSource.Execution);
     return(Task.FromResult <string>(null));
 }
Ejemplo n.º 16
0
 internal static FunctionInstanceSnapshot CreateSnapshot(FunctionStartedMessage message)
 {
     return new FunctionInstanceSnapshot
     {
         Id = message.FunctionInstanceId,
         HostInstanceId = message.HostInstanceId,
         InstanceQueueName = message.InstanceQueueName,
         Heartbeat = message.Heartbeat,
         FunctionId = new FunctionIdentifier(message.SharedQueueName, message.Function.Id).ToString(),
         FunctionFullName = message.Function.FullName,
         FunctionShortName = message.Function.ShortName,
         Arguments = CreateArguments(message.Function.Parameters, message.Arguments),
         ParentId = message.ParentId,
         Reason = message.FormatReason(),
         QueueTime = message.StartTime,
         StartTime = message.StartTime,
         OutputBlob = message.OutputBlob,
         ParameterLogBlob = message.ParameterLogBlob,
         WebSiteName = message.WebJobRunIdentifier != null ? message.WebJobRunIdentifier.WebSiteName : null,
         WebJobType = message.WebJobRunIdentifier != null ? message.WebJobRunIdentifier.JobType.ToString() : null,
         WebJobName = message.WebJobRunIdentifier != null ? message.WebJobRunIdentifier.JobName : null,
         WebJobRunId = message.WebJobRunIdentifier != null ? message.WebJobRunIdentifier.RunId : null
     };
 }
 public Task<string> LogFunctionStartedAsync(FunctionStartedMessage message, CancellationToken cancellationToken)
 {
     _trace.Info(string.Format(CultureInfo.InvariantCulture, "Executing: '{0}' - Reason: '{1}'", message.Function.ShortName, message.FormatReason()), TraceSource.Execution);
     return Task.FromResult<string>(null);
 }